1
0
mirror of https://github.com/salvadordf/CEF4Delphi.git synced 2025-02-02 10:25:26 +02:00

Improved demos

- Bug fix #33 : Drag and drop is now supported in OSR mode.
- Improved keyboard handling in OSR mode.
- MiniBrowser demo : The DOM visitor and the Javascript extensions now
send customized results to the main form
- Fixed some CEF3 variable definitions.
This commit is contained in:
Salvador Diaz Fau 2017-07-18 17:50:28 +02:00
parent 9959b4b1e8
commit 5766453f91
49 changed files with 3486 additions and 1198 deletions

View File

@ -58,14 +58,14 @@ begin
GlobalCEFApp := TCefApplication.Create;
// In case you want to use custom directories for the CEF3 binaries, cache, cookies and user data.
{
GlobalCEFApp.FrameworkDirPath := 'cef';
GlobalCEFApp.ResourcesDirPath := 'cef';
GlobalCEFApp.LocalesDirPath := 'cef\locales';
GlobalCEFApp.cache := 'cef\cache';
GlobalCEFApp.cookies := 'cef\cookies';
GlobalCEFApp.UserDataPath := 'cef\User Data';
}
if GlobalCEFApp.StartMainProcess then
begin

View File

@ -134,12 +134,27 @@
<Overwrite>true</Overwrite>
</Platform>
</DeployFile>
<DeployClass Name="ProjectiOSDeviceResourceRules">
<DeployClass Name="DependencyModule">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
<Platform Name="iOSDevice64">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
</DeployClass>
<DeployClass Name="ProjectOSXResource">
@ -493,27 +508,12 @@
<Operation>1</Operation>
</Platform>
</DeployClass>
<DeployClass Name="DependencyModule">
<Platform Name="Win32">
<Operation>0</Operation>
<Extensions>.dll;.bpl</Extensions>
</Platform>
<DeployClass Name="ProjectiOSDeviceResourceRules">
<Platform Name="iOSDevice64">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="OSX32">
<RemoteDir>Contents\MacOS</RemoteDir>
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSDevice32">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
<Platform Name="iOSSimulator">
<Operation>1</Operation>
<Extensions>.dylib</Extensions>
</Platform>
</DeployClass>
<ProjectRoot Platform="iOSDevice64" Name="$(PROJECTNAME).app"/>

View File

@ -2,9 +2,9 @@
<BorlandProject>
<Transactions>
<Transaction>2017/07/01 10:31:40.000.157,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/07/01 10:33:03.000.262,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas</Transaction>
<Transaction>2017/07/01 10:33:03.000.262,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.dfm</Transaction>
<Transaction>2017/07/01 10:33:13.000.749,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dproj</Transaction>
<Transaction>2017/07/01 10:33:03.000.262,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/07/01 10:33:03.000.262,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm</Transaction>
<Transaction>2017/07/01 10:33:13.000.749,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj</Transaction>
<Transaction>2017/07/01 10:54:08.000.543,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas</Transaction>
</Transactions>
</BorlandProject>

View File

@ -1,46 +1,32 @@
[Closed Files]
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,710,103,739,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumWindow.pas',0,1,29,31,76,0,0,,
File_2=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\common\System.Classes.pas',0,1,46,18,75,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFResourceHandler.pas',0,1,34,1,38,0,0,,
File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumEvents.pas',0,3,68,3,97,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\uSimpleBrowser.pas',0,1,1,1,1,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas',0,1,97,28,54,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,67,21,84,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas',0,1,28,1,1,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,738,28,775,0,0,,
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas',0,1,10,72,115,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas',0,1,87,56,139,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,710,103,739,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumWindow.pas',0,1,29,31,76,0,0,,
File_4=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\common\System.Classes.pas',0,1,46,18,75,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFResourceHandler.pas',0,1,34,1,38,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumEvents.pas',0,3,68,3,97,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\uSimpleBrowser.pas',0,1,1,1,1,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas',0,1,97,28,54,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,67,21,84,0,0,,
[Modules]
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas
Module1=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dproj
Module2=default.htm
Module3=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas
Count=4
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dproj
Module1=default.htm
Count=2
EditWindowCount=1
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas]
ModuleType=TSourceModule
FormState=0
FormOnTop=0
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dproj]
ModuleType=TBaseProject
[default.htm]
ModuleType=TURLModule
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas]
ModuleType=TSourceModule
FormState=1
FormOnTop=0
[EditWindow0]
ViewCount=4
CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas
ViewCount=2
CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dpr
View0=0
View1=1
View2=2
View3=3
PercentageSizes=1
Create=1
Visible=1
@ -59,15 +45,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
RightPanelClients=DockSite2,DockSite4
RightPanelData=00000800010100000000AA1900000000000001D00700000000000001000000004312000009000000446F636B53697465320100000000A123000009000000446F636B5369746534FFFFFFFF
RightPanelClients=DockSite2
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002C305000000000000FFFFFFFF
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
TabDockLeftClients=PropertyInspector=0,DockSite3=1
TabDockLeftClients=DockSite3=0,PropertyInspector=1
TabDockRightClients=DockSite4=0
[View0]
CustomEditViewType=TWelcomePageView
@ -77,35 +64,13 @@ WelcomePageURL=bds:/default.htm
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dpr
CursorX=1
CursorY=68
CursorY=61
TopLine=31
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\CRBrowser.dpr
[View2]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas
CursorX=72
CursorY=115
TopLine=10
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uMainForm.pas
[View3]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas
CursorX=56
CursorY=139
TopLine=87
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas
[Watches]
Count=0
@ -120,11 +85,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@ -168,11 +133,11 @@ State=0
Left=0
Top=0
Width=2000
Height=4226
Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4226
ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@ -187,12 +152,12 @@ State=0
Left=0
Top=23
Width=2773
Height=1267
Height=3845
MaxLeft=-1
MaxTop=-1
ClientWidth=2773
ClientHeight=1267
TBDockHeight=1267
ClientHeight=3845
TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@ -205,12 +170,12 @@ Docked=1
State=0
Left=0
Top=0
Width=2000
Height=4339
Width=1875
Height=6693
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4339
ClientWidth=1875
ClientHeight=6693
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@ -323,13 +288,13 @@ Width=1898
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=7164
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
SplitPos=111
SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@ -375,8 +340,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-1152
Top=243
Left=-8
Top=287
Width=273
Height=359
MaxLeft=-1
@ -400,11 +365,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@ -419,11 +384,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@ -442,11 +407,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@ -461,11 +426,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@ -583,11 +548,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@ -695,12 +660,12 @@ State=0
Left=0
Top=23
Width=3820
Height=1424
Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1424
TBDockHeight=1424
ClientHeight=874
TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@ -719,11 +684,11 @@ State=0
Left=0
Top=23
Width=2000
Height=4529
Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4529
ClientHeight=9170
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
@ -757,21 +722,21 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
HostDockSite=DockRightPanel
HostDockSite=RightTabDock
DockSiteType=1
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=454
Top=0
Width=2000
Height=4339
Height=7119
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4339
ClientWidth=1875
ClientHeight=6693
TBDockHeight=7119
LRDockWidth=2000
Dockable=1

View File

@ -1,5 +1,5 @@
[Stats]
EditorSecs=425
EditorSecs=443
DesignerSecs=9
InspectorSecs=14
CompileSecs=40629

View File

@ -2,11 +2,11 @@
<BorlandProject>
<Transactions>
<Transaction>2017/05/21 18:54:00.000.243,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/05/21 18:54:33.000.390,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm</Transaction>
<Transaction>2017/05/21 18:54:33.000.390,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/05/21 18:54:43.000.194,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj</Transaction>
<Transaction>2017/05/21 18:54:50.000.736,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.pas</Transaction>
<Transaction>2017/05/21 18:54:50.000.736,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.dfm</Transaction>
<Transaction>2017/05/21 19:04:55.000.900,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\FullScreenBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\Project1.dproj</Transaction>
<Transaction>2017/05/21 18:54:33.000.390,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.pas</Transaction>
<Transaction>2017/05/21 18:54:33.000.390,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.dfm</Transaction>
<Transaction>2017/05/21 18:54:43.000.194,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\Project1.dproj</Transaction>
<Transaction>2017/05/21 18:54:50.000.736,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\uMainForm.dfm</Transaction>
<Transaction>2017/05/21 18:54:50.000.736,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\uMainForm.pas</Transaction>
<Transaction>2017/05/21 19:04:55.000.900,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\FullScreenBrowser\FullScreenBrowser.dproj</Transaction>
</Transactions>
</BorlandProject>

View File

@ -52,15 +52,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
RightPanelClients=DockSite2,DockSite4
RightPanelData=00000800010100000000551500000000000001D00700000000000001000000004312000009000000446F636B536974653201000000009D1D000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=1475
RightPanelClients=DockSite2
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
TabDockLeftClients=PropertyInspector=0,DockSite3=1
TabDockLeftClients=DockSite3=0,PropertyInspector=1
TabDockRightClients=DockSite4=0
[View0]
CustomEditViewType=TWelcomePageView
@ -102,11 +103,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@ -150,11 +151,11 @@ State=0
Left=0
Top=0
Width=2000
Height=4226
Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4226
ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@ -163,18 +164,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=23
Width=10000
Height=1267
Width=2773
Height=3845
MaxLeft=-1
MaxTop=-1
ClientWidth=10000
ClientHeight=1267
TBDockHeight=1267
ClientWidth=2773
ClientHeight=3845
TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@ -187,12 +188,12 @@ Docked=1
State=0
Left=0
Top=0
Width=2000
Height=2747
Width=1875
Height=6693
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=2747
ClientWidth=1875
ClientHeight=6693
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@ -242,8 +243,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-148
Top=-137
Left=-8
Top=-30
Width=1844
Height=3139
MaxLeft=-1
@ -299,19 +300,19 @@ Create=1
Visible=0
Docked=1
State=0
Left=0
Top=362
Left=78
Top=386
Width=1898
Height=5370
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=5370
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
SplitPos=111
SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@ -322,11 +323,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=5964
LRDockWidth=2508
Dockable=1
@ -338,8 +339,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-898
Top=-137
Left=-946
Top=1
Width=2844
Height=6200
MaxLeft=-1
@ -357,8 +358,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-1026
Top=-137
Left=-8
Top=287
Width=273
Height=359
MaxLeft=-1
@ -382,11 +383,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@ -401,11 +402,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@ -424,11 +425,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@ -443,11 +444,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@ -462,11 +463,11 @@ State=0
Left=0
Top=0
Width=2336
Height=1177
Height=942
MaxLeft=-1
MaxTop=-1
ClientWidth=2336
ClientHeight=1177
ClientHeight=942
TBDockHeight=2321
LRDockWidth=2820
Dockable=1
@ -527,11 +528,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=4888
LRDockWidth=7148
Dockable=1
@ -543,8 +544,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=0
Top=0
Left=249
Top=709
Width=2859
Height=3206
MaxLeft=-1
@ -565,11 +566,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@ -590,12 +591,12 @@ Docked=1
State=0
Left=0
Top=0
Width=1898
Height=9170
Width=1773
Height=6738
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=9170
ClientWidth=1773
ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@ -610,11 +611,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=4888
LRDockWidth=5305
Dockable=1
@ -675,14 +676,14 @@ Visible=0
Docked=1
State=0
Left=0
Top=0
Top=23
Width=3820
Height=1424
Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1424
TBDockHeight=1424
ClientHeight=874
TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@ -701,12 +702,12 @@ State=0
Left=0
Top=23
Width=2000
Height=4529
Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4529
TBDockHeight=7164
ClientHeight=9170
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
@ -723,13 +724,13 @@ Visible=0
Docked=1
State=0
Left=0
Top=23
Top=0
Width=1898
Height=9170
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=9170
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
@ -739,22 +740,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
HostDockSite=DockRightPanel
HostDockSite=RightTabDock
DockSiteType=1
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=454
Top=0
Width=2000
Height=2747
Height=7119
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=2747
TBDockHeight=7164
ClientWidth=1875
ClientHeight=6693
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0

View File

@ -3,7 +3,7 @@ EditorSecs=34
DesignerSecs=1
InspectorSecs=1
CompileSecs=1
OtherSecs=2
OtherSecs=3
StartTime=01/06/2017 10:25:13
RealKeys=0
EffectiveKeys=0

View File

@ -42,10 +42,14 @@ program MiniBrowser;
uses
{$IFDEF DELPHI16_UP}
Vcl.Forms, WinApi.Windows, System.SysUtils,
Vcl.Forms,
WinApi.Windows,
System.SysUtils,
{$ELSE}
Forms, Windows, SysUtils,
{$ENDIF}
Forms,
Windows,
SysUtils,
{$ENDIF }
uCEFApplication,
uCEFMiscFunctions,
uCEFSchemeRegistrar,
@ -57,10 +61,12 @@ uses
uCEFConstants,
uCEFTypes,
uCEFTask,
uCEFProcessMessage,
uMiniBrowser in 'uMiniBrowser.pas' {MiniBrowserFrm},
uTestExtension in 'uTestExtension.pas',
uHelloScheme in 'uHelloScheme.pas',
uPreferences in 'uPreferences.pas' {PreferencesFrm};
uPreferences in 'uPreferences.pas' {PreferencesFrm},
uSimpleTextViewer in 'uSimpleTextViewer.pas' {SimpleTextViewerFrm};
{$R *.res}
@ -121,7 +127,9 @@ begin
end;
end;
procedure DOMVisitor_OnDocAvailable(const document: ICefDomDocument);
procedure DOMVisitor_OnDocAvailable(const browser: ICefBrowser; const document: ICefDomDocument);
var
msg: ICefProcessMessage;
begin
// This function is called from a different process.
// document is only valid inside this function.
@ -133,12 +141,19 @@ begin
// Simple DOM searches
SimpleNodeSearch(document);
// Sending back some custom results to the browser process
// Notice that the 'domvisitor' message name needs to be recognized in
// Chromium1ProcessMessageReceived
msg := TCefProcessMessageRef.New('domvisitor');
msg.ArgumentList.SetString(0, 'document.Title : ' + document.Title);
browser.SendProcessMessage(PID_BROWSER, msg);
end;
procedure ProcessHandler_OnCustomMessage(const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage);
var
TempFrame : ICefFrame;
TempVisitor : TCefFastDomVisitor;
TempVisitor : TCefFastDomVisitor2;
begin
if (browser <> nil) then
begin
@ -146,7 +161,7 @@ begin
if (TempFrame <> nil) then
begin
TempVisitor := TCefFastDomVisitor.Create(DOMVisitor_OnDocAvailable);
TempVisitor := TCefFastDomVisitor2.Create(browser, DOMVisitor_OnDocAvailable);
TempFrame.VisitDom(TempVisitor);
end;
end;
@ -214,8 +229,9 @@ begin
Application.MainFormOnTaskbar := True;
{$ENDIF}
Application.CreateForm(TMiniBrowserFrm, MiniBrowserFrm);
Application.CreateForm(TPreferencesFrm, PreferencesFrm);
Application.Run;
Application.CreateForm(TPreferencesFrm, PreferencesFrm);
Application.CreateForm(TSimpleTextViewerFrm, SimpleTextViewerFrm);
Application.Run;
end;
GlobalCEFApp.Free;

View File

@ -106,6 +106,10 @@
<DCCReference Include="uPreferences.pas">
<Form>PreferencesFrm</Form>
</DCCReference>
<DCCReference Include="uSimpleTextViewer.pas">
<Form>SimpleTextViewerFrm</Form>
<FormType>dfm</FormType>
</DCCReference>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>

View File

@ -2,16 +2,19 @@
<BorlandProject>
<Transactions>
<Transaction>2017/02/11 10:15:32.000.980,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas</Transaction>
<Transaction>2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.dfm</Transaction>
<Transaction>2017/02/11 10:16:37.000.392,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj</Transaction>
<Transaction>2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm</Transaction>
<Transaction>2017/02/11 10:16:27.000.174,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/02/11 10:16:37.000.392,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj</Transaction>
<Transaction>2017/02/11 17:10:26.000.471,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas</Transaction>
<Transaction>2017/02/11 17:11:01.000.244,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas</Transaction>
<Transaction>2017/02/11 17:11:01.000.244,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas</Transaction>
<Transaction>2017/03/12 17:11:11.000.786,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uFileScheme.pas</Transaction>
<Transaction>2017/03/13 19:22:41.000.994,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uFileScheme.pas=</Transaction>
<Transaction>2017/03/13 19:23:05.000.371,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas</Transaction>
<Transaction>2017/03/15 12:39:07.000.741,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas</Transaction>
<Transaction>2017/03/15 12:40:51.000.061,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas</Transaction>
<Transaction>2017/03/15 12:40:51.000.061,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.dfm</Transaction>
<Transaction>2017/03/15 12:40:51.000.061,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.dfm</Transaction>
<Transaction>2017/03/15 12:40:51.000.061,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas</Transaction>
<Transaction>2017/07/14 11:54:07.000.560,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas</Transaction>
<Transaction>2017/07/14 11:57:42.000.778,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uSimpleTextViewer.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas</Transaction>
<Transaction>2017/07/14 11:57:42.000.778,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uSimpleTextViewer.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.dfm</Transaction>
</Transactions>
</BorlandProject>

View File

@ -1,32 +1,39 @@
[Closed Files]
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas',0,1,97,28,54,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,67,21,84,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,533,111,562,0,0,,
File_3=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\common\System.Classes.pas',0,1,866,3,766,0,0,,
File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas',0,1,28,1,1,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,738,28,775,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas',0,1,38,18,54,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,268,48,304,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDomNode.pas',0,1,34,1,1,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDomDocument.pas',0,1,25,1,1,0,0,,
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uPreferences.pas',0,1,38,17,84,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uTestExtension.pas',0,1,49,33,81,0,0,,
File_2=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Menus.pas',0,1,318,3,287,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uSimpleTextViewer.pas',0,1,1,23,1,0,0,,
File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,1142,14,1168,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,488,5,496,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTypes.pas',0,1,34,59,37,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDomVisitor.pas',0,1,109,3,135,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFFrame.pas',0,1,204,31,234,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas',0,1,97,28,54,0,0,,
[Modules]
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj
Module1=default.htm
Count=2
Module1=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
Module2=default.htm
Count=3
EditWindowCount=1
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dproj]
ModuleType=TBaseProject
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas]
ModuleType=TSourceModule
FormState=1
FormOnTop=0
[default.htm]
ModuleType=TURLModule
[EditWindow0]
ViewCount=2
ViewCount=3
CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
View0=0
View1=1
View2=2
PercentageSizes=1
Create=1
Visible=1
@ -45,15 +52,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
RightPanelClients=DockSite2,DockSite4
RightPanelData=00000800010100000000551500000000000001D00700000000000001000000004312000009000000446F636B536974653201000000009D1D000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=1475
RightPanelClients=DockSite2
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
TabDockLeftClients=PropertyInspector=0,DockSite3=1
TabDockLeftClients=DockSite3=0,PropertyInspector=1
TabDockRightClients=DockSite4=0
[View0]
CustomEditViewType=TWelcomePageView
@ -62,14 +70,25 @@ WelcomePageURL=bds:/default.htm
[View1]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
CursorX=19
CursorY=47
TopLine=24
CursorX=2
CursorY=205
TopLine=156
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\MiniBrowser.dpr
[View2]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
CursorX=23
CursorY=94
TopLine=76
LeftCol=1
Elisions=
Bookmarks={1,476,42}{2,565,17}{3,303,29}
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas
[Watches]
Count=0
@ -84,11 +103,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@ -132,11 +151,11 @@ State=0
Left=0
Top=0
Width=2000
Height=4226
Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4226
ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@ -145,18 +164,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=23
Width=10000
Height=1267
Width=2773
Height=3845
MaxLeft=-1
MaxTop=-1
ClientWidth=10000
ClientHeight=1267
TBDockHeight=1267
ClientWidth=2773
ClientHeight=3845
TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@ -169,12 +188,12 @@ Docked=1
State=0
Left=0
Top=0
Width=2000
Height=2747
Width=1875
Height=6693
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=2747
ClientWidth=1875
ClientHeight=6693
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@ -224,8 +243,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-148
Top=-137
Left=-8
Top=-30
Width=1844
Height=3139
MaxLeft=-1
@ -281,19 +300,19 @@ Create=1
Visible=0
Docked=1
State=0
Left=0
Top=362
Left=78
Top=386
Width=1898
Height=5370
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=5370
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
SplitPos=111
SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@ -304,11 +323,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=5964
LRDockWidth=2508
Dockable=1
@ -320,8 +339,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-898
Top=-137
Left=-946
Top=1
Width=2844
Height=6200
MaxLeft=-1
@ -339,8 +358,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-1026
Top=-137
Left=-8
Top=287
Width=273
Height=359
MaxLeft=-1
@ -364,11 +383,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@ -383,11 +402,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@ -406,11 +425,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@ -425,11 +444,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@ -444,11 +463,11 @@ State=0
Left=0
Top=0
Width=2336
Height=1177
Height=942
MaxLeft=-1
MaxTop=-1
ClientWidth=2336
ClientHeight=1177
ClientHeight=942
TBDockHeight=2321
LRDockWidth=2820
Dockable=1
@ -509,11 +528,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=4888
LRDockWidth=7148
Dockable=1
@ -525,8 +544,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=0
Top=0
Left=249
Top=709
Width=2859
Height=3206
MaxLeft=-1
@ -547,11 +566,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@ -572,12 +591,12 @@ Docked=1
State=0
Left=0
Top=0
Width=1898
Height=9170
Width=1773
Height=6738
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=9170
ClientWidth=1773
ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@ -592,11 +611,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=4888
LRDockWidth=5305
Dockable=1
@ -657,14 +676,14 @@ Visible=0
Docked=1
State=0
Left=0
Top=0
Top=23
Width=3820
Height=1424
Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1424
TBDockHeight=1424
ClientHeight=874
TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@ -683,12 +702,12 @@ State=0
Left=0
Top=23
Width=2000
Height=4529
Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4529
TBDockHeight=7164
ClientHeight=9170
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
@ -705,13 +724,13 @@ Visible=0
Docked=1
State=0
Left=0
Top=23
Top=0
Width=1898
Height=9170
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=9170
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
@ -721,22 +740,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
HostDockSite=DockRightPanel
HostDockSite=RightTabDock
DockSiteType=1
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=454
Top=0
Width=2000
Height=2747
Height=7119
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=2747
TBDockHeight=7164
ClientWidth=1875
ClientHeight=6693
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0

View File

@ -1,10 +1,10 @@
[Stats]
EditorSecs=37012
DesignerSecs=2134
InspectorSecs=1589
CompileSecs=2027164
OtherSecs=6328
EditorSecs=41029
DesignerSecs=2210
InspectorSecs=1739
CompileSecs=2144912
OtherSecs=6512
StartTime=11/02/2017 10:51:15
RealKeys=0
EffectiveKeys=0
DebugSecs=29279
DebugSecs=31352

View File

