1
0
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:
Salvador Díaz Fau
2025-01-09 17:24:32 +01:00
parent 526634f715
commit 38b9b5ae12
14 changed files with 61 additions and 114 deletions

View File

@ -217,7 +217,6 @@ object BrowserFrame: TBrowserFrame
OnBeforePopup = Chromium1BeforePopup
OnAfterCreated = Chromium1AfterCreated
OnBeforeClose = Chromium1BeforeClose
OnClose = Chromium1Close
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
Left = 40
Top = 72

View File

@ -45,7 +45,6 @@ type
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
procedure Chromium1AddressChange(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
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 Chromium1LoadingStateChange(Sender: TObject; const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean);
procedure Chromium1StatusMessage(Sender: TObject; const browser: ICefBrowser; const value: ustring);
@ -88,7 +87,6 @@ type
procedure SetPendingCanGoForward(aValue : boolean);
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 BrowserUpdateAddressMsg(var aMessage : TMessage); message CEF_UPDATEADDRESS;
procedure BrowserUpdateStateMsg(var aMessage : TMessage); message CEF_UPDATESTATE;
@ -134,12 +132,10 @@ uses
// Destruction steps
// =================
// 1. TBrowserFrame.CloseBrowser sets CanClose to FALSE calls TChromium.CloseBrowser
// which triggers the TChromium.OnClose event.
// 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1
// in the main thread, which triggers the TChromium.OnBeforeClose event.
// 3. TChromium.OnBeforeClose triggers the TBrowserFrame.OnBrowserDestroyed event
// which sends a CEF_DESTROYTAB message with the TabID to the main form.
// 1. TBrowserFrame.FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1
// and calls TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends a CEF_DESTROYTAB
// message with the TabID to the main form.
constructor TBrowserFrame.Create(AOwner : TComponent);
begin
@ -273,7 +269,6 @@ end;
procedure TBrowserFrame.CreateBrowser;
begin
Chromium1.DefaultURL := FHomepage;
Chromium1.RuntimeStyle := CEF_RUNTIME_STYLE_ALLOY;
Chromium1.CreateBrowser(CEFWindowParent1);
end;
@ -284,6 +279,7 @@ begin
FClosing := True;
NavControlPnl.Enabled := False;
Chromium1.CloseBrowser(True);
FreeAndNil(CEFWindowParent1);
end;
end;
@ -332,7 +328,8 @@ end;
procedure TBrowserFrame.Chromium1BeforeClose(Sender: TObject; const browser: ICefBrowser);
begin
if assigned(FOnBrowserDestroyed) then FOnBrowserDestroyed(self);
if assigned(FOnBrowserDestroyed) then
FOnBrowserDestroyed(self);
end;
procedure TBrowserFrame.Chromium1BeforePopup( Sender : TObject;
@ -369,14 +366,6 @@ begin
TBrowserTab(Parent).DoOpenUrlFromTab(targetUrl, targetDisposition);
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;
const browser : ICefBrowser;
const frame : ICefFrame;
@ -436,11 +425,6 @@ begin
NavControlPnl.Enabled := True;
end;
procedure TBrowserFrame.BrowserDestroyMsg(var aMessage : TMessage);
begin
CEFWindowParent1.Free;
end;
procedure TBrowserFrame.BrowserUpdateCaptionMsg(var aMessage : TMessage);
begin
if assigned(FOnBrowserTitleChange) then

View File

@ -125,22 +125,26 @@ procedure TBrowserTab.CreateBrowser(const aHomepage : string);
begin
CreateFrame(aHomepage);
if (FBrowserFrame <> nil) then FBrowserFrame.CreateBrowser;
if (FBrowserFrame <> nil) then
FBrowserFrame.CreateBrowser;
end;
procedure TBrowserTab.CloseBrowser;
begin
if (FBrowserFrame <> nil) then FBrowserFrame.CloseBrowser;
if (FBrowserFrame <> nil) then
FBrowserFrame.CloseBrowser;
end;
procedure TBrowserTab.ShowBrowser;
begin
if (FBrowserFrame <> nil) then FBrowserFrame.ShowBrowser;
if (FBrowserFrame <> nil) then
FBrowserFrame.ShowBrowser;
end;
procedure TBrowserTab.HideBrowser;
begin
if (FBrowserFrame <> nil) then FBrowserFrame.HideBrowser;
if (FBrowserFrame <> nil) then
FBrowserFrame.HideBrowser;
end;
procedure TBrowserTab.BrowserFrame_OnBrowserDestroyed(Sender: TObject);

View File

@ -29,7 +29,6 @@ object ChildForm: TChildForm
OnBeforePopup = Chromium1BeforePopup
OnAfterCreated = Chromium1AfterCreated
OnBeforeClose = Chromium1BeforeClose
OnClose = Chromium1Close
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
Left = 24
Top = 56

View File

@ -32,7 +32,6 @@ type
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 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 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
// =================
// 1. FormCloseQuery sets CanClose to FALSE calls TChromium.CloseBrowser which
// triggers the TChromium.OnClose event.
// 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1
// in the main thread, which triggers the TChromium.OnBeforeClose event.
// 3. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
// 1. FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1 and calls
// TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
procedure TChildForm.AfterConstruction;
begin
@ -170,12 +167,6 @@ begin
Result := not(TMainForm(Owner).DoOpenUrlFromTab(targetUrl, targetDisposition));
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);
begin
try
@ -236,6 +227,7 @@ begin
FClosing := True;
Visible := False;
Chromium1.CloseBrowser(True);
FreeAndNil(CEFWindowParent1);
end;
end
else

View File

@ -108,13 +108,10 @@ implementation
// TBrowserFrame has all the usual code to close CEF4Delphi browsers following
// a similar destruction sequence than the MiniBrowser demo :
//
// 1. TBrowserTab.CloseBrowser calls TChromium.CloseBrowser which triggers the
// TChromium.OnClose event.
// 2. TChromium.OnClose sends a CEF_DESTROY message to destroy CEFWindowParent1
// in the main thread, which triggers the TChromium.OnBeforeClose event.
// 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.
// 1. TBrowserFrame.FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1
// and calls TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends a CEF_DESTROYTAB
// message with the TabID to the main form.
// 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
@ -239,7 +236,6 @@ begin
while (i >= 0) do
begin
// Only count the fully initialized browser tabs and not the one waiting to be used.
if TBrowserTab(BrowserPageCtrl.Pages[i]).Initialized then
inc(Result);

View File

@ -85,7 +85,7 @@ object BrowserFrame: TBrowserFrame
end
end
object URLEditPnl: TPanel
Left = 121
Left = 123
Height = 35
Top = 0
Width = 774
@ -96,11 +96,11 @@ object BrowserFrame: TBrowserFrame
TabOrder = 1
object URLCbx: TComboBox
Left = 0
Height = 21
Height = 23
Top = 5
Width = 770
Anchors = [akTop, akLeft, akRight]
ItemHeight = 0
ItemHeight = 15
ItemIndex = 0
Items.Strings = (
'https://www.google.com'
@ -153,7 +153,7 @@ object BrowserFrame: TBrowserFrame
end
end
object ConfigPnl: TPanel
Left = 895
Left = 897
Height = 35
Top = 0
Width = 35
@ -181,8 +181,8 @@ object BrowserFrame: TBrowserFrame
end
object StatusBar1: TStatusBar
Left = 0
Height = 19
Top = 651
Height = 23
Top = 647
Width = 932
Panels = <
item
@ -192,7 +192,7 @@ object BrowserFrame: TBrowserFrame
end
object CEFWindowParent1: TCEFWindowParent
Left = 0
Height = 616
Height = 612
Top = 35
Width = 932
Align = alClient
@ -207,7 +207,6 @@ object BrowserFrame: TBrowserFrame
OnBeforePopup = Chromium1BeforePopup
OnAfterCreated = Chromium1AfterCreated
OnBeforeClose = Chromium1BeforeClose
OnClose = Chromium1Close
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
Left = 40
Top = 72

View File

@ -47,7 +47,6 @@ type
procedure Chromium1AfterCreated(Sender: TObject; const browser: ICefBrowser);
procedure Chromium1AddressChange(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const url: ustring);
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 Chromium1LoadingStateChange(Sender: TObject; const browser: ICefBrowser; isLoading, canGoBack, canGoForward: Boolean);
procedure Chromium1StatusMessage(Sender: TObject; const browser: ICefBrowser; const value: ustring);
@ -90,7 +89,6 @@ type
procedure SetPendingCanGoForward(aValue : boolean);
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 BrowserUpdateAddressMsg(var aMessage : TMessage); message CEF_UPDATEADDRESS;
procedure BrowserUpdateStateMsg(var aMessage : TMessage); message CEF_UPDATESTATE;
@ -136,12 +134,10 @@ uses
// Destruction steps
// =================
// 1. TBrowserFrame.CloseBrowser sets CanClose to FALSE calls TChromium.CloseBrowser
// which triggers the TChromium.OnClose event.
// 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1
// in the main thread, which triggers the TChromium.OnBeforeClose event.
// 3. TChromium.OnBeforeClose triggers the TBrowserFrame.OnBrowserDestroyed event
// which sends a CEF_DESTROYTAB message with the TabID to the main form.
// 1. TBrowserFrame.FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1
// and calls TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends a CEF_DESTROYTAB
// message with the TabID to the main form.
constructor TBrowserFrame.Create(AOwner : TComponent);
begin
@ -275,7 +271,6 @@ end;
procedure TBrowserFrame.CreateBrowser;
begin
Chromium1.DefaultURL := FHomepage;
Chromium1.RuntimeStyle := CEF_RUNTIME_STYLE_ALLOY;
Chromium1.CreateBrowser(CEFWindowParent1);
end;
@ -286,6 +281,7 @@ begin
FClosing := True;
NavControlPnl.Enabled := False;
Chromium1.CloseBrowser(True);
FreeAndNil(CEFWindowParent1);
end;
end;
@ -371,14 +367,6 @@ begin
TBrowserTab(Parent).DoOpenUrlFromTab(targetUrl, targetDisposition);
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;
const browser : ICefBrowser;
const frame : ICefFrame;
@ -438,11 +426,6 @@ begin
NavControlPnl.Enabled := True;
end;
procedure TBrowserFrame.BrowserDestroyMsg(var aMessage : TMessage);
begin
CEFWindowParent1.Free;
end;
procedure TBrowserFrame.BrowserUpdateCaptionMsg(var aMessage : TMessage);
begin
if assigned(FOnBrowserTitleChange) then

View File

@ -127,22 +127,26 @@ procedure TBrowserTab.CreateBrowser(const aHomepage : string);
begin
CreateFrame(aHomepage);
if (FBrowserFrame <> nil) then FBrowserFrame.CreateBrowser;
if (FBrowserFrame <> nil) then
FBrowserFrame.CreateBrowser;
end;
procedure TBrowserTab.CloseBrowser;
begin
if (FBrowserFrame <> nil) then FBrowserFrame.CloseBrowser;
if (FBrowserFrame <> nil) then
FBrowserFrame.CloseBrowser;
end;
procedure TBrowserTab.ShowBrowser;
begin
if (FBrowserFrame <> nil) then FBrowserFrame.ShowBrowser;
if (FBrowserFrame <> nil) then
FBrowserFrame.ShowBrowser;
end;
procedure TBrowserTab.HideBrowser;
begin
if (FBrowserFrame <> nil) then FBrowserFrame.HideBrowser;
if (FBrowserFrame <> nil) then
FBrowserFrame.HideBrowser;
end;
procedure TBrowserTab.BrowserFrame_OnBrowserDestroyed(Sender: TObject);

View File

@ -15,7 +15,6 @@ object ChildForm: TChildForm
OnCreate = FormCreate
OnDestroy = FormDestroy
Position = poScreenCenter
LCLVersion = '3.4.0.0'
object CEFWindowParent1: TCEFWindowParent
Left = 0
Height = 256
@ -29,7 +28,6 @@ object ChildForm: TChildForm
OnBeforePopup = Chromium1BeforePopup
OnAfterCreated = Chromium1AfterCreated
OnBeforeClose = Chromium1BeforeClose
OnClose = Chromium1Close
OnOpenUrlFromTab = Chromium1OpenUrlFromTab
Left = 24
Top = 56

View File

@ -34,7 +34,6 @@ type
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 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 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
// =================
// 1. FormCloseQuery sets CanClose to FALSE calls TChromium.CloseBrowser which
// triggers the TChromium.OnClose event.
// 2. TChromium.OnClose sends a CEFBROWSER_DESTROY message to destroy CEFWindowParent1
// in the main thread, which triggers the TChromium.OnBeforeClose event.
// 3. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
// 1. FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1 and calls
// TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends WM_CLOSE to the form.
procedure TChildForm.AfterConstruction;
begin
@ -172,12 +169,6 @@ begin
Result := not(TMainForm(Owner).DoOpenUrlFromTab(targetUrl, targetDisposition));
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);
begin
try
@ -238,6 +229,7 @@ begin
FClosing := True;
Visible := False;
Chromium1.CloseBrowser(True);
FreeAndNil(CEFWindowParent1);
end;
end
else

View File

@ -15,7 +15,7 @@ object MainForm: TMainForm
OnDestroy = FormDestroy
OnShow = FormShow
Position = poScreenCenter
LCLVersion = '3.4.0.0'
LCLVersion = '3.6.0.0'
object BrowserPageCtrl: TPageControl
Left = 32
Height = 703

View File

@ -106,13 +106,10 @@ implementation
// TBrowserFrame has all the usual code to close CEF4Delphi browsers following
// a similar destruction sequence than the MiniBrowser demo :
//
// 1. TBrowserTab.CloseBrowser calls TChromium.CloseBrowser which triggers the
// TChromium.OnClose event.
// 2. TChromium.OnClose sends a CEF_DESTROY message to destroy CEFWindowParent1
// in the main thread, which triggers the TChromium.OnBeforeClose event.
// 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.
// 1. TBrowserFrame.FormCloseQuery sets CanClose to FALSE, destroys CEFWindowParent1
// and calls TChromium.CloseBrowser which triggers the TChromium.OnBeforeClose event.
// 2. TChromium.OnBeforeClose sets FCanClose := True and sends a CEF_DESTROYTAB
// message with the TabID to the main form.
// 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
@ -156,7 +153,8 @@ end;
procedure CreateGlobalCEFApp;
begin
GlobalCEFApp := TCefApplication.Create;
GlobalCEFApp.cache := 'cache';
GlobalCEFApp.RootCache := 'RootCache';
GlobalCEFApp.cache := 'RootCache\cache';
GlobalCEFApp.EnablePrintPreview := True;
GlobalCEFApp.OnContextInitialized := GlobalCEFApp_OnContextInitialized;
GlobalCEFApp.SetCurrentDir := True;
@ -209,7 +207,6 @@ begin
while (i >= 0) do
begin
// Only count the fully initialized browser tabs and not the one waiting to be used.
if TBrowserTab(BrowserPageCtrl.Pages[i]).Initialized then
inc(Result);

View File

@ -2,7 +2,7 @@
"UpdateLazPackages" : [
{
"ForceNotify" : true,
"InternalVersion" : 691,
"InternalVersion" : 692,
"Name" : "cef4delphi_lazarus.lpk",
"Version" : "131.4.1"
}