我使用Delphi10.2东京,并安装了CEF4Delphi,因为我认为普通的TWebBrowser组件在性能和功能方面似乎有些下降。
我所做的项目是显示网页,而不需要显示任何URL地址。所以我只需要显示网页。
我发现了一些,包括CEF4Delphi,它们使用的是另一个TChromiumWindow或类似于显示网页的东西。此外,该演示只有一个(AFAIK) FMX应用程序的例子与屏幕外呈现显示在TFMXBufferPanel。
我尝试了确切的方法,只需从Demos创建表单,将URL和AddObject加载到主布局,但只显示演示项目中的橙色屏幕,或者显示访问冲突错误。我可能不知道如何正确地阅读API文档,我找不到它。
我从谷歌搜索所有与CEF4Delphi和FMX相关的东西,但这些都过时了,它们来自DCEF3或FMX之前的德尔菲时代。如果没有解决方案,我将放弃使用VCL。
我的结论,
我会发布我试过的作品。为一些评论代码道歉,我的老板试过了。
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
FMX.Controls.Presentation, FMX.StdCtrls, uFMXExternalPumpBrowser;
type
TForm1 = class(TForm)
Button1: TButton;
Layout1: TLayout;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
f: TFMXExternalPumpBrowserFrm;
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Button1Click(Sender: TObject);
begin
Layout1.AddObject(f.Panel1);
end;
procedure TForm1.Button2Click(Sender: TObject);
//var
// MainFrame: ICefFrame;
begin
f.Show;
f.LoadURL('naver.com');
// f.Panel1.InvalidatePanel;
//
// f.chrmosr.Browser.MainFrame.LoadUrl('naver.com');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
f := TFMXExternalPumpBrowserFrm.Create(nil);
end;
end.这是用来执行程序代码的。
program fmxwebtes;
uses
System.StartUpCopy,
FMX.Forms,
WinApi.Windows,
uCEFApplication,
Unit1 in 'Unit1.pas' {Form1},
uFMXApplicationService in 'uFMXApplicationService.pas',
uFMXExternalPumpBrowser in 'uFMXExternalPumpBrowser.pas' {FMXExternalPumpBrowserFrm};
{$R *.res}
{$SetPEFlags IMAGE_FILE_LARGE_ADDRESS_AWARE}
begin
GlobalCEFApp := TCefApplication.Create;
if GlobalCEFApp.StartMainProcess then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
GlobalCEFApp.Free;
end.发布于 2018-04-13 06:57:32
是。您可以使用FMX组件加载、获取快照和使用CEF4Delphi打印网页,但演示使用的是屏幕外呈现模式和外部消息泵,这意味着它是CEF4Delphi中最复杂的演示之一。
要加载网页,请使用TFMXChromium.LoadURL。要打印,请使用TFMXChromium.Print或TFMXChromium.PrintToPDF。要获取快照,请使用TFMXBufferPanel.SaveToFile或在TFMXBufferPanel.Buffer属性中复制位图。
如果使用VCL组件,将浏览器添加到应用程序中要容易得多。
编辑:您的DPR缺少了使FMX组件工作所需的几个属性。查看一下FMXExternalPumpBrowser演示中的DPR文件,您将看到您需要创建工作调度程序并设置这些GlobalCEFApp属性。GlobalCEFApp_OnScheduleMessagePumpWork过程在uFMXExternalPumpBrowser.pas中定义
GlobalFMXWorkScheduler := TFMXWorkScheduler.Create(nil);
GlobalCEFApp := TCefApplication.Create;
GlobalCEFApp.WindowlessRenderingEnabled := True;
GlobalCEFApp.EnableHighDPISupport := True;
GlobalCEFApp.FlashEnabled := False;
GlobalCEFApp.ExternalMessagePump := True;
GlobalCEFApp.MultiThreadedMessageLoop := False;
GlobalCEFApp.OnScheduleMessagePumpWork := GlobalCEFApp_OnScheduleMessagePumpWork;编辑2:所有CEF组件都需要在加载网站之前进行初始化。您不能在创建组件后立即加载URL,但是可以设置TFMXChromium.DefaultUrl属性,以便在初始化后立即加载URL。
https://stackoverflow.com/questions/49808829
复制相似问题