@ -53,11 +53,12 @@ uses
uCEFChromium, uCEFWindowParent, uCEFInterfaces, uCEFApplication, uCEFTypes, uCEFConstants;
const
MINIBROWSER_CREATED = WM_APP + $100;
MINIBROWSER_SHOWDEVTOOLS = WM_APP + $101;
MINIBROWSER_HIDEDEVTOOLS = WM_APP + $102;
MINIBROWSER_COPYHTML = WM_APP + $103;
MINIBROWSER_VISITDOM = WM_APP + $104;
MINIBROWSER_CREATED = WM_APP + $100;
MINIBROWSER_SHOWDEVTOOLS = WM_APP + $101;
MINIBROWSER_HIDEDEVTOOLS = WM_APP + $102;
MINIBROWSER_COPYHTML = WM_APP + $103;
MINIBROWSER_VISITDOM = WM_APP + $104;
MINIBROWSER_SHOWTEXTVIEWER = WM_APP + $105;
MINIBROWSER_HOMEPAGE = 'https://www.google.com';
@ -71,6 +72,7 @@ const
MINIBROWSER_CONTEXTMENU_JSPRINTDOC = MENU_ID_USER_FIRST + 8;
MINIBROWSER_CONTEXTMENU_REGSCHEME = MENU_ID_USER_FIRST + 9;
MINIBROWSER_CONTEXTMENU_CLEARFACT = MENU_ID_USER_FIRST + 10;
MINIBROWSER_CONTEXTMENU_JSVISITDOM = MENU_ID_USER_FIRST + 11;
type
TMiniBrowserFrm = class(TForm)
@ -124,10 +126,6 @@ type
procedure Chromium1BeforeContextMenu(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; const model: ICefMenuModel);
procedure Chromium1ContextMenuCommand(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; commandId: Integer;
eventFlags: TCefEventFlags; out Result: Boolean);
procedure Chromium1ProcessMessageReceived(Sender: TObject;
const browser: ICefBrowser; sourceProcess: TCefProcessId;
const message: ICefProcessMessage; out Result: Boolean);
@ -156,8 +154,14 @@ type
procedure ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
procedure Openfile1Click(Sender: TObject);
procedure Chromium1ContextMenuCommand(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; commandId: Integer;
eventFlags: Cardinal; out Result: Boolean);
protected
FText : string;
procedure AddURL(const aURL : string);
procedure ShowDevTools(aPoint : TPoint); overload;
@ -172,9 +176,12 @@ type
procedure HideDevToolsMsg(var aMessage : TMessage); message MINIBROWSER_HIDEDEVTOOLS;
procedure CopyHTMLMsg(var aMessage : TMessage); message MINIBROWSER_COPYHTML;
procedure VisitDOMMsg(var aMessage : TMessage); message MINIBROWSER_VISITDOM;
procedure ShowTextViewerMsg(var aMessage : TMessage); message MINIBROWSER_SHOWTEXTVIEWER;
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
procedure WMMoving(var aMessage : TMessage); message WM_MOVING;
public
procedure ShowStatusText(const aText : string);
end;
@ -186,7 +193,7 @@ implementation
{$R *.dfm}
uses
uPreferences, uCEFProcessMessage, uCEFSchemeHandlerFactory, uHelloScheme;
uPreferences, uCEFProcessMessage, uCEFSchemeHandlerFactory, uHelloScheme, uSimpleTextViewer;
procedure TMiniBrowserFrm.BackBtnClick(Sender: TObject);
begin
@ -233,7 +240,8 @@ begin
model.AddItem(MINIBROWSER_CONTEXTMENU_SHOWJSALERT, 'Show JS Alert');
model.AddItem(MINIBROWSER_CONTEXTMENU_SETJSEVENT, 'Set mouseover event');
model.AddItem(MINIBROWSER_CONTEXTMENU_COPYHTML, 'Copy HTML to clipboard');
model.AddItem(MINIBROWSER_CONTEXTMENU_VISITDOM, 'Visit DOM');
model.AddItem(MINIBROWSER_CONTEXTMENU_VISITDOM, 'Visit DOM in CEF');
model.AddItem(MINIBROWSER_CONTEXTMENU_JSVISITDOM, 'Visit DOM in JavaScript');
model.AddItem(MINIBROWSER_CONTEXTMENU_JSWRITEDOC, 'Modify HTML document');
model.AddItem(MINIBROWSER_CONTEXTMENU_JSPRINTDOC, 'Print using Javascript');
model.AddItem(MINIBROWSER_CONTEXTMENU_REGSCHEME, 'Register scheme');
@ -248,7 +256,7 @@ end;
procedure TMiniBrowserFrm.Chromium1ContextMenuCommand(Sender: TObject;
const browser: ICefBrowser; const frame: ICefFrame;
const params: ICefContextMenuParams; commandId: Integer;
eventFlags: TCefEventFlags; out Result: Boolean);
eventFlags: Cardinal; out Result: Boolean);
var
TempParam : WParam;
TempFactory: ICefSchemeHandlerFactory;
@ -287,6 +295,13 @@ begin
MINIBROWSER_CONTEXTMENU_VISITDOM :
PostMessage(Handle, MINIBROWSER_VISITDOM, 0, 0);
MINIBROWSER_CONTEXTMENU_JSVISITDOM :
if (browser <> nil) and (browser.MainFrame <> nil) then
browser.MainFrame.ExecuteJavaScript(
'var testhtml = document.body.innerHTML;' +
'myextension.sendresulttobrowser(testhtml, ''customname'');',
'about:blank', 0);
MINIBROWSER_CONTEXTMENU_JSWRITEDOC :
if (browser <> nil) and (browser.MainFrame <> nil) then
browser.MainFrame.ExecuteJavaScript(
@ -442,20 +457,42 @@ procedure TMiniBrowserFrm.Chromium1ProcessMessageReceived(Sender: TObject;
const browser: ICefBrowser; sourceProcess: TCefProcessId;
const message: ICefProcessMessage; out Result: Boolean);
begin
if (message <> nil) and (message.Name = 'mouseover') and (message.ArgumentList <> nil) then
if (message = nil) or (message.ArgumentList = nil) then exit;
if (message.Name = 'mouseover') then
begin
// Message received from the extension
StatusBar1.Panels[0].Text := message.ArgumentList.GetString(0);
Result := True;
ShowStatusText(message.ArgumentList.GetString(0));
Result := True;
end
else
Result := False;
if (message.Name = 'domvisitor') then
begin
// Message received from the DOMVISITOR in CEF
ShowStatusText(message.ArgumentList.GetString(0));
Result := True;
end
else
if (message.Name = 'customname') then
begin
// Message received from the Javascript DOM visitor
FText := message.ArgumentList.GetString(0);
PostMessage(Handle, MINIBROWSER_SHOWTEXTVIEWER, 0, 0);
Result := True;
end
else
Result := False;
end;
procedure TMiniBrowserFrm.ShowStatusText(const aText : string);
begin
StatusBar1.Panels[0].Text := aText;
end;
procedure TMiniBrowserFrm.Chromium1StatusMessage(Sender: TObject;
const browser: ICefBrowser; const value: ustring);
begin
StatusBar1.Panels[0].Text := value;
ShowStatusText(value);
end;
procedure TMiniBrowserFrm.Chromium1TextResultAvailable(Sender: TObject; const aText: string);
@ -591,6 +628,12 @@ begin
Chromium1.SendProcessMessage(PID_RENDERER, TempMsg);
end;
procedure TMiniBrowserFrm.ShowTextViewerMsg(var aMessage : TMessage);
begin
SimpleTextViewerFrm.Memo1.Lines.Text := FText;
SimpleTextViewerFrm.ShowModal;
end;
procedure TMiniBrowserFrm.WMMove(var aMessage : TWMMove);
begin
inherited;

View File

@ -0,0 +1,31 @@
object SimpleTextViewerFrm: TSimpleTextViewerFrm
Left = 0
Top = 0
BorderIcons = [biSystemMenu]
BorderStyle = bsSingle
Caption = 'Simple text viewer'
ClientHeight = 572
ClientWidth = 694
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
PixelsPerInch = 96
TextHeight = 13
object Memo1: TMemo
Left = 0
Top = 0
Width = 694
Height = 572
Align = alClient
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 0
ExplicitWidth = 611
ExplicitHeight = 495
end
end

View File

@ -0,0 +1,25 @@
unit uSimpleTextViewer;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TSimpleTextViewerFrm = class(TForm)
Memo1: TMemo;
private
{ Private declarations }
public
{ Public declarations }
end;
var
SimpleTextViewerFrm: TSimpleTextViewerFrm;
implementation
{$R *.dfm}
end.

View File

@ -53,10 +53,14 @@ uses
type
TTestExtension = class
class procedure mouseover(const data: string);
class procedure sendresulttobrowser(const msgtext, msgname : string);
end;
implementation
uses
uCEFMiscFunctions, uCEFConstants;
class procedure TTestExtension.mouseover(const data: string);
var
msg: ICefProcessMessage;
@ -69,4 +73,14 @@ begin
TCefv8ContextRef.Current.Browser.SendProcessMessage(PID_BROWSER, msg);
end;
class procedure TTestExtension.sendresulttobrowser(const msgtext, msgname : string);
var
msg: ICefProcessMessage;
begin
msg := TCefProcessMessageRef.New(msgname);
msg.ArgumentList.SetString(0, msgtext);
TCefv8ContextRef.Current.Browser.SendProcessMessage(PID_BROWSER, msg);
end;
end.

View File

@ -2,8 +2,8 @@
<BorlandProject>
<Transactions>
<Transaction>2017/01/22 14:37:05.000.577,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/01/22 14:41:11.000.096,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\uSimpleBrowser.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm</Transaction>
<Transaction>2017/01/22 14:41:11.000.096,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\uSimpleBrowser.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/01/22 14:41:18.000.226,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\SimpleBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj</Transaction>
<Transaction>2017/01/22 14:41:11.000.096,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\uSimpleBrowser.pas</Transaction>
<Transaction>2017/01/22 14:41:11.000.096,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\uSimpleBrowser.dfm</Transaction>
<Transaction>2017/01/22 14:41:18.000.226,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleBrowser\SimpleBrowser.dproj</Transaction>
</Transactions>
</BorlandProject>

View File

@ -52,15 +52,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
RightPanelClients=DockSite2,DockSite4
RightPanelData=00000800010100000000551500000000000001D00700000000000001000000004312000009000000446F636B536974653201000000009D1D000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=1475
RightPanelClients=DockSite2
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
TabDockLeftClients=PropertyInspector=0,DockSite3=1
TabDockLeftClients=DockSite3=0,PropertyInspector=1
TabDockRightClients=DockSite4=0
[View0]
CustomEditViewType=TWelcomePageView
@ -102,11 +103,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@ -150,11 +151,11 @@ State=0
Left=0
Top=0
Width=2000
Height=4226
Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4226
ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@ -163,18 +164,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=23
Width=10000
Height=1267
Width=2773
Height=3845
MaxLeft=-1
MaxTop=-1
ClientWidth=10000
ClientHeight=1267
TBDockHeight=1267
ClientWidth=2773
ClientHeight=3845
TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@ -187,12 +188,12 @@ Docked=1
State=0
Left=0
Top=0
Width=2000
Height=2747
Width=1875
Height=6693
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=2747
ClientWidth=1875
ClientHeight=6693
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@ -242,8 +243,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-148
Top=-137
Left=-8
Top=-30
Width=1844
Height=3139
MaxLeft=-1
@ -299,19 +300,19 @@ Create=1
Visible=0
Docked=1
State=0
Left=0
Top=362
Left=78
Top=386
Width=1898
Height=5370
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=5370
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
SplitPos=111
SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@ -322,11 +323,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=5964
LRDockWidth=2508
Dockable=1
@ -338,8 +339,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-898
Top=-137
Left=-946
Top=1
Width=2844
Height=6200
MaxLeft=-1
@ -357,8 +358,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-1026
Top=-137
Left=-8
Top=287
Width=273
Height=359
MaxLeft=-1
@ -382,11 +383,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@ -401,11 +402,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@ -424,11 +425,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@ -443,11 +444,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@ -462,11 +463,11 @@ State=0
Left=0
Top=0
Width=2336
Height=1177
Height=942
MaxLeft=-1
MaxTop=-1
ClientWidth=2336
ClientHeight=1177
ClientHeight=942
TBDockHeight=2321
LRDockWidth=2820
Dockable=1
@ -527,11 +528,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=4888
LRDockWidth=7148
Dockable=1
@ -543,8 +544,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=0
Top=0
Left=249
Top=709
Width=2859
Height=3206
MaxLeft=-1
@ -565,11 +566,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@ -590,12 +591,12 @@ Docked=1
State=0
Left=0
Top=0
Width=1898
Height=9170
Width=1773
Height=6738
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=9170
ClientWidth=1773
ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@ -610,11 +611,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=4888
LRDockWidth=5305
Dockable=1
@ -675,14 +676,14 @@ Visible=0
Docked=1
State=0
Left=0
Top=0
Top=23
Width=3820
Height=1424
Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1424
TBDockHeight=1424
ClientHeight=874
TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@ -701,12 +702,12 @@ State=0
Left=0
Top=23
Width=2000
Height=4529
Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4529
TBDockHeight=7164
ClientHeight=9170
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
@ -723,13 +724,13 @@ Visible=0
Docked=1
State=0
Left=0
Top=23
Top=0
Width=1898
Height=9170
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=9170
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
@ -739,22 +740,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
HostDockSite=DockRightPanel
HostDockSite=RightTabDock
DockSiteType=1
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=454
Top=0
Width=2000
Height=2747
Height=7119
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=2747
TBDockHeight=7164
ClientWidth=1875
ClientHeight=6693
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0

View File

@ -3,7 +3,7 @@ EditorSecs=4647
DesignerSecs=301
InspectorSecs=137
CompileSecs=326894
OtherSecs=1036
OtherSecs=1037
StartTime=22/01/2017 14:51:01
RealKeys=0
EffectiveKeys=0

View File

@ -46,6 +46,7 @@ uses
Forms, Windows,
{$ENDIF}
uCEFApplication,
uCEFTypes,
uSimpleOSRBrowser in 'uSimpleOSRBrowser.pas' {Form1};
{$R *.res}
@ -56,6 +57,8 @@ uses
begin
GlobalCEFApp := TCefApplication.Create;
GlobalCEFApp.WindowlessRenderingEnabled := True;
GlobalCEFApp.AddCustomCommandLine('--disable-gpu');
GlobalCEFApp.AddCustomCommandLine('--disable-gpu-compositing');
// In case you want to use custom directories for the CEF3 binaries, cache, cookies and user data.
{
@ -66,7 +69,6 @@ begin
GlobalCEFApp.cookies := 'cef\cookies';
GlobalCEFApp.UserDataPath := 'cef\User Data';
}
if GlobalCEFApp.StartMainProcess then
begin
Application.Initialize;

View File

@ -2,8 +2,8 @@
<BorlandProject>
<Transactions>
<Transaction>2017/01/22 17:26:58.000.836,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm</Transaction>
<Transaction>2017/01/22 17:28:25.000.780,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj</Transaction>
<Transaction>2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas</Transaction>
<Transaction>2017/01/22 17:28:20.000.762,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\uSimpleOSRBrowser.dfm</Transaction>
<Transaction>2017/01/22 17:28:25.000.780,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj</Transaction>
</Transactions>
</BorlandProject>

View File

@ -1,14 +1,14 @@
[Closed Files]
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas',0,1,260,54,289,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,338,30,360,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,10,21,38,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,34,23,38,0,0,,
File_4=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumWindow.pas',0,1,35,24,60,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,219,63,249,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uMiniBrowser.pas',0,1,416,36,438,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBrowser.pas',0,1,208,111,219,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleBrowser\uSimpleBrowser.pas',0,1,71,13,84,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\BriskBard\uBriskBardMainForm.pas',0,1,50,11,57,0,0,,
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\uSimpleOSRBrowser.pas',0,1,102,90,177,0,0,,{1,338,1}{2,392,43}
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,1111,61,1007,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas',0,1,94,1,702,0,0,,
File_3=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas',0,1,2780,29,2804,0,0,,
File_4=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\win\Winapi.Windows.pas',0,1,21523,35,21547,0,0,,
File_5=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Controls.pas',0,1,2509,46,2537,0,0,,
File_6=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.ExtCtrls.pas',0,1,237,30,245,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas',0,1,16,21,38,0,0,,
File_8=TSourceModule,'V:\3071\tests\cefclient\browser\osr_dragdrop_win.cc',0,1,355,64,383,0,0,,
File_9=TSourceModule,'V:\3071\tests\cefclient\browser\osr_window_win.cc',0,1,962,45,989,0,0,,
[Modules]
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dproj
@ -46,10 +46,10 @@ TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
RightPanelClients=DockSite2
RightPanelData=00000800010100000000551500000000000001D00700000000000001000000009D1D000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=1475
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
@ -64,8 +64,8 @@ WelcomePageURL=bds:/default.htm
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\SimpleOSRBrowser\SimpleOSRBrowser.dpr
CursorX=2
CursorY=68
TopLine=28
CursorY=64
TopLine=31
LeftCol=1
Elisions=
Bookmarks=
@ -85,11 +85,11 @@ State=0
Left=0
Top=0
Width=3820
Height=964
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=964
ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@ -133,11 +133,11 @@ State=0
Left=0
Top=0
Width=2000
Height=7276
Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=7276
ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@ -146,18 +146,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=23
Width=10000
Height=1267
Width=2773
Height=3845
MaxLeft=-1
MaxTop=-1
ClientWidth=10000
ClientHeight=1267
TBDockHeight=1267
ClientWidth=2773
ClientHeight=3845
TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@ -294,7 +294,7 @@ TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
SplitPos=111
SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@ -365,11 +365,11 @@ State=0
Left=0
Top=0
Width=3820
Height=964
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=964
ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@ -384,11 +384,11 @@ State=0
Left=0
Top=0
Width=3820
Height=964
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=964
ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@ -407,11 +407,11 @@ State=0
Left=0
Top=0
Width=3820
Height=964
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=964
ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@ -426,11 +426,11 @@ State=0
Left=0
Top=0
Width=3820
Height=964
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=964
ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@ -548,11 +548,11 @@ State=0
Left=0
Top=0
Width=3820
Height=964
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=964
ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@ -660,12 +660,12 @@ State=0
Left=0
Top=23
Width=3820
Height=1267
Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1267
TBDockHeight=1267
ClientHeight=874
TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@ -684,11 +684,11 @@ State=0
Left=0
Top=23
Width=2000
Height=7578
Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=7578
ClientHeight=9170
TBDockHeight=7119
LRDockWidth=2000
Dockable=1

View File

@ -1,10 +1,10 @@
[Stats]
EditorSecs=3911
DesignerSecs=253
InspectorSecs=1
CompileSecs=331279
OtherSecs=710
EditorSecs=25695
DesignerSecs=383
InspectorSecs=181
CompileSecs=1179317
OtherSecs=2960
StartTime=22/01/2017 17:35:20
RealKeys=0
EffectiveKeys=0
DebugSecs=1815
DebugSecs=15914

View File

@ -2,8 +2,8 @@ object Form1: TForm1
Left = 0
Top = 0
Caption = 'Simple OSR Browser'
ClientHeight = 712
ClientWidth = 984
ClientHeight = 716
ClientWidth = 992
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
@ -13,37 +13,28 @@ object Form1: TForm1
OldCreateOrder = False
Position = poScreenCenter
OnAfterMonitorDpiChanged = FormAfterMonitorDpiChanged
OnCreate = FormCreate
OnDestroy = FormDestroy
OnHide = FormHide
OnShow = FormShow
PixelsPerInch = 96
TextHeight = 13
object Panel1: TPanel
object NavControlPnl: TPanel
Left = 0
Top = 0
Width = 984
Width = 992
Height = 30
Align = alTop
BevelOuter = bvNone
Enabled = False
Padding.Left = 5
Padding.Top = 5
Padding.Right = 5
Padding.Bottom = 5
ShowCaption = False
TabOrder = 0
ExplicitWidth = 677
object Edit1: TEdit
Left = 5
Top = 5
Width = 943
Height = 20
Margins.Right = 5
Align = alClient
TabOrder = 0
Text = 'http://www.google.com'
ExplicitWidth = 636
ExplicitHeight = 21
end
object Button1: TButton
Left = 948
TabOrder = 1
object GoBtn: TButton
Left = 956
Top = 5
Width = 31
Height = 20
@ -51,26 +42,51 @@ object Form1: TForm1
Align = alRight
Caption = 'Go'
TabOrder = 1
OnClick = Button1Click
ExplicitLeft = 641
OnClick = GoBtnClick
end
object ComboBox1: TComboBox
Left = 5
Top = 5
Width = 951
Height = 21
Align = alClient
ItemIndex = 0
TabOrder = 0
Text = 'https://www.google.com'
Items.Strings = (
'https://www.google.com'
'https://html5demos.com/drag')
end
end
object PaintBox: TPaintBox32
object Panel1: TPanel
Left = 0
Top = 30
Width = 984
Height = 682
Width = 992
Height = 686
Align = alClient
TabOrder = 1
OnMouseDown = PaintBoxMouseDown
OnMouseMove = PaintBoxMouseMove
OnMouseUp = PaintBoxMouseUp
OnMouseWheel = PaintBoxMouseWheel
OnResize = PaintBoxResize
ExplicitWidth = 677
ExplicitHeight = 548
BevelOuter = bvNone
ShowCaption = False
TabOrder = 0
TabStop = True
OnEnter = Panel1Enter
OnExit = Panel1Exit
object PaintBox: TPaintBox32
Left = 0
Top = 0
Width = 992
Height = 686
Align = alClient
TabOrder = 0
OnClick = PaintBoxClick
OnMouseDown = PaintBoxMouseDown
OnMouseMove = PaintBoxMouseMove
OnMouseUp = PaintBoxMouseUp
OnMouseWheel = PaintBoxMouseWheel
OnResize = PaintBoxResize
end
end
object chrmosr: TChromium
OnAfterCreated = chrmosrAfterCreated
OnGetRootScreenRect = chrmosrGetRootScreenRect
OnGetViewRect = chrmosrGetViewRect
OnGetScreenPoint = chrmosrGetScreenPoint

View File

@ -52,52 +52,49 @@ uses
GR32_Image, // You need the Graphics32 components for this demo available at http://graphics32.org
uCEFChromium, uCEFTypes, uCEFInterfaces;
const
MINIBROWSER_CREATED = WM_APP + $100;
type
TForm1 = class(TForm)
Panel1: TPanel;
Edit1: TEdit;
Button1: TButton;
PaintBox: TPaintBox32;
NavControlPnl: TPanel;
GoBtn: TButton;
chrmosr: TChromium;
AppEvents: TApplicationEvents;
Panel1: TPanel; // This is just a quick and dirty hack to receive some events that the PaintBox can't receive.
PaintBox: TPaintBox32;
ComboBox1: TComboBox;
procedure FormShow(Sender: TObject);
procedure PaintBoxResize(Sender: TObject);
procedure PaintBoxMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBoxMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure AppEventsMessage(var Msg: tagMSG; var Handled: Boolean);
procedure PaintBoxMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure PaintBoxMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure chrmosrPaint(Sender: TObject; const browser: ICefBrowser;
kind: TCefPaintElementType; dirtyRectsCount: NativeUInt;
const dirtyRects: PCefRectArray; const buffer: Pointer; width,
height: Integer);
procedure chrmosrGetRootScreenRect(Sender: TObject;
const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
procedure chrmosrCursorChange(Sender: TObject;
const browser: ICefBrowser; cursor: HICON;
cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
procedure PaintBoxMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
procedure Button1Click(Sender: TObject);
procedure chrmosrGetViewRect(Sender: TObject;
const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
procedure chrmosrGetScreenPoint(Sender: TObject;
const browser: ICefBrowser; viewX, viewY: Integer; screenX,
screenY: PInteger; out Result: Boolean);
procedure FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
NewDPI: Integer);
procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser;
show: Boolean);
procedure chrmosrPopupSize(Sender: TObject; const browser: ICefBrowser;
const rect: PCefRect);
procedure PaintBoxMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure PaintBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
procedure chrmosrPaint(Sender: TObject; const browser: ICefBrowser; kind: TCefPaintElementType; dirtyRectsCount: NativeUInt; const dirtyRects: PCefRectArray; const buffer: Pointer; width, height: Integer);
procedure chrmosrGetRootScreenRect(Sender: TObject; const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
procedure chrmosrCursorChange(Sender: TObject; const browser: ICefBrowser; cursor: HICON; cursorType: TCefCursorType; const customCursorInfo: PCefCursorInfo);
procedure PaintBoxMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
procedure GoBtnClick(Sender: TObject);
procedure chrmosrGetViewRect(Sender: TObject; const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
procedure chrmosrGetScreenPoint(Sender: TObject; const browser: ICefBrowser; viewX, viewY: Integer; screenX, screenY: PInteger; out Result: Boolean);
procedure FormAfterMonitorDpiChanged(Sender: TObject; OldDPI, NewDPI: Integer);
procedure chrmosrPopupShow(Sender: TObject; const browser: ICefBrowser; show: Boolean);
procedure chrmosrPopupSize(Sender: TObject; const browser: ICefBrowser; const rect: PCefRect);
procedure chrmosrAfterCreated(Sender: TObject; const browser: ICefBrowser);
procedure Panel1Enter(Sender: TObject);
procedure Panel1Exit(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure PaintBoxClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
function getModifiers(Shift: TShiftState): TCefEventFlags;
function GetButton(Button: TMouseButton): TCefMouseButtonType;
function getModifiers(Shift: TShiftState): TCefEventFlags;
function GetButton(Button: TMouseButton): TCefMouseButtonType;
procedure WMMove(var aMessage : TWMMove); message WM_MOVE;
procedure WMMoving(var aMessage : TMessage); message WM_MOVING;
procedure BrowserCreatedMsg(var aMessage : TMessage); message MINIBROWSER_CREATED;
public
{ Public declarations }
@ -111,77 +108,154 @@ implementation
{$R *.dfm}
uses
uCEFMiscFunctions;
uCEFMiscFunctions, uCEFConstants;
procedure TForm1.AppEventsMessage(var Msg: tagMSG; var Handled: Boolean);
var
event: TCefKeyEvent;
TempEvent : TCefKeyEvent;
begin
case Msg.message of
WM_CHAR:
begin
FillChar(event, SizeOf(TCefKeyEvent), 0);
event.kind := KEYEVENT_CHAR;
event.windows_key_code := Msg.wParam;
event.native_key_code := Msg.lParam;
chrmosr.SendKeyEvent(@event);
end;
WM_SYSCHAR :
if (Panel1.Focused or chrmosr.FrameIsFocused) and
(Msg.wParam in [VK_BACK..VK_HELP]) then
begin
TempEvent.kind := KEYEVENT_CHAR;
TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
TempEvent.windows_key_code := Msg.wParam;
TempEvent.native_key_code := Msg.lParam;
TempEvent.is_system_key := ord(True);
TempEvent.character := #0;
TempEvent.unmodified_character := #0;
TempEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempEvent);
Handled := True;
end;
WM_SYSKEYDOWN :
if (Panel1.Focused or chrmosr.FrameIsFocused) and
(Msg.wParam in [VK_BACK..VK_HELP]) then
begin
TempEvent.kind := KEYEVENT_RAWKEYDOWN;
TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
TempEvent.windows_key_code := Msg.wParam;
TempEvent.native_key_code := Msg.lParam;
TempEvent.is_system_key := ord(True);
TempEvent.character := #0;
TempEvent.unmodified_character := #0;
TempEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempEvent);
Handled := True;
end;
WM_SYSKEYUP :
if (Panel1.Focused or chrmosr.FrameIsFocused) and
(Msg.wParam in [VK_BACK..VK_HELP]) then
begin
TempEvent.kind := KEYEVENT_KEYUP;
TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
TempEvent.windows_key_code := Msg.wParam;
TempEvent.native_key_code := Msg.lParam;
TempEvent.is_system_key := ord(True);
TempEvent.character := #0;
TempEvent.unmodified_character := #0;
TempEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempEvent);
Handled := True;
end;
WM_KEYDOWN :
if (Panel1.Focused or chrmosr.FrameIsFocused) and
(Msg.wParam in [VK_BACK..VK_HELP]) then
begin
TempEvent.kind := KEYEVENT_RAWKEYDOWN;
TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
TempEvent.windows_key_code := Msg.wParam;
TempEvent.native_key_code := Msg.lParam;
TempEvent.is_system_key := ord(False);
TempEvent.character := #0;
TempEvent.unmodified_character := #0;
TempEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempEvent);
Handled := True;
end;
WM_KEYUP :
if (Panel1.Focused or chrmosr.FrameIsFocused) and
(Msg.wParam in [VK_BACK..VK_HELP]) then
begin
TempEvent.kind := KEYEVENT_KEYUP;
TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
TempEvent.windows_key_code := Msg.wParam;
TempEvent.native_key_code := Msg.lParam;
TempEvent.is_system_key := ord(False);
TempEvent.character := #0;
TempEvent.unmodified_character := #0;
TempEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempEvent);
Handled := True;
end;
WM_CHAR :
if Panel1.Focused or chrmosr.FrameIsFocused then
begin
TempEvent.kind := KEYEVENT_CHAR;
TempEvent.modifiers := GetCefKeyboardModifiers(Msg.wParam, Msg.lParam);
TempEvent.windows_key_code := Msg.wParam;
TempEvent.native_key_code := Msg.lParam;
TempEvent.is_system_key := ord(False);
TempEvent.character := #0;
TempEvent.unmodified_character := #0;
TempEvent.focus_on_editable_field := ord(False);
chrmosr.SendKeyEvent(@TempEvent);
Handled := True;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.GoBtnClick(Sender: TObject);
begin
chrmosr.LoadURL(Edit1.Text);
chrmosr.LoadURL(ComboBox1.Text);
end;
procedure TForm1.chrmosrCursorChange(Sender: TObject;
const browser: ICefBrowser; cursor: HICON; cursorType: TCefCursorType;
const customCursorInfo: PCefCursorInfo);
procedure TForm1.chrmosrAfterCreated(Sender: TObject; const browser: ICefBrowser);
begin
case cursorType of
CT_POINTER: PaintBox.Cursor := crArrow;
CT_CROSS: PaintBox.Cursor:= crCross;
CT_HAND: PaintBox.Cursor := crHandPoint;
CT_IBEAM: PaintBox.Cursor := crIBeam;
CT_WAIT: PaintBox.Cursor := crHourGlass;
CT_HELP: PaintBox.Cursor := crHelp;
CT_EASTRESIZE: PaintBox.Cursor := crSizeWE;
CT_NORTHRESIZE: PaintBox.Cursor := crSizeNS;
CT_NORTHEASTRESIZE: PaintBox.Cursor:= crSizeNESW;
CT_NORTHWESTRESIZE: PaintBox.Cursor:= crSizeNWSE;
CT_SOUTHRESIZE: PaintBox.Cursor:= crSizeNS;
CT_SOUTHEASTRESIZE: PaintBox.Cursor:= crSizeNWSE;
CT_SOUTHWESTRESIZE: PaintBox.Cursor:= crSizeNESW;
CT_WESTRESIZE: PaintBox.Cursor := crSizeWE;
CT_NORTHSOUTHRESIZE: PaintBox.Cursor:= crSizeNS;
CT_EASTWESTRESIZE: PaintBox.Cursor := crSizeWE;
CT_NORTHEASTSOUTHWESTRESIZE: PaintBox.Cursor:= crSizeNESW;
CT_NORTHWESTSOUTHEASTRESIZE: PaintBox.Cursor:= crSizeNWSE;
CT_COLUMNRESIZE: PaintBox.Cursor:= crHSplit;
CT_ROWRESIZE: PaintBox.Cursor:= crVSplit;
CT_MOVE: PaintBox.Cursor := crSizeAll;
CT_PROGRESS: PaintBox.Cursor := crAppStart;
CT_NODROP: PaintBox.Cursor:= crNo;
CT_NONE: PaintBox.Cursor:= crNone;
CT_NOTALLOWED: PaintBox.Cursor:= crNo;
else
PaintBox.Cursor := crArrow;
end;
PostMessage(Handle, MINIBROWSER_CREATED, 0, 0);
end;
procedure TForm1.chrmosrGetRootScreenRect(Sender: TObject;
const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
procedure TForm1.chrmosrCursorChange(Sender : TObject;
const browser : ICefBrowser;
cursor : HICON;
cursorType : TCefCursorType;
const customCursorInfo : PCefCursorInfo);
begin
rect.x := 0;
rect.y := 0;
rect.width := PaintBox.Width;
PaintBox.Cursor := GefCursorToWindowsCursor(cursorType);
end;
procedure TForm1.chrmosrGetRootScreenRect(Sender : TObject;
const browser : ICefBrowser;
rect : PCefRect;
out Result : Boolean);
begin
rect.x := 0;
rect.y := 0;
rect.width := PaintBox.Width;
rect.height := PaintBox.Height;
Result := True;
Result := True;
end;
procedure TForm1.chrmosrGetScreenPoint(Sender: TObject;
const browser: ICefBrowser; viewX, viewY: Integer; screenX,
screenY: PInteger; out Result: Boolean);
procedure TForm1.chrmosrGetScreenPoint(Sender : TObject;
const browser : ICefBrowser;
viewX : Integer;
viewY : Integer;
screenX : PInteger;
screenY : PInteger;
out Result : Boolean);
var
TempScreenPt, TempViewPt : TPoint;
begin
@ -193,8 +267,10 @@ begin
Result := True;
end;
procedure TForm1.chrmosrGetViewRect(Sender: TObject;
const browser: ICefBrowser; rect: PCefRect; out Result: Boolean);
procedure TForm1.chrmosrGetViewRect(Sender : TObject;
const browser : ICefBrowser;
rect : PCefRect;
out Result : Boolean);
begin
rect.x := 0;
rect.y := 0;
@ -203,10 +279,14 @@ begin
Result := True;
end;
procedure TForm1.chrmosrPaint(Sender: TObject; const browser: ICefBrowser;
kind: TCefPaintElementType; dirtyRectsCount: NativeUInt;
const dirtyRects: PCefRectArray; const buffer: Pointer; width,
height: Integer);
procedure TForm1.chrmosrPaint(Sender : TObject;
const browser : ICefBrowser;
kind : TCefPaintElementType;
dirtyRectsCount : NativeUInt;
const dirtyRects : PCefRectArray;
const buffer : Pointer;
width : Integer;
height : Integer);
var
src, dst: PByte;
offset, i, j, w: Integer;
@ -241,35 +321,38 @@ begin
end;
end;
procedure TForm1.chrmosrPopupShow(Sender: TObject;
const browser: ICefBrowser; show: Boolean);
procedure TForm1.chrmosrPopupShow(Sender : TObject;
const browser : ICefBrowser;
show : Boolean);
begin
// TO DO : Needed to draw the "select" items
end;
procedure TForm1.chrmosrPopupSize(Sender: TObject;
const browser: ICefBrowser; const rect: PCefRect);
procedure TForm1.chrmosrPopupSize(Sender : TObject;
const browser : ICefBrowser;
const rect : PCefRect);
begin
// TO DO : Needed to draw the "select" items
end;
function TForm1.getModifiers(Shift: TShiftState): TCefEventFlags;
begin
Result := [];
if ssShift in Shift then Include(Result, EVENTFLAG_SHIFT_DOWN);
if ssAlt in Shift then Include(Result, EVENTFLAG_ALT_DOWN);
if ssCtrl in Shift then Include(Result, EVENTFLAG_CONTROL_DOWN);
if ssLeft in Shift then Include(Result, EVENTFLAG_LEFT_MOUSE_BUTTON);
if ssRight in Shift then Include(Result, EVENTFLAG_RIGHT_MOUSE_BUTTON);
if ssMiddle in Shift then Include(Result, EVENTFLAG_MIDDLE_MOUSE_BUTTON);
Result := EVENTFLAG_NONE;
if (ssShift in Shift) then Result := Result or EVENTFLAG_SHIFT_DOWN;
if (ssAlt in Shift) then Result := Result or EVENTFLAG_ALT_DOWN;
if (ssCtrl in Shift) then Result := Result or EVENTFLAG_CONTROL_DOWN;
if (ssLeft in Shift) then Result := Result or EVENTFLAG_LEFT_MOUSE_BUTTON;
if (ssRight in Shift) then Result := Result or EVENTFLAG_RIGHT_MOUSE_BUTTON;
if (ssMiddle in Shift) then Result := Result or EVENTFLAG_MIDDLE_MOUSE_BUTTON;
end;
function TForm1.GetButton(Button: TMouseButton): TCefMouseButtonType;
begin
case Button of
TMouseButton.mbRight: Result := MBT_RIGHT;
TMouseButton.mbMiddle: Result := MBT_MIDDLE;
else Result := MBT_LEFT;
TMouseButton.mbRight : Result := MBT_RIGHT;
TMouseButton.mbMiddle : Result := MBT_MIDDLE;
else Result := MBT_LEFT;
end;
end;
@ -287,8 +370,13 @@ begin
if (chrmosr <> nil) then chrmosr.NotifyMoveOrResizeStarted;
end;
procedure TForm1.FormAfterMonitorDpiChanged(Sender: TObject; OldDPI,
NewDPI: Integer);
procedure TForm1.BrowserCreatedMsg(var aMessage : TMessage);
begin
NavControlPnl.Enabled := True;
GoBtn.Click;
end;
procedure TForm1.FormAfterMonitorDpiChanged(Sender: TObject; OldDPI, NewDPI: Integer);
begin
if (chrmosr <> nil) then
begin
@ -297,61 +385,93 @@ begin
end;
end;
procedure TForm1.FormShow(Sender: TObject);
procedure TForm1.FormCreate(Sender: TObject);
begin
chrmosr.Options.BackgroundColor := CefColorSetARGB($FF, $FF, $FF, $FF); // opaque white background color
chrmosr.CreateBrowser(nil, '');
chrmosr.InitializeDragAndDrop(PaintBox);
end;
procedure TForm1.PaintBoxMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
event: TCefMouseEvent;
procedure TForm1.FormDestroy(Sender: TObject);
begin
event.x := X;
event.y := Y;
event.modifiers := getModifiers(Shift);
chrmosr.SendMouseClickEvent(@event, GetButton(Button), False, 1);
chrmosr.ShutdownDragAndDrop;
end;
procedure TForm1.PaintBoxMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
event: TCefMouseEvent;
procedure TForm1.FormHide(Sender: TObject);
begin
event.x := X;
event.y := Y;
event.modifiers := getModifiers(Shift);
chrmosr.SendMouseMoveEvent(@event, not PaintBox.MouseInControl);
chrmosr.SendFocusEvent(False);
chrmosr.WasHidden(True);
end;
procedure TForm1.PaintBoxMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
event: TCefMouseEvent;
procedure TForm1.FormShow(Sender: TObject);
begin
event.x := X;
event.y := Y;
event.modifiers := getModifiers(Shift);
chrmosr.SendMouseClickEvent(@event, GetButton(Button), True, 1);
chrmosr.WasHidden(False);
chrmosr.SendFocusEvent(True);
end;
procedure TForm1.PaintBoxMouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean);
var
event: TCefMouseEvent;
procedure TForm1.PaintBoxClick(Sender: TObject);
begin
event.x := MousePos.X;
event.y := MousePos.Y;
event.modifiers := getModifiers(Shift);
chrmosr.SendMouseWheelEvent(@event, 0, WheelDelta);
Panel1.SetFocus;
end;
procedure TForm1.PaintBoxMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
TempEvent : TCefMouseEvent;
begin
TempEvent.x := X;
TempEvent.y := Y;
TempEvent.modifiers := getModifiers(Shift);
chrmosr.SendMouseClickEvent(@TempEvent, GetButton(Button), False, 1);
end;
procedure TForm1.PaintBoxMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
TempEvent : TCefMouseEvent;
begin
TempEvent.x := X;
TempEvent.y := Y;
TempEvent.modifiers := getModifiers(Shift);
chrmosr.SendMouseMoveEvent(@TempEvent, not PaintBox.MouseInControl);
end;
procedure TForm1.PaintBoxMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
TempEvent : TCefMouseEvent;
begin
TempEvent.x := X;
TempEvent.y := Y;
TempEvent.modifiers := getModifiers(Shift);
chrmosr.SendMouseClickEvent(@TempEvent, GetButton(Button), True, 1);
end;
procedure TForm1.PaintBoxMouseWheel(Sender : TObject;
Shift : TShiftState;
WheelDelta : Integer;
MousePos : TPoint;
var Handled : Boolean);
var
TempEvent : TCefMouseEvent;
begin
TempEvent.x := MousePos.X;
TempEvent.y := MousePos.Y;
TempEvent.modifiers := getModifiers(Shift);
chrmosr.SendMouseWheelEvent(@TempEvent, 0, WheelDelta);
end;
procedure TForm1.PaintBoxResize(Sender: TObject);
begin
PaintBox.Buffer.SetSize(PaintBox.Width, PaintBox.Height);
chrmosr.WasResized;
end;
procedure TForm1.Panel1Enter(Sender: TObject);
begin
chrmosr.SendFocusEvent(True);
end;
procedure TForm1.Panel1Exit(Sender: TObject);
begin
chrmosr.SendFocusEvent(False);
end;
end.

