Disclosure Statement: This site contains affiliate links, which means that I may receive a commission if you make a purchase using these links. As an eBay Partner, I earn from qualifying purchases.

TChromium in a frame

Post Reply
egold2005
Posts: 11
Joined: Mon Aug 24, 2020 9:32 am

TChromium in a frame

Post by egold2005 »

Hello,

I am trying to create a frame to encapsulate the browser functions, and for some reason the URL is not being loaded. Here is the frame code. I call .Init in FormShow of the form that hosts the frame. I also have necessary stuff in .dpr like CEF application creation, if not Start...etc..

Thank you.

unit ChromiumFrame;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,


uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFConstants, uCEFTypes,
uCEFWinControl, uCEFSentinel, uCEFChromiumCore, ExtCtrls

;

type
TfrmChromiumMap = class(TFrame)
CEFWindowParent1: TCEFWindowParent;
Chromium1: TChromium;
tmrCreate: TTimer;
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
procedure Chromium1BeforePopup(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 extra_info: ICefDictionaryValue; var noJavascriptAccess, Result: Boolean);
procedure Chromium1CertificateError(Sender: TObject; const browser: ICefBrowser; certError: Integer; const requestUrl: ustring; const sslInfo: ICefSslInfo;
const callback: ICefRequestCallback; out Result: Boolean);
procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction: TCefCloseBrowserAction);
procedure tmrCreateTimer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure Init;
procedure Finalize;
end;

implementation

{$R *.dfm}

procedure TfrmChromiumMap.Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
begin
//Chromium1.LoadURL(MyURL)
//browser.MainFrame.LoadUrl() tried that as well
end;

// -----------

procedure TfrmChromiumMap.Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
begin
;
end;

// -----------

procedure TfrmChromiumMap.Chromium1BeforePopup(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 extra_info: ICefDictionaryValue; var noJavascriptAccess, Result: Boolean);
begin
;
end;

// -----------

procedure TfrmChromiumMap.Chromium1CertificateError(Sender: TObject; const browser: ICefBrowser; certError: Integer; const requestUrl: ustring; const sslInfo: ICefSslInfo;
const callback: ICefRequestCallback; out Result: Boolean);
begin
result := TRUE;
callback.cont(TRUE)
end;

// -----------

procedure TfrmChromiumMap.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction: TCefCloseBrowserAction);
begin
;
end;

// -----------

procedure TfrmChromiumMap.Init;
begin
tmrCreate.Enabled := TRUE
end;

// -----------

procedure TfrmChromiumMap.Finalize;
begin
end;

// -----------

procedure TfrmChromiumMap.tmrCreateTimer(Sender: TObject);
begin
tmrCreate.Enabled := FALSE;
if (not Chromium1.CreateBrowser(CEFWindowParent1)) and (not Chromium1.Initialized) then
tmrCreate.Enabled := TRUE;
end;

// -----------

end.
User avatar
salvadordf
Posts: 4049
Joined: Thu Feb 02, 2017 12:24 pm
Location: Spain
Contact:

Re: TChromium in a frame

Post by salvadordf »

Hi,

The TabbedBrowser2 demo uses browsers in frames and it works fine. Use that demo as a template for your own application.

https://github.com/salvadordf/CEF4Delph ... edBrowser2
Post Reply