mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-04-17 06:57:13 +02:00
Fixed resize issue in the FMXExternalPumpBrowser demo
- Added a button to FMXExternalPumpBrowser to take a snapshot. - Removed unused constant - Added more comments to MDIBrowser demo
This commit is contained in:
parent
6caf630669
commit
75cee6e6d8
@ -24,28 +24,51 @@ object FMXExternalPumpBrowserFrm: TFMXExternalPumpBrowserFrm
|
|||||||
Size.Height = 33.000000000000000000
|
Size.Height = 33.000000000000000000
|
||||||
Size.PlatformDefault = False
|
Size.PlatformDefault = False
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object GoBtn: TButton
|
|
||||||
Align = Right
|
|
||||||
Position.X = 759.000000000000000000
|
|
||||||
Position.Y = 5.000000000000000000
|
|
||||||
Size.Width = 36.000000000000000000
|
|
||||||
Size.Height = 23.000000000000000000
|
|
||||||
Size.PlatformDefault = False
|
|
||||||
TabOrder = 1
|
|
||||||
Text = 'Go'
|
|
||||||
OnClick = GoBtnClick
|
|
||||||
OnEnter = GoBtnEnter
|
|
||||||
end
|
|
||||||
object AddressEdt: TEdit
|
object AddressEdt: TEdit
|
||||||
Touch.InteractiveGestures = [LongTap, DoubleTap]
|
Touch.InteractiveGestures = [LongTap, DoubleTap]
|
||||||
Align = Client
|
Align = Client
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
Text = 'https://www.google.com'
|
Text = 'https://www.google.com'
|
||||||
Size.Width = 754.000000000000000000
|
Size.Width = 709.000000000000000000
|
||||||
Size.Height = 23.000000000000000000
|
Size.Height = 23.000000000000000000
|
||||||
Size.PlatformDefault = False
|
Size.PlatformDefault = False
|
||||||
OnEnter = AddressEdtEnter
|
OnEnter = AddressEdtEnter
|
||||||
end
|
end
|
||||||
|
object Panel2: TPanel
|
||||||
|
Align = Right
|
||||||
|
Padding.Left = 5.000000000000000000
|
||||||
|
Position.X = 714.000000000000000000
|
||||||
|
Position.Y = 5.000000000000000000
|
||||||
|
Size.Width = 81.000000000000000000
|
||||||
|
Size.Height = 23.000000000000000000
|
||||||
|
Size.PlatformDefault = False
|
||||||
|
TabOrder = 1
|
||||||
|
object GoBtn: TButton
|
||||||
|
Align = Left
|
||||||
|
Position.X = 5.000000000000000000
|
||||||
|
Size.Width = 36.000000000000000000
|
||||||
|
Size.Height = 23.000000000000000000
|
||||||
|
Size.PlatformDefault = False
|
||||||
|
TabOrder = 0
|
||||||
|
Text = 'Go'
|
||||||
|
OnClick = GoBtnClick
|
||||||
|
OnEnter = GoBtnEnter
|
||||||
|
end
|
||||||
|
object SnapshotBtn: TButton
|
||||||
|
Align = Right
|
||||||
|
StyledSettings = [Style, FontColor]
|
||||||
|
Position.X = 45.000000000000000000
|
||||||
|
Size.Width = 36.000000000000000000
|
||||||
|
Size.Height = 23.000000000000000000
|
||||||
|
Size.PlatformDefault = False
|
||||||
|
TabOrder = 1
|
||||||
|
Text = #181
|
||||||
|
TextSettings.Font.Family = 'Webdings'
|
||||||
|
TextSettings.Font.Size = 32.000000000000000000
|
||||||
|
OnClick = SnapshotBtnClick
|
||||||
|
OnEnter = SnapshotBtnEnter
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object Panel1: TFMXBufferPanel
|
object Panel1: TFMXBufferPanel
|
||||||
Align = Client
|
Align = Client
|
||||||
@ -71,8 +94,15 @@ object FMXExternalPumpBrowserFrm: TFMXExternalPumpBrowserFrm
|
|||||||
Enabled = False
|
Enabled = False
|
||||||
Interval = 300
|
Interval = 300
|
||||||
OnTimer = Timer1Timer
|
OnTimer = Timer1Timer
|
||||||
Left = 384
|
Left = 40
|
||||||
Top = 313
|
Top = 137
|
||||||
|
end
|
||||||
|
object SaveDialog1: TSaveDialog
|
||||||
|
DefaultExt = 'bmp'
|
||||||
|
Filter = 'Bitmap files (*.bmp)|*.BMP'
|
||||||
|
Title = 'Save snapshot'
|
||||||
|
Left = 40
|
||||||
|
Top = 201
|
||||||
end
|
end
|
||||||
object chrmosr: TFMXChromium
|
object chrmosr: TFMXChromium
|
||||||
OnAfterCreated = chrmosrAfterCreated
|
OnAfterCreated = chrmosrAfterCreated
|
||||||
@ -85,7 +115,7 @@ object FMXExternalPumpBrowserFrm: TFMXExternalPumpBrowserFrm
|
|||||||
OnPopupSize = chrmosrPopupSize
|
OnPopupSize = chrmosrPopupSize
|
||||||
OnPaint = chrmosrPaint
|
OnPaint = chrmosrPaint
|
||||||
OnCursorChange = chrmosrCursorChange
|
OnCursorChange = chrmosrCursorChange
|
||||||
Left = 272
|
Left = 40
|
||||||
Top = 313
|
Top = 73
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -58,10 +58,13 @@ type
|
|||||||
TFMXExternalPumpBrowserFrm = class(TForm)
|
TFMXExternalPumpBrowserFrm = class(TForm)
|
||||||
AddressPnl: TPanel;
|
AddressPnl: TPanel;
|
||||||
AddressEdt: TEdit;
|
AddressEdt: TEdit;
|
||||||
GoBtn: TButton;
|
|
||||||
Panel1: TFMXBufferPanel;
|
Panel1: TFMXBufferPanel;
|
||||||
chrmosr: TFMXChromium;
|
chrmosr: TFMXChromium;
|
||||||
Timer1: TTimer;
|
Timer1: TTimer;
|
||||||
|
Panel2: TPanel;
|
||||||
|
GoBtn: TButton;
|
||||||
|
SnapshotBtn: TButton;
|
||||||
|
SaveDialog1: TSaveDialog;
|
||||||
|
|
||||||
procedure GoBtnClick(Sender: TObject);
|
procedure GoBtnClick(Sender: TObject);
|
||||||
procedure GoBtnEnter(Sender: TObject);
|
procedure GoBtnEnter(Sender: TObject);
|
||||||
@ -97,6 +100,8 @@ type
|
|||||||
|
|
||||||
procedure Timer1Timer(Sender: TObject);
|
procedure Timer1Timer(Sender: TObject);
|
||||||
procedure AddressEdtEnter(Sender: TObject);
|
procedure AddressEdtEnter(Sender: TObject);
|
||||||
|
procedure SnapshotBtnClick(Sender: TObject);
|
||||||
|
procedure SnapshotBtnEnter(Sender: TObject);
|
||||||
|
|
||||||
protected
|
protected
|
||||||
FPopUpBitmap : TBitmap;
|
FPopUpBitmap : TBitmap;
|
||||||
@ -533,9 +538,11 @@ procedure TFMXExternalPumpBrowserFrm.chrmosrPaint(Sender : TObject;
|
|||||||
height : Integer);
|
height : Integer);
|
||||||
var
|
var
|
||||||
src, dst: PByte;
|
src, dst: PByte;
|
||||||
i, j, TempLineSize, TempSrcOffset, TempDstOffset, SrcStride, DstStride : Integer;
|
i, j, TempLineSize, TempSrcOffset, TempDstOffset, SrcStride, TempWidth, TempHeight : Integer;
|
||||||
n : NativeUInt;
|
n : NativeUInt;
|
||||||
TempWidth, TempHeight, TempScanlineSize : integer;
|
{$IFNDEF DELPHI17_UP}
|
||||||
|
TempScanlineSize, DstStride : integer;
|
||||||
|
{$ENDIF}
|
||||||
TempBufferBits : Pointer;
|
TempBufferBits : Pointer;
|
||||||
TempForcedResize : boolean;
|
TempForcedResize : boolean;
|
||||||
TempBitmapData : TBitmapData;
|
TempBitmapData : TBitmapData;
|
||||||
@ -563,7 +570,9 @@ begin
|
|||||||
|
|
||||||
TempWidth := FPopUpBitmap.Width;
|
TempWidth := FPopUpBitmap.Width;
|
||||||
TempHeight := FPopUpBitmap.Height;
|
TempHeight := FPopUpBitmap.Height;
|
||||||
|
{$IFNDEF DELPHI17_UP}
|
||||||
TempScanlineSize := FPopUpBitmap.BytesPerLine;
|
TempScanlineSize := FPopUpBitmap.BytesPerLine;
|
||||||
|
{$ENDIF}
|
||||||
TempBitmap := FPopUpBitmap;
|
TempBitmap := FPopUpBitmap;
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
@ -571,7 +580,9 @@ begin
|
|||||||
TempForcedResize := Panel1.UpdateBufferDimensions(Width, Height) or not(Panel1.BufferIsResized(False));
|
TempForcedResize := Panel1.UpdateBufferDimensions(Width, Height) or not(Panel1.BufferIsResized(False));
|
||||||
TempWidth := Panel1.BufferWidth;
|
TempWidth := Panel1.BufferWidth;
|
||||||
TempHeight := Panel1.BufferHeight;
|
TempHeight := Panel1.BufferHeight;
|
||||||
|
{$IFNDEF DELPHI17_UP}
|
||||||
TempScanlineSize := Panel1.ScanlineSize;
|
TempScanlineSize := Panel1.ScanlineSize;
|
||||||
|
{$ENDIF}
|
||||||
TempBitmap := Panel1.Buffer;
|
TempBitmap := Panel1.Buffer;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -579,13 +590,11 @@ begin
|
|||||||
if (TempBitmap <> nil) {$IFDEF DELPHI17_UP}and TempBitmap.Map(TMapAccess.ReadWrite, TempBitmapData){$ENDIF} then
|
if (TempBitmap <> nil) {$IFDEF DELPHI17_UP}and TempBitmap.Map(TMapAccess.ReadWrite, TempBitmapData){$ENDIF} then
|
||||||
begin
|
begin
|
||||||
try
|
try
|
||||||
{$IFDEF DELPHI17_UP}
|
{$IFNDEF DELPHI17_UP}
|
||||||
TempBufferBits := TempBitmapData.Data;
|
|
||||||
{$ELSE}
|
|
||||||
TempBufferBits := TempBitmapData.StartLine;
|
TempBufferBits := TempBitmapData.StartLine;
|
||||||
|
DstStride := TempScanlineSize;
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
SrcStride := Width * SizeOf(TRGBQuad);
|
SrcStride := Width * SizeOf(TRGBQuad);
|
||||||
DstStride := TempScanlineSize;
|
|
||||||
|
|
||||||
n := 0;
|
n := 0;
|
||||||
|
|
||||||
@ -598,19 +607,33 @@ begin
|
|||||||
if (TempLineSize > 0) then
|
if (TempLineSize > 0) then
|
||||||
begin
|
begin
|
||||||
TempSrcOffset := ((dirtyRects[n].y * Width) + dirtyRects[n].x) * SizeOf(TRGBQuad);
|
TempSrcOffset := ((dirtyRects[n].y * Width) + dirtyRects[n].x) * SizeOf(TRGBQuad);
|
||||||
|
|
||||||
|
{$IFDEF DELPHI17_UP}
|
||||||
|
TempDstOffset := (dirtyRects[n].x * SizeOf(TRGBQuad));
|
||||||
|
{$ELSE}
|
||||||
TempDstOffset := (dirtyRects[n].y * TempScanlineSize) + (dirtyRects[n].x * SizeOf(TRGBQuad));
|
TempDstOffset := (dirtyRects[n].y * TempScanlineSize) + (dirtyRects[n].x * SizeOf(TRGBQuad));
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
src := @PByte(buffer)[TempSrcOffset];
|
src := @PByte(buffer)[TempSrcOffset];
|
||||||
|
{$IFNDEF DELPHI17_UP}
|
||||||
dst := @PByte(TempBufferBits)[TempDstOffset];
|
dst := @PByte(TempBufferBits)[TempDstOffset];
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
i := 0;
|
i := 0;
|
||||||
j := min(dirtyRects[n].height, TempHeight - dirtyRects[n].y);
|
j := min(dirtyRects[n].height, TempHeight - dirtyRects[n].y);
|
||||||
|
|
||||||
while (i < j) do
|
while (i < j) do
|
||||||
begin
|
begin
|
||||||
|
{$IFDEF DELPHI17_UP}
|
||||||
|
TempBufferBits := TempBitmapData.GetScanline(dirtyRects[n].y + i);
|
||||||
|
dst := @PByte(TempBufferBits)[TempDstOffset];
|
||||||
|
{$ENDIF}
|
||||||
|
|
||||||
Move(src^, dst^, TempLineSize);
|
Move(src^, dst^, TempLineSize);
|
||||||
|
|
||||||
|
{$IFNDEF DELPHI17_UP}
|
||||||
inc(dst, DstStride);
|
inc(dst, DstStride);
|
||||||
|
{$ENDIF}
|
||||||
inc(src, SrcStride);
|
inc(src, SrcStride);
|
||||||
inc(i);
|
inc(i);
|
||||||
end;
|
end;
|
||||||
@ -803,4 +826,14 @@ begin
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TFMXExternalPumpBrowserFrm.SnapshotBtnClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
if SaveDialog1.Execute then Panel1.SaveToFile(SaveDialog1.FileName);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TFMXExternalPumpBrowserFrm.SnapshotBtnEnter(Sender: TObject);
|
||||||
|
begin
|
||||||
|
chrmosr.SendFocusEvent(False);
|
||||||
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
@ -193,6 +193,17 @@ begin
|
|||||||
else
|
else
|
||||||
TempContext := nil;
|
TempContext := nil;
|
||||||
|
|
||||||
|
{
|
||||||
|
// This would be a good place to set the proxy server settings for all your child
|
||||||
|
// browsers if you use a proxy
|
||||||
|
Chromium1.ProxyType := CEF_PROXYTYPE_FIXED_SERVERS;
|
||||||
|
Chromium1.ProxyScheme := psHTTP;
|
||||||
|
Chromium1.ProxyServer := '1.2.3.4';
|
||||||
|
Chromium1.ProxyPort := 1234;
|
||||||
|
Chromium1.ProxyUsername := '';
|
||||||
|
Chromium1.ProxyPassword := '';
|
||||||
|
}
|
||||||
|
|
||||||
// In case you used a custom cookies path in the GlobalCEFApp you can
|
// In case you used a custom cookies path in the GlobalCEFApp you can
|
||||||
// override it in the TChromium.CreateBrowser function
|
// override it in the TChromium.CreateBrowser function
|
||||||
Chromium1.CreateBrowser(CEFWindowParent1, '', TempContext);
|
Chromium1.CreateBrowser(CEFWindowParent1, '', TempContext);
|
||||||
|
@ -366,7 +366,6 @@ const
|
|||||||
CEF_DESTROY = WM_APP + $A06;
|
CEF_DESTROY = WM_APP + $A06;
|
||||||
CEF_DOONBEFORECLOSE = WM_APP + $A07;
|
CEF_DOONBEFORECLOSE = WM_APP + $A07;
|
||||||
|
|
||||||
CEF_TIMER_FIRST_ID = high(cardinal) div 3; // A highly unlikely nIDEvent for our timers
|
|
||||||
CEF_TIMER_MINIMUM = $0000000A;
|
CEF_TIMER_MINIMUM = $0000000A;
|
||||||
CEF_TIMER_MAXIMUM = $7FFFFFFF;
|
CEF_TIMER_MAXIMUM = $7FFFFFFF;
|
||||||
CEF_TIMER_MAXDELAY = 1000 div 30; // 30fps
|
CEF_TIMER_MAXDELAY = 1000 div 30; // 30fps
|
||||||
|
Loading…
x
Reference in New Issue
Block a user