View File

@ -2,11 +2,11 @@
<BorlandProject>
<Transactions>
<Transaction>2017/05/21 15:39:53.000.029,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas</Transaction>
<Transaction>2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.dfm</Transaction>
<Transaction>2017/05/21 15:40:43.000.627,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dproj</Transaction>
<Transaction>2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas</Transaction>
<Transaction>2017/05/21 15:40:36.000.672,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uMainForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.dfm</Transaction>
<Transaction>2017/05/21 15:40:43.000.627,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\ToolBoxBrowser.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Project1.dproj</Transaction>
<Transaction>2017/05/21 15:44:20.000.154,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas</Transaction>
<Transaction>2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.dfm</Transaction>
<Transaction>2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas</Transaction>
<Transaction>2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas</Transaction>
<Transaction>2017/05/21 15:46:19.000.247,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\uChildForm.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.dfm</Transaction>
</Transactions>
</BorlandProject>

View File

@ -45,15 +45,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=2000
RightPanelClients=DockSite2,DockSite4
RightPanelData=00000800010100000000551500000000000001D00700000000000001000000004312000009000000446F636B536974653201000000009D1D000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=1475
RightPanelClients=DockSite2
RightPanelData=00000800010100000000AA1900000000000001D0070000000000000100000000A123000009000000446F636B5369746532FFFFFFFF
BottomPanelSize=0
BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002C30500000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D3B3600000000000002820F000000000000FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
TabDockLeftClients=PropertyInspector=0,DockSite3=1
TabDockLeftClients=DockSite3=0,PropertyInspector=1
TabDockRightClients=DockSite4=0
[View0]
CustomEditViewType=TWelcomePageView
@ -84,11 +85,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@ -132,11 +133,11 @@ State=0
Left=0
Top=0
Width=2000
Height=4226
Height=8868
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4226
ClientHeight=8868
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@ -145,18 +146,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=23
Width=10000
Height=1267
Width=2773
Height=3845
MaxLeft=-1
MaxTop=-1
ClientWidth=10000
ClientHeight=1267
TBDockHeight=1267
ClientWidth=2773
ClientHeight=3845
TBDockHeight=3845
LRDockWidth=2773
Dockable=1
StayOnTop=0
@ -169,12 +170,12 @@ Docked=1
State=0
Left=0
Top=0
Width=2000
Height=2747
Width=1875
Height=6693
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=2747
ClientWidth=1875
ClientHeight=6693
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@ -224,8 +225,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-148
Top=-137
Left=-8
Top=-30
Width=1844
Height=3139
MaxLeft=-1
@ -281,19 +282,19 @@ Create=1
Visible=0
Docked=1
State=0
Left=0
Top=362
Left=78
Top=386
Width=1898
Height=5370
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=5370
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
SplitPos=111
SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@ -304,11 +305,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=5964
LRDockWidth=2508
Dockable=1
@ -320,8 +321,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-898
Top=-137
Left=-946
Top=1
Width=2844
Height=6200
MaxLeft=-1
@ -339,8 +340,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-1026
Top=-137
Left=-8
Top=287
Width=273
Height=359
MaxLeft=-1
@ -364,11 +365,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@ -383,11 +384,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@ -406,11 +407,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@ -425,11 +426,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@ -444,11 +445,11 @@ State=0
Left=0
Top=0
Width=2336
Height=1177
Height=942
MaxLeft=-1
MaxTop=-1
ClientWidth=2336
ClientHeight=1177
ClientHeight=942
TBDockHeight=2321
LRDockWidth=2820
Dockable=1
@ -509,11 +510,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=4888
LRDockWidth=7148
Dockable=1
@ -525,8 +526,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=0
Top=0
Left=249
Top=709
Width=2859
Height=3206
MaxLeft=-1
@ -547,11 +548,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@ -572,12 +573,12 @@ Docked=1
State=0
Left=0
Top=0
Width=1898
Height=9170
Width=1773
Height=6738
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=9170
ClientWidth=1773
ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@ -592,11 +593,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=4888
LRDockWidth=5305
Dockable=1
@ -657,14 +658,14 @@ Visible=0
Docked=1
State=0
Left=0
Top=0
Top=23
Width=3820
Height=1424
Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1424
TBDockHeight=1424
ClientHeight=874
TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@ -683,12 +684,12 @@ State=0
Left=0
Top=23
Width=2000
Height=4529
Height=9170
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4529
TBDockHeight=7164
ClientHeight=9170
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
@ -705,13 +706,13 @@ Visible=0
Docked=1
State=0
Left=0
Top=23
Top=0
Width=1898
Height=9170
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=9170
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
@ -721,22 +722,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
HostDockSite=DockRightPanel
HostDockSite=RightTabDock
DockSiteType=1
PercentageSizes=1
Create=1
Visible=1
Visible=0
Docked=1
State=0
Left=0
Top=454
Top=0
Width=2000
Height=2747
Height=7119
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=2747
TBDockHeight=7164
ClientWidth=1875
ClientHeight=6693
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0

View File

@ -3,7 +3,7 @@ EditorSecs=684
DesignerSecs=16
InspectorSecs=1
CompileSecs=22006
OtherSecs=57
OtherSecs=58
StartTime=21/05/2017 17:35:40
RealKeys=0
EffectiveKeys=0

View File

@ -151,6 +151,8 @@ contains
uCEFChromiumWindow in 'uCEFChromiumWindow.pas',
uCEFBaseRefCounted in 'uCEFBaseRefCounted.pas',
uCEFBaseScopedWrapper in 'uCEFBaseScopedWrapper.pas',
uCEFAccessibilityHandler in 'uCEFAccessibilityHandler.pas';
uCEFAccessibilityHandler in 'uCEFAccessibilityHandler.pas',
uOLEDragAndDrop in 'uOLEDragAndDrop.pas',
uCEFDragAndDropMgr in 'uCEFDragAndDropMgr.pas';
end.

View File

@ -210,6 +210,8 @@
<DCCReference Include="uCEFBaseRefCounted.pas"/>
<DCCReference Include="uCEFBaseScopedWrapper.pas"/>
<DCCReference Include="uCEFAccessibilityHandler.pas"/>
<DCCReference Include="uOLEDragAndDrop.pas"/>
<DCCReference Include="uCEFDragAndDropMgr.pas"/>
<BuildConfiguration Include="Release">
<Key>Cfg_2</Key>
<CfgParent>Base</CfgParent>

View File

