当前位置: 首页 > 技术文档 > 正文
avatar

今天研究一个自动生成bootstrap网页的程序,从原来的软件中复制TChromiumWindow到新Form […]

今天研究一个自动生成bootstrap网页的程序,从原来的软件中复制TChromiumWindow到新Form中,相关附件文件也复制到相应目录,但却不显示网页,奇怪了! 仔细翻看了以前的代码, 主要有以下几点:

1.在工程文件(.dpr)在uses中增加uCEFApplication
2.改造 工程文件(.dpr) 中begin…end.中的部分改成如下:

 begin
      GlobalCEFApp := TCefApplication.Create;
      if GlobalCEFApp.StartMainProcess then begin
          Application.Initialize;
          {$IFDEF DELPHI11_UP}
             Application.MainFormOnTaskbar := True;
           {$ENDIF}
          Application.CreateForm(TMainForm, MainForm);
          Application.Run;
      end;

     GlobalCEFApp.Free;
     GlobalCEFApp := nil;
end.

3. 在浏览器插件所在窗体添加事件

procedure TMainForm.Chromium_OnBeforePopup(Sender: TObject; const browser: ICefBrowser;
  const frame: ICefFrame; const targetUrl, targetFrameName: ustring;
  targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean;
  const popupFeatures: TCefPopupFeatures; var windowInfo: TCefWindowInfo; var client: ICefClient;
  var settings: TCefBrowserSettings; var noJavascriptAccess, Result: Boolean);
begin
     Result := (targetDisposition in [WOD_NEW_FOREGROUND_TAB, WOD_NEW_BACKGROUND_TAB, WOD_NEW_POPUP, WOD_NEW_WINDOW]);

end;

4. 在窗体OnShow中加入

procedure TMainForm.FormShow(Sender: TObject);
begin
     ChromiumWindow.ChromiumBrowser.OnBeforePopup := Chromium_OnBeforePopup;
     if not ChromiumWindow.CreateBrowser then begin
          Timer1.Enabled := True;
     end;
end;

5. 还需要添加一个Timer1,主要用来初始化TChromiumWindow

procedure TMainForm.Timer1Timer(Sender: TObject);
begin
     Timer1.Enabled := False;
     if not(ChromiumWindow.CreateBrowser) and not(ChromiumWindow.Initialized) then  begin
          Timer1.Enabled := True;
     end;

end;

越过以上几个坑, 就可以采用 TChromiumWindow 来显示网页了

本文固定链接: https://blog.yanhualou.com/jishu/957.html | 烟花楼博客

delphi TChromiumWindow的正确使用方法:等您坐沙发呢!

发表评论

快捷键:Ctrl+Enter