diff --git a/demos/CustomResourceBrowser/CRBrowser.dpr b/demos/CustomResourceBrowser/CRBrowser.dpr index 50185f60..66286221 100644 --- a/demos/CustomResourceBrowser/CRBrowser.dpr +++ b/demos/CustomResourceBrowser/CRBrowser.dpr @@ -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 diff --git a/demos/CustomResourceBrowser/CRBrowser.dproj b/demos/CustomResourceBrowser/CRBrowser.dproj index 3dd406b0..fe7fcff7 100644 --- a/demos/CustomResourceBrowser/CRBrowser.dproj +++ b/demos/CustomResourceBrowser/CRBrowser.dproj @@ -134,12 +134,27 @@ true - + + + 0 + .dll;.bpl + 1 + .dylib + + + Contents\MacOS + 1 + .dylib 1 + .dylib + + + 1 + .dylib @@ -493,27 +508,12 @@ 1 - - - 0 - .dll;.bpl - + 1 - .dylib - - - Contents\MacOS - 1 - .dylib 1 - .dylib - - - 1 - .dylib diff --git a/demos/CustomResourceBrowser/CRBrowser.dproj.local b/demos/CustomResourceBrowser/CRBrowser.dproj.local index af187ba0..4b5e7f47 100644 --- a/demos/CustomResourceBrowser/CRBrowser.dproj.local +++ b/demos/CustomResourceBrowser/CRBrowser.dproj.local @@ -2,9 +2,9 @@ 2017/07/01 10:31:40.000.157,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas - 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 - 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 - 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 + 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 + 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 + 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 2017/07/01 10:54:08.000.543,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\CustomResourceBrowser\uCustomResourceHandler.pas diff --git a/demos/CustomResourceBrowser/CRBrowser.dsk b/demos/CustomResourceBrowser/CRBrowser.dsk index 1104bf88..b281a491 100644 --- a/demos/CustomResourceBrowser/CRBrowser.dsk +++ b/demos/CustomResourceBrowser/CRBrowser.dsk @@ -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 diff --git a/demos/CustomResourceBrowser/CRBrowser.stat b/demos/CustomResourceBrowser/CRBrowser.stat index 7169b3e9..fe3c235c 100644 --- a/demos/CustomResourceBrowser/CRBrowser.stat +++ b/demos/CustomResourceBrowser/CRBrowser.stat @@ -1,5 +1,5 @@ [Stats] -EditorSecs=425 +EditorSecs=443 DesignerSecs=9 InspectorSecs=14 CompileSecs=40629 diff --git a/demos/FullScreenBrowser/FullScreenBrowser.dproj.local b/demos/FullScreenBrowser/FullScreenBrowser.dproj.local index 8c68bb2c..3acf1ce5 100644 --- a/demos/FullScreenBrowser/FullScreenBrowser.dproj.local +++ b/demos/FullScreenBrowser/FullScreenBrowser.dproj.local @@ -2,11 +2,11 @@ 2017/05/21 18:54:00.000.243,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas - 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 - 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 - 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 - 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 - 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 - 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 + 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 + 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 + 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 + 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 + 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 + 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 diff --git a/demos/FullScreenBrowser/FullScreenBrowser.dsk b/demos/FullScreenBrowser/FullScreenBrowser.dsk index c6315946..59d06006 100644 --- a/demos/FullScreenBrowser/FullScreenBrowser.dsk +++ b/demos/FullScreenBrowser/FullScreenBrowser.dsk @@ -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 diff --git a/demos/FullScreenBrowser/FullScreenBrowser.stat b/demos/FullScreenBrowser/FullScreenBrowser.stat index c2047e1a..3f191960 100644 --- a/demos/FullScreenBrowser/FullScreenBrowser.stat +++ b/demos/FullScreenBrowser/FullScreenBrowser.stat @@ -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 diff --git a/demos/MiniBrowser/MiniBrowser.dpr b/demos/MiniBrowser/MiniBrowser.dpr index 52e1d7f5..7454e581 100644 --- a/demos/MiniBrowser/MiniBrowser.dpr +++ b/demos/MiniBrowser/MiniBrowser.dpr @@ -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; diff --git a/demos/MiniBrowser/MiniBrowser.dproj b/demos/MiniBrowser/MiniBrowser.dproj index 01f060c9..94aa3273 100644 --- a/demos/MiniBrowser/MiniBrowser.dproj +++ b/demos/MiniBrowser/MiniBrowser.dproj @@ -106,6 +106,10 @@
PreferencesFrm
+ +
SimpleTextViewerFrm
+ dfm +
Cfg_2 Base diff --git a/demos/MiniBrowser/MiniBrowser.dproj.local b/demos/MiniBrowser/MiniBrowser.dproj.local index 486717c4..9ecc44ec 100644 --- a/demos/MiniBrowser/MiniBrowser.dproj.local +++ b/demos/MiniBrowser/MiniBrowser.dproj.local @@ -2,16 +2,19 @@ 2017/02/11 10:15:32.000.980,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas - 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 - 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 - 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 + 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 + 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 + 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 2017/02/11 17:10:26.000.471,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas - 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 + 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 2017/03/12 17:11:11.000.786,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uFileScheme.pas 2017/03/13 19:22:41.000.994,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uFileScheme.pas= 2017/03/13 19:23:05.000.371,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\uHelloScheme.pas 2017/03/15 12:39:07.000.741,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas - 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 - 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 + 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 + 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 + 2017/07/14 11:54:07.000.560,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\MiniBrowser\Unit1.pas + 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 + 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 diff --git a/demos/MiniBrowser/MiniBrowser.dsk b/demos/MiniBrowser/MiniBrowser.dsk index 0ee4831d..38c5ffc4 100644 --- a/demos/MiniBrowser/MiniBrowser.dsk +++ b/demos/MiniBrowser/MiniBrowser.dsk @@ -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 diff --git a/demos/MiniBrowser/MiniBrowser.identcache b/demos/MiniBrowser/MiniBrowser.identcache index 2641a479..c013deea 100644 Binary files a/demos/MiniBrowser/MiniBrowser.identcache and b/demos/MiniBrowser/MiniBrowser.identcache differ diff --git a/demos/MiniBrowser/MiniBrowser.stat b/demos/MiniBrowser/MiniBrowser.stat index 3de4e5db..9a3dd0db 100644 --- a/demos/MiniBrowser/MiniBrowser.stat +++ b/demos/MiniBrowser/MiniBrowser.stat @@ -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 diff --git a/demos/MiniBrowser/uMiniBrowser.pas b/demos/MiniBrowser/uMiniBrowser.pas index bd225cd4..3bcfc0c7 100644 --- a/demos/MiniBrowser/uMiniBrowser.pas +++ b/demos/MiniBrowser/uMiniBrowser.pas @@ -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; diff --git a/demos/MiniBrowser/uSimpleTextViewer.dfm b/demos/MiniBrowser/uSimpleTextViewer.dfm new file mode 100644 index 00000000..3472aa53 --- /dev/null +++ b/demos/MiniBrowser/uSimpleTextViewer.dfm @@ -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 diff --git a/demos/MiniBrowser/uSimpleTextViewer.pas b/demos/MiniBrowser/uSimpleTextViewer.pas new file mode 100644 index 00000000..3ed33ee2 --- /dev/null +++ b/demos/MiniBrowser/uSimpleTextViewer.pas @@ -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. diff --git a/demos/MiniBrowser/uTestExtension.pas b/demos/MiniBrowser/uTestExtension.pas index 00100aca..4f182b6d 100644 --- a/demos/MiniBrowser/uTestExtension.pas +++ b/demos/MiniBrowser/uTestExtension.pas @@ -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. diff --git a/demos/SimpleBrowser/SimpleBrowser.dproj.local b/demos/SimpleBrowser/SimpleBrowser.dproj.local index 3aa584d9..0d6eeadf 100644 --- a/demos/SimpleBrowser/SimpleBrowser.dproj.local +++ b/demos/SimpleBrowser/SimpleBrowser.dproj.local @@ -2,8 +2,8 @@ 2017/01/22 14:37:05.000.577,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas - 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 - 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 - 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 + 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 + 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 + 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 diff --git a/demos/SimpleBrowser/SimpleBrowser.dsk b/demos/SimpleBrowser/SimpleBrowser.dsk index 2ba6627a..b72d8e3f 100644 --- a/demos/SimpleBrowser/SimpleBrowser.dsk +++ b/demos/SimpleBrowser/SimpleBrowser.dsk @@ -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 diff --git a/demos/SimpleBrowser/SimpleBrowser.identcache b/demos/SimpleBrowser/SimpleBrowser.identcache index a0fa6580..06271b87 100644 Binary files a/demos/SimpleBrowser/SimpleBrowser.identcache and b/demos/SimpleBrowser/SimpleBrowser.identcache differ diff --git a/demos/SimpleBrowser/SimpleBrowser.stat b/demos/SimpleBrowser/SimpleBrowser.stat index f15c3c57..225c6e1c 100644 --- a/demos/SimpleBrowser/SimpleBrowser.stat +++ b/demos/SimpleBrowser/SimpleBrowser.stat @@ -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 diff --git a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dpr b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dpr index ee1c0194..53156764 100644 --- a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dpr +++ b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dpr @@ -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; diff --git a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dproj.local b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dproj.local index 6f99c976..f14fdcf0 100644 --- a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dproj.local +++ b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dproj.local @@ -2,8 +2,8 @@ 2017/01/22 17:26:58.000.836,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas - 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 - 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 - 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 + 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 + 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 + 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 diff --git a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk index 96c5ee95..68dd4e48 100644 --- a/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk +++ b/demos/SimpleOSRBrowser/SimpleOSRBrowser.dsk @@ -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 diff --git a/demos/SimpleOSRBrowser/SimpleOSRBrowser.stat b/demos/SimpleOSRBrowser/SimpleOSRBrowser.stat index 23bcc64d..533d0a11 100644 --- a/demos/SimpleOSRBrowser/SimpleOSRBrowser.stat +++ b/demos/SimpleOSRBrowser/SimpleOSRBrowser.stat @@ -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 diff --git a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm index d8031018..e0f30828 100644 --- a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm +++ b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.dfm @@ -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 diff --git a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas index 89b4ee48..71acee9e 100644 --- a/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas +++ b/demos/SimpleOSRBrowser/uSimpleOSRBrowser.pas @@ -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. diff --git a/demos/ToolBoxBrowser/ToolBoxBrowser.dproj.local b/demos/ToolBoxBrowser/ToolBoxBrowser.dproj.local index 7dde1148..8d868d00 100644 --- a/demos/ToolBoxBrowser/ToolBoxBrowser.dproj.local +++ b/demos/ToolBoxBrowser/ToolBoxBrowser.dproj.local @@ -2,11 +2,11 @@ 2017/05/21 15:39:53.000.029,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\Unit1.pas - 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 - 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 - 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 + 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 + 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 + 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 2017/05/21 15:44:20.000.154,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\demos\ToolBoxBrowser\Unit2.pas - 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 - 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 + 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 + 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 diff --git a/demos/ToolBoxBrowser/ToolBoxBrowser.dsk b/demos/ToolBoxBrowser/ToolBoxBrowser.dsk index ae9f65b8..168524f8 100644 --- a/demos/ToolBoxBrowser/ToolBoxBrowser.dsk +++ b/demos/ToolBoxBrowser/ToolBoxBrowser.dsk @@ -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 diff --git a/demos/ToolBoxBrowser/ToolBoxBrowser.stat b/demos/ToolBoxBrowser/ToolBoxBrowser.stat index 2dfd6589..11b8aee4 100644 --- a/demos/ToolBoxBrowser/ToolBoxBrowser.stat +++ b/demos/ToolBoxBrowser/ToolBoxBrowser.stat @@ -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 diff --git a/source/CEF4Delphi.dpk b/source/CEF4Delphi.dpk index e8134ef0..f6e0b8f5 100644 --- a/source/CEF4Delphi.dpk +++ b/source/CEF4Delphi.dpk @@ -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. diff --git a/source/CEF4Delphi.dproj b/source/CEF4Delphi.dproj index ba31adda..93c1f00a 100644 --- a/source/CEF4Delphi.dproj +++ b/source/CEF4Delphi.dproj @@ -210,6 +210,8 @@ + + Cfg_2 Base diff --git a/source/CEF4Delphi.dproj.local b/source/CEF4Delphi.dproj.local index a99f126e..3e2c5ec0 100644 --- a/source/CEF4Delphi.dproj.local +++ b/source/CEF4Delphi.dproj.local @@ -2,288 +2,289 @@ 2016/11/03 13:34:24.000.622,=rtl.dcp - 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 + 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 2016/11/03 13:37:44.000.301,=C:\Program Files\Embarcadero\Studio\17.0\cef3\ceferr.pas - 2016/11/03 13:37:45.000.236,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefreg.pas 2016/11/03 13:37:45.000.074,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefgui.pas 2016/11/03 13:37:45.000.219,=C:\Program Files\Embarcadero\Studio\17.0\cef3\ceflib.pas + 2016/11/03 13:37:45.000.236,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefreg.pas 2016/11/03 13:37:47.000.876,=C:\Program Files\Embarcadero\Studio\17.0\cef3\cefvcl.pas 2016/11/03 13:42:03.000.211,=vcl.dcp 2016/11/03 14:22:14.000.293,C:\Program Files\Embarcadero\Studio\17.0\cef3\ceferr.pas= 2016/11/03 14:22:31.000.065,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/03 16:02:18.000.380,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 - 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 + 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 + 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 2016/11/03 19:41:47.000.437,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/03 19:47:24.000.150,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 09:38:54.000.499,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 - 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 + 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 + 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 2016/11/04 10:19:09.000.192,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 10:28:32.000.523,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 10:53:47.000.492,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 10:57:19.000.058,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 11:12:13.000.709,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 11:18:45.000.858,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 11:22:59.000.325,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 11:30:13.000.870,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 11:33:29.000.686,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 11:36:10.000.379,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 11:40:42.000.080,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:04:55.000.807,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 - 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 - 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 - 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 + 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 + 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 + 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 + 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 2016/11/04 12:12:39.000.648,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:16:41.000.794,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:21:00.000.581,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:25:08.000.825,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:31:41.000.426,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:37:26.000.233,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:41:15.000.143,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:44:15.000.121,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:47:43.000.602,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:54:00.000.201,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 12:57:30.000.891,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 13:01:09.000.833,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 13:57:45.000.846,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 14:31:30.000.550,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 14:34:17.000.090,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 14:37:55.000.209,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 14:41:40.000.277,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 - 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 - 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 - 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 + 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 + 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 + 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 + 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 2016/11/04 15:35:00.000.300,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 15:41:55.000.278,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 15:45:35.000.950,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 15:50:29.000.265,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 15:56:26.000.967,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 15:59:45.000.629,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:02:33.000.750,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:05:14.000.727,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:07:34.000.747,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:10:46.000.310,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:14:08.000.188,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:18:01.000.623,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:21:06.000.326,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 - 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 + 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 + 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 2016/11/04 16:29:59.000.889,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:32:14.000.814,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:33:41.000.767,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:35:36.000.010,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:37:53.000.753,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:39:57.000.905,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:41:56.000.888,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:43:23.000.259,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:45:02.000.388,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:47:31.000.384,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:48:49.000.916,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:52:24.000.501,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 16:57:17.000.239,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:00:50.000.674,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:03:15.000.546,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:10:43.000.387,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:11:52.000.079,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:13:03.000.928,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:15:01.000.582,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:16:26.000.528,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:17:43.000.074,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:29:30.000.463,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:32:01.000.224,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:34:32.000.893,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:38:58.000.648,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:40:44.000.949,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:43:27.000.412,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:45:13.000.508,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:46:27.000.140,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:49:03.000.980,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:50:22.000.655,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:51:12.000.076,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:52:26.000.379,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:53:51.000.704,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:55:42.000.326,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 17:57:33.000.807,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:01:03.000.908,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:03:22.000.002,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:04:54.000.070,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:08:01.000.312,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:09:22.000.047,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:10:56.000.167,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:11:49.000.619,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:13:17.000.596,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:14:46.000.315,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:17:10.000.544,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:18:17.000.655,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:19:36.000.246,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:21:23.000.319,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:22:54.000.779,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:24:23.000.928,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:25:31.000.691,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:26:54.000.263,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/04 18:28:19.000.494,C:\Program Files\Embarcadero\Studio\17.0\cef3\ceflib.pas= - 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 + 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 2016/11/05 09:18:32.000.021,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 - 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 + 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 + 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 2016/11/06 17:42:31.000.412,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/06 17:57:18.000.164,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFCookieDeleterTask.pas= 2016/11/13 17:16:54.000.597,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/13 18:46:07.000.526,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/14 14:57:55.000.572,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas= 2016/11/25 09:35:30.000.156,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas 2016/11/25 09:39:41.000.590,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas= 2016/11/29 09:52:14.000.850,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumOSR.pas 2016/11/29 10:05:42.000.033,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/29 10:08:16.000.524,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/29 10:11:26.000.030,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/11/29 10:14:39.000.549,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 - 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 + 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 + 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 2016/11/29 11:35:58.000.919,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium.pas= - 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 - 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 + 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 + 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 2016/11/29 14:26:03.000.580,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 - 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 + 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 + 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 2016/11/29 15:48:26.000.475,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium2.pas 2016/11/29 16:29:04.000.712,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromium2.pas= 2016/12/14 09:31:37.000.825,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/12/15 11:52:46.000.153,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas 2016/12/15 15:23:08.000.388,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/12/15 16:33:21.000.646,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/12/15 18:08:50.000.736,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/12/16 09:51:23.000.585,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/12/16 10:34:36.000.246,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/12/16 11:11:31.000.335,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFSslCertPrincipal.pas= 2016/12/16 12:46:25.000.699,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2016/12/16 13:03:29.000.911,=C:\Program Files\Embarcadero\Studio\17.0\cef3\Unit1.pas - 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 + 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 2017/01/05 09:46:44.000.222,C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumWindow.pas= 2017/01/05 10:34:46.000.529,=C:\Program Files\Embarcadero\Studio\17.0\cef3\uCEFChromiumWindow.pas - 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 + 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 2017/03/16 09:32:10.000.622,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBaseRefCounted.pas 2017/03/16 09:32:22.000.431,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBaseScopedWrapper.pas 2017/03/16 09:32:54.000.567,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFBase.pas= 2017/03/26 17:18:35.000.135,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas - 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 + 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 2017/03/26 17:28:33.000.757,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFDLLFunctions.pas= 2017/05/21 15:27:39.000.810,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas - 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 - 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 + 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 + 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 2017/05/21 15:36:08.000.019,C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\uCEFChromiumTool.pas= 2017/06/05 17:09:35.000.867,=C:\Users\usuario\Documents\Embarcadero\Studio\Projects\CEF4Delphi\source\Unit1.pas - 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 + 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 + 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 diff --git a/source/CEF4Delphi.dsk b/source/CEF4Delphi.dsk index acf36d57..f15143e2 100644 --- a/source/CEF4Delphi.dsk +++ b/source/CEF4Delphi.dsk @@ -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 diff --git a/source/CEF4Delphi.identcache b/source/CEF4Delphi.identcache index 00bd3928..48a21c26 100644 Binary files a/source/CEF4Delphi.identcache and b/source/CEF4Delphi.identcache differ diff --git a/source/CEF4Delphi.stat b/source/CEF4Delphi.stat index ce14e57b..713743de 100644 --- a/source/CEF4Delphi.stat +++ b/source/CEF4Delphi.stat @@ -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 diff --git a/source/uCEFChromium.pas b/source/uCEFChromium.pas index 1cd9a150..9a82bfe3 100644 --- a/source/uCEFChromium.pas +++ b/source/uCEFChromium.pas @@ -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. diff --git a/source/uCEFConstants.pas b/source/uCEFConstants.pas index 67da8e8a..c02b2f14 100644 --- a/source/uCEFConstants.pas +++ b/source/uCEFConstants.pas @@ -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; diff --git a/source/uCEFContextMenuParams.pas b/source/uCEFContextMenuParams.pas index 7440989a..a59a8a60 100644 --- a/source/uCEFContextMenuParams.pas +++ b/source/uCEFContextMenuParams.pas @@ -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; diff --git a/source/uCEFDomVisitor.pas b/source/uCEFDomVisitor.pas index 2b62444a..254b1da4 100644 --- a/source/uCEFDomVisitor.pas +++ b/source/uCEFDomVisitor.pas @@ -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. diff --git a/source/uCEFDragAndDropMgr.pas b/source/uCEFDragAndDropMgr.pas new file mode 100644 index 00000000..c5a02941 --- /dev/null +++ b/source/uCEFDragAndDropMgr.pas @@ -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 + * 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_END_TAG : AnsiString = ''; + BODY_START_TAG : AnsiString = ''; + BODY_END_TAG : AnsiString = ''; + FRAGMENT_START : AnsiString = ''; + FRAGMENT_END : AnsiString = ''; + 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 = '', 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. diff --git a/source/uCEFInterfaces.pas b/source/uCEFInterfaces.pas index 804273f2..822e44bd 100644 --- a/source/uCEFInterfaces.pas +++ b/source/uCEFInterfaces.pas @@ -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}; diff --git a/source/uCEFMiscFunctions.pas b/source/uCEFMiscFunctions.pas index 6117e9ab..72a3bd5d 100644 --- a/source/uCEFMiscFunctions.pas +++ b/source/uCEFMiscFunctions.pas @@ -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. diff --git a/source/uCEFRequest.pas b/source/uCEFRequest.pas index cebfb2c5..1f2bf249 100644 --- a/source/uCEFRequest.pas +++ b/source/uCEFRequest.pas @@ -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); diff --git a/source/uCEFTypes.pas b/source/uCEFTypes.pas index 53f68007..f3fabfb8 100644 --- a/source/uCEFTypes.pas +++ b/source/uCEFTypes.pas @@ -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, diff --git a/source/uCEFWriteHandler.pas b/source/uCEFWriteHandler.pas index f5be8e23..7a94670a 100644 --- a/source/uCEFWriteHandler.pas +++ b/source/uCEFWriteHandler.pas @@ -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. diff --git a/source/uCEFv8Handler.pas b/source/uCEFv8Handler.pas index a2e336e0..57deca92 100644 --- a/source/uCEFv8Handler.pas +++ b/source/uCEFv8Handler.pas @@ -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; diff --git a/source/uOLEDragAndDrop.pas b/source/uOLEDragAndDrop.pas new file mode 100644 index 00000000..2f7c2af5 --- /dev/null +++ b/source/uOLEDragAndDrop.pas @@ -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 + * 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.