@ -2,288 +2,289 @@
<BorlandProject>
<Transactions>
<Transaction>2016/11/03 13:34:24.000.622,=rtl.dcp</Transaction>
<Transaction>2016/11/03 13:36:50.000.899,C:\Program Files\Embarcadero\Studio\17.0\cef3\cef3.dproj=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Package1.dproj</Transaction>
<Transaction>2016/11/03 13:36:50.000.899,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Package1.dproj=C:\Program Files\Embarcadero\Studio\17.0\cef3\cef3.dproj</Transaction>
<Transaction>2016/11/03 13:37:44.000.301,=C:\Program Files\Embarcadero\Studio\17.0\cef3\ceferr.pas</Transaction>
<Transaction>2016/11/03 13:37:45.000.236,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefreg.pas</Transaction>
<Transaction>2016/11/03 13:37:45.000.074,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefgui.pas</Transaction>
<Transaction>2016/11/03 13:37:45.000.219,=C:\Program Files\Embarcadero\Studio\17.0\cef3\ceflib.pas</Transaction>
<Transaction>2016/11/03 13:37:45.000.236,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefreg.pas</Transaction>
<Transaction>2016/11/03 13:37:47.000.876,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefvcl.pas</Transaction>
<Transaction>2016/11/03 13:42:03.000.211,=vcl.dcp</Transaction>
<Transaction>2016/11/03 14:22:14.000.293,C:\Program Files\Embarcadero\Studio\17.0\cef3\ceferr.pas=</Transaction>
<Transaction>2016/11/03 14:22:31.000.065,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/03 14:23:07.000.607,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFConstants.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/03 14:23:07.000.607,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFConstants.pas</Transaction>
<Transaction>2016/11/03 16:02:18.000.380,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/03 16:02:54.000.678,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibrary.pas</Transaction>
<Transaction>2016/11/03 19:41:00.000.323,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibrary.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTypes.pas</Transaction>
<Transaction>2016/11/03 16:02:54.000.678,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibrary.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/03 19:41:00.000.323,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTypes.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibrary.pas</Transaction>
<Transaction>2016/11/03 19:41:47.000.437,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/03 19:42:09.000.623,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFInterfaces.pas</Transaction>
<Transaction>2016/11/03 19:42:09.000.623,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFInterfaces.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/03 19:47:24.000.150,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/03 19:47:36.000.023,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMiscFunctions.pas</Transaction>
<Transaction>2016/11/03 19:47:36.000.023,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMiscFunctions.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 09:38:54.000.499,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 09:39:27.000.208,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibFunctions.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 10:17:03.000.353,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFHandlers.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefgui.pas</Transaction>
<Transaction>2016/11/04 09:39:27.000.208,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLibFunctions.pas</Transaction>
<Transaction>2016/11/04 10:17:03.000.353,C:\Program Files\Embarcadero\Studio\17.0\cef3\cefgui.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFHandlers.pas</Transaction>
<Transaction>2016/11/04 10:19:09.000.192,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 10:19:19.000.721,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFApplication.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 10:19:19.000.721,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFApplication.pas</Transaction>
<Transaction>2016/11/04 10:28:32.000.523,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 10:28:45.000.314,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBase.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 10:28:45.000.314,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBase.pas</Transaction>
<Transaction>2016/11/04 10:53:47.000.492,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 10:54:04.000.082,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSchemeRegistrar.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 10:54:04.000.082,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSchemeRegistrar.pas</Transaction>
<Transaction>2016/11/04 10:57:19.000.058,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 10:57:35.000.208,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCommandLine.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 10:57:35.000.208,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCommandLine.pas</Transaction>
<Transaction>2016/11/04 11:12:13.000.709,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:12:22.000.981,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFClient.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:12:22.000.981,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFClient.pas</Transaction>
<Transaction>2016/11/04 11:18:45.000.858,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:19:23.000.685,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFProcessMessage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:19:23.000.685,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFProcessMessage.pas</Transaction>
<Transaction>2016/11/04 11:22:59.000.325,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:23:09.000.748,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBrowser.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:23:09.000.748,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBrowser.pas</Transaction>
<Transaction>2016/11/04 11:30:13.000.870,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:30:22.000.479,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFListValue.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:30:22.000.479,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFListValue.pas</Transaction>
<Transaction>2016/11/04 11:33:29.000.686,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:33:40.000.124,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBinaryValue.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:33:40.000.124,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBinaryValue.pas</Transaction>
<Transaction>2016/11/04 11:36:10.000.379,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:36:37.000.046,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFValue.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:36:37.000.046,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFValue.pas</Transaction>
<Transaction>2016/11/04 11:40:42.000.080,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:41:02.000.855,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDictionaryValue.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 11:41:02.000.855,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDictionaryValue.pas</Transaction>
<Transaction>2016/11/04 12:04:55.000.807,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:05:21.000.299,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImageCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:05:37.000.607,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImageCallback.pas</Transaction>
<Transaction>2016/11/04 12:10:01.000.351,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImage.pas</Transaction>
<Transaction>2016/11/04 12:10:25.000.976,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImageCallBack.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImage.pas</Transaction>
<Transaction>2016/11/04 12:05:21.000.299,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImageCallback.pas</Transaction>
<Transaction>2016/11/04 12:05:37.000.607,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImageCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImage.pas</Transaction>
<Transaction>2016/11/04 12:10:01.000.351,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastDownloadImage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImage.pas</Transaction>
<Transaction>2016/11/04 12:10:25.000.976,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadImageCallBack.pas</Transaction>
<Transaction>2016/11/04 12:12:39.000.648,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:12:49.000.133,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFrame.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:12:49.000.133,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFrame.pas</Transaction>
<Transaction>2016/11/04 12:16:41.000.794,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:16:57.000.667,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPDFPrintCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:16:57.000.667,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPDFPrintCallback.pas</Transaction>
<Transaction>2016/11/04 12:21:00.000.581,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:21:15.000.075,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRunFileDialogCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:21:15.000.075,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRunFileDialogCallback.pas</Transaction>
<Transaction>2016/11/04 12:25:08.000.825,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:25:24.000.237,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestContext.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:25:24.000.237,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestContext.pas</Transaction>
<Transaction>2016/11/04 12:31:41.000.426,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:31:57.000.575,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFNavigationEntryVisitor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:31:57.000.575,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFNavigationEntryVisitor.pas</Transaction>
<Transaction>2016/11/04 12:37:26.000.233,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:37:41.000.439,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringVisitor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:37:41.000.439,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringVisitor.pas</Transaction>
<Transaction>2016/11/04 12:41:15.000.143,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:41:29.000.653,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Context.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:41:29.000.653,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Context.pas</Transaction>
<Transaction>2016/11/04 12:44:15.000.121,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:44:21.000.835,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomVisitor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:44:21.000.835,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomVisitor.pas</Transaction>
<Transaction>2016/11/04 12:47:43.000.602,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:47:55.000.980,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFNavigationEntry.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:47:55.000.980,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFNavigationEntry.pas</Transaction>
<Transaction>2016/11/04 12:54:00.000.201,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:54:11.000.315,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieManager.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:54:11.000.315,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieManager.pas</Transaction>
<Transaction>2016/11/04 12:57:30.000.891,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:57:42.000.499,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCompletionCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 12:57:42.000.499,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCompletionCallback.pas</Transaction>
<Transaction>2016/11/04 13:01:09.000.833,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 13:01:23.000.562,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestContextHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 13:01:23.000.562,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestContextHandler.pas</Transaction>
<Transaction>2016/11/04 13:57:45.000.846,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 13:57:59.000.369,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginInfo.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 13:57:59.000.369,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginInfo.pas</Transaction>
<Transaction>2016/11/04 14:31:30.000.550,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 14:31:41.000.938,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomDocument.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 14:31:41.000.938,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomDocument.pas</Transaction>
<Transaction>2016/11/04 14:34:17.000.090,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 14:34:28.000.129,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomNode.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 14:34:28.000.129,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDomNode.pas</Transaction>
<Transaction>2016/11/04 14:37:55.000.209,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 14:38:03.000.057,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Value.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 14:38:03.000.057,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Value.pas</Transaction>
<Transaction>2016/11/04 14:41:40.000.277,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 14:41:59.000.136,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Accessor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 14:42:16.000.591,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastv8Accessor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Accessor.pas</Transaction>
<Transaction>2016/11/04 14:42:25.000.676,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Accessor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastv8Accessor.pas</Transaction>
<Transaction>2016/11/04 15:22:35.000.321,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefvcl.pas</Transaction>
<Transaction>2016/11/04 14:41:59.000.136,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Accessor.pas</Transaction>
<Transaction>2016/11/04 14:42:16.000.591,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Accessor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastv8Accessor.pas</Transaction>
<Transaction>2016/11/04 14:42:25.000.676,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFastv8Accessor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Accessor.pas</Transaction>
<Transaction>2016/11/04 15:22:35.000.321,C:\Program Files\Embarcadero\Studio\17.0\cef3\cefvcl.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas</Transaction>
<Transaction>2016/11/04 15:35:00.000.300,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:35:10.000.181,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLoadHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:35:10.000.181,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLoadHandler.pas</Transaction>
<Transaction>2016/11/04 15:41:55.000.278,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:42:06.000.032,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFocusHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:42:06.000.032,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFocusHandler.pas</Transaction>
<Transaction>2016/11/04 15:45:35.000.950,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:45:45.000.999,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFContextMenuHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:45:45.000.999,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFContextMenuHandler.pas</Transaction>
<Transaction>2016/11/04 15:50:29.000.265,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:50:38.000.989,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDialogHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:50:38.000.989,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDialogHandler.pas</Transaction>
<Transaction>2016/11/04 15:56:26.000.967,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:56:35.000.859,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFKeyboardHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:56:35.000.859,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFKeyboardHandler.pas</Transaction>
<Transaction>2016/11/04 15:59:45.000.629,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:59:55.000.903,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDisplayHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 15:59:55.000.903,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDisplayHandler.pas</Transaction>
<Transaction>2016/11/04 16:02:33.000.750,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:02:43.000.771,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:02:43.000.771,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadHandler.pas</Transaction>
<Transaction>2016/11/04 16:05:14.000.727,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:05:25.000.707,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGeolocationHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:05:25.000.707,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGeolocationHandler.pas</Transaction>
<Transaction>2016/11/04 16:07:34.000.747,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:07:48.000.604,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFJsDialogHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:07:48.000.604,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFJsDialogHandler.pas</Transaction>
<Transaction>2016/11/04 16:10:46.000.310,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:10:57.000.068,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLifeSpanHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:10:57.000.068,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFLifeSpanHandler.pas</Transaction>
<Transaction>2016/11/04 16:14:08.000.188,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:14:20.000.442,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:14:20.000.442,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestHandler.pas</Transaction>
<Transaction>2016/11/04 16:18:01.000.623,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:18:07.000.730,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRenderHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:18:07.000.730,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRenderHandler.pas</Transaction>
<Transaction>2016/11/04 16:21:06.000.326,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:21:15.000.423,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDragHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:27:29.000.133,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFindHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFHandlers.pas</Transaction>
<Transaction>2016/11/04 16:21:15.000.423,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDragHandler.pas</Transaction>
<Transaction>2016/11/04 16:27:29.000.133,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFHandlers.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFindHandler.pas</Transaction>
<Transaction>2016/11/04 16:29:59.000.889,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:30:12.000.364,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPostData.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:30:12.000.364,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPostData.pas</Transaction>
<Transaction>2016/11/04 16:32:14.000.814,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:32:25.000.911,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPostDataElement.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:32:25.000.911,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPostDataElement.pas</Transaction>
<Transaction>2016/11/04 16:33:41.000.767,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:33:51.000.107,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequest.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:33:51.000.107,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequest.pas</Transaction>
<Transaction>2016/11/04 16:35:36.000.010,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:35:50.000.837,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStreamReader.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:35:50.000.837,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStreamReader.pas</Transaction>
<Transaction>2016/11/04 16:37:53.000.753,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:38:01.000.643,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWriteHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:38:01.000.643,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWriteHandler.pas</Transaction>
<Transaction>2016/11/04 16:39:57.000.905,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:40:04.000.132,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStreamWriter.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:40:04.000.132,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStreamWriter.pas</Transaction>
<Transaction>2016/11/04 16:41:56.000.888,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:42:13.000.418,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8StackFrame.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:42:13.000.418,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8StackFrame.pas</Transaction>
<Transaction>2016/11/04 16:43:23.000.259,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:43:31.000.890,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8StackTrace.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:43:31.000.890,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8StackTrace.pas</Transaction>
<Transaction>2016/11/04 16:45:02.000.388,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:45:15.000.769,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Handler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:45:15.000.769,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Handler.pas</Transaction>
<Transaction>2016/11/04 16:47:31.000.384,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:47:43.000.976,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:47:43.000.976,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRequestCallback.pas</Transaction>
<Transaction>2016/11/04 16:48:49.000.916,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:49:13.000.169,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCustomStreamReader.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:49:13.000.169,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCustomStreamReader.pas</Transaction>
<Transaction>2016/11/04 16:52:24.000.501,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:54:53.000.505,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:54:53.000.505,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCallback.pas</Transaction>
<Transaction>2016/11/04 16:57:17.000.239,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:57:26.000.077,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 16:57:26.000.077,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceHandler.pas</Transaction>
<Transaction>2016/11/04 17:00:50.000.674,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:00:59.000.259,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSchemeHandlerFactory.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:00:59.000.259,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSchemeHandlerFactory.pas</Transaction>
<Transaction>2016/11/04 17:03:15.000.546,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:05:49.000.016,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTask.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:05:49.000.016,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTask.pas</Transaction>
<Transaction>2016/11/04 17:10:43.000.387,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:10:57.000.795,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTaskRunner.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:10:57.000.795,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFTaskRunner.pas</Transaction>
<Transaction>2016/11/04 17:11:52.000.079,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:11:59.000.503,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringMap.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:11:59.000.503,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringMap.pas</Transaction>
<Transaction>2016/11/04 17:13:03.000.928,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:13:12.000.687,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringMultimap.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:13:12.000.687,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFStringMultimap.pas</Transaction>
<Transaction>2016/11/04 17:15:01.000.582,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:15:12.000.909,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFXmlReader.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:15:12.000.909,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFXmlReader.pas</Transaction>
<Transaction>2016/11/04 17:16:26.000.528,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:16:34.000.014,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFZipReader.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:16:34.000.014,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFZipReader.pas</Transaction>
<Transaction>2016/11/04 17:17:43.000.074,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:17:51.000.944,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResponse.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:17:51.000.944,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResponse.pas</Transaction>
<Transaction>2016/11/04 17:29:30.000.463,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:29:40.000.733,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieVisitor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:29:40.000.733,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieVisitor.pas</Transaction>
<Transaction>2016/11/04 17:32:01.000.224,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:32:07.000.583,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Exception.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:32:07.000.583,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFV8Exception.pas</Transaction>
<Transaction>2016/11/04 17:34:32.000.893,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:34:39.000.833,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceBundleHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:34:39.000.833,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceBundleHandler.pas</Transaction>
<Transaction>2016/11/04 17:38:58.000.648,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:39:04.000.466,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSetCookieCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:39:04.000.466,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSetCookieCallback.pas</Transaction>
<Transaction>2016/11/04 17:40:44.000.949,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:40:57.000.165,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDeleteCookiesCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:40:57.000.165,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDeleteCookiesCallback.pas</Transaction>
<Transaction>2016/11/04 17:43:27.000.412,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:43:42.000.253,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownLoadItem.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:43:42.000.253,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownLoadItem.pas</Transaction>
<Transaction>2016/11/04 17:45:13.000.508,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:45:19.000.703,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBeforeDownloadCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:45:19.000.703,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBeforeDownloadCallback.pas</Transaction>
<Transaction>2016/11/04 17:46:27.000.140,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:46:38.000.480,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadItemCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:46:38.000.480,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDownloadItemCallback.pas</Transaction>
<Transaction>2016/11/04 17:49:03.000.980,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:49:13.000.577,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFAuthCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:49:13.000.577,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFAuthCallback.pas</Transaction>
<Transaction>2016/11/04 17:50:22.000.655,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:50:32.000.879,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFJsDialogCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:50:32.000.879,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFJsDialogCallback.pas</Transaction>
<Transaction>2016/11/04 17:51:12.000.076,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:51:18.000.891,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGeolocationCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:51:18.000.891,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGeolocationCallback.pas</Transaction>
<Transaction>2016/11/04 17:52:26.000.379,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:52:38.000.008,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFContextMenuParams.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:52:38.000.008,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFContextMenuParams.pas</Transaction>
<Transaction>2016/11/04 17:53:51.000.704,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:53:59.000.469,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMenuModel.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:53:59.000.469,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMenuModel.pas</Transaction>
<Transaction>2016/11/04 17:55:42.000.326,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:55:54.000.047,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBrowserProcessHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:55:54.000.047,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFBrowserProcessHandler.pas</Transaction>
<Transaction>2016/11/04 17:57:33.000.807,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:57:44.000.320,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRenderProcessHandler.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 17:57:44.000.320,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRenderProcessHandler.pas</Transaction>
<Transaction>2016/11/04 18:01:03.000.908,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:01:16.000.502,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFUrlrequestClient.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:01:16.000.502,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFUrlrequestClient.pas</Transaction>
<Transaction>2016/11/04 18:03:22.000.002,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:03:36.000.694,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFUrlRequest.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:03:36.000.694,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFUrlRequest.pas</Transaction>
<Transaction>2016/11/04 18:04:54.000.070,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:05:01.000.724,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginInfoVisitor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:05:01.000.724,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginInfoVisitor.pas</Transaction>
<Transaction>2016/11/04 18:08:01.000.312,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:08:10.000.190,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginUnstableCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:08:10.000.190,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWebPluginUnstableCallback.pas</Transaction>
<Transaction>2016/11/04 18:09:22.000.047,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:09:32.000.833,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFEndTracingCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:09:32.000.833,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFEndTracingCallback.pas</Transaction>
<Transaction>2016/11/04 18:10:56.000.167,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:11:03.000.863,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGetGeolocationCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:11:03.000.863,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFGetGeolocationCallback.pas</Transaction>
<Transaction>2016/11/04 18:11:49.000.619,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:11:58.000.315,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFileDialogCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:11:58.000.315,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFFileDialogCallback.pas</Transaction>
<Transaction>2016/11/04 18:13:17.000.596,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:13:28.000.975,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDragData.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:13:28.000.975,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFDragData.pas</Transaction>
<Transaction>2016/11/04 18:14:46.000.315,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:14:55.000.027,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResolveCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:14:55.000.027,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResolveCallback.pas</Transaction>
<Transaction>2016/11/04 18:17:10.000.544,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:17:23.000.918,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPrintSettings.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:17:23.000.918,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPrintSettings.pas</Transaction>
<Transaction>2016/11/04 18:18:17.000.655,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:18:25.000.031,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslCertPrincipal.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:18:25.000.031,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslCertPrincipal.pas</Transaction>
<Transaction>2016/11/04 18:19:36.000.246,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:19:49.000.081,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslInfo.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:19:49.000.081,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslInfo.pas</Transaction>
<Transaction>2016/11/04 18:21:23.000.319,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:21:29.000.499,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRunContextMenuCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:21:29.000.499,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRunContextMenuCallback.pas</Transaction>
<Transaction>2016/11/04 18:22:54.000.779,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:23:07.000.660,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceBundle.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:23:07.000.660,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResourceBundle.pas</Transaction>
<Transaction>2016/11/04 18:24:23.000.928,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:24:31.000.808,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResponseFilter.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:24:31.000.808,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFResponseFilter.pas</Transaction>
<Transaction>2016/11/04 18:25:31.000.691,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:25:41.000.021,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFImage.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:25:41.000.021,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFImage.pas</Transaction>
<Transaction>2016/11/04 18:26:54.000.263,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:27:04.000.226,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMenuModelDelegate.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/04 18:27:04.000.226,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFMenuModelDelegate.pas</Transaction>
<Transaction>2016/11/04 18:28:19.000.494,C:\Program Files\Embarcadero\Studio\17.0\cef3\ceflib.pas=</Transaction>
<Transaction>2016/11/04 18:31:57.000.277,C:\Program Files\Embarcadero\Studio\17.0\cef3\cefreg.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uRegister.pas</Transaction>
<Transaction>2016/11/04 18:31:57.000.277,C:\Program Files\Embarcadero\Studio\17.0\cef3\uRegister.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefreg.pas</Transaction>
<Transaction>2016/11/05 09:18:32.000.021,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/05 09:18:43.000.557,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Types.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/05 09:41:11.000.609,C:\Program Files\Embarcadero\Studio\17.0\cef3\uRegister.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRegisterComponents.pas</Transaction>
<Transaction>2016/11/05 09:18:43.000.557,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Types.pas</Transaction>
<Transaction>2016/11/05 09:41:11.000.609,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFRegisterComponents.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uRegister.pas</Transaction>
<Transaction>2016/11/06 17:42:31.000.412,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/06 17:42:57.000.570,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieDeleterTask.pas</Transaction>
<Transaction>2016/11/06 17:42:57.000.570,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieDeleterTask.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/06 17:57:18.000.164,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieDeleterTask.pas=</Transaction>
<Transaction>2016/11/13 17:16:54.000.597,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/13 17:17:19.000.616,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas</Transaction>
<Transaction>2016/11/13 17:17:19.000.616,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/13 18:46:07.000.526,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/13 18:52:50.000.372,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumDevTools.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/13 18:52:50.000.372,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumDevTools.pas</Transaction>
<Transaction>2016/11/14 14:57:55.000.572,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas=</Transaction>
<Transaction>2016/11/25 09:35:30.000.156,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas</Transaction>
<Transaction>2016/11/25 09:39:41.000.590,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas=</Transaction>
<Transaction>2016/11/29 09:52:14.000.850,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas</Transaction>
<Transaction>2016/11/29 10:05:42.000.033,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/29 10:06:49.000.745,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumEvents.pas</Transaction>
<Transaction>2016/11/29 10:06:49.000.745,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumEvents.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/29 10:08:16.000.524,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/29 10:10:28.000.078,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOptions.pas</Transaction>
<Transaction>2016/11/29 10:10:28.000.078,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOptions.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/29 10:11:26.000.030,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/29 10:12:11.000.187,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumFontOptions.pas</Transaction>
<Transaction>2016/11/29 10:12:11.000.187,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumFontOptions.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/29 10:14:39.000.549,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/29 10:15:46.000.466,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPDFPrintOptions.pas</Transaction>
<Transaction>2016/11/29 11:35:06.000.964,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumBase.pas</Transaction>
<Transaction>2016/11/29 10:15:46.000.466,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFPDFPrintOptions.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/29 11:35:06.000.964,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumBase.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas</Transaction>
<Transaction>2016/11/29 11:35:58.000.919,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas=</Transaction>
<Transaction>2016/11/29 11:36:22.000.935,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumBase.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas</Transaction>
<Transaction>2016/11/29 11:41:17.000.365,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumDevTools.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWindowParent.pas</Transaction>
<Transaction>2016/11/29 11:36:22.000.935,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumBase.pas</Transaction>
<Transaction>2016/11/29 11:41:17.000.365,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWindowParent.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumDevTools.pas</Transaction>
<Transaction>2016/11/29 14:26:03.000.580,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/29 14:38:08.000.147,C:\Program Files\Embarcadero\Studio\17.0\cef3\TCEFChromiumWindow.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/11/29 14:41:18.000.620,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumWindow.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\TCEFChromiumWindow.pas</Transaction>
<Transaction>2016/11/29 14:38:08.000.147,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\TCEFChromiumWindow.pas</Transaction>
<Transaction>2016/11/29 14:41:18.000.620,C:\Program Files\Embarcadero\Studio\17.0\cef3\TCEFChromiumWindow.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumWindow.pas</Transaction>
<Transaction>2016/11/29 15:48:26.000.475,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium2.pas</Transaction>
<Transaction>2016/11/29 16:29:04.000.712,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium2.pas=</Transaction>
<Transaction>2016/12/14 09:31:37.000.825,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/14 09:43:37.000.496,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCefRegisterCDMCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/14 09:43:37.000.496,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCefRegisterCDMCallback.pas</Transaction>
<Transaction>2016/12/15 11:52:46.000.153,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/15 15:23:08.000.388,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/15 15:27:53.000.729,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFThread.pas</Transaction>
<Transaction>2016/12/15 15:27:53.000.729,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFThread.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/15 16:33:21.000.646,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/15 16:33:59.000.530,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Interceptor.pas</Transaction>
<Transaction>2016/12/15 16:33:59.000.530,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFv8Interceptor.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/15 18:08:50.000.736,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/15 18:10:25.000.832,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWaitableEvent.pas</Transaction>
<Transaction>2016/12/15 18:10:25.000.832,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFWaitableEvent.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/16 09:51:23.000.585,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/16 09:53:31.000.858,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFX509CertPrincipal.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/16 09:53:31.000.858,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFX509CertPrincipal.pas</Transaction>
<Transaction>2016/12/16 10:34:36.000.246,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/16 10:39:48.000.349,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFX509Certificate.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/16 10:39:48.000.349,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFX509Certificate.pas</Transaction>
<Transaction>2016/12/16 11:11:31.000.335,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslCertPrincipal.pas=</Transaction>
<Transaction>2016/12/16 12:46:25.000.699,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/16 12:51:53.000.173,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSSLStatus.pas</Transaction>
<Transaction>2016/12/16 12:51:53.000.173,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSSLStatus.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/16 13:03:29.000.911,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2016/12/16 13:15:23.000.921,C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSelectClientCertificateCallback.pas</Transaction>
<Transaction>2016/12/16 13:15:23.000.921,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSelectClientCertificateCallback.pas=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas</Transaction>
<Transaction>2017/01/05 09:46:44.000.222,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumWindow.pas=</Transaction>
<Transaction>2017/01/05 10:34:46.000.529,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumWindow.pas</Transaction>
<Transaction>2017/01/22 10:37:38.000.090,C:\Program Files\Embarcadero\Studio\17.0\cef3\cef3.dproj=C:\Program Files\Embarcadero\Studio\17.0\cef3\CEF4Delphi.dproj</Transaction>
<Transaction>2017/01/22 10:37:38.000.090,C:\Program Files\Embarcadero\Studio\17.0\cef3\CEF4Delphi.dproj=C:\Program Files\Embarcadero\Studio\17.0\cef3\cef3.dproj</Transaction>
<Transaction>2017/03/16 09:32:10.000.622,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBaseRefCounted.pas</Transaction>
<Transaction>2017/03/16 09:32:22.000.431,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBaseScopedWrapper.pas</Transaction>
<Transaction>2017/03/16 09:32:54.000.567,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBase.pas=</Transaction>
<Transaction>2017/03/26 17:18:35.000.135,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas</Transaction>
<Transaction>2017/03/26 17:19:20.000.644,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDLLFunctions.pas</Transaction>
<Transaction>2017/03/26 17:19:20.000.644,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDLLFunctions.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas</Transaction>
<Transaction>2017/03/26 17:28:33.000.757,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDLLFunctions.pas=</Transaction>
<Transaction>2017/05/21 15:27:39.000.810,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas</Transaction>
<Transaction>2017/05/21 15:34:16.000.487,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.dfm</Transaction>
<Transaction>2017/05/21 15:34:16.000.487,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas</Transaction>
<Transaction>2017/05/21 15:34:16.000.487,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.dfm=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.dfm</Transaction>
<Transaction>2017/05/21 15:34:16.000.487,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.pas</Transaction>
<Transaction>2017/05/21 15:36:08.000.019,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.pas=</Transaction>
<Transaction>2017/06/05 17:09:35.000.867,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas</Transaction>
<Transaction>2017/06/05 17:10:51.000.565,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFAccessibilityHandler.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas</Transaction>
<Transaction>2017/06/05 17:10:51.000.565,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFAccessibilityHandler.pas</Transaction>
<Transaction>2017/07/18 09:50:01.000.551,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDrop.pas=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas</Transaction>
</Transactions>
</BorlandProject>

View File

@ -1,27 +1,62 @@
[Closed Files]
File_0=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFLibFunctions.pas',0,1,46,123,95,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFApplication.pas',0,1,52,44,917,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas',0,1,952,39,987,0,0,,
File_3=TSourceModule,'V:\3071_2\include\capi\cef_file_util_capi.h',0,1,1,49,38,0,0,,
File_4=TSourceModule,'V:\3071\include\capi\cef_file_util_capi.h',0,1,1,1,1,0,0,,
File_5=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFClient.pas',0,1,599,83,622,0,0,,
File_6=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFConstants.pas',0,1,253,25,279,0,0,,
File_7=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDomDocument.pas',0,1,46,1,1,0,0,,
File_8=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas',0,1,751,18,767,0,0,,
File_9=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFTypes.pas',0,1,2276,92,2313,0,0,,
File_0=TSourceModule,'c:\program files\embarcadero\studio\17.0\SOURCE\VCL\Vcl.Controls.pas',0,1,13129,37,13152,0,0,,
File_1=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFConstants.pas',0,1,335,44,361,0,0,,
File_2=TSourceModule,'C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumEvents.pas',0,1,34,3,61,0,0,,
File_3=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\win\Winapi.ShlObj.pas',0,1,14252,1,14278,0,0,,
File_4=TSourceModule,'V:\3071\tests\cefclient\browser\osr_dragdrop_win.cc',0,1,553,35,552,0,0,,{1
File_5=TSourceModule,'C:\Program Files\Embarcadero\Studio\17.0\source\data\Data.DB.pas',0,1,2846,29,2870,0,0,,
File_6=TSourceModule,'O:\GWDrgDrp\GWDragDemo\GWDragDemoAppInterface.pas',0,1,112,50,152,0,0,,
File_7=TSourceModule,'O:\GWDrgDrp\GWDragDemo\GWDragSource.pas',0,1,540,29,568,0,0,,
File_8=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\win\Winapi.ActiveX.pas',0,1,131,3,155,0,0,,
File_9=TSourceModule,'c:\program files\embarcadero\studio\17.0\source\rtl\win\Winapi.Windows.pas',0,1,23379,1,23403,0,0,,
[Modules]
Module0=default.htm
Count=1
Module0=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas
Module1=default.htm
Module2=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas
Module3=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas
Module4=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas
Module5=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas
Count=6
EditWindowCount=1
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas]
ModuleType=TSourceModule
FormState=0
FormOnTop=0
[default.htm]
ModuleType=TURLModule
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas]
ModuleType=TSourceModule
FormState=0
FormOnTop=0
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas]
ModuleType=TSourceModule
FormState=0
FormOnTop=0
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas]
ModuleType=TSourceModule
FormState=0
FormOnTop=0
[C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas]
ModuleType=TSourceModule
FormState=0
FormOnTop=0
[EditWindow0]
ViewCount=1
CurrentView=0
ViewCount=6
CurrentEditView=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas
View0=0
View1=1
View2=2
View3=3
View4=4
View5=5
PercentageSizes=1
Create=1
Visible=1
@ -39,20 +74,76 @@ DockedToMainForm=1
BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=0
RightPanelSize=0
BottomPanelSize=0
RightPanelSize=2000
RightPanelClients=DockSite2,DockSite4
RightPanelData=00000800010100000000661600000000000001D0070000000000000100000000610A000009000000446F636B53697465320100000000191F000009000000446F636B5369746534FFFFFFFF
BottomPanelSize=1095
BottomPanelClients=DockSite1,MessageView
BottomPanelData=0000080001020200000009000000446F636B53697465310F0000004D65737361676556696577466F726D1234000000000000022506000000000000FFFFFFFF
BottomPanelData=0000080001020100000009000000446F636B53697465313B3600000000000002470400000000000001000000003B3600000F0000004D65737361676556696577466F726DFFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0,GraphDrawingModel
BottomMiddelPanelData=0000080001020200000009000000446F636B536974653010000000477261706844726177696E67566965779D1D00000000000002F306000000000000FFFFFFFF
TabDockLeftClients=PropertyInspector=0,DockSite3=1
TabDockRightClients=DockSite4=0,DockSite2=1
TabDockLeftClients=DockSite3=0,PropertyInspector=1
[View0]
CustomEditViewType=TWelcomePageView
WelcomePageURL=bds:/default.htm
[View1]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas
CursorX=1
CursorY=618
TopLine=581
LeftCol=1
Elisions=
Bookmarks={1,502,1}{2,425,1}{3,425,1}{4,317,1}
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uOLEDragAndDrop.pas
[View2]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas
CursorX=31
CursorY=2804
TopLine=2795
LeftCol=1
Elisions=
Bookmarks={1,932,1}{2,2248,29}{4,692,1}
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromium.pas
[View3]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas
CursorX=74
CursorY=694
TopLine=667
LeftCol=1
Elisions=
Bookmarks={1,727,1}{2,55,13}
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDragAndDropMgr.pas
[View4]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas
CursorX=53
CursorY=1401
TopLine=1371
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFInterfaces.pas
[View5]
CustomEditViewType=TEditView
Module=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas
CursorX=1
CursorY=1135
TopLine=1121
LeftCol=1
Elisions=
Bookmarks=
EditViewName=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFMiscFunctions.pas
[Watches]
Count=0
@ -67,11 +158,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=13602
Dockable=1
@ -115,11 +206,11 @@ State=0
Left=0
Top=0
Width=2000
Height=8845
Height=2141
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=8845
ClientHeight=2141
TBDockHeight=5897
LRDockWidth=2352
Dockable=1
@ -128,18 +219,18 @@ StayOnTop=0
[MessageView]
PercentageSizes=1
Create=1
Visible=0
Visible=1
Docked=1
State=0
Left=0
Top=0
Width=2773
Height=1424
Top=23
Width=10000
Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=2773
ClientHeight=1424
TBDockHeight=1424
ClientWidth=10000
ClientHeight=874
TBDockHeight=874
LRDockWidth=2773
Dockable=1
StayOnTop=0
@ -153,11 +244,11 @@ State=0
Left=0
Top=0
Width=2000
Height=4339
Height=5224
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4339
ClientHeight=5224
TBDockHeight=7152
LRDockWidth=2000
Dockable=1
@ -207,8 +298,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-148
Top=-137
Left=-8
Top=-30
Width=1844
Height=3139
MaxLeft=-1
@ -264,19 +355,19 @@ Create=1
Visible=0
Docked=1
State=0
Left=0
Top=362
Left=78
Top=386
Width=1898
Height=5370
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=5370
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
StayOnTop=0
SplitPos=111
SplitPos=136
[frmDesignPreview]
PercentageSizes=1
@ -287,11 +378,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=5964
LRDockWidth=2508
Dockable=1
@ -303,8 +394,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-898
Top=-137
Left=-946
Top=1
Width=2844
Height=6200
MaxLeft=-1
@ -322,8 +413,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=-1026
Top=-137
Left=-1152
Top=243
Width=273
Height=359
MaxLeft=-1
@ -347,11 +438,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=415
LRDockWidth=4953
Dockable=1
@ -366,11 +457,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=213
LRDockWidth=7406
Dockable=1
@ -389,11 +480,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1536
LRDockWidth=3484
Dockable=1
@ -408,11 +499,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=2063
LRDockWidth=3484
Dockable=1
@ -427,11 +518,11 @@ State=0
Left=0
Top=0
Width=2336
Height=1177
Height=942
MaxLeft=-1
MaxTop=-1
ClientWidth=2336
ClientHeight=1177
ClientHeight=942
TBDockHeight=2321
LRDockWidth=2820
Dockable=1
@ -492,11 +583,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=4888
LRDockWidth=7148
Dockable=1
@ -508,8 +599,8 @@ Create=1
Visible=0
Docked=1
State=0
Left=0
Top=0
Left=249
Top=709
Width=2859
Height=3206
MaxLeft=-1
@ -530,11 +621,11 @@ State=0
Left=0
Top=0
Width=3820
Height=1121
Height=572
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1121
ClientHeight=572
TBDockHeight=1547
LRDockWidth=8742
Dockable=1
@ -555,12 +646,12 @@ Docked=1
State=0
Left=0
Top=0
Width=1898
Height=9170
Width=1773
Height=6738
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=9170
ClientWidth=1773
ClientHeight=6738
TBDockHeight=3677
LRDockWidth=1898
Dockable=1
@ -575,11 +666,11 @@ State=0
Left=0
Top=0
Width=2000
Height=6861
Height=6816
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=6861
ClientHeight=6816
TBDockHeight=4888
LRDockWidth=5305
Dockable=1
@ -640,14 +731,14 @@ Visible=0
Docked=1
State=0
Left=0
Top=0
Top=23
Width=3820
Height=1424
Height=874
MaxLeft=-1
MaxTop=-1
ClientWidth=3820
ClientHeight=1424
TBDockHeight=1424
ClientHeight=874
TBDockHeight=874
LRDockWidth=3820
Dockable=1
StayOnTop=0
@ -656,22 +747,22 @@ ActiveTabID=DebugLogView
TabDockClients=DebugLogView,BreakpointWindow,ThreadStatusWindow,CallStackWindow,WatchWindow,LocalVarsWindow
[DockSite2]
HostDockSite=RightTabDock
HostDockSite=DockRightPanel
DockSiteType=1
PercentageSizes=1
Create=1
Visible=0
Visible=1
Docked=1
State=0
Left=4
Top=24
Left=0
Top=23
Width=2000
Height=9148
Height=2444
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=9148
TBDockHeight=7164
ClientHeight=2444
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0
@ -688,13 +779,13 @@ Visible=0
Docked=1
State=0
Left=0
Top=23
Top=0
Width=1898
Height=9170
Height=7164
MaxLeft=-1
MaxTop=-1
ClientWidth=1898
ClientHeight=9170
ClientWidth=1773
ClientHeight=6738
TBDockHeight=7164
LRDockWidth=1898
Dockable=1
@ -704,22 +795,22 @@ ActiveTabID=StructureView
TabDockClients=StructureView,ClassBrowserTool
[DockSite4]
HostDockSite=RightTabDock
HostDockSite=DockRightPanel
DockSiteType=1
PercentageSizes=1
Create=1
Visible=0
Visible=1
Docked=1
State=0
Left=0
Top=454
Top=268
Width=2000
Height=4339
Height=5224
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
ClientHeight=4339
TBDockHeight=7164
ClientHeight=5224
TBDockHeight=7119
LRDockWidth=2000
Dockable=1
StayOnTop=0

