1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-05-13 21:46:53 +02:00

Create independent browsers in FMXTabbedBrowser

This commit is contained in:
Salvador Díaz Fau 2024-08-09 15:37:48 +02:00
parent dcc10166bd
commit 506f56e583
5 changed files with 33 additions and 10 deletions

View File

@ -65,7 +65,7 @@ type
public public
constructor Create(AOwner : TComponent); override; constructor Create(AOwner : TComponent); override;
procedure NotifyMoveOrResizeStarted; procedure NotifyMoveOrResizeStarted;
procedure CreateBrowser; procedure CreateBrowser(aIndependent : boolean);
procedure CloseBrowser; procedure CloseBrowser;
procedure ResizeBrowser; procedure ResizeBrowser;
procedure ShowBrowser; procedure ShowBrowser;
@ -87,7 +87,8 @@ implementation
uses uses
FMX.Platform, {$IFDEF MSWINDOWS}FMX.Platform.Win,{$ENDIF} FMX.Platform, {$IFDEF MSWINDOWS}FMX.Platform.Win,{$ENDIF}
uCEFMiscFunctions, uCEFApplication, uBrowserTab, uMainForm; uCEFMiscFunctions, uCEFApplication, uCEFRequestContext,
uBrowserTab, uMainForm;
procedure TBrowserFrame.BackBtnClick(Sender: TObject); procedure TBrowserFrame.BackBtnClick(Sender: TObject);
begin begin
@ -331,7 +332,7 @@ begin
FMXChromium1.LoadURL(URLEdt.Text); FMXChromium1.LoadURL(URLEdt.Text);
end; end;
procedure TBrowserFrame.CreateBrowser; procedure TBrowserFrame.CreateBrowser(aIndependent : boolean);
var var
{$IFDEF MSWINDOWS} {$IFDEF MSWINDOWS}
TempHandle : HWND; TempHandle : HWND;
@ -339,11 +340,21 @@ var
TempClientRect : TRectF; TempClientRect : TRectF;
TempScale : single; TempScale : single;
{$ENDIF} {$ENDIF}
TempContext : ICefRequestContext;
TempCache : string;
begin begin
CreateFMXWindowParent; CreateFMXWindowParent;
if not(FMXChromium1.Initialized) then if not(FMXChromium1.Initialized) then
begin begin
if aIndependent then
begin
TempCache := GlobalCEFApp.RootCache + '\cache' + inttostr(TBrowserTab(ParentTab).TabID);
TempContext := TCefRequestContextRef.New(TempCache, '', '', False, False, False, FMXChromium1.ReqContextHandler)
end
else
TempContext := nil;
{$IFDEF MSWINDOWS} {$IFDEF MSWINDOWS}
TempHandle := FmxHandleToHWND(FMXWindowParent.Handle); TempHandle := FmxHandleToHWND(FMXWindowParent.Handle);
TempClientRect := FMXWindowParent.ClientRect; TempClientRect := FMXWindowParent.ClientRect;
@ -354,7 +365,7 @@ begin
TempRect.Bottom := round(TempClientRect.Bottom * TempScale); TempRect.Bottom := round(TempClientRect.Bottom * TempScale);
FMXChromium1.DefaultUrl := FHomepage; FMXChromium1.DefaultUrl := FHomepage;
FMXChromium1.CreateBrowser(TempHandle, TempRect); FMXChromium1.CreateBrowser(TempHandle, TempRect, '', TempContext);
{$ENDIF} {$ENDIF}
end; end;
end; end;

View File

