mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-02-02 10:25:26 +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.PlatformDefault = False
|
||||
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
|
||||
Touch.InteractiveGestures = [LongTap, DoubleTap]
|
||||
Align = Client
|
||||
TabOrder = 0
|
||||
Text = 'https://www.google.com'
|
||||
Size.Width = 754.000000000000000000
|
||||
Size.Width = 709.000000000000000000
|
||||
Size.Height = 23.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
OnEnter = AddressEdtEnter
|
||||
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
|
||||
object Panel1: TFMXBufferPanel
|
||||
Align = Client
|
||||
@ -71,8 +94,15 @@ object FMXExternalPumpBrowserFrm: TFMXExternalPumpBrowserFrm
|
||||
Enabled = False
|
||||
Interval = 300
|
||||
OnTimer = Timer1Timer
|
||||
Left = 384
|
||||
Top = 313
|
||||
Left = 40
|
||||
Top = 137
|
||||
end
|
||||
object SaveDialog1: TSaveDialog
|
||||
DefaultExt = 'bmp'
|
||||
Filter = 'Bitmap files (*.bmp)|*.BMP'
|
||||
Title = 'Save snapshot'
|
||||
Left = 40
|
||||
Top = 201
|
||||
end
|
||||
object chrmosr: TFMXChromium
|
||||
OnAfterCreated = chrmosrAfterCreated
|
||||
@ -85,7 +115,7 @@ object FMXExternalPumpBrowserFrm: TFMXExternalPumpBrowserFrm
|
||||
OnPopupSize = chrmosrPopupSize
|
||||
OnPaint = chrmosrPaint
|
||||
OnCursorChange = chrmosrCursorChange
|
||||
Left = 272
|
||||
Top = 313
|
||||
Left = 40
|
||||
Top = 73
|
||||
end
|
||||
end
|
||||
|
@ -58,10 +58,13 @@ type
|
||||
TFMXExternalPumpBrowserFrm = class(TForm)
|
||||
AddressPnl: TPanel;
|
||||
AddressEdt: TEdit;
|
||||
GoBtn: TButton;
|
||||
Panel1: TFMXBufferPanel;
|
||||
chrmosr: TFMXChromium;
|
||||
Timer1: TTimer;
|
||||
Panel2: TPanel;
|
||||
GoBtn: TButton;
|
||||
SnapshotBtn: TButton;
|
||||
SaveDialog1: TSaveDialog;
|
||||
|
||||
procedure GoBtnClick(Sender: TObject);
|
||||
procedure GoBtnEnter(Sender: TObject);
|
||||
@ -97,6 +100,8 @@ type
|
||||
|
||||
procedure Timer1Timer(Sender: TObject);
|
||||
procedure AddressEdtEnter(Sender: TObject);
|
||||
procedure SnapshotBtnClick(Sender: TObject);
|
||||
procedure SnapshotBtnEnter(Sender: TObject);
|
||||
|
||||
protected
|
||||
FPopUpBitmap : TBitmap;
|
||||
@ -533,9 +538,11 @@ procedure TFMXExternalPumpBrowserFrm.chrmosrPaint(Sender : TObject;
|
||||
height : Integer);
|
||||
var
|
||||
src, dst: PByte;
|
||||
i, j, TempLineSize, TempSrcOffset, TempDstOffset, SrcStride, DstStride : Integer;
|
||||
i, j, TempLineSize, TempSrcOffset, TempDstOffset, SrcStride, TempWidth, TempHeight : Integer;
|
||||
n : NativeUInt;
|
||||
TempWidth, TempHeight, TempScanlineSize : integer;
|
||||
{$IFNDEF DELPHI17_UP}
|
||||
TempScanlineSize, DstStride : integer;
|
||||
{$ENDIF}
|
||||
TempBufferBits : Pointer;
|
||||
TempForcedResize : boolean;
|
||||
TempBitmapData : TBitmapData;
|
||||
@ -563,7 +570,9 @@ begin
|
||||
|
||||
TempWidth := FPopUpBitmap.Width;
|
||||
TempHeight := FPopUpBitmap.Height;
|
||||
{$IFNDEF DELPHI17_UP}
|
||||
TempScanlineSize := FPopUpBitmap.BytesPerLine;
|
||||
{$ENDIF}
|
||||
TempBitmap := FPopUpBitmap;
|
||||
end
|
||||
else
|
||||
@ -571,7 +580,9 @@ begin
|
||||
TempForcedResize := Panel1.UpdateBufferDimensions(Width, Height) or not(Panel1.BufferIsResized(False));
|
||||
TempWidth := Panel1.BufferWidth;
|
||||
TempHeight := Panel1.BufferHeight;
|
||||
{$IFNDEF DELPHI17_UP}
|
||||
TempScanlineSize := Panel1.ScanlineSize;
|
||||
{$ENDIF}
|
||||
TempBitmap := Panel1.Buffer;
|
||||
end;
|
||||
|
||||
@ -579,13 +590,11 @@ begin
|
||||
if (TempBitmap <> nil) {$IFDEF DELPHI17_UP}and TempBitmap.Map(TMapAccess.ReadWrite, TempBitmapData){$ENDIF} then
|
||||
begin
|
||||
try
|
||||
{$IFDEF DELPHI17_UP}
|
||||
TempBufferBits := TempBitmapData.Data;
|
||||
{$ELSE}
|
||||
{$IFNDEF DELPHI17_UP}
|
||||
TempBufferBits := TempBitmapData.StartLine;
|
||||
DstStride := TempScanlineSize;
|
||||
{$ENDIF}
|
||||
SrcStride := Width * SizeOf(TRGBQuad);
|
||||
DstStride := TempScanlineSize;
|
||||
|
||||
n := 0;
|
||||
|
||||
@ -598,19 +607,33 @@ begin
|
||||
if (TempLineSize > 0) then
|
||||
begin
|
||||
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));
|
||||
{$ENDIF}
|
||||
|
||||
src := @PByte(buffer)[TempSrcOffset];
|
||||
{$IFNDEF DELPHI17_UP}
|
||||
dst := @PByte(TempBufferBits)[TempDstOffset];
|
||||
{$ENDIF}
|
||||
|
||||
i := 0;
|
||||
j := min(dirtyRects[n].height, TempHeight - dirtyRects[n].y);
|
||||
|
||||
while (i < j) do
|
||||
begin
|
||||
{$IFDEF DELPHI17_UP}
|
||||
TempBufferBits := TempBitmapData.GetScanline(dirtyRects[n].y + i);
|
||||
dst := @PByte(TempBufferBits)[TempDstOffset];
|
||||
{$ENDIF}
|
||||
|
||||
Move(src^, dst^, TempLineSize);
|
||||
|
||||
{$IFNDEF DELPHI17_UP}
|
||||
inc(dst, DstStride);
|
||||
{$ENDIF}
|
||||
inc(src, SrcStride);
|
||||
inc(i);
|
||||
end;
|
||||
@ -803,4 +826,14 @@ begin
|
||||
{$ENDIF}
|
||||
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.
|
||||
|
@ -193,6 +193,17 @@ begin
|
||||
else
|
||||
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
|
||||
// override it in the TChromium.CreateBrowser function
|
||||
Chromium1.CreateBrowser(CEFWindowParent1, '', TempContext);
|
||||
|
@ -366,7 +366,6 @@ const
|
||||
CEF_DESTROY = WM_APP + $A06;
|
||||
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_MAXIMUM = $7FFFFFFF;
|
||||
CEF_TIMER_MAXDELAY = 1000 div 30; // 30fps
|
||||
|
Loading…
x
Reference in New Issue
Block a user