Вопрос о совместимости и переходе с компонентов VCL на аналогичные в FireMonkey (FMX) часто встречается у разработчиков, использующих Delphi. В частности, использование TWebBrowser в приложениях FMX для загрузки HTML, сгенерированного во время выполнения программы, может вызвать затруднения. В данной статье мы рассмотрим, как адаптировать код для работы с TWebBrowser в FireMonkey.
Описание проблемы:
Разработчики, работающие с FireMonkey TWebBrowser, могут столкнуться с проблемой несовместимости, если они пытаются использовать код, предназначенный для VCL. В частности, приведенный ниже пример кода, предназначенный для загрузки HTML-строки в TWebBrowser, работает только с VCL:
procedure WBLoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var
sl: TStringList;
ms: TMemoryStream;
begin
WebBrowser.Navigate('about:blank');
while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
Application.ProcessMessages;
if Assigned(WebBrowser.Document) then begin
sl := TStringList.Create;
try
ms := TMemoryStream.Create;
try
sl.Text := HTMLCode;
sl.SaveToStream(ms);
ms.Seek(0, 0);
(WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
finally
ms.Free;
end;
finally
sl.Free;
end;
end;
end;
Подтвержденный ответ:
Для работы с TWebBrowser в FireMonkey необходимо использовать метод LoadFromStrings, который позволяет загрузить HTML-код непосредственно из строки. Вот пример кода, который демонстрирует этот процесс:
procedure TForm1.FormCreate(Sender: TObject);
var
sHTML: string;
begin
sHTML := '<a href="http://delphi.about.com">GOTO</a>' +
'<b>About Delphi Programming</b>';
WebBrowser1.LoadFromStrings(['<html><body>', sHTML, '</body></html>']);
end;
Альтернативный ответ:
Если вы разрабатываете приложение, которое должно работать как на мобильных, так и на десктопных устройствах, стоит учесть, что TWebBrowser в FireMonkey доступен только для мобильных приложений. Для десктопных приложений FMX вам потребуется использовать другой компонент для отображения веб-контента.
Один из вариантов - реализация функционала в DLL, или использование открытого проекта TWebBrowserEx, который использует стандартные веб-браузеры платформы. Например, на Windows это будет Internet Explorer, на OS X - Safari WebView, на iOS и Android - соответствующие WebView.
Заключение:
Переход с VCL на FireMonkey требует внимания к деталям и понимания особенностей каждого компонента. TWebBrowser в FMX имеет свои нюансы, но с правильным подходом и использованием методов, предназначенных для FMX, разработчики могут успешно адаптировать свой код для работы в кросс-платформенных приложениях.
Переезд с использования компонентов VCL на аналогичные в FireMonkey (FMX) в Delphi может потребовать адаптации кода, в частности, для работы с TWebBrowser в приложениях FMX для загрузки HTML.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.