@ -24,7 +24,7 @@ type
constructor Create(AOwner: TComponent; aTabID : cardinal; const aCaption : string); reintroduce; constructor Create(AOwner: TComponent; aTabID : cardinal; const aCaption : string); reintroduce;
procedure NotifyMoveOrResizeStarted; procedure NotifyMoveOrResizeStarted;
procedure DestroyWindowParent; procedure DestroyWindowParent;
procedure CreateBrowser(const aHomepage : string); procedure CreateBrowser(const aHomepage : string; aIndependent : boolean);
procedure CloseBrowser; procedure CloseBrowser;
procedure ResizeBrowser; procedure ResizeBrowser;
procedure ShowBrowser; procedure ShowBrowser;
@ -86,7 +86,7 @@ begin
FBrowserFrame.DestroyWindowParent; FBrowserFrame.DestroyWindowParent;
end; end;
procedure TBrowserTab.CreateBrowser(const aHomepage : string); procedure TBrowserTab.CreateBrowser(const aHomepage : string; aIndependent : boolean);
begin begin
FBrowserFrame := TBrowserFrame.Create(self); FBrowserFrame := TBrowserFrame.Create(self);
FBrowserFrame.Parent := self; FBrowserFrame.Parent := self;
@ -98,7 +98,7 @@ begin
FBrowserFrame.OnBrowserTitleChange := BrowserFrame_OnBrowserTitleChange; FBrowserFrame.OnBrowserTitleChange := BrowserFrame_OnBrowserTitleChange;
FBrowserFrame.OnBrowserClosing := BrowserFrame_OnBrowserClosing; FBrowserFrame.OnBrowserClosing := BrowserFrame_OnBrowserClosing;
FBrowserFrame.CreateBrowser; FBrowserFrame.CreateBrowser(aIndependent);
end; end;
procedure TBrowserTab.CloseBrowser; procedure TBrowserTab.CloseBrowser;

View File

@ -84,6 +84,16 @@ object MainForm: TMainForm
StyleLookup = 'passwordeditbutton' StyleLookup = 'passwordeditbutton'
TextSettings.Trimming = None TextSettings.Trimming = None
end end
object IndependetChk: TCheckBox
Position.X = -36.000000000000000000
Position.Y = 176.000000000000000000
RotationAngle = 270.000000000000000000
Size.Width = 100.000000000000000000
Size.Height = 16.000000000000000000
Size.PlatformDefault = False
TabOrder = 0
Text = 'Independent'
end
end end
object BrowserTabCtrl: TTabControl object BrowserTabCtrl: TTabControl
Align = Client Align = Client

View File

@ -38,6 +38,7 @@ type
NextTabBtn: TSpeedButton; NextTabBtn: TSpeedButton;
ShowTabsBtn: TSpeedButton; ShowTabsBtn: TSpeedButton;
ShowTabsAction: TAction; ShowTabsAction: TAction;
IndependetChk: TCheckBox;
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
@ -145,7 +146,8 @@ end;
procedure CreateGlobalCEFApp; procedure CreateGlobalCEFApp;
begin begin
GlobalCEFApp := TCefApplication.Create; GlobalCEFApp := TCefApplication.Create;
GlobalCEFApp.cache := 'cache'; GlobalCEFApp.RootCache := ExtractFileDir(ParamStr(0));
GlobalCEFApp.cache := GlobalCEFApp.RootCache + '\cache';
GlobalCEFApp.OnContextInitialized := GlobalCEFApp_OnContextInitialized; GlobalCEFApp.OnContextInitialized := GlobalCEFApp_OnContextInitialized;
end; end;
@ -274,7 +276,7 @@ begin
BrowserTabCtrl.TabIndex := pred(BrowserTabCtrl.TabCount); BrowserTabCtrl.TabIndex := pred(BrowserTabCtrl.TabCount);
TempNewTab.CreateBrowser(HOMEPAGE_URL); TempNewTab.CreateBrowser(HOMEPAGE_URL, IndependetChk.IsChecked);
end; end;
procedure TMainForm.RemoveTabActionExecute(Sender: TObject); procedure TMainForm.RemoveTabActionExecute(Sender: TObject);

View File

@ -2,7 +2,7 @@
"UpdateLazPackages" : [ "UpdateLazPackages" : [
{ {
"ForceNotify" : true, "ForceNotify" : true,
"InternalVersion" : 639, "InternalVersion" : 640,
"Name" : "cef4delphi_lazarus.lpk", "Name" : "cef4delphi_lazarus.lpk",
"Version" : "127.3.2" "Version" : "127.3.2"
} }