You've already forked CEF4Delphi
mirror of
https://github.com/salvadordf/CEF4Delphi.git
synced 2025-11-23 21:34:53 +02:00
Added WebpageSnapshot demo for UniGUI
This commit is contained in:
138
demos/Delphi_UniGUI/WebpageSnapshot/Main.pas
Normal file
138
demos/Delphi_UniGUI/WebpageSnapshot/Main.pas
Normal file
@@ -0,0 +1,138 @@
|
||||
unit Main;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Windows, Messages, SysUtils, Variants, Classes, Graphics,
|
||||
Controls, Forms, uniGUITypes, uniGUIAbstractClasses,
|
||||
uniGUIClasses, uniGUIRegClasses, uniGUIForm, uniImage, uniButton,
|
||||
uniMultiItem, uniComboBox, uniGUIBaseClasses, uniPanel,
|
||||
uCEFBrowserThread, uniStatusBar, uniMemo, uniTimer, uniCanvas;
|
||||
|
||||
type
|
||||
TMainForm = class(TUniForm)
|
||||
UniPanel1: TUniPanel;
|
||||
AddressCb: TUniComboBox;
|
||||
GoBtn: TUniButton;
|
||||
UniStatusBar1: TUniStatusBar;
|
||||
UniMemo1: TUniMemo;
|
||||
UniCanvas1: TUniCanvas;
|
||||
UniTimer1: TUniTimer;
|
||||
procedure UniFormCreate(Sender: TObject);
|
||||
procedure UniFormClose(Sender: TObject; var Action: TCloseAction);
|
||||
procedure GoBtnClick(Sender: TObject);
|
||||
procedure UniFormShow(Sender: TObject);
|
||||
procedure UniTimer1Timer(Sender: TObject);
|
||||
private
|
||||
FThread : TCEFBrowserThread;
|
||||
FMustRefresh : boolean;
|
||||
|
||||
procedure Thread_OnError(Sender: TObject);
|
||||
procedure Thread_OnSnapshotAvailable(Sender: TObject);
|
||||
procedure Thread_OnHTMLAvailable(Sender: TObject);
|
||||
public
|
||||
{ Public declarations }
|
||||
end;
|
||||
|
||||
function MainForm: TMainForm;
|
||||
|
||||
implementation
|
||||
|
||||
{$R *.dfm}
|
||||
|
||||
uses
|
||||
uniGUIVars, MainModule, uniGUIApplication,
|
||||
uCEFApplication;
|
||||
|
||||
function MainForm: TMainForm;
|
||||
begin
|
||||
Result := TMainForm(UniMainModule.GetFormInstance(TMainForm));
|
||||
end;
|
||||
|
||||
procedure TMainForm.GoBtnClick(Sender: TObject);
|
||||
begin
|
||||
UniStatusBar1.Panels[0].Text := 'Loading...';
|
||||
screen.cursor := crAppStart;
|
||||
FMustRefresh := False;
|
||||
|
||||
if (FThread = nil) then
|
||||
begin
|
||||
FThread := TCEFBrowserThread.Create(AddressCb.Text, UniCanvas1.Width, UniCanvas1.Height);
|
||||
FThread.OnError := Thread_OnError;
|
||||
FThread.OnSnapshotAvailable := Thread_OnSnapshotAvailable;
|
||||
FThread.OnHTMLAvailable := Thread_OnHTMLAvailable;
|
||||
FThread.SyncEvents := True;
|
||||
FThread.Start;
|
||||
end
|
||||
else
|
||||
FThread.LoadUrl(AddressCb.Text);
|
||||
end;
|
||||
|
||||
procedure TMainForm.UniFormClose(Sender: TObject; var Action: TCloseAction);
|
||||
begin
|
||||
if (FThread <> nil) then
|
||||
begin
|
||||
if FThread.TerminateBrowserThread then
|
||||
FThread.WaitFor;
|
||||
|
||||
FreeAndNil(FThread);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.UniFormCreate(Sender: TObject);
|
||||
begin
|
||||
FThread := nil;
|
||||
end;
|
||||
|
||||
procedure TMainForm.UniFormShow(Sender: TObject);
|
||||
begin
|
||||
if GlobalCEFApp.GlobalContextInitialized then
|
||||
UniMemo1.Lines.Add('GlobalCEFApp Initialized')
|
||||
else
|
||||
UniMemo1.Lines.Add('Error: ' + GlobalCEFApp.LastErrorMessage);
|
||||
|
||||
UniMemo1.Refresh;
|
||||
end;
|
||||
|
||||
procedure TMainForm.UniTimer1Timer(Sender: TObject);
|
||||
begin
|
||||
if FMustRefresh then
|
||||
begin
|
||||
FMustRefresh := False;
|
||||
Repaint;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TMainForm.Thread_OnError(Sender: TObject);
|
||||
begin
|
||||
UniStatusBar1.Panels[0].Text := 'Error ' + inttostr(FThread.ErrorCode) + ' : ' + FThread.ErrorText + ' - ' + FThread.FailedUrl;
|
||||
screen.cursor := crDefault;
|
||||
end;
|
||||
|
||||
procedure TMainForm.Thread_OnSnapshotAvailable(Sender: TObject);
|
||||
var
|
||||
TempBitmap : TBitmap;
|
||||
begin
|
||||
TempBitmap := nil;
|
||||
screen.cursor := crDefault;
|
||||
|
||||
if FThread.CopySnapshot(TempBitmap) then
|
||||
begin
|
||||
UniCanvas1.Bitmap.Assign(TempBitmap);
|
||||
UniStatusBar1.Panels[0].Text := 'Snapshot copied successfully';
|
||||
TempBitmap.Free;
|
||||
end
|
||||
else
|
||||
UniStatusBar1.Panels[0].Text := 'There was an error copying the snapshot';
|
||||
end;
|
||||
|
||||
procedure TMainForm.Thread_OnHTMLAvailable(Sender: TObject);
|
||||
begin
|
||||
UniMemo1.Lines.Add(FThread.HTMLcopy);
|
||||
FMustRefresh := True;
|
||||
end;
|
||||
|
||||
initialization
|
||||
RegisterAppFormClass(TMainForm);
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user