Binary file not shown.

View File

@ -1,9 +1,9 @@
[Stats]
EditorSecs=112337
EditorSecs=138579
DesignerSecs=97
InspectorSecs=324
CompileSecs=3145294
OtherSecs=12000
CompileSecs=4032654
OtherSecs=14027
StartTime=22/01/2017 10:49:52
RealKeys=0
EffectiveKeys=0

View File

@ -48,57 +48,62 @@ interface
uses
{$IFDEF DELPHI16_UP}
WinApi.Windows, WinApi.Messages, System.Classes, Vcl.Controls, Vcl.Graphics, Vcl.Forms,
WinApi.Windows, WinApi.Messages, System.Classes, Vcl.Controls, Vcl.Graphics, Vcl.Forms, WinApi.ActiveX,
{$ELSE}
Windows, Messages, Classes, Controls, Graphics, Forms,
Windows, Messages, Classes, Controls, Graphics, Forms, ActiveX,
{$ENDIF}
uCEFTypes, uCEFInterfaces, uCEFLibFunctions, uCEFMiscFunctions, uCEFClient,
uCEFPDFPrintCallback, uCEFStringVisitor, uCEFConstants, uCEFTask,
uCEFDeleteCookiesCallback, uCEFDomVisitor, uCEFChromiumEvents,
uCEFChromiumOptions, uCEFChromiumFontOptions, uCEFPDFPrintOptions;
uCEFChromiumOptions, uCEFChromiumFontOptions, uCEFPDFPrintOptions,
uCEFDragAndDropMgr;
type
TChromium = class(TComponent, IChromiumEvents)
protected
FCompHandle : HWND;
FVisitor : ICefStringVisitor;
FPDFPrintcb : ICefPdfPrintCallback;
FCookiDeletercb : ICefDeleteCookiesCallback;
FHandler : ICefClient;
FBrowser : ICefBrowser;
FBrowserId : Integer;
FDefaultUrl : ustring;
FOptions : TChromiumOptions;
FFontOptions : TChromiumFontOptions;
FPDFPrintOptions : TPDFPrintOptions;
FDefaultEncoding : ustring;
FProxyType : integer;
FProxyServer : string;
FProxyPort : integer;
FProxyUsername : string;
FProxyPassword : string;
FProxyScriptURL : string;
FProxyByPassList : string;
FUpdatePreferences : boolean;
FCustomHeaderName : string;
FCustomHeaderValue : string;
FAddCustomHeader : boolean;
FDoNotTrack : boolean;
FSendReferrer : boolean;
FHyperlinkAuditing : boolean;
FCookiePrefs : integer;
FImagesPrefs : integer;
FCMStoragePath : ustring;
FZoomStep : byte;
FWindowName : string;
FPrefsFileName : string;
FIsOSR : boolean;
FInitialized : boolean;
FClosing : boolean;
FWindowInfo : TCefWindowInfo;
FBrowserSettings : TCefBrowserSettings;
FDevWindowInfo : TCefWindowInfo;
FDevBrowserSettings : TCefBrowserSettings;
FCompHandle : HWND;
FVisitor : ICefStringVisitor;
FPDFPrintcb : ICefPdfPrintCallback;
FCookiDeletercb : ICefDeleteCookiesCallback;
FHandler : ICefClient;
FBrowser : ICefBrowser;
FBrowserId : Integer;
FDefaultUrl : ustring;
FOptions : TChromiumOptions;
FFontOptions : TChromiumFontOptions;
FPDFPrintOptions : TPDFPrintOptions;
FDefaultEncoding : ustring;
FProxyType : integer;
FProxyServer : string;
FProxyPort : integer;
FProxyUsername : string;
FProxyPassword : string;
FProxyScriptURL : string;
FProxyByPassList : string;
FUpdatePreferences : boolean;
FCustomHeaderName : string;
FCustomHeaderValue : string;
FAddCustomHeader : boolean;
FDoNotTrack : boolean;
FSendReferrer : boolean;
FHyperlinkAuditing : boolean;
FCookiePrefs : integer;
FImagesPrefs : integer;
FCMStoragePath : ustring;
FZoomStep : byte;
FWindowName : string;
FPrefsFileName : string;
FIsOSR : boolean;
FInitialized : boolean;
FClosing : boolean;
FWindowInfo : TCefWindowInfo;
FBrowserSettings : TCefBrowserSettings;
FDevWindowInfo : TCefWindowInfo;
FDevBrowserSettings : TCefBrowserSettings;
FDragOperations : TCefDragOperations;
FDragDropManager : TCEFDragAndDropMgr;
FDropTargetCtrl : TWinControl;
FDragAndDropInitialized : boolean;
// ICefClient
FOnProcessMessageReceived : TOnProcessMessageReceived;
@ -270,9 +275,15 @@ type
procedure PrefsAvailableMsg(var aMessage : TMessage);
function GetParentForm : TCustomForm;
procedure ApplyZoomStep;
procedure DelayedDragging;
function SendCompMessage(aMsg : cardinal; wParam : cardinal = 0; lParam : integer = 0) : boolean;
procedure ToMouseEvent(grfKeyState : Longint; pt : TPoint; var aMouseEvent : TCefMouseEvent);
procedure WndProc(var aMessage: TMessage);
procedure DragDropManager_OnDragEnter(Sender: TObject; const aDragData : ICefDragData; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
procedure DragDropManager_OnDragOver(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
procedure DragDropManager_OnDragLeave(Sender: TObject);
procedure DragDropManager_OnDrop(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
// ICefClient
function doOnProcessMessageReceived(const browser: ICefBrowser; sourceProcess: TCefProcessId; const aMessage: ICefProcessMessage): Boolean; virtual;
@ -378,6 +389,8 @@ type
procedure CloseBrowser(aForceClose : boolean);
function CreateBrowser(const aBrowserParent : TWinControl = nil; const aWindowName : string = '') : boolean; overload;
function CreateBrowser(aParentHandle : HWND; aParentRect : TRect; const aWindowName : string = '') : boolean; overload;
procedure InitializeDragAndDrop(const aDropTargetCtrl : TWinControl);
procedure ShutdownDragAndDrop;
// Internal procedures.
// Only tasks, visitors or callbacks should use them in the right thread/process.
@ -450,6 +463,13 @@ type
procedure SetFocus(focus: Boolean);
procedure SetAccessibilityState(accessibilityState: TCefState);
procedure DragTargetDragEnter(const dragData: ICefDragData; const event: PCefMouseEvent; allowedOps: TCefDragOperations);
procedure DragTargetDragOver(const event: PCefMouseEvent; allowedOps: TCefDragOperations);
procedure DragTargetDragLeave;
procedure DragTargetDrop(event: PCefMouseEvent);
procedure DragSourceEndedAt(x, y: Integer; op: TCefDragOperation);
procedure DragSourceSystemDragEnded;
property DefaultUrl : ustring read FDefaultUrl write FDefaultUrl;
property Options : TChromiumOptions read FOptions write FOptions;
@ -488,6 +508,7 @@ type
property SendReferrer : boolean read FSendReferrer write SetSendReferrer;
property HyperlinkAuditing : boolean read FHyperlinkAuditing write SetHyperlinkAuditing;
property HasValidMainFrame : boolean read GetHasValidMainFrame;
property DragOperations : TCefDragOperations read FDragOperations write FDragOperations;
property ProxyType : integer read FProxyType write SetProxyType;
property ProxyServer : string read FProxyServer write SetProxyServer;
@ -609,45 +630,49 @@ uses
SysUtils, Math,
{$ENDIF}
uCEFBrowser, uCEFValue, uCEFDictionaryValue, uCEFStringMultimap, uCEFCookieManager, uCEFFrame,
uCEFApplication, uCEFProcessMessage;
uCEFApplication, uCEFProcessMessage, uOLEDragAndDrop;
constructor TChromium.Create(AOwner: TComponent);
begin
FBrowser := nil;
FBrowserId := 0;
FCompHandle := 0;
FClosing := False;
FInitialized := False;
FIsOSR := False;
FDefaultUrl := 'about:blank';
FHandler := nil;
FOptions := nil;
FFontOptions := nil;
FDefaultEncoding := '';
FVisitor := nil;
FPDFPrintcb := nil;
FCookiDeletercb := nil;
FPDFPrintOptions := nil;
FUpdatePreferences := False;
FCustomHeaderName := '';
FCustomHeaderValue := '';
FPrefsFileName := '';
FAddCustomHeader := False;
FDoNotTrack := True;
FSendReferrer := True;
FHyperlinkAuditing := False;
FCookiePrefs := CEF_CONTENT_SETTING_ALLOW;
FImagesPrefs := CEF_CONTENT_SETTING_ALLOW;
FZoomStep := ZOOM_STEP_DEF;
FWindowName := '';
FBrowser := nil;
FBrowserId := 0;
FCompHandle := 0;
FClosing := False;
FInitialized := False;
FIsOSR := False;
FDefaultUrl := 'about:blank';
FHandler := nil;
FOptions := nil;
FFontOptions := nil;
FDefaultEncoding := '';
FVisitor := nil;
FPDFPrintcb := nil;
FCookiDeletercb := nil;
FPDFPrintOptions := nil;
FUpdatePreferences := False;
FCustomHeaderName := '';
FCustomHeaderValue := '';
FPrefsFileName := '';
FAddCustomHeader := False;
FDoNotTrack := True;
FSendReferrer := True;
FHyperlinkAuditing := False;
FCookiePrefs := CEF_CONTENT_SETTING_ALLOW;
FImagesPrefs := CEF_CONTENT_SETTING_ALLOW;
FZoomStep := ZOOM_STEP_DEF;
FWindowName := '';
FDragOperations := DRAG_OPERATION_NONE;
FDragDropManager := nil;
FDropTargetCtrl := nil;
FDragAndDropInitialized := False;
FProxyType := CEF_PROXYTYPE_DIRECT;
FProxyServer := '';
FProxyPort := 80;
FProxyUsername := '';
FProxyPassword := '';
FProxyScriptURL := '';
FProxyByPassList := '';
FProxyType := CEF_PROXYTYPE_DIRECT;
FProxyServer := '';
FProxyPort := 80;
FProxyUsername := '';
FProxyPassword := '';
FProxyScriptURL := '';
FProxyByPassList := '';
FillChar(FWindowInfo, SizeOf(TCefWindowInfo), 0);
FillChar(FDevWindowInfo, SizeOf(TCefWindowInfo), 0);
@ -664,6 +689,8 @@ destructor TChromium.Destroy;
begin
try
try
if (FDragDropManager <> nil) then FreeAndNil(FDragDropManager);
if (FCompHandle <> 0) then
begin
DeallocateHWnd(FCompHandle);
@ -898,6 +925,91 @@ begin
end;
end;
procedure TChromium.InitializeDragAndDrop(const aDropTargetCtrl : TWinControl);
var
TempDropTarget : IDropTarget;
begin
if FIsOSR and (FDragDropManager = nil) and (aDropTargetCtrl <> nil) then
begin
FDropTargetCtrl := aDropTargetCtrl;
FDragDropManager := TCEFDragAndDropMgr.Create;
FDragDropManager.OnDragEnter := DragDropManager_OnDragEnter;
FDragDropManager.OnDragOver := DragDropManager_OnDragOver;
FDragDropManager.OnDragLeave := DragDropManager_OnDragLeave;
FDragDropManager.OnDrop := DragDropManager_OnDrop;
TempDropTarget := TOLEDropTarget.Create(FDragDropManager);
RegisterDragDrop(FDropTargetCtrl.Handle, TempDropTarget);
FDragAndDropInitialized := True;
end;
end;
procedure TChromium.ShutdownDragAndDrop;
begin
if FDragAndDropInitialized and (FDropTargetCtrl <> nil) then
RevokeDragDrop(FDropTargetCtrl.Handle);
end;
procedure TChromium.ToMouseEvent(grfKeyState : Longint; pt : TPoint; var aMouseEvent : TCefMouseEvent);
begin
if (FDropTargetCtrl <> nil) then
begin
pt := FDropTargetCtrl.ScreenToClient(pt);
aMouseEvent.x := pt.x;
aMouseEvent.y := pt.y;
aMouseEvent.modifiers := GetCefMouseModifiers(grfKeyState);
end;
end;
procedure TChromium.DragDropManager_OnDragEnter(Sender: TObject; const aDragData : ICefDragData; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
var
TempMouseEvent : TCefMouseEvent;
TempAllowedOps : TCefDragOperations;
begin
ToMouseEvent(grfKeyState, pt, TempMouseEvent);
DropEffectToDragOperation(dwEffect, TempAllowedOps);
DragTargetDragEnter(aDragData, @TempMouseEvent, TempAllowedOps);
DragTargetDragOver(@TempMouseEvent, TempAllowedOps);
DragOperationToDropEffect(FDragOperations, dwEffect);
end;
procedure TChromium.DragDropManager_OnDragOver(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
var
TempMouseEvent : TCefMouseEvent;
TempAllowedOps : TCefDragOperations;
begin
ToMouseEvent(grfKeyState, pt, TempMouseEvent);
DropEffectToDragOperation(dwEffect, TempAllowedOps);
DragTargetDragOver(@TempMouseEvent, TempAllowedOps);
DragOperationToDropEffect(FDragOperations, dwEffect);
end;
procedure TChromium.DragDropManager_OnDragLeave(Sender: TObject);
begin
DragTargetDragLeave;
end;
procedure TChromium.DragDropManager_OnDrop(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint);
var
TempMouseEvent : TCefMouseEvent;
TempAllowedOps : TCefDragOperations;
begin
ToMouseEvent(grfKeyState, pt, TempMouseEvent);
DropEffectToDragOperation(dwEffect, TempAllowedOps);
DragTargetDragOver(@TempMouseEvent, TempAllowedOps);
DragTargetDrop(@TempMouseEvent);
DragOperationToDropEffect(FDragOperations, dwEffect);
end;
procedure TChromium.CloseBrowser(aForceClose : boolean);
begin
if Initialized then FBrowser.Host.CloseBrowser(aForceClose);
@ -1615,7 +1727,7 @@ begin
begin
TempEvent.x := 0;
TempEvent.y := 0;
TempEvent.modifiers := [];
TempEvent.modifiers := EVENTFLAG_NONE;
FBrowser.Host.SendMouseWheelEvent(@TempEvent, aDeltaX, aDeltaY);
end;
end;
@ -2133,6 +2245,7 @@ procedure TChromium.WndProc(var aMessage: TMessage);
begin
case aMessage.Msg of
CEF_PREFERENCES_SAVED : PrefsAvailableMsg(aMessage);
CEF_STARTDRAGGING : DelayedDragging;
else aMessage.Result := DefWindowProc(FCompHandle, aMessage.Msg, aMessage.WParam, aMessage.LParam);
end;
@ -2687,9 +2800,35 @@ function TChromium.doOnStartDragging(const browser : ICefBrowser;
begin
Result := False;
if FDragAndDropInitialized and
FDragDropManager.CloneDragData(dragData, allowedOps) then
begin
Result := True;
SendCompMessage(CEF_STARTDRAGGING);
end;
if Assigned(FOnStartDragging) then FOnStartDragging(Self, browser, dragData, allowedOps, x, y, Result);
end;
procedure TChromium.DelayedDragging;
var
TempOperation : TCefDragOperation;
TempPoint : TPoint;
begin
if FDragAndDropInitialized then
begin
FDragOperations := DRAG_OPERATION_NONE;
TempOperation := FDragDropManager.StartDragging;
FDragOperations := DRAG_OPERATION_NONE;
GetCursorPos(TempPoint);
TempPoint := FDropTargetCtrl.ScreenToClient(TempPoint);
DragSourceEndedAt(TempPoint.x, TempPoint.y, TempOperation);
DragSourceSystemDragEnded;
end;
end;
procedure TChromium.doOnStatusMessage(const browser: ICefBrowser; const value: ustring);
begin
if Assigned(FOnStatusMessage) then FOnStatusMessage(Self, browser, value);
@ -2714,6 +2853,8 @@ end;
procedure TChromium.doOnUpdateDragCursor(const browser: ICefBrowser; operation: TCefDragOperation);
begin
if FDragAndDropInitialized then FDragOperations := operation;
if Assigned(FOnUpdateDragCursor) then FOnUpdateDragCursor(Self, browser, operation);
end;
@ -2893,4 +3034,34 @@ begin
Result := Initialized and FBrowser.SendProcessMessage(targetProcess, ProcMessage);
end;
procedure TChromium.DragTargetDragEnter(const dragData: ICefDragData; const event: PCefMouseEvent; allowedOps: TCefDragOperations);
begin
if Initialized then FBrowser.Host.DragTargetDragEnter(dragData, event, allowedOps);
end;
procedure TChromium.DragTargetDragOver(const event: PCefMouseEvent; allowedOps: TCefDragOperations);
begin
if Initialized then FBrowser.Host.DragTargetDragOver(event, allowedOps);
end;
procedure TChromium.DragTargetDragLeave;
begin
if Initialized then FBrowser.Host.DragTargetDragLeave;
end;
procedure TChromium.DragTargetDrop(event: PCefMouseEvent);
begin
if Initialized then FBrowser.Host.DragTargetDrop(event);
end;
procedure TChromium.DragSourceEndedAt(x, y: Integer; op: TCefDragOperation);
begin
if Initialized then FBrowser.Host.DragSourceEndedAt(x, y, op);
end;
procedure TChromium.DragSourceSystemDragEnded;
begin
if Initialized then FBrowser.Host.DragSourceSystemDragEnded;
end;
end.

View File

@ -134,9 +134,17 @@ const
CERT_STATUS_FIRST_ERROR = CERT_STATUS_COMMON_NAME_INVALID;
CERT_STATUS_LAST_ERROR = CERT_STATUS_VALIDITY_TOO_LONG;
// /include/internal/cef_types.h (cef_v8_accesscontrol_t)
V8_ACCESS_CONTROL_DEFAULT = 0;
V8_ACCESS_CONTROL_ALL_CAN_READ = 1 shl 0;
V8_ACCESS_CONTROL_ALL_CAN_WRITE = 1 shl 1;
V8_ACCESS_CONTROL_PROHIBITS_OVERWRITING = 1 shl 2;
// /include/internal/cef_types.h (cef_v8_propertyattribute_t)
V8_PROPERTY_ATTRIBUTE_NONE = [];
V8_PROPERTY_ATTRIBUTE_NONE = 0;
V8_PROPERTY_ATTRIBUTE_READONLY = 1 shl 0;
V8_PROPERTY_ATTRIBUTE_DONTENUM = 1 shl 1;
V8_PROPERTY_ATTRIBUTE_DONTDELETE = 1 shl 2;
// /include/internal/cef_types.h (cef_transition_type_t)
TT_LINK = 0;
@ -145,7 +153,7 @@ const
TT_MANUAL_SUBFRAME = 4;
TT_FORM_SUBMIT = 7;
TT_RELOAD = 8;
TT_SOURCE_MASK = $FF;
TT_SOURCE_MASK = $000000FF;
TT_BLOCKED_FLAG = $00800000;
TT_FORWARD_BACK_FLAG = $01000000;
TT_CHAIN_START_FLAG = $10000000;
@ -155,27 +163,60 @@ const
TT_IS_REDIRECT_MASK = $C0000000;
TT_QUALIFIER_MASK = $FFFFFF00;
// /include/internal/cef_types.h (cef_urlrequest_flags_t)
UR_FLAG_NONE = 0;
UR_FLAG_SKIP_CACHE = 1 shl 0;
UR_FLAG_ALLOW_CACHED_CREDENTIALS = 1 shl 1;
UR_FLAG_REPORT_UPLOAD_PROGRESS = 1 shl 3;
UR_FLAG_NO_DOWNLOAD_DATA = 1 shl 6;
UR_FLAG_NO_RETRY_ON_5XX = 1 shl 7;
// /include/internal/cef_types.h (cef_dom_event_category_t)
DOM_EVENT_CATEGORY_UNKNOWN = $0;
DOM_EVENT_CATEGORY_UI = $1;
DOM_EVENT_CATEGORY_MOUSE = $2;
DOM_EVENT_CATEGORY_MUTATION = $4;
DOM_EVENT_CATEGORY_KEYBOARD = $8;
DOM_EVENT_CATEGORY_TEXT = $10;
DOM_EVENT_CATEGORY_COMPOSITION = $20;
DOM_EVENT_CATEGORY_DRAG = $40;
DOM_EVENT_CATEGORY_CLIPBOARD = $80;
DOM_EVENT_CATEGORY_MESSAGE = $100;
DOM_EVENT_CATEGORY_WHEEL = $200;
DOM_EVENT_CATEGORY_BEFORE_TEXT_INSERTED = $400;
DOM_EVENT_CATEGORY_OVERFLOW = $800;
DOM_EVENT_CATEGORY_PAGE_TRANSITION = $1000;
DOM_EVENT_CATEGORY_POPSTATE = $2000;
DOM_EVENT_CATEGORY_PROGRESS = $4000;
DOM_EVENT_CATEGORY_XMLHTTPREQUEST_PROGRESS = $8000;
DOM_EVENT_CATEGORY_UNKNOWN = 0;
DOM_EVENT_CATEGORY_UI = 1 shl 0;
DOM_EVENT_CATEGORY_MOUSE = 1 shl 1;
DOM_EVENT_CATEGORY_MUTATION = 1 shl 2;
DOM_EVENT_CATEGORY_KEYBOARD = 1 shl 3;
DOM_EVENT_CATEGORY_TEXT = 1 shl 4;
DOM_EVENT_CATEGORY_COMPOSITION = 1 shl 5;
DOM_EVENT_CATEGORY_DRAG = 1 shl 6;
DOM_EVENT_CATEGORY_CLIPBOARD = 1 shl 7;
DOM_EVENT_CATEGORY_MESSAGE = 1 shl 8;
DOM_EVENT_CATEGORY_WHEEL = 1 shl 9;
DOM_EVENT_CATEGORY_BEFORE_TEXT_INSERTED = 1 shl 10;
DOM_EVENT_CATEGORY_OVERFLOW = 1 shl 11;
DOM_EVENT_CATEGORY_PAGE_TRANSITION = 1 shl 12;
DOM_EVENT_CATEGORY_POPSTATE = 1 shl 13;
DOM_EVENT_CATEGORY_PROGRESS = 1 shl 14;
DOM_EVENT_CATEGORY_XMLHTTPREQUEST_PROGRESS = 1 shl 15;
// /include/internal/cef_types.h (cef_event_flags_t)
EVENTFLAG_NONE = 0;
EVENTFLAG_CAPS_LOCK_ON = 1 shl 0;
EVENTFLAG_SHIFT_DOWN = 1 shl 1;
EVENTFLAG_CONTROL_DOWN = 1 shl 2;
EVENTFLAG_ALT_DOWN = 1 shl 3;
EVENTFLAG_LEFT_MOUSE_BUTTON = 1 shl 4;
EVENTFLAG_MIDDLE_MOUSE_BUTTON = 1 shl 5;
EVENTFLAG_RIGHT_MOUSE_BUTTON = 1 shl 6;
EVENTFLAG_COMMAND_DOWN = 1 shl 7;
EVENTFLAG_NUM_LOCK_ON = 1 shl 8;
EVENTFLAG_IS_KEY_PAD = 1 shl 9;
EVENTFLAG_IS_LEFT = 1 shl 10;
EVENTFLAG_IS_RIGHT = 1 shl 11;
// /include/internal/cef_types.h (cef_drag_operations_mask_t)
DRAG_OPERATION_NONE = 0;
DRAG_OPERATION_COPY = 1 shl 0;
DRAG_OPERATION_LINK = 1 shl 1;
DRAG_OPERATION_GENERIC = 1 shl 2;
DRAG_OPERATION_PRIVATE = 1 shl 3;
DRAG_OPERATION_MOVE = 1 shl 4;
DRAG_OPERATION_DELETE = 1 shl 5;
DRAG_OPERATION_EVERY = $FFFFFFFF;
// /include/internal/cef_types.h (cef_file_dialog_mode_t)
FILE_DIALOG_TYPE_MASK = $FF;
FILE_DIALOG_TYPE_MASK = $000000FF;
FILE_DIALOG_OVERWRITEPROMPT_FLAG = $01000000;
FILE_DIALOG_HIDEREADONLY_FLAG = $02000000;
@ -217,6 +258,39 @@ const
MENU_ID_USER_FIRST = 26500;
MENU_ID_USER_LAST = 28500;
// /include/internal/cef_types.h (cef_context_menu_type_flags_t)
CM_TYPEFLAG_NONE = 0;
CM_TYPEFLAG_PAGE = 1 shl 0;
CM_TYPEFLAG_FRAME = 1 shl 1;
CM_TYPEFLAG_LINK = 1 shl 2;
CM_TYPEFLAG_MEDIA = 1 shl 3;
CM_TYPEFLAG_SELECTION = 1 shl 4;
CM_TYPEFLAG_EDITABLE = 1 shl 5;
// /include/internal/cef_types.h (cef_context_menu_media_state_flags_t)
CM_MEDIAFLAG_NONE = 0;
CM_MEDIAFLAG_ERROR = 1 shl 0;
CM_MEDIAFLAG_PAUSED = 1 shl 1;
CM_MEDIAFLAG_MUTED = 1 shl 2;
CM_MEDIAFLAG_LOOP = 1 shl 3;
CM_MEDIAFLAG_CAN_SAVE = 1 shl 4;
CM_MEDIAFLAG_HAS_AUDIO = 1 shl 5;
CM_MEDIAFLAG_HAS_VIDEO = 1 shl 6;
CM_MEDIAFLAG_CONTROL_ROOT_ELEMENT = 1 shl 7;
CM_MEDIAFLAG_CAN_PRINT = 1 shl 8;
CM_MEDIAFLAG_CAN_ROTATE = 1 shl 9;
// /include/internal/cef_types.h (cef_context_menu_edit_state_flags_t)
CM_EDITFLAG_NONE = 0;
CM_EDITFLAG_CAN_UNDO = 1 shl 0;
CM_EDITFLAG_CAN_REDO = 1 shl 1;
CM_EDITFLAG_CAN_CUT = 1 shl 2;
CM_EDITFLAG_CAN_COPY = 1 shl 3;
CM_EDITFLAG_CAN_PASTE = 1 shl 4;
CM_EDITFLAG_CAN_DELETE = 1 shl 5;
CM_EDITFLAG_CAN_SELECT_ALL = 1 shl 6;
CM_EDITFLAG_CAN_TRANSLATE = 1 shl 7;
// /include/internal/cef_types.h (cef_ssl_version_t)
SSL_CONNECTION_VERSION_UNKNOWN = 0;
SSL_CONNECTION_VERSION_SSL2 = 1;
@ -226,6 +300,18 @@ const
SSL_CONNECTION_VERSION_TLS1_2 = 5;
SSL_CONNECTION_VERSION_QUIC = 7;
// /include/internal/cef_types.h (cef_ssl_content_status_t)
SSL_CONTENT_NORMAL_CONTENT = 0;
SSL_CONTENT_DISPLAYED_INSECURE_CONTENT = 1 shl 0;
SSL_CONTENT_RAN_INSECURE_CONTENT = 1 shl 1;
// /include/internal/cef_types.h (cef_json_writer_options_t)
JSON_WRITER_DEFAULT = 0;
JSON_WRITER_OMIT_BINARY_VALUES = 1 shl 0;
JSON_WRITER_OMIT_DOUBLE_TYPE_PRESERVATION = 1 shl 1;
JSON_WRITER_PRETTY_PRINT = 1 shl 2;
//******************************************************
//****************** OTHER CONSTANTS *******************
//******************************************************
@ -272,6 +358,7 @@ const
CEF_PREFERENCES_SAVED = WM_APP + $A00;
CEF_DOONCLOSE = WM_APP + $A01;
CEF_STARTDRAGGING = WM_APP + $A02;
CEF_USER_TIMER_MINIMUM = $0000000A;
CEF_USER_TIMER_MAXIMUM = $7FFFFFFF;

View File

@ -112,7 +112,7 @@ end;
function TCefContextMenuParamsRef.GetEditStateFlags: TCefContextMenuEditStateFlags;
begin
Byte(Result) := PCefContextMenuParams(FData).get_edit_state_flags(PCefContextMenuParams(FData));
Result := PCefContextMenuParams(FData).get_edit_state_flags(PCefContextMenuParams(FData));
end;
function TCefContextMenuParamsRef.GetFrameCharset: ustring;
@ -132,7 +132,7 @@ end;
function TCefContextMenuParamsRef.GetMediaStateFlags: TCefContextMenuMediaStateFlags;
begin
Word(Result) := PCefContextMenuParams(FData).get_media_state_flags(PCefContextMenuParams(FData));
Result := PCefContextMenuParams(FData).get_media_state_flags(PCefContextMenuParams(FData));
end;
function TCefContextMenuParamsRef.GetMediaType: TCefContextMenuMediaType;
@ -167,7 +167,7 @@ end;
function TCefContextMenuParamsRef.GetTypeFlags: TCefContextMenuTypeFlags;
begin
Byte(Result) := PCefContextMenuParams(FData).get_type_flags(PCefContextMenuParams(FData));
Result := PCefContextMenuParams(FData).get_type_flags(PCefContextMenuParams(FData));
end;
function TCefContextMenuParamsRef.GetUnfilteredLinkUrl: ustring;

View File

@ -60,7 +60,7 @@ type
TCefFastDomVisitor = class(TCefDomVisitorOwn)
protected
FProc: TCefDomVisitorProc;
FProc : TCefDomVisitorProc;
procedure visit(const document: ICefDomDocument); override;
@ -68,6 +68,18 @@ type
constructor Create(const proc: TCefDomVisitorProc); reintroduce; virtual;
end;
TCefFastDomVisitor2 = class(TCefDomVisitorOwn)
protected
FProc : TCefDomVisitorProc2;
FBrowser : ICefBrowser;
procedure visit(const document: ICefDomDocument); override;
public
constructor Create(const browser: ICefBrowser; const proc: TCefDomVisitorProc2); reintroduce; virtual;
destructor Destroy; override;
end;
implementation
uses
@ -97,6 +109,7 @@ end;
constructor TCefFastDomVisitor.Create(const proc: TCefDomVisitorProc);
begin
inherited Create;
FProc := proc;
end;
@ -105,4 +118,27 @@ begin
FProc(document);
end;
// TCefFastDomVisitor2
constructor TCefFastDomVisitor2.Create(const browser: ICefBrowser; const proc: TCefDomVisitorProc2);
begin
inherited Create;
FBrowser := browser;
FProc := proc;
end;
destructor TCefFastDomVisitor2.Destroy;
begin
FBrowser := nil;
inherited Destroy;
end;
procedure TCefFastDomVisitor2.visit(const document: ICefDomDocument);
begin
FProc(FBrowser, document);
end;
end.

View File

@ -0,0 +1,777 @@
// ************************************************************************
// ***************************** CEF4Delphi *******************************
// ************************************************************************
//
// CEF4Delphi is based on DCEF3 which uses CEF3 to embed a chromium-based
// browser in Delphi applications.
//
// The original license of DCEF3 still applies to CEF4Delphi.
//
// For more information about CEF4Delphi visit :
// https://www.briskbard.com/index.php?lang=en&pageid=cef
//
// Copyright © 2017 Salvador Díaz Fau. All rights reserved.
//
// ************************************************************************
// ************ vvvv Original license and comments below vvvv *************
// ************************************************************************
(*
* Delphi Chromium Embedded 3
*
* Usage allowed under the restrictions of the Lesser GNU General Public License
* or alternatively the restrictions of the Mozilla Public License 1.1
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
*
* Unit owner : Henri Gourvest <hgourvest@gmail.com>
* Web site : http://www.progdigy.com
* Repository : http://code.google.com/p/delphichromiumembedded/
* Group : http://groups.google.com/group/delphichromiumembedded
*
* Embarcadero Technologies, Inc is not permitted to use or redistribute
* this source code without explicit permission.
*
*)
unit uCEFDragAndDropMgr;
{$I cef.inc}
interface
uses
{$IFDEF DELPHI16_UP}
WinApi.Windows, System.Classes, Vcl.Controls, System.SysUtils, System.Math,
WinApi.ActiveX, WinApi.ShlObj, WinApi.ShellApi, System.StrUtils, System.AnsiStrings,
{$ELSE}
Windows, Classes, Controls, SysUtils, Math,
ActiveX, ShlObj, Shellapi, StrUtils, AnsiStrings,
{$ENDIF}
uCEFDragData, uCEFInterfaces, uCEFTypes, uOLEDragAndDrop;
type
TDragEnterEvent = procedure(Sender: TObject; const aDragData : ICefDragData; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint) of object;
TDragOverEvent = procedure(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint) of object;
TDropEvent = procedure(Sender: TObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint) of object;
TCEFDragAndDropMgr = class(TOLEDragAndDropMgr)
protected
FCurrentDragData : ICefDragData;
FOLEEffect : integer;
FMozURLFormat : cardinal;
FHTMLFormat : cardinal;
FFileDescFormat : cardinal;
FFileContentsFormat : cardinal;
FOnDragEnter : TDragEnterEvent;
FOnDragOver : TDragOverEvent;
FOnDragLeave : TNotifyEvent;
FOnDrop : TDropEvent;
function DragDataToDataObject_Unicode(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
function DragDataToDataObject_Text(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
function DragDataToDataObject_HTML(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
function DragDataToDataObject_URL(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
function DragDataToDataObject_FileDesc(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
function DragDataToDataObject_FileContents(const aDragData : ICefDragData; var aFormat : TFormatEtc; var aMedium : TStgMedium) : boolean;
procedure DataObjectToDragData(const aDataObject : IDataObject; var aDragData : ICefDragData);
function DataObjectToDragData_Unicode(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
function DataObjectToDragData_Text(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
function DataObjectToDragData_URL(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
function DataObjectToDragData_HTML(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
function DataObjectToDragData_FileDrop(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
function HtmlToCFHtml(var aHTML, aBaseURL : ustring) : AnsiString;
procedure CFHtmlToHtml(const cf_html : AnsiString; var html, base_url : string);
function FindStringField(const aString, aFieldName : AnsiString; var aPos : integer) : string;
public
constructor Create;
destructor Destroy; override;
function StartDragging : TCefDragOperation;
function CloneDragData(const aDragData : ICefDragData; aAllowedOps : TCefDragOperations) : boolean;
function DragEnter(const DataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; override;
function DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; override;
function DragLeave: HRESULT; override;
function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; override;
property OnDragEnter : TDragEnterEvent read FOnDragEnter write FOnDragEnter;
property OnDragOver : TDragOverEvent read FOnDragOver write FOnDragOver;
property OnDragLeave : TNotifyEvent read FOnDragLeave write FOnDragLeave;
property OnDrop : TDropEvent read FOnDrop write FOnDrop;
end;
implementation
uses
uCEFMiscFunctions, uCEFWriteHandler, uCEFStreamWriter, uCEFConstants;
// *****************************************************
// **************** TCEFDragAndDropMgr *****************
// *****************************************************
constructor TCEFDragAndDropMgr.Create;
begin
inherited Create;
FOnDragEnter := nil;
FOnDragOver := nil;
FOnDragLeave := nil;
FOnDrop := nil;
FCurrentDragData := nil;
FMozURLFormat := RegisterClipboardFormat('text/x-moz-url');
FHTMLFormat := RegisterClipboardFormat('HTML Format');
FFileDescFormat := RegisterClipboardFormat(CFSTR_FILEDESCRIPTOR);
FFileContentsFormat := RegisterClipboardFormat(CFSTR_FILECONTENTS);
end;
destructor TCEFDragAndDropMgr.Destroy;
begin
FCurrentDragData := nil;
inherited Destroy;
end;
function TCEFDragAndDropMgr.DragDataToDataObject_Unicode(const aDragData : ICefDragData;
var aFormat : TFormatEtc;
var aMedium : TStgMedium) : boolean;
var
TempText : ustring;
begin
Result := False;
TempText := aDragData.GetFragmentText;
if (length(TempText) > 0) then
begin
aFormat.ptd := nil;
aFormat.dwAspect := DVASPECT_CONTENT;
aFormat.lindex := -1;
aFormat.tymed := TYMED_HGLOBAL;
aFormat.cfFormat := CF_UNICODETEXT;
TempText := TempText + #0;
Result := GetStorageForString(aMedium, TempText);
end;
end;
function TCEFDragAndDropMgr.DragDataToDataObject_Text(const aDragData : ICefDragData;
var aFormat : TFormatEtc;
var aMedium : TStgMedium) : boolean;
var
TempText : AnsiString;
begin
Result := False;
TempText := UTF8Encode(aDragData.GetFragmentText);
if (length(TempText) > 0) then
begin
aFormat.ptd := nil;
aFormat.dwAspect := DVASPECT_CONTENT;
aFormat.lindex := -1;
aFormat.tymed := TYMED_HGLOBAL;
aFormat.cfFormat := CF_TEXT;
TempText := TempText + #0;
Result := GetStorageForString(aMedium, TempText);
end;
end;
function TCEFDragAndDropMgr.DragDataToDataObject_HTML(const aDragData : ICefDragData;
var aFormat : TFormatEtc;
var aMedium : TStgMedium) : boolean;
var
TempBaseURL, TempHTML : ustring;
TempAnsi : AnsiString;
begin
Result := False;
TempHTML := aDragData.GetFragmentHtml;
if (length(TempHTML) > 0) then
begin
aFormat.ptd := nil;
aFormat.dwAspect := DVASPECT_CONTENT;
aFormat.lindex := -1;
aFormat.tymed := TYMED_HGLOBAL;
aFormat.cfFormat := FHTMLFormat;
TempBaseURL := aDragData.GetFragmentBaseURL;
TempAnsi := HtmlToCFHtml(TempHTML, TempBaseURL) + #0;
Result := GetStorageForString(aMedium, TempAnsi);
end;
end;
function TCEFDragAndDropMgr.DragDataToDataObject_URL(const aDragData : ICefDragData;
var aFormat : TFormatEtc;
var aMedium : TStgMedium) : boolean;
var
TempURL, TempTitle : ustring;
begin
Result := False;
if aDragData.IsLink then
begin
TempURL := aDragData.GetLinkURL;
TempTitle := aDragData.GetLinkTitle;
if (length(TempURL) > 0) then
begin
aFormat.ptd := nil;
aFormat.dwAspect := DVASPECT_CONTENT;
aFormat.lindex := -1;
aFormat.tymed := TYMED_HGLOBAL;
aFormat.cfFormat := FMozURLFormat;
if (length(TempTitle) > 0) then
TempURL := TempURL + #13 + TempTitle;
TempURL := TempURL + #0;
Result := GetStorageForString(aMedium, TempURL);
end;
end;
end;
function TCEFDragAndDropMgr.DragDataToDataObject_FileDesc(const aDragData : ICefDragData;
var aFormat : TFormatEtc;
var aMedium : TStgMedium) : boolean;
var
TempFileName : ustring;
TempSize : cardinal;
begin
Result := False;
if aDragData.IsFile then
begin
TempSize := aDragData.GetFileContents(nil);
TempFileName := aDragData.GetFileName;
if (TempSize > 0) and (length(TempFileName) > 0) then
begin
aFormat.ptd := nil;
aFormat.dwAspect := DVASPECT_CONTENT;
aFormat.lindex := -1;
aFormat.tymed := TYMED_HGLOBAL;
aFormat.cfFormat := FFileDescFormat;
TempFileName := TempFileName + #0;
Result := GetStorageForFileDescriptor(aMedium, TempFileName);
end;
end;
end;
function TCEFDragAndDropMgr.DragDataToDataObject_FileContents(const aDragData : ICefDragData;
var aFormat : TFormatEtc;
var aMedium : TStgMedium) : boolean;
var
TempHandler : ICefWriteHandler;
TempWriter : ICefStreamWriter;
TempSize : cardinal;
begin
Result := False;
if aDragData.IsFile then
begin
TempSize := aDragData.GetFileContents(nil);
if (TempSize > 0) then
begin
aFormat.ptd := nil;
aFormat.dwAspect := DVASPECT_CONTENT;
aFormat.lindex := -1;
aFormat.tymed := TYMED_HGLOBAL;
aFormat.cfFormat := FFileContentsFormat;
TempHandler := TCefBytesWriteHandler.Create(TempSize);
TempWriter := TCefStreamWriterRef.CreateForHandler(TempHandler);
aDragData.GetFileContents(TempWriter);
TempSize := cardinal(TCefBytesWriteHandler(TempHandler).GetDataSize);
Result := GetStorageForBytes(aMedium, TCefBytesWriteHandler(TempHandler).GetData, TempSize);
end;
end;
end;
function TCEFDragAndDropMgr.HtmlToCFHtml(var aHTML, aBaseURL : ustring) : AnsiString;
const
CRLF : AnsiString = #13+#10;
HTML_START_TAG : AnsiString = '<html>';
HTML_END_TAG : AnsiString = '</html>';
BODY_START_TAG : AnsiString = '<body>';
BODY_END_TAG : AnsiString = '</body>';
FRAGMENT_START : AnsiString = '<!--StartFragment-->';
FRAGMENT_END : AnsiString = '<!--EndFragment-->';
PATTERN1 : AnsiString = '<<<<<1';
PATTERN2 : AnsiString = '<<<<<2';
PATTERN3 : AnsiString = '<<<<<3';
PATTERN4 : AnsiString = '<<<<<4';
var
TempString, TempDigits : AnsiString;
TempPos : integer;
begin
if (length(aHTML) = 0) then
begin
Result := '';
exit;
end;
TempString := 'Version:0.9' + CRLF +
'StartHTML:' + PATTERN1 + CRLF +
'EndHTML:' + PATTERN2 + CRLF +
'StartFragment:' + PATTERN3 + CRLF +
'EndFragment:' + PATTERN4 + CRLF +
'StartSelection:' + PATTERN3 + CRLF +
'EndSelection:' + PATTERN4;
if (length(aBaseURL) > 0) then
TempString := TempString + CRLF + 'SourceURL:' + Utf8Encode(aBaseURL);
TempString := TempString + CRLF +
HTML_START_TAG + CRLF +
BODY_START_TAG + CRLF +
FRAGMENT_START + CRLF +
Utf8Encode(aHTML) + CRLF +
FRAGMENT_END + CRLF +
BODY_END_TAG + CRLF +
HTML_END_TAG;
TempPos := System.AnsiStrings.PosEx(HTML_START_TAG, TempString) + length(HTML_START_TAG);
FmtStr(TempDigits, '%.6d', [TempPos]);
TempString := System.AnsiStrings.StringReplace(TempString, PATTERN1, TempDigits, [rfReplaceAll]);
TempPos := System.AnsiStrings.PosEx(HTML_END_TAG, TempString);
FmtStr(TempDigits, '%.6d', [TempPos]);
TempString := System.AnsiStrings.StringReplace(TempString, PATTERN2, TempDigits, [rfReplaceAll]);
TempPos := System.AnsiStrings.PosEx(FRAGMENT_START, TempString) + length(FRAGMENT_START);
FmtStr(TempDigits, '%.6d', [TempPos]);
TempString := System.AnsiStrings.StringReplace(TempString, PATTERN3, TempDigits, [rfReplaceAll]);
TempPos := System.AnsiStrings.PosEx(FRAGMENT_END, TempString);
FmtStr(TempDigits, '%.6d', [TempPos]);
TempString := System.AnsiStrings.StringReplace(TempString, PATTERN4, TempDigits, [rfReplaceAll]);
Result := TempString;
end;
function TCEFDragAndDropMgr.FindStringField(const aString, aFieldName : AnsiString; var aPos : integer) : string;
var
TempLen, i, TempValuePos : integer;
TempString : AnsiString;
begin
aPos := pos(aFieldName, aString);
TempLen := length(aString);
if (aPos > 0) then
begin
TempValuePos := aPos + length(aFieldName);
i := TempValuePos;
while (i <= TempLen) and not(CharInSet(aString[i], [#13, #10])) do inc(i);
TempString := copy(aString, TempValuePos, i - TempValuePos);
if (length(TempString) > 0) then Result := UTF8ToString(TempString);
end
else
Result := '';
end;
procedure TCEFDragAndDropMgr.CFHtmlToHtml(const cf_html : AnsiString; var html, base_url : string);
const
CFHTML_VERSION : AnsiString = 'Version:';
CFHTML_STARTHTML : AnsiString = 'StartHTML:';
CFHTML_ENDHTML : AnsiString = 'EndHTML:';
CFHTML_STARTFRAG : AnsiString = 'StartFragment:';
CFHTML_ENDFRAG : AnsiString = 'EndFragment:';
CFHTML_STARSEL : AnsiString = 'StartSelection:';
CFHTML_ENDSEL : AnsiString = 'EndSelection:';
CFHTML_SOURCEURL : AnsiString = 'SourceURL:';
FRAGMENT_START : AnsiString = '<!--StartFragment';
FRAGMENT_END : AnsiString = '<!--EndFragment';
var
TempHTMLStart, TempHTMLEnd : integer;
TempFragStart, TempFragEnd : integer;
TempVersionPos, TempSourcePos : integer;
TempHTMLStartPos, TempHTMLEndPos : integer;
TempFragStartPos, TempFragEndPos : integer;
TempFragStartCommentPos, TempFragEndCommentPos : integer;
begin
html := '';
base_url := '';
if (FindStringField(cf_html, CFHTML_VERSION, TempVersionPos) <> '0.9') then exit;
TempHTMLStart := StrToIntDef(FindStringField(cf_html, CFHTML_STARTHTML, TempHTMLStartPos), -1);
TempHTMLEnd := StrToIntDef(FindStringField(cf_html, CFHTML_ENDHTML, TempHTMLEndPos), -1);
TempFragStart := StrToIntDef(FindStringField(cf_html, CFHTML_STARTFRAG, TempFragStartPos), -1);
TempFragEnd := StrToIntDef(FindStringField(cf_html, CFHTML_ENDFRAG, TempFragEndPos), -1);
if (TempVersionPos < TempHTMLStartPos) and
(TempHTMLStartPos < TempHTMLEndPos) and
(TempHTMLEndPos < TempFragStartPos) and
(TempFragStartPos < TempFragEndPos) then
begin
TempFragStartCommentPos := pos(FRAGMENT_START, cf_html);
if (TempFragStartCommentPos > 0) then
TempFragStartCommentPos := System.AnsiStrings.PosEx('-->', cf_html, TempFragStartCommentPos + length(FRAGMENT_START));
if (TempFragStartCommentPos > 0) then
begin
TempFragStartCommentPos := TempFragStartCommentPos + 3;
TempFragEndCommentPos := System.AnsiStrings.PosEx(FRAGMENT_END, cf_html, TempFragStartCommentPos);
end
else
if (TempFragStart > 0) and
(TempFragEnd > 0) then
begin
TempFragStartCommentPos := TempFragStart;
TempFragEndCommentPos := TempFragEnd;
end
else
if (TempHTMLStart > 0) and
(TempHTMLEnd > 0) then
begin
TempFragStartCommentPos := TempHTMLStart;
TempFragEndCommentPos := TempHTMLEnd;
end
else
exit;
if (TempFragStartCommentPos > 0) and
(TempFragEndCommentPos > 0) and
(TempFragEndCommentPos > TempFragStartCommentPos) then
begin
html := UTF8ToString(copy(cf_html, TempFragStartCommentPos, TempFragEndCommentPos - TempFragStartCommentPos));
base_url := FindStringField(cf_html, CFHTML_SOURCEURL, TempSourcePos);
end;
end;
end;
function TCEFDragAndDropMgr.DataObjectToDragData_Unicode(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
var
TempText : string;
TempPointer : pointer;
begin
Result := False;
if (aMedium.hGlobal <> 0) then
begin
TempPointer := GlobalLock(aMedium.hGlobal);
if (TempPointer <> nil) then
begin
TempText := PWideChar(TempPointer);
aDragData.SetFragmentText(TempText);
GlobalUnlock(aMedium.hGlobal);
Result := True;
end;
ReleaseStgMedium(aMedium);
end;
end;
function TCEFDragAndDropMgr.DataObjectToDragData_Text(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
var
TempText : string;
TempPointer : pointer;
begin
Result := False;
if (aMedium.hGlobal <> 0) then
begin
TempPointer := GlobalLock(aMedium.hGlobal);
if (TempPointer <> nil) then
begin
TempText := UTF8ToString(PAnsiChar(TempPointer));
aDragData.SetFragmentText(TempText);
GlobalUnlock(aMedium.hGlobal);
Result := True;
end;
ReleaseStgMedium(aMedium);
end;
end;
function TCEFDragAndDropMgr.DataObjectToDragData_URL(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
var
TempText, TempURL, TempTitle : string;
TempPos : integer;
TempPointer : pointer;
begin
Result := False;
if (aMedium.hGlobal <> 0) then
begin
TempPointer := GlobalLock(aMedium.hGlobal);
if (TempPointer <> nil) then
begin
TempText := PWideChar(TempPointer);
TempPos := LastDelimiter(#13, TempText);
if (TempPos > 0) then
begin
TempURL := copy(TempText, 1, pred(TempPos));
TempTitle := copy(TempText, succ(TempPos), length(TempText));
end
else
begin
TempURL := TempText;
TempTitle := TempText;
end;
aDragData.SetLinkURL(TempURL);
aDragData.SetLinkTitle(TempTitle);
GlobalUnlock(aMedium.hGlobal);
Result := True;
end;
ReleaseStgMedium(aMedium);
end;
end;
function TCEFDragAndDropMgr.DataObjectToDragData_HTML(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
var
TempAnsi : AnsiString;
TempHTML, TempBaseURL : string;
TempPointer : pointer;
begin
Result := False;
if (aMedium.hGlobal <> 0) then
begin
TempPointer := GlobalLock(aMedium.hGlobal);
if (TempPointer <> nil) then
begin
TempAnsi := PAnsiChar(TempPointer);
CFHtmlToHtml(TempAnsi, TempHTML, TempBaseURL);
aDragData.SetFragmentHtml(TempHTML);
aDragData.SetFragmentBaseURL(TempBaseURL);
GlobalUnlock(aMedium.hGlobal);
Result := True;
end;
ReleaseStgMedium(aMedium);
end;
end;
function TCEFDragAndDropMgr.DataObjectToDragData_FileDrop(var aMedium : TStgMedium; var aDragData : ICefDragData) : boolean;
var
TempHdrop : HDROP;
TempNumFiles, i, TempLen : integer;
TempText, TempFilePath, TempFileName : string;
TempPointer : pointer;
TempAdded : boolean;
begin
Result := False;
if (aMedium.hGlobal <> 0) then
begin
TempPointer := GlobalLock(aMedium.hGlobal);
if (TempPointer <> nil) then
begin
TempHdrop := THandle(TempPointer);
TempNumFiles := DragQueryFile(TempHdrop, $FFFFFFFF, nil, 0);
TempAdded := False;
i := 0;
SetLength(TempText, succ(MAX_PATH));
while (i < TempNumFiles) do
begin
TempLen := DragQueryFile(TempHdrop, i, @TempText[1], succ(MAX_PATH));
if (TempLen > 0) then
begin
TempFilePath := copy(TempText, 1, TempLen);
TempFileName := ExtractFileName(TempFilePath);
TempAdded := True;
if (length(TempFileName) > 0) then
aDragData.AddFile(TempFilePath, TempFileName)
else
aDragData.AddFile(TempFilePath, TempFilePath);
end;
inc(i);
end;
GlobalUnlock(aMedium.hGlobal);
DragFinish(TempHdrop);
Result := TempAdded;
end;
end;
end;
procedure TCEFDragAndDropMgr.DataObjectToDragData(const aDataObject : IDataObject; var aDragData : ICefDragData);
var
TempEnumFrmt : IEnumFormatEtc;
TempFormat : TFormatEtc;
TempMedium : TStgMedium;
TempUsed : boolean;
begin
try
aDragData := TCefDragDataRef.New;
if (aDataObject <> nil) and (aDataObject.EnumFormatEtc(DATADIR_GET, TempEnumFrmt) = S_OK) then
begin
TempEnumFrmt.Reset;
TempUsed := False;
while (TempEnumFrmt.Next(1, TempFormat, nil) = S_OK) and not(TempUsed) do
begin
try
TempMedium.unkForRelease := nil;
if ((TempFormat.tymed and TYMED_HGLOBAL) <> 0) and
(aDataObject.GetData(TempFormat, TempMedium) = S_OK) then
begin
if (TempFormat.cfFormat = CF_UNICODETEXT) then TempUsed := DataObjectToDragData_Unicode(TempMedium, aDragData)
else if (TempFormat.cfFormat = CF_TEXT) then TempUsed := DataObjectToDragData_Text(TempMedium, aDragData)
else if (TempFormat.cfFormat = FMozURLFormat) then TempUsed := DataObjectToDragData_URL(TempMedium, aDragData)
else if (TempFormat.cfFormat = FHTMLFormat) then TempUsed := DataObjectToDragData_HTML(TempMedium, aDragData)
else if (TempFormat.cfFormat = CF_HDROP) then TempUsed := DataObjectToDragData_FileDrop(TempMedium, aDragData)
else ReleaseStgMedium(TempMedium);
end;
finally
if (TempFormat.ptd <> nil) then
begin
CoTaskMemFree(TempFormat.ptd);
TempFormat.ptd := nil;
end;
end;
end;
end;
except
on e : exception do
if CustomExceptionHandler('TCEFDragAndDropMgr.DataObjectToDragData', e) then raise;
end;
end;
function TCEFDragAndDropMgr.StartDragging : TCefDragOperation;
var
TempDataObject : IDataObject;
TempDropSource : IDropSource;
TempResEffect : integer;
TempResult : HRESULT;
TempFormatArray : TOLEFormatArray;
TempMediumArray : TOLEMediumArray;
i : integer;
begin
Result := DRAG_OPERATION_NONE;
if (FCurrentDragData <> nil) then
begin
i := 0;
if DragDataToDataObject_Unicode(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
if DragDataToDataObject_Text(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
if DragDataToDataObject_URL(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
if DragDataToDataObject_HTML(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
if DragDataToDataObject_FileDesc(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
if DragDataToDataObject_FileContents(FCurrentDragData, TempFormatArray[i], TempMediumArray[i]) then inc(i);
if (i > 0) then
begin
TempResEffect := DROPEFFECT_NONE;
TempDataObject := TOLEDataObject.Create(TempFormatArray, TempMediumArray, i);
TempDropSource := TOLEDropSource.Create;
TempResult := DoDragDrop(TempDataObject, TempDropSource, FOLEEffect, TempResEffect);
if (TempResult <> DRAGDROP_S_DROP) then TempResEffect := DROPEFFECT_NONE;
FCurrentDragData := nil;
DropEffectToDragOperation(TempResEffect, Result);
end;
end;
end;
function TCEFDragAndDropMgr.CloneDragData(const aDragData : ICefDragData; aAllowedOps : TCefDragOperations) : boolean;
begin
if (aDragData <> nil) and
((length(aDragData.GetFragmentText) > 0) or
(length(aDragData.GetFragmentHTML) > 0) or
aDragData.IsLink or
aDragData.IsFile) then
begin
DragOperationToDropEffect(aAllowedOps, FOLEEffect);
FCurrentDragData := aDragData.Clone;
FCurrentDragData.ResetFileContents;
Result := True;
end
else
Result := False;
end;
function TCEFDragAndDropMgr.DragEnter(const dataObj : IDataObject;
grfKeyState : Longint;
pt : TPoint;
var dwEffect : Longint): HRESULT;
var
TempDragData : ICefDragData;
begin
if assigned(FOnDragEnter) then
begin
if (FCurrentDragData <> nil) then
TempDragData := FCurrentDragData
else
DataObjectToDragData(dataObj, TempDragData);
FOnDragEnter(self, TempDragData, grfKeyState, pt, dwEffect);
Result := S_OK;
end
else
Result := E_UNEXPECTED;
end;
function TCEFDragAndDropMgr.DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HResult;
begin
if assigned(FOnDragOver) then
begin
FOnDragOver(self, grfKeyState, pt, dwEffect);
Result := S_OK;
end
else
Result := E_UNEXPECTED;
end;
function TCEFDragAndDropMgr.DragLeave: HResult;
begin
if assigned(FOnDragLeave) then
begin
FOnDragLeave(self);
Result := S_OK;
end
else
Result := E_UNEXPECTED;
end;
function TCEFDragAndDropMgr.Drop(const dataObj : IDataObject;
grfKeyState : Longint;
pt : TPoint;
var dwEffect : Longint): HResult;
begin
if assigned(FOnDrop) then
begin
FOnDrop(self, grfKeyState, pt, dwEffect);
Result := S_OK;
end
else
Result := E_UNEXPECTED;
end;
end.

View File

@ -100,6 +100,7 @@ type
TOnPdfPrintFinishedProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const path: ustring; ok: Boolean);
TCefDomVisitorProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const document: ICefDomDocument);
TCefDomVisitorProc2 = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const browser : ICefBrowser; const document: ICefDomDocument);
TCefStringVisitorProc = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const str: ustring);
TOnRegisterCustomSchemes = {$IFDEF DELPHI12_UP}reference to{$ENDIF} procedure(const registrar: TCefSchemeRegistrarRef) {$IFNDEF DELPHI12_UP}of object{$ENDIF};

View File

@ -48,9 +48,9 @@ interface
uses
{$IFDEF DELPHI16_UP}
WinApi.Windows, System.Classes, System.SysUtils,
WinApi.Windows, System.Classes, System.SysUtils, System.UITypes, WinApi.ActiveX,
{$ELSE}
Windows, Classes, SysUtils,
Windows, Classes, SysUtils, UITypes, ActiveX,
{$ENDIF}
uCEFTypes, uCEFInterfaces, uCEFLibFunctions, uCEFResourceHandler;
@ -165,6 +165,15 @@ function CefDeleteFile(const path: ustring; recursive: Boolean): Boolean;
function CefZipDirectory(const srcDir, destFile: ustring; includeHiddenFiles: Boolean): Boolean;
procedure CefLoadCRLSetsFile(const path : ustring);
function CefIsKeyDown(aWparam : WPARAM) : boolean;
function CefIsKeyToggled(aWparam : WPARAM) : boolean;
function GetCefMouseModifiers(awparam : WPARAM) : TCefEventFlags;
function GetCefKeyboardModifiers(aWparam : WPARAM; aLparam : LPARAM) : TCefEventFlags;
function GefCursorToWindowsCursor(aCefCursor : TCefCursorType) : TCursor;
procedure DropEffectToDragOperation(aEffect : Longint; var aAllowedOps : TCefDragOperations);
procedure DragOperationToDropEffect(const aDragOperations : TCefDragOperations; var aEffect: Longint);
implementation
uses
@ -987,4 +996,156 @@ begin
cef_load_crlsets_file(@TempPath);
end;
function CefIsKeyDown(aWparam : WPARAM) : boolean;
begin
Result := (GetKeyState(aWparam) < 0);
end;
function CefIsKeyToggled(aWparam : WPARAM) : boolean;
begin
Result := (GetKeyState(aWparam) and $1) <> 0;
end;
function GetCefMouseModifiers(aWparam : WPARAM) : TCefEventFlags;
begin
Result := EVENTFLAG_NONE;
if ((aWparam and MK_CONTROL) <> 0) then Result := Result or EVENTFLAG_CONTROL_DOWN;
if ((aWparam and MK_SHIFT) <> 0) then Result := Result or EVENTFLAG_SHIFT_DOWN;
if ((aWparam and MK_LBUTTON) <> 0) then Result := Result or EVENTFLAG_LEFT_MOUSE_BUTTON;
if ((aWparam and MK_MBUTTON) <> 0) then Result := Result or EVENTFLAG_MIDDLE_MOUSE_BUTTON;
if ((aWparam and MK_RBUTTON) <> 0) then Result := Result or EVENTFLAG_RIGHT_MOUSE_BUTTON;
if CefIsKeyDown(VK_MENU) then Result := Result or EVENTFLAG_ALT_DOWN;
if CefIsKeyToggled(VK_NUMLOCK) then Result := Result or EVENTFLAG_NUM_LOCK_ON;
if CefIsKeyToggled(VK_CAPITAL) then Result := Result or EVENTFLAG_CAPS_LOCK_ON;
end;
function GetCefKeyboardModifiers(aWparam : WPARAM; aLparam : LPARAM) : TCefEventFlags;
begin
Result := EVENTFLAG_NONE;
if CefIsKeyDown(VK_SHIFT) then Result := Result or EVENTFLAG_SHIFT_DOWN;
if CefIsKeyDown(VK_CONTROL) then Result := Result or EVENTFLAG_CONTROL_DOWN;
if CefIsKeyDown(VK_MENU) then Result := Result or EVENTFLAG_ALT_DOWN;
if CefIsKeyToggled(VK_NUMLOCK) then Result := Result or EVENTFLAG_NUM_LOCK_ON;
if CefIsKeyToggled(VK_CAPITAL) then Result := Result or EVENTFLAG_CAPS_LOCK_ON;
case aWparam of
VK_RETURN:
if (((aLparam shr 16) and KF_EXTENDED) <> 0) then Result := Result or EVENTFLAG_IS_KEY_PAD;
VK_INSERT,
VK_DELETE,
VK_HOME,
VK_END,
VK_PRIOR,
VK_NEXT,
VK_UP,
VK_DOWN,
VK_LEFT,
VK_RIGHT :
if (((aLparam shr 16) and KF_EXTENDED) = 0) then Result := Result or EVENTFLAG_IS_KEY_PAD;
VK_NUMLOCK,
VK_NUMPAD0,
VK_NUMPAD1,
VK_NUMPAD2,
VK_NUMPAD3,
VK_NUMPAD4,
VK_NUMPAD5,
VK_NUMPAD6,
VK_NUMPAD7,
VK_NUMPAD8,
VK_NUMPAD9,
VK_DIVIDE,
VK_MULTIPLY,
VK_SUBTRACT,
VK_ADD,
VK_DECIMAL,
VK_CLEAR :
Result := Result or EVENTFLAG_IS_KEY_PAD;
VK_SHIFT :
if CefIsKeyDown(VK_LSHIFT) then
Result := Result or EVENTFLAG_IS_LEFT
else
if CefIsKeyDown(VK_RSHIFT) then
Result := Result or EVENTFLAG_IS_RIGHT;
VK_CONTROL :
if CefIsKeyDown(VK_LCONTROL) then
Result := Result or EVENTFLAG_IS_LEFT
else
if CefIsKeyDown(VK_RCONTROL) then
Result := Result or EVENTFLAG_IS_RIGHT;
VK_MENU :
if CefIsKeyDown(VK_LMENU) then
Result := Result or EVENTFLAG_IS_LEFT
else
if CefIsKeyDown(VK_RMENU) then
Result := Result or EVENTFLAG_IS_RIGHT;
VK_LWIN :
Result := Result or EVENTFLAG_IS_LEFT;
VK_RWIN :
Result := Result or EVENTFLAG_IS_RIGHT;
end;
end;
function GefCursorToWindowsCursor(aCefCursor : TCefCursorType) : TCursor;
begin
case aCefCursor of
CT_POINTER : Result := crArrow;
CT_CROSS : Result := crCross;
CT_HAND : Result := crHandPoint;
CT_IBEAM : Result := crIBeam;
CT_WAIT : Result := crHourGlass;
CT_HELP : Result := crHelp;
CT_EASTRESIZE : Result := crSizeWE;
CT_NORTHRESIZE : Result := crSizeNS;
CT_NORTHEASTRESIZE : Result := crSizeNESW;
CT_NORTHWESTRESIZE : Result := crSizeNWSE;
CT_SOUTHRESIZE : Result := crSizeNS;
CT_SOUTHEASTRESIZE : Result := crSizeNWSE;
CT_SOUTHWESTRESIZE : Result := crSizeNESW;
CT_WESTRESIZE : Result := crSizeWE;
CT_NORTHSOUTHRESIZE : Result := crSizeNS;
CT_EASTWESTRESIZE : Result := crSizeWE;
CT_NORTHEASTSOUTHWESTRESIZE : Result := crSizeNESW;
CT_NORTHWESTSOUTHEASTRESIZE : Result := crSizeNWSE;
CT_COLUMNRESIZE : Result := crHSplit;
CT_ROWRESIZE : Result := crVSplit;
CT_MOVE : Result := crSizeAll;
CT_PROGRESS : Result := crAppStart;
CT_NONE : Result := crNone;
CT_NODROP,
CT_NOTALLOWED : Result := crNo;
CT_GRAB,
CT_GRABBING : Result := crDrag;
else Result := crDefault;
end;
end;
procedure DropEffectToDragOperation(aEffect: Longint; var aAllowedOps : TCefDragOperations);
begin
aAllowedOps := DRAG_OPERATION_NONE;
if ((aEffect and DROPEFFECT_COPY) <> 0) then aAllowedOps := aAllowedOps or DRAG_OPERATION_COPY;
if ((aEffect and DROPEFFECT_LINK) <> 0) then aAllowedOps := aAllowedOps or DRAG_OPERATION_LINK;
if ((aEffect and DROPEFFECT_MOVE) <> 0) then aAllowedOps := aAllowedOps or DRAG_OPERATION_MOVE;
end;
procedure DragOperationToDropEffect(const aDragOperations : TCefDragOperations; var aEffect: Longint);
begin
aEffect := DROPEFFECT_NONE;
if ((aDragOperations and DRAG_OPERATION_COPY) <> 0) then aEffect := aEffect or DROPEFFECT_COPY;
if ((aDragOperations and DRAG_OPERATION_LINK) <> 0) then aEffect := aEffect or DROPEFFECT_LINK;
if ((aDragOperations and DRAG_OPERATION_MOVE) <> 0) then aEffect := aEffect or DROPEFFECT_MOVE;
end;
end.

View File

@ -103,7 +103,7 @@ end;
function TCefRequestRef.GetFlags: TCefUrlRequestFlags;
begin
Byte(Result) := PCefRequest(FData)^.get_flags(PCefRequest(FData));
Result := PCefRequest(FData)^.get_flags(PCefRequest(FData));
end;
procedure TCefRequestRef.GetHeaderMap(const HeaderMap: ICefStringMultimap);

View File

@ -201,22 +201,32 @@ type
PPCefX509Certificate = ^PCefX509Certificate;
TCefWindowHandle = HWND; // /include/internal/cef_types_win.h (cef_window_handle_t)
TCefCursorHandle = HCURSOR; // /include/internal/cef_types_win.h (cef_cursor_handle_t)
TCefEventHandle = PMsg; // /include/internal/cef_types_win.h (cef_event_handle_t)
TCefPlatformThreadId = DWORD; // /include/internal/cef_thread_internal.h (cef_platform_thread_id_t)
TCefPlatformThreadHandle = DWORD; // /include/internal/cef_thread_internal.h (cef_platform_thread_handle_t)
TCefTransitionType = Cardinal; // /include/internal/cef_types.h (cef_transition_type_t)
TCefColor = Cardinal; // /include/internal/cef_types.h (cef_color_t)
TCefErrorcode = Integer; // /include/internal/cef_types.h (cef_errorcode_t)
TCefCertStatus = Integer; // /include/internal/cef_types.h (cef_cert_status_t)
TCefSSLVersion = integer; // /include/internal/cef_types.h (cef_ssl_version_t)
TCefStringList = Pointer; // /include/internal/cef_string_list.h (cef_string_list_t)
TCefStringMap = Pointer; // /include/internal/cef_string_map.h (cef_string_map_t)
TCefStringMultimap = Pointer; // /include/internal/cef_string_multimap.h (cef_string_multimap_t)
TCefUriUnescapeRule = Integer; // /include/internal/cef_types.h (cef_uri_unescape_rule_t)
TCefDomEventCategory = Integer; // /include/internal/cef_types.h (cef_dom_event_category_t)
TCefWindowHandle = HWND; // /include/internal/cef_types_win.h (cef_window_handle_t)
TCefCursorHandle = HCURSOR; // /include/internal/cef_types_win.h (cef_cursor_handle_t)
TCefEventHandle = PMsg; // /include/internal/cef_types_win.h (cef_event_handle_t)
TCefPlatformThreadId = DWORD; // /include/internal/cef_thread_internal.h (cef_platform_thread_id_t)
TCefPlatformThreadHandle = DWORD; // /include/internal/cef_thread_internal.h (cef_platform_thread_handle_t)
TCefTransitionType = Cardinal; // /include/internal/cef_types.h (cef_transition_type_t)
TCefColor = Cardinal; // /include/internal/cef_types.h (cef_color_t)
TCefErrorcode = Integer; // /include/internal/cef_types.h (cef_errorcode_t)
TCefCertStatus = Integer; // /include/internal/cef_types.h (cef_cert_status_t)
TCefSSLVersion = integer; // /include/internal/cef_types.h (cef_ssl_version_t)
TCefStringList = Pointer; // /include/internal/cef_string_list.h (cef_string_list_t)
TCefStringMap = Pointer; // /include/internal/cef_string_map.h (cef_string_map_t)
TCefStringMultimap = Pointer; // /include/internal/cef_string_multimap.h (cef_string_multimap_t)
TCefUriUnescapeRule = Integer; // /include/internal/cef_types.h (cef_uri_unescape_rule_t)
TCefDomEventCategory = Integer; // /include/internal/cef_types.h (cef_dom_event_category_t)
TCefEventFlags = Cardinal; // /include/internal/cef_types.h (cef_event_flags_t)
TCefDragOperations = Cardinal; // /include/internal/cef_types.h (cef_drag_operations_mask_t)
TCefDragOperation = Cardinal; // /include/internal/cef_types.h (cef_drag_operations_mask_t)
TCefV8AccessControls = Cardinal; // /include/internal/cef_types.h (cef_v8_accesscontrol_t)
TCefV8PropertyAttributes = Cardinal; // /include/internal/cef_types.h (cef_v8_propertyattribute_t)
TCefUrlRequestFlags = Cardinal; // /include/internal/cef_types.h (cef_urlrequest_flags_t)
TCefContextMenuTypeFlags = Cardinal; // /include/internal/cef_types.h (cef_context_menu_type_flags_t)
TCefContextMenuMediaStateFlags = Cardinal; // /include/internal/cef_types.h (cef_context_menu_media_state_flags_t)
TCefContextMenuEditStateFlags = Cardinal; // /include/internal/cef_types.h (cef_context_menu_edit_state_flags_t)
TCefJsonWriterOptions = Cardinal; // /include/internal/cef_types.h (cef_json_writer_options_t)
TCefSSLContentStatus = Cardinal; // /include/internal/cef_types.h (cef_ssl_content_status_t)
{$IFNDEF DELPHI12_UP}
NativeUInt = Cardinal;
@ -359,14 +369,6 @@ type
JSON_PARSE_ERROR_COUNT
);
// /include/internal/cef_types.h (cef_json_writer_options_t)
TCefJsonWriterOption = (
JSON_WRITER_OMIT_BINARY_VALUES,
JSON_WRITER_OMIT_DOUBLE_TYPE_PRESERVATION,
JSON_WRITER_PRETTY_PRINT
);
TCefJsonWriterOptions = set of TCefJsonWriterOption;
// /include/internal/cef_types.h (cef_state_t)
TCefState = (
STATE_DEFAULT = 0,
@ -492,40 +494,15 @@ type
MENUITEMTYPE_SUBMENU
);
// /include/internal/cef_types.h (cef_event_flags_t)
TCefEventFlag = (
EVENTFLAG_CAPS_LOCK_ON,
EVENTFLAG_SHIFT_DOWN,
EVENTFLAG_CONTROL_DOWN,
EVENTFLAG_ALT_DOWN,
EVENTFLAG_LEFT_MOUSE_BUTTON,
EVENTFLAG_MIDDLE_MOUSE_BUTTON,
EVENTFLAG_RIGHT_MOUSE_BUTTON,
EVENTFLAG_COMMAND_DOWN,
EVENTFLAG_NUM_LOCK_ON,
EVENTFLAG_IS_KEY_PAD,
EVENTFLAG_IS_LEFT,
EVENTFLAG_IS_RIGHT
);
TCefEventFlags = set of TCefEventFlag;
// /include/internal/cef_types.h (cef_drag_operations_mask_t)
TCefDragOperation = (
DRAG_OPERATION_COPY,
DRAG_OPERATION_LINK,
DRAG_OPERATION_GENERIC,
DRAG_OPERATION_PRIVATE,
DRAG_OPERATION_MOVE,
DRAG_OPERATION_DELETE
);
TCefDragOperations = set of TCefDragOperation;
// /include/internal/cef_types.h (cef_file_dialog_mode_t)
TCefFileDialogMode = (
FILE_DIALOG_OPEN,
FILE_DIALOG_OPEN_MULTIPLE,
FILE_DIALOG_OPEN_FOLDER,
FILE_DIALOG_SAVE
FILE_DIALOG_SAVE,
FILE_DIALOG_TYPE_MASK = $FF,
FILE_DIALOG_OVERWRITEPROMPT_FLAG = $01000000,
FILE_DIALOG_HIDEREADONLY_FLAG = $02000000
);
// /include/internal/cef_types.h (cef_focus_source_t)
@ -681,19 +658,6 @@ type
RV_CONTINUE_ASYNC
);
// /include/internal/cef_types.h (cef_urlrequest_flags_t)
TCefUrlRequestFlag = (
UR_FLAG_SKIP_CACHE,
UR_FLAG_ALLOW_CACHED_CREDENTIALS,
UR_FLAG_DUMMY_1,
UR_FLAG_REPORT_UPLOAD_PROGRESS,
UR_FLAG_DUMMY_2,
UR_FLAG_DUMMY_3,
UR_FLAG_NO_DOWNLOAD_DATA,
UR_FLAG_NO_RETRY_ON_5XX
);
TCefUrlRequestFlags = set of TCefUrlRequestFlag;
// /include/internal/cef_types.h (cef_urlrequest_status_t)
TCefUrlRequestStatus = (
UR_UNKNOWN = 0,
@ -728,22 +692,6 @@ type
ST_SESSIONSTORAGE
);
// /include/internal/cef_types.h (cef_v8_accesscontrol_t)
TCefV8AccessControl = (
V8_ACCESS_CONTROL_ALL_CAN_READ,
V8_ACCESS_CONTROL_ALL_CAN_WRITE,
V8_ACCESS_CONTROL_PROHIBITS_OVERWRITING
);
TCefV8AccessControls = set of TCefV8AccessControl;
// /include/internal/cef_types.h (cef_v8_propertyattribute_t)
TCefV8PropertyAttribute = (
V8_PROPERTY_ATTRIBUTE_READONLY,
V8_PROPERTY_ATTRIBUTE_DONTENUM,
V8_PROPERTY_ATTRIBUTE_DONTDELETE
);
TCefV8PropertyAttributes = set of TCefV8PropertyAttribute;
// /include/internal/cef_types.h (cef_response_filter_status_t)
TCefResponseFilterStatus = (
RESPONSE_FILTER_NEED_MORE_DATA,
@ -883,45 +831,6 @@ type
GEOPOSITON_ERROR_TIMEOUT
);
// /include/internal/cef_types.h (cef_context_menu_type_flags_t)
TCefContextMenuTypeFlag = (
CM_TYPEFLAG_PAGE,
CM_TYPEFLAG_FRAME,
CM_TYPEFLAG_LINK,
CM_TYPEFLAG_MEDIA,
CM_TYPEFLAG_SELECTION,
CM_TYPEFLAG_EDITABLE
);
TCefContextMenuTypeFlags = set of TCefContextMenuTypeFlag;
// /include/internal/cef_types.h (cef_context_menu_media_state_flags_t)
TCefContextMenuMediaStateFlag = (
CM_MEDIAFLAG_ERROR,
CM_MEDIAFLAG_PAUSED,
CM_MEDIAFLAG_MUTED,
CM_MEDIAFLAG_LOOP,
CM_MEDIAFLAG_CAN_SAVE,
CM_MEDIAFLAG_HAS_AUDIO,
CM_MEDIAFLAG_HAS_VIDEO,
CM_MEDIAFLAG_CONTROL_ROOT_ELEMENT,
CM_MEDIAFLAG_CAN_PRINT,
CM_MEDIAFLAG_CAN_ROTATE
);
TCefContextMenuMediaStateFlags = set of TCefContextMenuMediaStateFlag;
// /include/internal/cef_types.h (cef_context_menu_edit_state_flags_t)
TCefContextMenuEditStateFlag = (
CM_EDITFLAG_CAN_UNDO,
CM_EDITFLAG_CAN_REDO,
CM_EDITFLAG_CAN_CUT,
CM_EDITFLAG_CAN_COPY,
CM_EDITFLAG_CAN_PASTE,
CM_EDITFLAG_CAN_DELETE,
CM_EDITFLAG_CAN_SELECT_ALL,
CM_EDITFLAG_CAN_TRANSLATE
);
TCefContextMenuEditStateFlags = set of TCefContextMenuEditStateFlag;
// /include/internal/cef_types.h (cef_button_state_t)
TCefButtonState = (
CEF_BUTTON_STATE_NORMAL,
@ -955,13 +864,6 @@ type
CEF_MENU_COLOR_COUNT
);
// /include/internal/cef_types.h (cef_ssl_content_status_t)
TCefSSLContentStatusFlags = (
SSL_CONTENT_DISPLAYED_INSECURE_CONTENT,
SSL_CONTENT_RAN_INSECURE_CONTENT
);
TCefSSLContentStatus = set of TCefSSLContentStatusFlags;
// /include/internal/cef_types.h (cef_cdm_registration_error_t)
TCefCDMRegistrationError = (
CEF_CDM_REGISTRATION_ERROR_NONE,

View File

@ -47,18 +47,48 @@ unit uCEFWriteHandler;
interface
uses
{$IFDEF DELPHI16_UP}
WinApi.Windows,
{$ELSE}
Windows,
{$ENDIF}
uCEFBaseRefCounted, uCEFInterfaces, uCEFTypes;
type
TCefWriteHandlerOwn = class(TCefBaseRefCountedOwn, ICefWriteHandler)
protected
function Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt; virtual;
function Seek(offset: Int64; whence: Integer): Integer; virtual;
function Tell: Int64; virtual;
function Flush: Integer; virtual;
function MayBlock: Boolean; virtual;
public
constructor Create; virtual;
protected
function Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt; virtual;
function Seek(offset: Int64; whence: Integer): Integer; virtual;
function Tell: Int64; virtual;
function Flush: Integer; virtual;
function MayBlock: Boolean; virtual;
public
constructor Create; virtual;
end;
TCefBytesWriteHandler = class(TCefWriteHandlerOwn)
protected
FCriticalSection : TRTLCriticalSection;
FGrow : NativeUInt;
FData : Pointer;
FDataSize : int64;
FOffset : int64;
function Grow(size : NativeUInt) : NativeUInt;
public
constructor Create(aGrow : NativeUInt); reintroduce;
destructor Destroy; override;
function Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt; override;
function Seek(offset: Int64; whence: Integer): Integer; override;
function Tell: Int64; override;
function Flush: Integer; override;
function MayBlock: Boolean; override;
function GetData : pointer;
function GetDataSize : int64;
end;
implementation
@ -67,15 +97,17 @@ uses
uCEFMiscFunctions, uCEFLibFunctions;
function cef_write_handler_write(self: PCefWriteHandler; const ptr: Pointer;
size, n: NativeUInt): NativeUInt; stdcall;
// *******************************************
// *********** TCefWriteHandlerOwn ***********
// *******************************************
function cef_write_handler_write(self: PCefWriteHandler; const ptr: Pointer; size, n: NativeUInt): NativeUInt; stdcall;
begin
with TCefWriteHandlerOwn(CefGetObject(self)) do
Result:= Write(ptr, size, n);
end;
function cef_write_handler_seek(self: PCefWriteHandler; offset: Int64;
whence: Integer): Integer; stdcall;
function cef_write_handler_seek(self: PCefWriteHandler; offset: Int64; whence: Integer): Integer; stdcall;
begin
with TCefWriteHandlerOwn(CefGetObject(self)) do
Result := Seek(offset, whence);
@ -102,14 +134,15 @@ end;
constructor TCefWriteHandlerOwn.Create;
begin
inherited CreateData(SizeOf(TCefWriteHandler));
with PCefWriteHandler(FData)^ do
begin
write := cef_write_handler_write;
seek := cef_write_handler_seek;
tell := cef_write_handler_tell;
flush := cef_write_handler_flush;
may_block := cef_write_handler_may_block;
end;
begin
write := cef_write_handler_write;
seek := cef_write_handler_seek;
tell := cef_write_handler_tell;
flush := cef_write_handler_flush;
may_block := cef_write_handler_may_block;
end;
end;
function TCefWriteHandlerOwn.Flush: Integer;
@ -132,10 +165,154 @@ begin
Result := 0;
end;
function TCefWriteHandlerOwn.Write(const ptr: Pointer; size,
n: NativeUInt): NativeUInt;
function TCefWriteHandlerOwn.Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt;
begin
Result := 0;
end;
// *******************************************
// ********** TCefBytesWriteHandler **********
// *******************************************
constructor TCefBytesWriteHandler.Create(aGrow : NativeUInt);
begin
inherited Create;
InitializeCriticalSection(FCriticalSection);
FGrow := aGrow;
FDataSize := aGrow;
FOffset := 0;
GetMem(FData, aGrow);
end;
destructor TCefBytesWriteHandler.Destroy;
begin
if (FData <> nil) then FreeMem(FData);
DeleteCriticalSection(FCriticalSection);
FCriticalSection.DebugInfo := nil;
FCriticalSection.LockCount := 0;
FCriticalSection.RecursionCount := 0;
FCriticalSection.OwningThread := 0;
FCriticalSection.LockSemaphore := 0;
FCriticalSection.Reserved := 0;
inherited Destroy;
end;
function TCefBytesWriteHandler.Write(const ptr: Pointer; size, n: NativeUInt): NativeUInt;
var
TempPointer : pointer;
begin
EnterCriticalSection(FCriticalSection);
if ((FOffset + (size * n)) >= FDataSize) and (Grow(size * n) = 0) then
Result := 0
else
begin
TempPointer := Pointer(PByte(FData) + FOffset);
CopyMemory(TempPointer, ptr, size * n);
FOffset := FOffset + (size * n);
Result := n;
end;
LeaveCriticalSection(FCriticalSection);
end;
function TCefBytesWriteHandler.Seek(offset: Int64; whence: Integer): Integer;
const
SEEK_SET = 0;
SEEK_CUR = 1;
SEEK_END = 2;
var
TempAbsOffset : int64;
begin
EnterCriticalSection(FCriticalSection);
Result := -1;
case whence of
SEEK_CUR :
if not((FOffset + offset > FDataSize) or (FOffset + offset < 0)) then
begin
FOffset := FOffset + offset;
Result := 0;
end;
SEEK_END:
begin
TempAbsOffset := abs(offset);
if not(TempAbsOffset > FDataSize) then
begin
FOffset := FDataSize - TempAbsOffset;
Result := 0;
end;
end;
SEEK_SET:
if not((offset > FDataSize) or (offset < 0)) then
begin
FOffset := offset;
Result := 0;
end;
end;
LeaveCriticalSection(FCriticalSection);
end;
function TCefBytesWriteHandler.Tell: Int64;
begin
EnterCriticalSection(FCriticalSection);
Result := FOffset;
LeaveCriticalSection(FCriticalSection);
end;
function TCefBytesWriteHandler.Flush: Integer;
begin
Result := 0;
end;
function TCefBytesWriteHandler.MayBlock: Boolean;
begin
Result := False;
end;
function TCefBytesWriteHandler.GetData : pointer;
begin
Result := FData;
end;
function TCefBytesWriteHandler.GetDataSize : int64;
begin
Result := FDataSize;
end;
function TCefBytesWriteHandler.Grow(size : NativeUInt) : NativeUInt;
var
s : NativeUInt;
begin
EnterCriticalSection(FCriticalSection);
if (size > FGrow) then
s := size
else
s := FGrow;
ReallocMem(FData, FDataSize + s);
FDataSize := FDataSize + s;
Result := FDataSize;
LeaveCriticalSection(FCriticalSection);
end;
end.

View File

@ -100,7 +100,7 @@ type
implementation
uses
uCEFMiscFunctions, uCEFLibFunctions, uCEFv8Value;
uCEFMiscFunctions, uCEFLibFunctions, uCEFv8Value, uCEFConstants;
function cef_v8_handler_execute(self: PCefv8Handler;
const name: PCefString; obj: PCefv8Value; argumentsCount: NativeUInt;
@ -507,7 +507,7 @@ function TCefRTTIExtension.SetValue(const v: TValue; var ret: ICefv8Value): Bool
begin
vl := rf.GetValue(rec);
SetValue(vl, o);
v8.SetValueByKey(rf.Name, o, []);
v8.SetValueByKey(rf.Name, o, V8_PROPERTY_ATTRIBUTE_NONE);
end;
end)
end else
@ -516,7 +516,7 @@ function TCefRTTIExtension.SetValue(const v: TValue; var ret: ICefv8Value): Bool
vl := rf.GetValue(rec);
if not SetValue(vl, v8) then
Exit(False);
ret.SetValueByKey(rf.Name, v8, []);
ret.SetValueByKey(rf.Name, v8, V8_PROPERTY_ATTRIBUTE_NONE);
end;
Result := True;
end;
@ -548,7 +548,7 @@ function TCefRTTIExtension.SetValue(const v: TValue; var ret: ICefv8Value): Bool
if m.Visibility > mvProtected then
begin
f := TCefv8ValueRef.NewFunction(m.Name, Self);
ret.SetValueByKey(m.Name, f, []);
ret.SetValueByKey(m.Name, f, V8_PROPERTY_ATTRIBUTE_NONE);
end;
for p in rt.GetProperties do
@ -614,7 +614,7 @@ function TCefRTTIExtension.SetValue(const v: TValue; var ret: ICefv8Value): Bool
if (m.Visibility > mvProtected) and (m.MethodKind in [mkClassProcedure, mkClassFunction]) then
begin
f := TCefv8ValueRef.NewFunction(m.Name, Self);
ret.SetValueByKey(m.Name, f, []);
ret.SetValueByKey(m.Name, f, V8_PROPERTY_ATTRIBUTE_NONE);
end;
end;
@ -680,7 +680,7 @@ function TCefRTTIExtension.SetValue(const v: TValue; var ret: ICefv8Value): Bool
if m.Visibility > mvProtected then
begin
f := TCefv8ValueRef.NewFunction(m.Name, Self);
ret.SetValueByKey(m.Name, f, []);
ret.SetValueByKey(m.Name, f, V8_PROPERTY_ATTRIBUTE_NONE);
end;
Result := True;

619
source/uOLEDragAndDrop.pas Normal file
View File

@ -0,0 +1,619 @@
// ************************************************************************
// ***************************** CEF4Delphi *******************************
// ************************************************************************
//
// CEF4Delphi is based on DCEF3 which uses CEF3 to embed a chromium-based
// browser in Delphi applications.
//
// The original license of DCEF3 still applies to CEF4Delphi.
//
// For more information about CEF4Delphi visit :
// https://www.briskbard.com/index.php?lang=en&pageid=cef
//
// Copyright © 2017 Salvador Díaz Fau. All rights reserved.
//
// ************************************************************************
// ************ vvvv Original license and comments below vvvv *************
// ************************************************************************
(*
* Delphi Chromium Embedded 3
*
* Usage allowed under the restrictions of the Lesser GNU General Public License
* or alternatively the restrictions of the Mozilla Public License 1.1
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for
* the specific language governing rights and limitations under the License.
*
* Unit owner : Henri Gourvest <hgourvest@gmail.com>
* Web site : http://www.progdigy.com
* Repository : http://code.google.com/p/delphichromiumembedded/
* Group : http://groups.google.com/group/delphichromiumembedded
*
* Embarcadero Technologies, Inc is not permitted to use or redistribute
* this source code without explicit permission.
*
*)
unit uOLEDragAndDrop;
{$I cef.inc}
interface
uses
{$IFDEF DELPHI16_UP}
WinApi.Windows, System.Classes, System.Math, WinApi.ShlObj, WinApi.ActiveX;
{$ELSE}
Windows, Classes, Math, ShlObj, ActiveX;
{$ENDIF}
const
CUSTOM_ARRAY_LENGTH = 25;
type
TOLEMediumArray = array [0..pred(CUSTOM_ARRAY_LENGTH)] of TStgMedium;
TOLEFormatArray = array [0..pred(CUSTOM_ARRAY_LENGTH)] of TFormatEtc;
TOLEDragAndDropMgr = class
protected
function GetStorageForBytes(var aMedium : TStgMedium; const aData : pointer; aLength : NativeUInt) : boolean;
function GetStorageForString(var aMedium : TStgMedium; const aData : WideString) : boolean; overload;
function GetStorageForString(var aMedium : TStgMedium; const aData : AnsiString) : boolean; overload;
function GetStorageForFileDescriptor(var aMedium : TStgMedium; const aFileName : string) : boolean;
public
function DragEnter(const DataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; virtual;
function DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; virtual;
function DragLeave: HRESULT; virtual;
function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; virtual;
end;
TOLEEnumFormatEtc = class(TInterfacedObject, IEnumFormatEtc)
protected
FIndex : integer;
FNumFormats : integer;
FFormatArray : TOLEFormatArray;
procedure CopyFromFormatArray(const aSrcFormatArray : TOLEFormatArray);
procedure CopyFormatEtc(var aDstFormatEtc : TFormatEtc; const aSrcFormatEtc : TFormatEtc);
public
constructor Create; overload;
constructor Create(const aFormatArray : TOLEFormatArray; aNumFormats : integer; aIndex : integer = 0); overload;
destructor Destroy; override;
// IEnumFormatEtc
function Next(Celt: LongInt; out Elt; pCeltFetched: pLongInt): HRESULT; stdcall;
function Skip(Celt: Longint): HRESULT; stdcall;
function Reset: HRESULT; stdcall;
function Clone(out Enum: IEnumFormatEtc): HRESULT; stdcall;
end;
TOLEDropSource = class(TInterfacedObject, IDropSource)
public
// IDropSource
function QueryContinueDrag(fEscapePressed: bool; grfKeyState: LongInt): HRESULT; stdcall;
function GiveFeedback(dwEffect: LongInt): HRESULT; stdcall;
end;
TOLEDataObject = class(TInterfacedObject, IDataObject)
protected
FNumFormats : integer;
FFormatArray : TOLEFormatArray;
FMediumArray : TOLEMediumArray;
FAsync : boolean;
FInOperation : boolean;
function LookupFormatEtc(const aFormatEtc : TFormatEtc) : integer;
function DupGlobalMem(hMem : HGLOBAL) : HGLOBAL;
public
constructor Create(const aFormatArray : TOLEFormatArray; const aMediumArray : TOLEMediumArray; aNumFormats : integer); reintroduce;
// IDataObject
function GetData(const FormatEtcIn: TFormatEtc; out Medium: TStgMedium):HRESULT; stdcall;
function GetDataHere(const FormatEtc: TFormatEtc; out Medium: TStgMedium):HRESULT; stdcall;
function QueryGetData(const FormatEtc: TFormatEtc): HRESULT; stdcall;
function GetCanonicalFormatEtc(const FormatEtc: TFormatEtc; out FormatEtcout: TFormatEtc): HRESULT; stdcall;
function SetData(const FormatEtc: TFormatEtc; var Medium: TStgMedium; fRelease: Bool): HRESULT; stdcall;
function EnumFormatEtc(dwDirection: LongInt; out aEnumFormatEtc: IEnumFormatEtc): HRESULT; stdcall;
function dAdvise(const FormatEtc: TFormatEtc; advf: LongInt; const advsink: IAdviseSink; out dwConnection: LongInt): HRESULT; stdcall;
function dUnadvise(dwConnection: LongInt): HRESULT; stdcall;
function EnumdAdvise(out EnumAdvise: IEnumStatData): HRESULT; stdcall;
end;
TOLEDropTarget = class(TInterfacedObject, IDropTarget)
protected
FManager : TOLEDragAndDropMgr;
public
constructor Create(const aManager : TOLEDragAndDropMgr); reintroduce;
// IDropTarget
function DragEnter(const DataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
function DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
function DragLeave: HRESULT; stdcall;
function Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
end;
implementation
// *****************************************************
// *************** TOLEDragAndDropMgr ******************
// *****************************************************
function TOLEDragAndDropMgr.GetStorageForBytes(var aMedium : TStgMedium; const aData : pointer; aLength : NativeUInt) : boolean;
var
TempHandle : HGLOBAL;
TempPointer : pointer;
begin
Result := False;
if (aData <> nil) then
begin
TempHandle := GlobalAlloc(GHND, aLength);
if (TempHandle <> 0) then
begin
TempPointer := GlobalLock(TempHandle);
if (TempPointer <> nil) then
begin
Move(aData^, TempPointer^, aLength);
aMedium.hGlobal := TempHandle;
aMedium.tymed := TYMED_HGLOBAL;
aMedium.unkForRelease := nil;
GlobalUnlock(TempHandle);
Result := True;
end
else
GlobalFree(TempHandle);
end;
end;
end;
function TOLEDragAndDropMgr.GetStorageForString(var aMedium : TStgMedium; const aData : WideString) : boolean;
var
TempPointer : pointer;
begin
Result := False;
if (length(aData) > 0) then
begin
TempPointer := @aData[1];
Result := GetStorageForBytes(aMedium, TempPointer, length(aData) * SizeOf(WideChar));
end;
end;
function TOLEDragAndDropMgr.GetStorageForString(var aMedium : TStgMedium; const aData : AnsiString) : boolean;
var
TempPointer : pointer;
begin
Result := False;
if (length(aData) > 0) then
begin
TempPointer := @aData[1];
Result := GetStorageForBytes(aMedium, TempPointer, length(aData) * SizeOf(AnsiChar));
end;
end;
function TOLEDragAndDropMgr.GetStorageForFileDescriptor(var aMedium : TStgMedium; const aFileName : string) : boolean;
var
TempHandle : HGLOBAL;
TempDescriptor : TFileGroupDescriptor;
TempPointer : pointer;
i, j : integer;
TempString : string;
begin
Result := False;
if (length(aFileName) > 0) then
begin
TempHandle := GlobalAlloc(GHND, sizeof(TFileGroupDescriptor));
if (TempHandle <> 0) then
begin
TempPointer := GlobalLock(TempHandle);
if (TempPointer <> nil) then
begin
TempDescriptor := TFileGroupDescriptor(TempPointer^);
TempDescriptor.cItems := 1;
TempDescriptor.fgd[0].dwFlags := FD_LINKUI;
TempString := aFileName + #0;
i := 1;
j := length(TempString);
while (i <= j) do
begin
TempDescriptor.fgd[0].cFileName[pred(i)] := TempString[i];
inc(i);
end;
aMedium.tymed := TYMED_HGLOBAL;
aMedium.hGlobal := TempHandle;
aMedium.unkForRelease := nil;
GlobalUnlock(TempHandle);
Result := True;
end
else
GlobalFree(TempHandle);
end;
end;
end;
function TOLEDragAndDropMgr.DragEnter(const DataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT;
begin
Result := S_OK;
dwEffect := DROPEFFECT_NONE;
end;
function TOLEDragAndDropMgr.DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT;
begin
Result := S_OK;
dwEffect := DROPEFFECT_NONE;
end;
function TOLEDragAndDropMgr.DragLeave: HRESULT;
begin
Result := S_OK;
end;
function TOLEDragAndDropMgr.Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT;
begin
Result := S_OK;
dwEffect := DROPEFFECT_NONE;
end;
// *****************************************************
// **************** TOLEEnumFormatEtc ******************
// *****************************************************
constructor TOLEEnumFormatEtc.Create;
begin
inherited Create;
FIndex := 0;
FNumFormats := 0;
end;
constructor TOLEEnumFormatEtc.Create(const aFormatArray : TOLEFormatArray; aNumFormats, aIndex : integer);
begin
inherited Create;
FIndex := aIndex;
FNumFormats := min(aNumFormats, CUSTOM_ARRAY_LENGTH);
CopyFromFormatArray(aFormatArray);
end;
destructor TOLEEnumFormatEtc.Destroy;
var
i : integer;
begin
i := 0;
while (i < FNumFormats) do
begin
if (FFormatArray[i].ptd <> nil) then CoTaskMemFree(FFormatArray[i].ptd);
inc(i);
end;
inherited Destroy;
end;
procedure TOLEEnumFormatEtc.CopyFromFormatArray(const aSrcFormatArray : TOLEFormatArray);
var
i : integer;
begin
i := 0;
while (i < FNumFormats) do
begin
CopyFormatEtc(FFormatArray[i], aSrcFormatArray[i]);
inc(i);
end;
end;
procedure TOLEEnumFormatEtc.CopyFormatEtc(var aDstFormatEtc : TFormatEtc; const aSrcFormatEtc : TFormatEtc);
begin
aDstFormatEtc.cfFormat := aSrcFormatEtc.cfFormat;
aDstFormatEtc.dwAspect := aSrcFormatEtc.dwAspect;
aDstFormatEtc.lindex := aSrcFormatEtc.lindex;
aDstFormatEtc.tymed := aSrcFormatEtc.tymed;
if (aSrcFormatEtc.ptd = nil) then
aDstFormatEtc.ptd := nil
else
begin
aDstFormatEtc.ptd := CoTaskMemAlloc(SizeOf(TDVTargetDevice));
aDstFormatEtc.ptd.tdSize := aSrcFormatEtc.ptd.tdSize;
aDstFormatEtc.ptd.tdDriverNameOffset := aSrcFormatEtc.ptd.tdDriverNameOffset;
aDstFormatEtc.ptd.tdDeviceNameOffset := aSrcFormatEtc.ptd.tdDeviceNameOffset;
aDstFormatEtc.ptd.tdPortNameOffset := aSrcFormatEtc.ptd.tdPortNameOffset;
aDstFormatEtc.ptd.tdExtDevmodeOffset := aSrcFormatEtc.ptd.tdExtDevmodeOffset;
aDstFormatEtc.ptd.tdData := aSrcFormatEtc.ptd.tdData;
end;
end;
function TOLEEnumFormatEtc.Next(Celt: LongInt; out Elt; pCeltFetched: pLongInt): HRESULT;
var
i : integer;
TempArray : TOLEFormatArray absolute Elt;
begin
i := 0;
while (i < Celt) and (FIndex < FNumFormats) do
begin
CopyFormatEtc(TempArray[i], FFormatArray[FIndex]);
inc(i);
inc(FIndex);
end;
if (pCeltFetched <> nil) then pCeltFetched^ := i;
if (i = Celt) then
Result := S_OK
else
Result := S_FALSE;
end;
function TOLEEnumFormatEtc.Skip(Celt: Longint): HRESULT;
begin
FIndex := FIndex + Celt;
if (FIndex <= FNumFormats) then
Result := S_OK
else
Result := S_FALSE;
end;
function TOLEEnumFormatEtc.Reset: HRESULT;
begin
FIndex := 0;
Result := S_OK;
end;
function TOLEEnumFormatEtc.Clone(out Enum: IEnumFormatEtc): HRESULT;
begin
Enum := TOLEEnumFormatEtc.Create(FFormatArray, FNumFormats, FIndex);
Result := S_OK;
end;
// *****************************************************
// ****************** TOLEDropTarget *******************
// *****************************************************
constructor TOLEDropTarget.Create(const aManager : TOLEDragAndDropMgr);
begin
inherited Create;
FManager := aManager;
end;
function TOLEDropTarget.DragEnter(const DataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
begin
Result := FManager.DragEnter(DataObj, grfKeyState, pt, dwEffect);
end;
function TOLEDropTarget.DragOver(grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
begin
Result := FManager.DragOver(grfKeyState, pt, dwEffect);
end;
function TOLEDropTarget.DragLeave: HRESULT; stdcall;
begin
Result := FManager.DragLeave;
end;
function TOLEDropTarget.Drop(const dataObj: IDataObject; grfKeyState: Longint; pt: TPoint; var dwEffect: Longint): HRESULT; stdcall;
begin
Result := FManager.Drop(dataObj, grfKeyState, pt, dwEffect);
end;
// *****************************************************
// ****************** TOLEDropSource *******************
// *****************************************************
function TOLEDropSource.QueryContinueDrag(fEscapePressed: bool; grfKeyState: LongInt): HRESULT; stdcall;
begin
if fEscapePressed then
Result := DRAGDROP_S_CANCEL
else
if ((grfKeyState and MK_LBUTTON) = 0) then
Result := DRAGDROP_S_DROP
else
Result := S_OK;
end;
function TOLEDropSource.GiveFeedback(dwEffect: LongInt): HRESULT; stdcall;
begin
Result := DRAGDROP_S_USEDEFAULTCURSORS;
end;
// *****************************************************
// ****************** TOLEDataObject *******************
// *****************************************************
constructor TOLEDataObject.Create(const aFormatArray : TOLEFormatArray;
const aMediumArray : TOLEMediumArray;
aNumFormats : integer);
var
i : integer;
begin
inherited Create;
FAsync := False;
FInOperation := False;
FNumFormats := min(aNumFormats, CUSTOM_ARRAY_LENGTH);
i := 0;
while (i < FNumFormats) do
begin
FFormatArray[i].cfFormat := aFormatArray[i].cfFormat;
FFormatArray[i].ptd := aFormatArray[i].ptd;
FFormatArray[i].dwAspect := aFormatArray[i].dwAspect;
FFormatArray[i].lindex := aFormatArray[i].lindex;
FFormatArray[i].tymed := aFormatArray[i].tymed;
FMediumArray[i] := aMediumArray[i];
inc(i);
end;
end;
function TOLEDataObject.LookupFormatEtc(const aFormatEtc : TFormatEtc) : integer;
var
i : integer;
begin
Result := -1;
i := 0;
while (i < FNumFormats) do
if ((FFormatArray[i].tymed and aFormatEtc.tymed) <> 0) and
(FFormatArray[i].cfFormat = aFormatEtc.cfFormat) and
(FFormatArray[i].dwAspect = aFormatEtc.dwAspect) then
begin
Result := i;
exit;
end
else
inc(i);
end;
function TOLEDataObject.DupGlobalMem(hMem : HGLOBAL) : HGLOBAL;
var
TempLen : cardinal;
TempHandle : HGLOBAL;
TempSrc : Pointer;
TempDst : Pointer;
begin
Result := 0;
TempSrc := GlobalLock(hMem);
if (TempSrc <> nil) then
begin
TempLen := GlobalSize(hMem);
TempHandle := GlobalAlloc(GHND, TempLen);
if (TempHandle <> 0) then
begin
TempDst := GlobalLock(TempHandle);
if (TempDst <> nil) then
begin
Move(TempSrc^, TempDst^, TempLen);
Result := TempHandle;
GlobalUnlock(TempHandle);
end
else
GlobalFree(TempHandle);
end;
GlobalUnlock(hMem);
end;
end;
function TOLEDataObject.GetData(const FormatEtcIn: TFormatEtc; out Medium: TStgMedium):HRESULT; stdcall;
var
i : integer;
begin
i := LookupFormatEtc(FormatEtcIn);
if (i < 0) or ((FFormatArray[i].tymed and TYMED_HGLOBAL) = 0) then
begin
Medium.tymed := TYMED_NULL;
Medium.unkForRelease := nil;
Medium.hGlobal := 0;
Result := DV_E_FORMATETC;
end
else
begin
Medium.tymed := FFormatArray[i].tymed;
Medium.unkForRelease := nil;
Medium.hGlobal := DupGlobalMem(FMediumArray[i].hGlobal);
Result := S_OK;
end;
end;
function TOLEDataObject.GetDataHere(const FormatEtc: TFormatEtc; out Medium: TStgMedium):HRESULT; stdcall;
begin
Result := DV_E_FORMATETC;
end;
function TOLEDataObject.QueryGetData(const FormatEtc: TFormatEtc): HRESULT; stdcall;
begin
if (LookupFormatEtc(FormatEtc) < 0) then
Result := DV_E_FORMATETC
else
Result := S_OK;
end;
function TOLEDataObject.GetCanonicalFormatEtc(const FormatEtc: TFormatEtc; out FormatEtcout: TFormatEtc): HRESULT; stdcall;
begin
FormatEtcout.cfFormat := 0;
FormatEtcout.dwAspect := DVASPECT_CONTENT;
FormatEtcout.lindex := -1;
FormatEtcout.tymed := TYMED_NULL;
FormatEtcout.ptd := nil;
Result := E_NOTIMPL;
end;
function TOLEDataObject.SetData(const FormatEtc: TFormatEtc; var Medium: TStgMedium; fRelease: Bool): HRESULT; stdcall;
begin
Result := E_NOTIMPL;
end;
function TOLEDataObject.EnumFormatEtc(dwDirection: LongInt; out aEnumFormatEtc: IEnumFormatEtc): HRESULT; stdcall;
begin
if (dwDirection = DATADIR_GET) then
begin
aEnumFormatEtc := TOLEEnumFormatEtc.Create(FFormatArray, FNumFormats);
Result := S_OK;
end
else
begin
aEnumFormatEtc := nil;
if (dwDirection = DATADIR_SET) then
Result := E_NOTIMPL
else
Result := E_INVALIDARG;
end;
end;
function TOLEDataObject.dAdvise(const FormatEtc: TFormatEtc;
advf: LongInt;
const advsink: IAdviseSink;
out dwConnection: LongInt): HRESULT; stdcall;
begin
Result := OLE_E_ADVISENOTSUPPORTED;
end;
function TOLEDataObject.dUnadvise(dwConnection: LongInt): HRESULT; stdcall;
begin
Result := OLE_E_ADVISENOTSUPPORTED;
end;
function TOLEDataObject.EnumdAdvise(out EnumAdvise: IEnumStatData): HRESULT; stdcall;
begin
Result := OLE_E_ADVISENOTSUPPORTED;
end;
end.