You've already forked CEF4Delphi
mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-08-04 21:32:54 +02:00
TabbedBrowser2 demos now use the Chrome style
This commit is contained in:
@ -217,7 +217,6 @@ object BrowserFrame: TBrowserFrame
|
|||||||
OnBeforePopup = Chromium1BeforePopup
|
OnBeforePopup = Chromium1BeforePopup
|
||||||
OnAfterCreated = Chromium1AfterCreated
|
OnAfterCreated = Chromium1AfterCreated
|
||||||
OnBeforeClose = Chromium1BeforeClose
|
OnBeforeClose = Chromium1BeforeClose
|
||||||
OnClose = Chromium1Close
|
|
||||||
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
|
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
|
||||||
Left = 40
|
Left = 40
|
||||||
Top = 72
|
Top = 72
|
||||||
|
@ -45,7 +45,6 @@ type
|
|||||||
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium1AddressChange(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
|
procedure Chromium1AddressChange(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
|
||||||
procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction: TCefCloseBrowserAction);
|
|
||||||
procedure Chromium1LoadError(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; errorCode: TCefErrorCode; const errorText, failedUrl: ustring);
|
procedure Chromium1LoadError(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; errorCode: TCefErrorCode; const errorText, failedUrl: ustring);
|
||||||
procedure Chromium1LoadingStateChange(Sender: TObject; const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean);
|
procedure Chromium1LoadingStateChange(Sender: TObject; const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean);
|
||||||
procedure Chromium1StatusMessage(Sender: TObject; const browser: ICefBrowser; const value: ustring);
|
procedure Chromium1StatusMessage(Sender: TObject; const browser: ICefBrowser; const value: ustring);
|
||||||
@ -88,7 +87,6 @@ type
|
|||||||
procedure SetPendingCanGoForward(aValue : boolean);
|
procedure SetPendingCanGoForward(aValue : boolean);
|
||||||
|
|
||||||
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;
|
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;
|
||||||
procedure BrowserDestroyMsg(var aMessage : TMessage); message CEF_DESTROY;
|
|
||||||
procedure BrowserUpdateCaptionMsg(var aMessage : TMessage); message CEF_UPDATECAPTION;
|
procedure BrowserUpdateCaptionMsg(var aMessage : TMessage); message CEF_UPDATECAPTION;
|
||||||
procedure BrowserUpdateAddressMsg(var aMessage : TMessage); message CEF_UPDATEADDRESS;
|
procedure BrowserUpdateAddressMsg(var aMessage : TMessage); message CEF_UPDATEADDRESS;
|
||||||
procedure BrowserUpdateStateMsg(var aMessage : TMessage); message CEF_UPDATESTATE;
|
procedure BrowserUpdateStateMsg(var aMessage : TMessage); message CEF_UPDATESTATE;
|
||||||
@ -134,12 +132,10 @@ uses
|
|||||||
|
|
||||||
// Destruction steps
|
// Destruction steps
|
||||||
// =================
|
// =================
|
||||||
// 1. TBrowserFrame.CloseBrowser sets CanClose to FALSE calls TChromium.CloseBrowser
|
// 1. TBrowserFrame.FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1
|
||||||
// which triggers the TChromium.OnClose event.
|
// and calls TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
|
||||||
// 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1
|
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends a CEF_DESTROYTAB
|
||||||
// in the main thread, which triggers the TChromium.OnBeforeClose event.
|
// message with the TabID to the main form.
|
||||||
// 3. TChromium.OnBeforeClose triggers the TBrowserFrame.OnBrowserDestroyed event
|
|
||||||
// which sends a CEF_DESTROYTAB message with the TabID to the main form.
|
|
||||||
|
|
||||||
constructor TBrowserFrame.Create(AOwner : TComponent);
|
constructor TBrowserFrame.Create(AOwner : TComponent);
|
||||||
begin
|
begin
|
||||||
@ -273,7 +269,6 @@ end;
|
|||||||
procedure TBrowserFrame.CreateBrowser;
|
procedure TBrowserFrame.CreateBrowser;
|
||||||
begin
|
begin
|
||||||
Chromium1.DefaultURL := FHomepage;
|
Chromium1.DefaultURL := FHomepage;
|
||||||
Chromium1.RuntimeStyle := CEF_RUNTIME_STYLE_ALLOY;
|
|
||||||
Chromium1.CreateBrowser(CEFWindowParent1);
|
Chromium1.CreateBrowser(CEFWindowParent1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -284,6 +279,7 @@ begin
|
|||||||
FClosing := True;
|
FClosing := True;
|
||||||
NavControlPnl.Enabled := False;
|
NavControlPnl.Enabled := False;
|
||||||
Chromium1.CloseBrowser(True);
|
Chromium1.CloseBrowser(True);
|
||||||
|
FreeAndNil(CEFWindowParent1);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -332,7 +328,8 @@ end;
|
|||||||
|
|
||||||
procedure TBrowserFrame.Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
procedure TBrowserFrame.Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||||
begin
|
begin
|
||||||
if assigned(FOnBrowserDestroyed) then FOnBrowserDestroyed(self);
|
if assigned(FOnBrowserDestroyed) then
|
||||||
|
FOnBrowserDestroyed(self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserFrame.Chromium1BeforePopup( Sender : TObject;
|
procedure TBrowserFrame.Chromium1BeforePopup( Sender : TObject;
|
||||||
@ -369,14 +366,6 @@ begin
|
|||||||
TBrowserTab(Parent).DoOpenUrlFromTab(targetUrl, targetDisposition);
|
TBrowserTab(Parent).DoOpenUrlFromTab(targetUrl, targetDisposition);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserFrame.Chromium1Close( Sender : TObject;
|
|
||||||
const browser : ICefBrowser;
|
|
||||||
var aAction : TCefCloseBrowserAction);
|
|
||||||
begin
|
|
||||||
PostMessage(Handle, CEF_DESTROY, 0, 0);
|
|
||||||
aAction := cbaDelay;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TBrowserFrame.Chromium1LoadError( Sender : TObject;
|
procedure TBrowserFrame.Chromium1LoadError( Sender : TObject;
|
||||||
const browser : ICefBrowser;
|
const browser : ICefBrowser;
|
||||||
const frame : ICefFrame;
|
const frame : ICefFrame;
|
||||||
@ -436,11 +425,6 @@ begin
|
|||||||
NavControlPnl.Enabled := True;
|
NavControlPnl.Enabled := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserFrame.BrowserDestroyMsg(var aMessage : TMessage);
|
|
||||||
begin
|
|
||||||
CEFWindowParent1.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TBrowserFrame.BrowserUpdateCaptionMsg(var aMessage : TMessage);
|
procedure TBrowserFrame.BrowserUpdateCaptionMsg(var aMessage : TMessage);
|
||||||
begin
|
begin
|
||||||
if assigned(FOnBrowserTitleChange) then
|
if assigned(FOnBrowserTitleChange) then
|
||||||
|
@ -125,22 +125,26 @@ procedure TBrowserTab.CreateBrowser(const aHomepage : string);
|
|||||||
begin
|
begin
|
||||||
CreateFrame(aHomepage);
|
CreateFrame(aHomepage);
|
||||||
|
|
||||||
if (FBrowserFrame <> nil) then FBrowserFrame.CreateBrowser;
|
if (FBrowserFrame <> nil) then
|
||||||
|
FBrowserFrame.CreateBrowser;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserTab.CloseBrowser;
|
procedure TBrowserTab.CloseBrowser;
|
||||||
begin
|
begin
|
||||||
if (FBrowserFrame <> nil) then FBrowserFrame.CloseBrowser;
|
if (FBrowserFrame <> nil) then
|
||||||
|
FBrowserFrame.CloseBrowser;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserTab.ShowBrowser;
|
procedure TBrowserTab.ShowBrowser;
|
||||||
begin
|
begin
|
||||||
if (FBrowserFrame <> nil) then FBrowserFrame.ShowBrowser;
|
if (FBrowserFrame <> nil) then
|
||||||
|
FBrowserFrame.ShowBrowser;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserTab.HideBrowser;
|
procedure TBrowserTab.HideBrowser;
|
||||||
begin
|
begin
|
||||||
if (FBrowserFrame <> nil) then FBrowserFrame.HideBrowser;
|
if (FBrowserFrame <> nil) then
|
||||||
|
FBrowserFrame.HideBrowser;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserTab.BrowserFrame_OnBrowserDestroyed(Sender: TObject);
|
procedure TBrowserTab.BrowserFrame_OnBrowserDestroyed(Sender: TObject);
|
||||||
|
@ -29,7 +29,6 @@ object ChildForm: TChildForm
|
|||||||
OnBeforePopup = Chromium1BeforePopup
|
OnBeforePopup = Chromium1BeforePopup
|
||||||
OnAfterCreated = Chromium1AfterCreated
|
OnAfterCreated = Chromium1AfterCreated
|
||||||
OnBeforeClose = Chromium1BeforeClose
|
OnBeforeClose = Chromium1BeforeClose
|
||||||
OnClose = Chromium1Close
|
|
||||||
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
|
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
|
||||||
Left = 24
|
Left = 24
|
||||||
Top = 56
|
Top = 56
|
||||||
|
@ -32,7 +32,6 @@ type
|
|||||||
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; popup_id: Integer; 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: Boolean; var Result: Boolean);
|
procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; popup_id: Integer; 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: Boolean; var Result: Boolean);
|
||||||
procedure Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring);
|
procedure Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring);
|
||||||
procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction);
|
|
||||||
procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium1OpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean);
|
procedure Chromium1OpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean);
|
||||||
|
|
||||||
@ -77,11 +76,9 @@ uses
|
|||||||
|
|
||||||
// Destruction steps
|
// Destruction steps
|
||||||
// =================
|
// =================
|
||||||
// 1. FormCloseQuery sets CanClose to FALSE calls TChromium.CloseBrowser which
|
// 1. FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1 and calls
|
||||||
// triggers the TChromium.OnClose event.
|
// TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
|
||||||
// 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1
|
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
|
||||||
// in the main thread, which triggers the TChromium.OnBeforeClose event.
|
|
||||||
// 3. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
|
|
||||||
|
|
||||||
procedure TChildForm.AfterConstruction;
|
procedure TChildForm.AfterConstruction;
|
||||||
begin
|
begin
|
||||||
@ -170,12 +167,6 @@ begin
|
|||||||
Result := not(TMainForm(Owner).DoOpenUrlFromTab(targetUrl, targetDisposition));
|
Result := not(TMainForm(Owner).DoOpenUrlFromTab(targetUrl, targetDisposition));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction);
|
|
||||||
begin
|
|
||||||
PostMessage(Handle, CEF_DESTROY, 0, 0);
|
|
||||||
aAction := cbaDelay;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TChildForm.Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring);
|
procedure TChildForm.Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring);
|
||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
@ -236,6 +227,7 @@ begin
|
|||||||
FClosing := True;
|
FClosing := True;
|
||||||
Visible := False;
|
Visible := False;
|
||||||
Chromium1.CloseBrowser(True);
|
Chromium1.CloseBrowser(True);
|
||||||
|
FreeAndNil(CEFWindowParent1);
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
@ -108,13 +108,10 @@ implementation
|
|||||||
// TBrowserFrame has all the usual code to close CEF4Delphi browsers following
|
// TBrowserFrame has all the usual code to close CEF4Delphi browsers following
|
||||||
// a similar destruction sequence than the MiniBrowser demo :
|
// a similar destruction sequence than the MiniBrowser demo :
|
||||||
//
|
//
|
||||||
// 1. TBrowserTab.CloseBrowser calls TChromium.CloseBrowser which triggers the
|
// 1. TBrowserFrame.FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1
|
||||||
// TChromium.OnClose event.
|
// and calls TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
|
||||||
// 2. TChromium.OnClose sends a CEF_DESTROY message to destroy CEFWindowParent1
|
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends a CEF_DESTROYTAB
|
||||||
// in the main thread, which triggers the TChromium.OnBeforeClose event.
|
// message with the TabID to the main form.
|
||||||
// 3. TChromium.OnBeforeClose executes the TBrowserFrame.OnBrowserDestroyed
|
|
||||||
// event which will be used in TBrowserTab to send a CEF_DESTROYTAB message
|
|
||||||
// to the main form to free the tab.
|
|
||||||
|
|
||||||
// This demo also uses custom forms to open popup browsers in the same way as
|
// This demo also uses custom forms to open popup browsers in the same way as
|
||||||
// the PopupBrowser2 demo. Please, read the code comments in that demo for all
|
// the PopupBrowser2 demo. Please, read the code comments in that demo for all
|
||||||
@ -239,7 +236,6 @@ begin
|
|||||||
while (i >= 0) do
|
while (i >= 0) do
|
||||||
begin
|
begin
|
||||||
// Only count the fully initialized browser tabs and not the one waiting to be used.
|
// Only count the fully initialized browser tabs and not the one waiting to be used.
|
||||||
|
|
||||||
if TBrowserTab(BrowserPageCtrl.Pages[i]).Initialized then
|
if TBrowserTab(BrowserPageCtrl.Pages[i]).Initialized then
|
||||||
inc(Result);
|
inc(Result);
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ object BrowserFrame: TBrowserFrame
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object URLEditPnl: TPanel
|
object URLEditPnl: TPanel
|
||||||
Left = 121
|
Left = 123
|
||||||
Height = 35
|
Height = 35
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 774
|
Width = 774
|
||||||
@ -96,11 +96,11 @@ object BrowserFrame: TBrowserFrame
|
|||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object URLCbx: TComboBox
|
object URLCbx: TComboBox
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 21
|
Height = 23
|
||||||
Top = 5
|
Top = 5
|
||||||
Width = 770
|
Width = 770
|
||||||
Anchors = [akTop, akLeft, akRight]
|
Anchors = [akTop, akLeft, akRight]
|
||||||
ItemHeight = 0
|
ItemHeight = 15
|
||||||
ItemIndex = 0
|
ItemIndex = 0
|
||||||
Items.Strings = (
|
Items.Strings = (
|
||||||
'https://www.google.com'
|
'https://www.google.com'
|
||||||
@ -153,7 +153,7 @@ object BrowserFrame: TBrowserFrame
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
object ConfigPnl: TPanel
|
object ConfigPnl: TPanel
|
||||||
Left = 895
|
Left = 897
|
||||||
Height = 35
|
Height = 35
|
||||||
Top = 0
|
Top = 0
|
||||||
Width = 35
|
Width = 35
|
||||||
@ -181,8 +181,8 @@ object BrowserFrame: TBrowserFrame
|
|||||||
end
|
end
|
||||||
object StatusBar1: TStatusBar
|
object StatusBar1: TStatusBar
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 19
|
Height = 23
|
||||||
Top = 651
|
Top = 647
|
||||||
Width = 932
|
Width = 932
|
||||||
Panels = <
|
Panels = <
|
||||||
item
|
item
|
||||||
@ -192,7 +192,7 @@ object BrowserFrame: TBrowserFrame
|
|||||||
end
|
end
|
||||||
object CEFWindowParent1: TCEFWindowParent
|
object CEFWindowParent1: TCEFWindowParent
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 616
|
Height = 612
|
||||||
Top = 35
|
Top = 35
|
||||||
Width = 932
|
Width = 932
|
||||||
Align = alClient
|
Align = alClient
|
||||||
@ -207,7 +207,6 @@ object BrowserFrame: TBrowserFrame
|
|||||||
OnBeforePopup = Chromium1BeforePopup
|
OnBeforePopup = Chromium1BeforePopup
|
||||||
OnAfterCreated = Chromium1AfterCreated
|
OnAfterCreated = Chromium1AfterCreated
|
||||||
OnBeforeClose = Chromium1BeforeClose
|
OnBeforeClose = Chromium1BeforeClose
|
||||||
OnClose = Chromium1Close
|
|
||||||
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
|
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
|
||||||
Left = 40
|
Left = 40
|
||||||
Top = 72
|
Top = 72
|
||||||
|
@ -47,7 +47,6 @@ type
|
|||||||
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium1AddressChange(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
|
procedure Chromium1AddressChange(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
|
||||||
procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction: TCefCloseBrowserAction);
|
|
||||||
procedure Chromium1LoadError(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; errorCode: Integer; const errorText, failedUrl: ustring);
|
procedure Chromium1LoadError(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; errorCode: Integer; const errorText, failedUrl: ustring);
|
||||||
procedure Chromium1LoadingStateChange(Sender: TObject; const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean);
|
procedure Chromium1LoadingStateChange(Sender: TObject; const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean);
|
||||||
procedure Chromium1StatusMessage(Sender: TObject; const browser: ICefBrowser; const value: ustring);
|
procedure Chromium1StatusMessage(Sender: TObject; const browser: ICefBrowser; const value: ustring);
|
||||||
@ -90,7 +89,6 @@ type
|
|||||||
procedure SetPendingCanGoForward(aValue : boolean);
|
procedure SetPendingCanGoForward(aValue : boolean);
|
||||||
|
|
||||||
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;
|
procedure BrowserCreatedMsg(var aMessage : TMessage); message CEF_AFTERCREATED;
|
||||||
procedure BrowserDestroyMsg(var aMessage : TMessage); message CEF_DESTROY;
|
|
||||||
procedure BrowserUpdateCaptionMsg(var aMessage : TMessage); message CEF_UPDATECAPTION;
|
procedure BrowserUpdateCaptionMsg(var aMessage : TMessage); message CEF_UPDATECAPTION;
|
||||||
procedure BrowserUpdateAddressMsg(var aMessage : TMessage); message CEF_UPDATEADDRESS;
|
procedure BrowserUpdateAddressMsg(var aMessage : TMessage); message CEF_UPDATEADDRESS;
|
||||||
procedure BrowserUpdateStateMsg(var aMessage : TMessage); message CEF_UPDATESTATE;
|
procedure BrowserUpdateStateMsg(var aMessage : TMessage); message CEF_UPDATESTATE;
|
||||||
@ -136,12 +134,10 @@ uses
|
|||||||
|
|
||||||
// Destruction steps
|
// Destruction steps
|
||||||
// =================
|
// =================
|
||||||
// 1. TBrowserFrame.CloseBrowser sets CanClose to FALSE calls TChromium.CloseBrowser
|
// 1. TBrowserFrame.FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1
|
||||||
// which triggers the TChromium.OnClose event.
|
// and calls TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
|
||||||
// 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1
|
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends a CEF_DESTROYTAB
|
||||||
// in the main thread, which triggers the TChromium.OnBeforeClose event.
|
// message with the TabID to the main form.
|
||||||
// 3. TChromium.OnBeforeClose triggers the TBrowserFrame.OnBrowserDestroyed event
|
|
||||||
// which sends a CEF_DESTROYTAB message with the TabID to the main form.
|
|
||||||
|
|
||||||
constructor TBrowserFrame.Create(AOwner : TComponent);
|
constructor TBrowserFrame.Create(AOwner : TComponent);
|
||||||
begin
|
begin
|
||||||
@ -275,7 +271,6 @@ end;
|
|||||||
procedure TBrowserFrame.CreateBrowser;
|
procedure TBrowserFrame.CreateBrowser;
|
||||||
begin
|
begin
|
||||||
Chromium1.DefaultURL := FHomepage;
|
Chromium1.DefaultURL := FHomepage;
|
||||||
Chromium1.RuntimeStyle := CEF_RUNTIME_STYLE_ALLOY;
|
|
||||||
Chromium1.CreateBrowser(CEFWindowParent1);
|
Chromium1.CreateBrowser(CEFWindowParent1);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -285,7 +280,8 @@ begin
|
|||||||
begin
|
begin
|
||||||
FClosing := True;
|
FClosing := True;
|
||||||
NavControlPnl.Enabled := False;
|
NavControlPnl.Enabled := False;
|
||||||
Chromium1.CloseBrowser(True);
|
Chromium1.CloseBrowser(True);
|
||||||
|
FreeAndNil(CEFWindowParent1);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -371,14 +367,6 @@ begin
|
|||||||
TBrowserTab(Parent).DoOpenUrlFromTab(targetUrl, targetDisposition);
|
TBrowserTab(Parent).DoOpenUrlFromTab(targetUrl, targetDisposition);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserFrame.Chromium1Close( Sender : TObject;
|
|
||||||
const browser : ICefBrowser;
|
|
||||||
var aAction : TCefCloseBrowserAction);
|
|
||||||
begin
|
|
||||||
PostMessage(Handle, CEF_DESTROY, 0, 0);
|
|
||||||
aAction := cbaDelay;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TBrowserFrame.Chromium1LoadError( Sender : TObject;
|
procedure TBrowserFrame.Chromium1LoadError( Sender : TObject;
|
||||||
const browser : ICefBrowser;
|
const browser : ICefBrowser;
|
||||||
const frame : ICefFrame;
|
const frame : ICefFrame;
|
||||||
@ -438,11 +426,6 @@ begin
|
|||||||
NavControlPnl.Enabled := True;
|
NavControlPnl.Enabled := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserFrame.BrowserDestroyMsg(var aMessage : TMessage);
|
|
||||||
begin
|
|
||||||
CEFWindowParent1.Free;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TBrowserFrame.BrowserUpdateCaptionMsg(var aMessage : TMessage);
|
procedure TBrowserFrame.BrowserUpdateCaptionMsg(var aMessage : TMessage);
|
||||||
begin
|
begin
|
||||||
if assigned(FOnBrowserTitleChange) then
|
if assigned(FOnBrowserTitleChange) then
|
||||||
|
@ -127,22 +127,26 @@ procedure TBrowserTab.CreateBrowser(const aHomepage : string);
|
|||||||
begin
|
begin
|
||||||
CreateFrame(aHomepage);
|
CreateFrame(aHomepage);
|
||||||
|
|
||||||
if (FBrowserFrame <> nil) then FBrowserFrame.CreateBrowser;
|
if (FBrowserFrame <> nil) then
|
||||||
|
FBrowserFrame.CreateBrowser;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserTab.CloseBrowser;
|
procedure TBrowserTab.CloseBrowser;
|
||||||
begin
|
begin
|
||||||
if (FBrowserFrame <> nil) then FBrowserFrame.CloseBrowser;
|
if (FBrowserFrame <> nil) then
|
||||||
|
FBrowserFrame.CloseBrowser;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserTab.ShowBrowser;
|
procedure TBrowserTab.ShowBrowser;
|
||||||
begin
|
begin
|
||||||
if (FBrowserFrame <> nil) then FBrowserFrame.ShowBrowser;
|
if (FBrowserFrame <> nil) then
|
||||||
|
FBrowserFrame.ShowBrowser;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserTab.HideBrowser;
|
procedure TBrowserTab.HideBrowser;
|
||||||
begin
|
begin
|
||||||
if (FBrowserFrame <> nil) then FBrowserFrame.HideBrowser;
|
if (FBrowserFrame <> nil) then
|
||||||
|
FBrowserFrame.HideBrowser;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TBrowserTab.BrowserFrame_OnBrowserDestroyed(Sender: TObject);
|
procedure TBrowserTab.BrowserFrame_OnBrowserDestroyed(Sender: TObject);
|
||||||
|
@ -15,7 +15,6 @@ object ChildForm: TChildForm
|
|||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
LCLVersion = '3.4.0.0'
|
|
||||||
object CEFWindowParent1: TCEFWindowParent
|
object CEFWindowParent1: TCEFWindowParent
|
||||||
Left = 0
|
Left = 0
|
||||||
Height = 256
|
Height = 256
|
||||||
@ -29,7 +28,6 @@ object ChildForm: TChildForm
|
|||||||
OnBeforePopup = Chromium1BeforePopup
|
OnBeforePopup = Chromium1BeforePopup
|
||||||
OnAfterCreated = Chromium1AfterCreated
|
OnAfterCreated = Chromium1AfterCreated
|
||||||
OnBeforeClose = Chromium1BeforeClose
|
OnBeforeClose = Chromium1BeforeClose
|
||||||
OnClose = Chromium1Close
|
|
||||||
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
|
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
|
||||||
Left = 24
|
Left = 24
|
||||||
Top = 56
|
Top = 56
|
||||||
|
@ -34,7 +34,6 @@ type
|
|||||||
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; popup_id: Integer; 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: Boolean; var Result: Boolean);
|
procedure Chromium1BeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; popup_id: Integer; 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: Boolean; var Result: Boolean);
|
||||||
procedure Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring);
|
procedure Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring);
|
||||||
procedure Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction);
|
|
||||||
procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
procedure Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
|
||||||
procedure Chromium1OpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean);
|
procedure Chromium1OpenUrlFromTab(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl: ustring; targetDisposition: TCefWindowOpenDisposition; userGesture: Boolean; out Result: Boolean);
|
||||||
|
|
||||||
@ -79,11 +78,9 @@ uses
|
|||||||
|
|
||||||
// Destruction steps
|
// Destruction steps
|
||||||
// =================
|
// =================
|
||||||
// 1. FormCloseQuery sets CanClose to FALSE calls TChromium.CloseBrowser which
|
// 1. FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1 and calls
|
||||||
// triggers the TChromium.OnClose event.
|
// TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
|
||||||
// 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1
|
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
|
||||||
// in the main thread, which triggers the TChromium.OnBeforeClose event.
|
|
||||||
// 3. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
|
|
||||||
|
|
||||||
procedure TChildForm.AfterConstruction;
|
procedure TChildForm.AfterConstruction;
|
||||||
begin
|
begin
|
||||||
@ -172,12 +169,6 @@ begin
|
|||||||
Result := not(TMainForm(Owner).DoOpenUrlFromTab(targetUrl, targetDisposition));
|
Result := not(TMainForm(Owner).DoOpenUrlFromTab(targetUrl, targetDisposition));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TChildForm.Chromium1Close(Sender: TObject; const browser: ICefBrowser; var aAction : TCefCloseBrowserAction);
|
|
||||||
begin
|
|
||||||
PostMessage(Handle, CEF_DESTROY, 0, 0);
|
|
||||||
aAction := cbaDelay;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TChildForm.Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring);
|
procedure TChildForm.Chromium1TitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring);
|
||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
@ -237,7 +228,8 @@ begin
|
|||||||
begin
|
begin
|
||||||
FClosing := True;
|
FClosing := True;
|
||||||
Visible := False;
|
Visible := False;
|
||||||
Chromium1.CloseBrowser(True);
|
Chromium1.CloseBrowser(True);
|
||||||
|
FreeAndNil(CEFWindowParent1);
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
|
@ -15,7 +15,7 @@ object MainForm: TMainForm
|
|||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
Position = poScreenCenter
|
Position = poScreenCenter
|
||||||
LCLVersion = '3.4.0.0'
|
LCLVersion = '3.6.0.0'
|
||||||
object BrowserPageCtrl: TPageControl
|
object BrowserPageCtrl: TPageControl
|
||||||
Left = 32
|
Left = 32
|
||||||
Height = 703
|
Height = 703
|
||||||
|
@ -106,13 +106,10 @@ implementation
|
|||||||
// TBrowserFrame has all the usual code to close CEF4Delphi browsers following
|
// TBrowserFrame has all the usual code to close CEF4Delphi browsers following
|
||||||
// a similar destruction sequence than the MiniBrowser demo :
|
// a similar destruction sequence than the MiniBrowser demo :
|
||||||
//
|
//
|
||||||
// 1. TBrowserTab.CloseBrowser calls TChromium.CloseBrowser which triggers the
|
// 1. TBrowserFrame.FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1
|
||||||
// TChromium.OnClose event.
|
// and calls TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
|
||||||
// 2. TChromium.OnClose sends a CEF_DESTROY message to destroy CEFWindowParent1
|
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends a CEF_DESTROYTAB
|
||||||
// in the main thread, which triggers the TChromium.OnBeforeClose event.
|
// message with the TabID to the main form.
|
||||||
// 3. TChromium.OnBeforeClose executes the TBrowserFrame.OnBrowserDestroyed
|
|
||||||
// event which will be used in TBrowserTab to send a CEF_DESTROYTAB message
|
|
||||||
// to the main form to free the tab.
|
|
||||||
|
|
||||||
// This demo also uses custom forms to open popup browsers in the same way as
|
// This demo also uses custom forms to open popup browsers in the same way as
|
||||||
// the PopupBrowser2 demo. Please, read the code comments in that demo for all
|
// the PopupBrowser2 demo. Please, read the code comments in that demo for all
|
||||||
@ -155,11 +152,12 @@ end;
|
|||||||
|
|
||||||
procedure CreateGlobalCEFApp;
|
procedure CreateGlobalCEFApp;
|
||||||
begin
|
begin
|
||||||
GlobalCEFApp := TCefApplication.Create;
|
GlobalCEFApp := TCefApplication.Create;
|
||||||
GlobalCEFApp.cache := 'cache';
|
GlobalCEFApp.RootCache := 'RootCache';
|
||||||
GlobalCEFApp.EnablePrintPreview := True;
|
GlobalCEFApp.cache := 'RootCache\cache';
|
||||||
GlobalCEFApp.OnContextInitialized := GlobalCEFApp_OnContextInitialized;
|
GlobalCEFApp.EnablePrintPreview := True;
|
||||||
GlobalCEFApp.SetCurrentDir := True;
|
GlobalCEFApp.OnContextInitialized := GlobalCEFApp_OnContextInitialized;
|
||||||
|
GlobalCEFApp.SetCurrentDir := True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TMainForm.EnableButtonPnl;
|
procedure TMainForm.EnableButtonPnl;
|
||||||
@ -209,7 +207,6 @@ begin
|
|||||||
while (i >= 0) do
|
while (i >= 0) do
|
||||||
begin
|
begin
|
||||||
// Only count the fully initialized browser tabs and not the one waiting to be used.
|
// Only count the fully initialized browser tabs and not the one waiting to be used.
|
||||||
|
|
||||||
if TBrowserTab(BrowserPageCtrl.Pages[i]).Initialized then
|
if TBrowserTab(BrowserPageCtrl.Pages[i]).Initialized then
|
||||||
inc(Result);
|
inc(Result);
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
"UpdateLazPackages" : [
|
"UpdateLazPackages" : [
|
||||||
{
|
{
|
||||||
"ForceNotify" : true,
|
"ForceNotify" : true,
|
||||||
"InternalVersion" : 691,
|
"InternalVersion" : 692,
|
||||||
"Name" : "cef4delphi_lazarus.lpk",
|
"Name" : "cef4delphi_lazarus.lpk",
|
||||||
"Version" : "131.4.1"
|
"Version" : "131.4.1"
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user