From 393b08644bac59f72f75bf397eb4ed43518699f1 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 4 Apr 2019 11:11:10 +1100 Subject: [PATCH 01/39] [Windows] Refactor Chromium units for sharing between Developer and Desktop/Engine --- windows/src/developer/TIKE/Tike.dpr | 10 +++---- windows/src/developer/TIKE/Tike.dproj | 6 ++--- windows/src/developer/TIKE/help/webhelp.pas | 1 + .../TIKE/main/KeymanDeveloperUtils.pas | 26 ++----------------- .../src/developer/TIKE/main/RedistFiles.pas | 12 --------- .../developer/TIKE/main/UframeTextEditor.dfm | 4 +-- .../developer/TIKE/main/UframeTextEditor.pas | 2 +- windows/src/developer/TIKE/main/UfrmHelp.pas | 2 +- windows/src/developer/TIKE/main/UfrmMain.dfm | 4 +-- windows/src/developer/TIKE/main/UfrmMain.pas | 2 +- .../oskbuilder/UframeTouchLayoutBuilder.pas | 2 +- ...eyman.Developer.UI.Project.UfrmProject.pas | 2 +- .../chromium/Keyman.System.CEFManager.pas} | 22 ++++++++-------- .../chromium/Keyman.UI.UframeCEFHost.dfm} | 0 .../chromium/Keyman.UI.UframeCEFHost.pas} | 16 ++++++------ .../src/global/delphi/general/KeymanPaths.pas | 25 ++++++++++++++++++ .../src/global/delphi/ui/UfrmWebContainer.dfm | 10 +++---- .../src/global/delphi/ui/UfrmWebContainer.pas | 1 + 18 files changed, 68 insertions(+), 79 deletions(-) rename windows/src/{developer/TIKE/main/Keyman.Developer.System.CEFManager.pas => global/delphi/chromium/Keyman.System.CEFManager.pas} (85%) rename windows/src/{developer/TIKE/main/Keyman.Developer.UI.UframeCEFHost.dfm => global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm} (100%) rename windows/src/{developer/TIKE/main/Keyman.Developer.UI.UframeCEFHost.pas => global/delphi/chromium/Keyman.UI.UframeCEFHost.pas} (98%) diff --git a/windows/src/developer/TIKE/Tike.dpr b/windows/src/developer/TIKE/Tike.dpr index bbd557a623..a4ed302959 100644 --- a/windows/src/developer/TIKE/Tike.dpr +++ b/windows/src/developer/TIKE/Tike.dpr @@ -87,7 +87,7 @@ uses MessageIdentifiers in 'main\MessageIdentifiers.pas', exceptionw in '..\..\global\delphi\general\exceptionw.pas', kpsfile in '..\..\global\delphi\general\kpsfile.pas', - Keyman.Developer.UI.UframeCEFHost in 'main\Keyman.Developer.UI.UframeCEFHost.pas' {frameCEFHost}, + Keyman.UI.UframeCEFHost in '..\..\global\delphi\chromium\Keyman.UI.UframeCEFHost.pas' {frameCEFHost}, UnitDrawArrow in '..\..\global\delphi\general\UnitDrawArrow.pas', StockObjects in 'kct\StockObjects.pas', CustomisationStorage in '..\..\global\delphi\cust\CustomisationStorage.pas', @@ -259,7 +259,7 @@ uses Keyman.System.Standards.BCP47SuppressScriptRegistry in '..\..\global\delphi\standards\Keyman.System.Standards.BCP47SuppressScriptRegistry.pas', Keyman.System.Standards.NRSIAllTagsRegistry in '..\..\global\delphi\standards\Keyman.System.Standards.NRSIAllTagsRegistry.pas', Keyman.System.CanonicalLanguageCodeUtils in '..\..\global\delphi\general\Keyman.System.CanonicalLanguageCodeUtils.pas', - Keyman.Developer.System.CEFManager in 'main\Keyman.Developer.System.CEFManager.pas', + Keyman.System.CEFManager in '..\..\global\delphi\chromium\Keyman.System.CEFManager.pas', Keyman.Developer.System.HttpServer.Debugger in 'http\Keyman.Developer.System.HttpServer.Debugger.pas', Keyman.Developer.System.HttpServer.App in 'http\Keyman.Developer.System.HttpServer.App.pas', Keyman.Developer.System.HttpServer.Base in 'http\Keyman.Developer.System.HttpServer.Base.pas', @@ -288,7 +288,7 @@ uses begin CoInitFlags := COINIT_APARTMENTTHREADED; - FInitializeCEF := TCEFManager.Create; + FInitializeCEF := TCEFManager.Create(SFolderKeymanDeveloper); try if FInitializeCEF.Start then begin @@ -301,8 +301,8 @@ begin if TikeActive then Exit; InitClasses; Application.CreateForm(TmodWebHttpServer, modWebHttpServer); - Application.CreateForm(TfrmKeymanDeveloper, frmKeymanDeveloper); - ShowStartup; + Application.CreateForm(TfrmKeymanDeveloper, frmKeymanDeveloper); + ShowStartup; Application.Run; end; finally diff --git a/windows/src/developer/TIKE/Tike.dproj b/windows/src/developer/TIKE/Tike.dproj index aaae5484ac..5189a7e9fc 100644 --- a/windows/src/developer/TIKE/Tike.dproj +++ b/windows/src/developer/TIKE/Tike.dproj @@ -226,7 +226,7 @@ - +
frameCEFHost
@@ -498,7 +498,7 @@ - + @@ -509,11 +509,9 @@
frmNewProjectParameters
- dfm
frmNewProject
- dfm
diff --git a/windows/src/developer/TIKE/help/webhelp.pas b/windows/src/developer/TIKE/help/webhelp.pas index cc8b5bb50a..fb7aad73c6 100644 --- a/windows/src/developer/TIKE/help/webhelp.pas +++ b/windows/src/developer/TIKE/help/webhelp.pas @@ -77,3 +77,4 @@ end; end. + diff --git a/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas b/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas index 97e3ff7696..3321061a34 100644 --- a/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas +++ b/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas @@ -60,7 +60,6 @@ const MAXMRU = 4; MAX_REG_FONT_ENTRIES = 16; -function GetFolderPath(csidl: Integer): string; function ShouldShowStartup: Boolean; function TikeActive: Boolean; function CreateLink(const ObjPath, LinkPath, Desc: string): Boolean; @@ -92,7 +91,8 @@ implementation uses Winapi.ShellApi, - Classes, SysUtils, ErrorControlledRegistry, ActiveX, shlobj, RegistryKeys, //Dialogs, + Classes, SysUtils, + ErrorControlledRegistry, ActiveX, shlobj, RegistryKeys, //Dialogs, utilsystem, Forms, kmxfile, OnlineConstants, Dialogs, utilexecute, ResourceStrings, CRC32, VisualKeyboard, Controls; @@ -172,28 +172,6 @@ begin end; -function GetFolderPath(csidl: Integer): string; -var - buf: array[0..260] of Char; - idl: PItemIDList; - mm: IMalloc; -begin - Result := ''; - if SHGetMalloc(mm) = NOERROR then - begin - if SHGetSpecialFolderLocation(0, csidl, idl) = NOERROR then - begin - if SHGetPathFromIDList(idl, buf) then - begin - Result := Buf; - if Result <> '' then - if Result[Length(Result)] <> '\' then Result := Result + '\'; - end; - mm.Free(idl); - end; - end; -end; - function ShouldShowStartup: Boolean; begin with TRegistryErrorControlled.Create do // I2890 diff --git a/windows/src/developer/TIKE/main/RedistFiles.pas b/windows/src/developer/TIKE/main/RedistFiles.pas index f284c3ae83..8385070a3f 100644 --- a/windows/src/developer/TIKE/main/RedistFiles.pas +++ b/windows/src/developer/TIKE/main/RedistFiles.pas @@ -69,7 +69,6 @@ function GetUnicodeDataSourcePath(DefaultPath: string = ''): string; // I3463 function GetXMLTemplatePath: string; function GetDeveloperRootPath: string; function GetLayoutBuilderPath: string; // I3885 -function GetCEFPath: string; // Chromium Embedded Framework implementation @@ -144,17 +143,6 @@ begin Result := GetDebugPath('Debug_XMLTemplatePath', ExtractFilePath(ParamStr(0))+'xml\'); end; -function GetCEFPath: string; -begin - Result := GetDebugPath('Debug_CEFPath', ''); - if Result = '' then - begin - Result := GetEnvironmentVariable('KEYMAN_CEF4DELPHI_ROOT'); - if Result = '' - then Result := ExtractFilePath(ParamStr(0))+'cef\' - else Result := IncludeTrailingPathDelimiter(Result); - end; -end; function GetLayoutBuilderPath: string; // I3885 begin diff --git a/windows/src/developer/TIKE/main/UframeTextEditor.dfm b/windows/src/developer/TIKE/main/UframeTextEditor.dfm index ec21b23c6e..cce7cb6656 100644 --- a/windows/src/developer/TIKE/main/UframeTextEditor.dfm +++ b/windows/src/developer/TIKE/main/UframeTextEditor.dfm @@ -17,7 +17,7 @@ inherited frameTextEditor: TframeTextEditor Left = 394 Top = 58 Bitmap = { - 494C010106000900880010001000C0C0C000FE00FFFFFFFFFFFFFFFF424D3600 + 494C0101060009008C0010001000C0C0C000FE00FFFFFFFFFFFFFFFF424D3600 0000000000003600000028000000400000002000000001002000000000000020 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 @@ -295,7 +295,7 @@ inherited frameTextEditor: TframeTextEditor Left = 618 Top = 26 Bitmap = { - 494C010106000900880010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 494C0101060009008C0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 0000000000003600000028000000400000002000000001002000000000000020 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff --git a/windows/src/developer/TIKE/main/UframeTextEditor.pas b/windows/src/developer/TIKE/main/UframeTextEditor.pas index e59637164c..6950a03cb3 100644 --- a/windows/src/developer/TIKE/main/UframeTextEditor.pas +++ b/windows/src/developer/TIKE/main/UframeTextEditor.pas @@ -24,7 +24,7 @@ uses uCEFInterfaces, uCEFTypes, - Keyman.Developer.UI.UframeCEFHost, + Keyman.UI.UframeCEFHost, KMDActionInterfaces, MenuImgList, TextFileFormat, diff --git a/windows/src/developer/TIKE/main/UfrmHelp.pas b/windows/src/developer/TIKE/main/UfrmHelp.pas index 42c1994866..ea905626a9 100644 --- a/windows/src/developer/TIKE/main/UfrmHelp.pas +++ b/windows/src/developer/TIKE/main/UfrmHelp.pas @@ -9,7 +9,7 @@ uses Xml.XMLDoc, Xml.XMLIntf, - Keyman.Developer.UI.UframeCEFHost, + Keyman.UI.UframeCEFHost, TempFileManager, UfrmTikeDock, System.Actions, JvComponentBase, JvDockControlForm, uCEFWindowParent, uCEFInterfaces, uCEFTypes, diff --git a/windows/src/developer/TIKE/main/UfrmMain.dfm b/windows/src/developer/TIKE/main/UfrmMain.dfm index 1d142676b6..650e9e655f 100644 --- a/windows/src/developer/TIKE/main/UfrmMain.dfm +++ b/windows/src/developer/TIKE/main/UfrmMain.dfm @@ -301,7 +301,7 @@ inherited frmKeymanDeveloper: TfrmKeymanDeveloper Left = 304 Top = 236 Bitmap = { - 494C01010A000E00FC0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 494C01010A000E00000110001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 0000000000003600000028000000400000003000000001002000000000000030 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -710,7 +710,7 @@ inherited frmKeymanDeveloper: TfrmKeymanDeveloper Left = 236 Top = 236 Bitmap = { - 494C01013B004000FC0010001000C0C0C000FF10FFFFFFFFFFFFFFFF424D3600 + 494C01013B004000000110001000C0C0C000FF10FFFFFFFFFFFFFFFF424D3600 000000000000360000002800000040000000F0000000010020000000000000F0 000000000000000000000000000000000000C0C0C000C0C0C000C0C0C000C0C0 C000C0C0C000C6C6C600F7730000CE5A0000CE5A0000F7730000C6C6C600C0C0 diff --git a/windows/src/developer/TIKE/main/UfrmMain.pas b/windows/src/developer/TIKE/main/UfrmMain.pas index 88742a7196..48f9d8104d 100644 --- a/windows/src/developer/TIKE/main/UfrmMain.pas +++ b/windows/src/developer/TIKE/main/UfrmMain.pas @@ -412,7 +412,7 @@ uses System.Win.ComObj, Vcl.Themes, - Keyman.Developer.System.CEFManager, + Keyman.System.CEFManager, CharMapDropTool, HTMLHelpViewer, diff --git a/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas b/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas index 8d93a2564b..b213ea1e25 100644 --- a/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas +++ b/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas @@ -47,7 +47,7 @@ uses Vcl.Forms, Vcl.Graphics, - Keyman.Developer.UI.UframeCEFHost, + Keyman.UI.UframeCEFHost, KeyboardFonts, KMDActionInterfaces, diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas index a8d7a365c6..39d1dcf263 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas +++ b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas @@ -58,7 +58,7 @@ uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Menus, UfrmMDIEditor, UfrmMDIChild, Keyman.Developer.System.Project.ProjectFile, KeymanDeveloperUtils, UserMessages, - Keyman.Developer.UI.UframeCEFHost; + Keyman.UI.UframeCEFHost; type TfrmProject = class(TfrmTikeChild) // I2721 diff --git a/windows/src/developer/TIKE/main/Keyman.Developer.System.CEFManager.pas b/windows/src/global/delphi/chromium/Keyman.System.CEFManager.pas similarity index 85% rename from windows/src/developer/TIKE/main/Keyman.Developer.System.CEFManager.pas rename to windows/src/global/delphi/chromium/Keyman.System.CEFManager.pas index 3e01d10714..d0ec2db890 100644 --- a/windows/src/developer/TIKE/main/Keyman.Developer.System.CEFManager.pas +++ b/windows/src/global/delphi/chromium/Keyman.System.CEFManager.pas @@ -1,4 +1,4 @@ -unit Keyman.Developer.System.CEFManager; +unit Keyman.System.CEFManager; interface @@ -28,7 +28,7 @@ type FShutdownCompletionHandler: TNotifyEvent; procedure CompletionHandler(Sender: IKeymanCEFHost); public - constructor Create; + constructor Create(const RootFolder: string); destructor Destroy; override; function Start: Boolean; @@ -47,11 +47,11 @@ uses Winapi.ShlObj, Winapi.Windows, - KeymanDeveloperUtils, + KeymanPaths, KeymanVersion, - RedistFiles, - RegistryKeys, - UTikeDebugMode; +// RedistFiles, + RegistryKeys; +// UTikeDebugMode; { TInitializeCEF } @@ -67,7 +67,7 @@ begin end; end; -constructor TCEFManager.Create; +constructor TCEFManager.Create(const RootFolder: string); begin FWindows := TList.Create; // You *MUST* call GlobalCEFApp.StartMainProcess in a if..then clause @@ -83,13 +83,13 @@ begin // In case you want to use custom directories for the CEF3 binaries, cache, cookies and user data. // If you don't set a cache directory the browser will use in-memory cache. - GlobalCEFApp.FrameworkDirPath := GetCEFPath; + GlobalCEFApp.FrameworkDirPath := TKeymanPaths.CEFPath; GlobalCEFApp.ResourcesDirPath := GlobalCEFApp.FrameworkDirPath; GlobalCEFApp.LocalesDirPath := GlobalCEFApp.FrameworkDirPath + '\locales'; GlobalCEFApp.EnableGPU := True; // Enable hardware acceleration - GlobalCEFApp.cache := GetFolderPath(CSIDL_APPDATA) + SFolderKeymanDeveloper + '\browser\cache'; //TODO: refactor into KeymanPaths.pas - GlobalCEFApp.cookies := GetFolderPath(CSIDL_APPDATA) + SFolderKeymanDeveloper + '\browser\cookies'; - GlobalCEFApp.UserDataPath := GetFolderPath(CSIDL_APPDATA) + SFolderKeymanDeveloper + '\browser\userdata'; + GlobalCEFApp.cache := TKeymanPaths.CEFDataPath(RootFolder, 'cache'); + GlobalCEFApp.cookies := TKeymanPaths.CEFDataPath(RootFolder, 'cookies'); + GlobalCEFApp.UserDataPath := TKeymanPaths.CEFDataPath(RootFolder, 'userdata'); GlobalCEFApp.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36 (TIKE/'+SKeymanVersion+')'; end; diff --git a/windows/src/developer/TIKE/main/Keyman.Developer.UI.UframeCEFHost.dfm b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm similarity index 100% rename from windows/src/developer/TIKE/main/Keyman.Developer.UI.UframeCEFHost.dfm rename to windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm diff --git a/windows/src/developer/TIKE/main/Keyman.Developer.UI.UframeCEFHost.pas b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas similarity index 98% rename from windows/src/developer/TIKE/main/Keyman.Developer.UI.UframeCEFHost.pas rename to windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas index cfd78093bd..6359376b5e 100644 --- a/windows/src/developer/TIKE/main/Keyman.Developer.UI.UframeCEFHost.pas +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas @@ -1,4 +1,4 @@ -unit Keyman.Developer.UI.UframeCEFHost; +unit Keyman.UI.UframeCEFHost; interface @@ -24,10 +24,10 @@ uses uCEFTypes, uCEFWindowParent, - Keyman.Developer.System.CEFManager, - KeymanDeveloperUtils, - UserMessages, - UfrmTIKE; + Keyman.System.CEFManager, +// KeymanDeveloperUtils, + UserMessages, UfrmTike; +// UfrmTIKE; const CEF_DESTROY = WM_USER + 300; @@ -175,11 +175,11 @@ uses System.StrUtils, Winapi.ShellApi, - Keyman.Developer.System.HelpTopics, +// Keyman.Developer.System.HelpTopics, // typinfo, ErrorControlledRegistry, ExternalExceptionHandler, - UfrmMain, +// UfrmMain, utilhttp, uCEFApplication, VersionInfo; @@ -504,7 +504,7 @@ begin if p.event.windows_key_code = VK_F1 then begin - frmKeymanDeveloper.HelpTopic(Self) +// if Assigned(OnHelpTopic) then OnHelpTopic(Self); // TODO: frmKeymanDeveloper.HelpTopic(Self) end else if p.event.windows_key_code = VK_F12 then begin diff --git a/windows/src/global/delphi/general/KeymanPaths.pas b/windows/src/global/delphi/general/KeymanPaths.pas index 9588fb21ee..7642daf2b5 100644 --- a/windows/src/global/delphi/general/KeymanPaths.pas +++ b/windows/src/global/delphi/general/KeymanPaths.pas @@ -9,6 +9,10 @@ type EKeymanPath = class(Exception); TKeymanPaths = class + private + const S_CEF_DebugPath = 'Debug_CEFPath'; + const S_CEF_EnvVar = 'KEYMAN_CEF4DELPHI_ROOT'; + const S_CEF_SubFolder = 'cef\'; public const S_KMShell = 'kmshell.exe'; const S_Xml_LocaleDef = 'xml\localedef.dtd'; @@ -25,8 +29,12 @@ type class function KeymanEngineInstallDir: string; static; class function KeyboardsInstallPath(const filename: string = ''): string; static; class function KeyboardsInstallDir: string; static; + class function CEFPath: string; static; // Chromium Embedded Framework + class function CEFDataPath(const RootFolder, mode: string): string; static; end; +function GetFolderPath(csidl: Integer): string; + implementation uses @@ -123,6 +131,23 @@ begin Result := IncludeTrailingPathDelimiter(Result) + filename; end; +class function TKeymanPaths.CEFPath: string; +begin + Result := GetDebugPath(S_CEF_DebugPath, ''); + if Result = '' then + begin + Result := GetEnvironmentVariable(S_CEF_EnvVar); + if Result = '' + then Result := ExtractFilePath(ParamStr(0))+S_CEF_SubFolder + else Result := IncludeTrailingPathDelimiter(Result); + end; +end; + +class function TKeymanPaths.CEFDataPath(const RootFolder, mode: string): string; +begin + Result := GetFolderPath(CSIDL_APPDATA) + RootFolder + '\browser\' + mode; +end; + class function TKeymanPaths.KeyboardsInstallDir: string; begin Result := ExcludeTrailingPathDelimiter(KeyboardsInstallPath); diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.dfm b/windows/src/global/delphi/ui/UfrmWebContainer.dfm index d8435dec0a..422ea2fee6 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.dfm +++ b/windows/src/global/delphi/ui/UfrmWebContainer.dfm @@ -12,13 +12,11 @@ inherited frmWebContainer: TfrmWebContainer PixelsPerInch = 96 TextHeight = 13 object web: TKeymanEmbeddedWB - Left = 0 - Top = 0 - Width = 426 - Height = 286 - Align = alClient + Left = 304 + Top = 216 + Width = 122 + Height = 70 TabOrder = 0 - Silent = False OnBeforeNavigate2 = webBeforeNavigate2 OnDocumentComplete = webDocumentComplete OnNewWindow3 = webNewWindow3 diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index 91c300a3c7..4f26d63444 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -77,6 +77,7 @@ type pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; private + cweb: TframeCEFHost; FDialogName: WideString; FXMLRenderers: TXMLRenderers; FXMLFileName: TTempFile; -- GitLab From d8715e7ce6a45ab9f38ab7e6d30e47565da9541a Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 4 Apr 2019 15:20:40 +1100 Subject: [PATCH 02/39] [Windows] First steps for Chromium integration in Keyman Configuration --- windows/src/desktop/kmshell/kmshell.dpr | 19 ++-- windows/src/desktop/kmshell/kmshell.dproj | 10 ++- windows/src/desktop/kmshell/kmshell.res | Bin 7040 -> 7040 bytes windows/src/desktop/kmshell/main/UfrmMain.dfm | 3 +- windows/src/desktop/kmshell/main/UfrmMain.pas | 2 +- .../chromium/Keyman.UI.UframeCEFHost.dfm | 15 ++-- .../chromium/Keyman.UI.UframeCEFHost.pas | 6 +- .../src/global/delphi/ui/UfrmWebContainer.dfm | 4 +- .../src/global/delphi/ui/UfrmWebContainer.pas | 82 ++++++++++++++++-- 9 files changed, 109 insertions(+), 32 deletions(-) diff --git a/windows/src/desktop/kmshell/kmshell.dpr b/windows/src/desktop/kmshell/kmshell.dpr index f484e63f01..33e87e88c9 100644 --- a/windows/src/desktop/kmshell/kmshell.dpr +++ b/windows/src/desktop/kmshell/kmshell.dpr @@ -158,18 +158,27 @@ uses UImportOlderVersionKeyboards9 in 'main\UImportOlderVersionKeyboards9.pas', Keyman.System.UpgradeRegistryKeys in '..\..\global\delphi\general\Keyman.System.UpgradeRegistryKeys.pas', UImportOlderVersionKeyboards9Plus in 'main\UImportOlderVersionKeyboards9Plus.pas', - Keyman.Configuration.UI.MitigationForWin10_1803 in 'install\Keyman.Configuration.UI.MitigationForWin10_1803.pas'; + Keyman.Configuration.UI.MitigationForWin10_1803 in 'install\Keyman.Configuration.UI.MitigationForWin10_1803.pas', + Keyman.System.CEFManager in '..\..\global\delphi\chromium\Keyman.System.CEFManager.pas', + Keyman.UI.UframeCEFHost in '..\..\global\delphi\chromium\Keyman.UI.UframeCEFHost.pas'; {$R VERSION.RES} {$R manifest.res} begin CoInitFlags := COINIT_APARTMENTTHREADED; + + FInitializeCEF := TCEFManager.Create(SFolderKeymanEngine); try - Application.Initialize; - Run; - except - on E:Exception do KeymanHandleException(E); + if FInitializeCEF.Start then + try + Application.Initialize; + Run; + except + on E:Exception do KeymanHandleException(E); + end; + finally + FInitializeCEF.Free; end; end. diff --git a/windows/src/desktop/kmshell/kmshell.dproj b/windows/src/desktop/kmshell/kmshell.dproj index 532c4ad6c1..529d8f1d4b 100644 --- a/windows/src/desktop/kmshell/kmshell.dproj +++ b/windows/src/desktop/kmshell/kmshell.dproj @@ -301,6 +301,8 @@ + + Cfg_2 @@ -393,15 +395,15 @@ true - + - kmshell.exe + .\ true - + - .\ + kmshell.exe true diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res index 3cff173aaf882089b3028842d70f610840162bd3..3dbc021074868cfa8d1d194477b90cd89cef35f6 100644 GIT binary patch delta 15 WcmZoLZ!n)w!t!%orS!%M4ru@~PX+D( delta 15 WcmZoLZ!n)w!g6KeJ*kZq9MS+YB?ce> diff --git a/windows/src/desktop/kmshell/main/UfrmMain.dfm b/windows/src/desktop/kmshell/main/UfrmMain.dfm index f40c26250f..78f4c2e623 100644 --- a/windows/src/desktop/kmshell/main/UfrmMain.dfm +++ b/windows/src/desktop/kmshell/main/UfrmMain.dfm @@ -17,8 +17,7 @@ inherited frmMain: TfrmMain TextHeight = 13 inherited web: TKeymanEmbeddedWB Width = 617 - Height = 494 - Silent = True + Height = 330 ExplicitWidth = 617 ExplicitHeight = 330 ControlData = { diff --git a/windows/src/desktop/kmshell/main/UfrmMain.pas b/windows/src/desktop/kmshell/main/UfrmMain.pas index 9ad3e5877a..05c7df70cb 100644 --- a/windows/src/desktop/kmshell/main/UfrmMain.pas +++ b/windows/src/desktop/kmshell/main/UfrmMain.pas @@ -21,7 +21,7 @@ 06 Oct 2006 - mcdurdin - Refactor web browser into parent class 06 Oct 2006 - mcdurdin - Save activate page state and reload 06 Oct 2006 - mcdurdin - Add download keyboard - 04 Dec 2006 - mcdurdin - Use TfrmWebContainer; + 04 Dec 2006 - mcdurdin - Use T-frmWebContainer; 04 Dec 2006 - mcdurdin - Add keyboard_download, package_welcome, footer_buy, select_uilanguage 05 Dec 2006 - mcdurdin - Refactor using XMLRenderer 05 Dec 2006 - mcdurdin - Localize additional messages diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm index bdbacd30c4..f050d81edd 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm @@ -1,16 +1,21 @@ -inherited frameCEFHost: TframeCEFHost +object frameCEFHost: TframeCEFHost Left = 193 Top = 131 Align = alClient BorderIcons = [] BorderStyle = bsNone - Caption = '' ClientHeight = 645 ClientWidth = 878 - OldCreateOrder = True + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Tahoma' + Font.Style = [] + OldCreateOrder = False + OnCreate = FormCreate OnDestroy = FormDestroy - ExplicitWidth = 878 - ExplicitHeight = 645 + OnShow = FormShow PixelsPerInch = 96 TextHeight = 13 object cefwp: TCEFWindowParent diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas index 6359376b5e..a1090f1d9d 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas @@ -25,9 +25,7 @@ uses uCEFWindowParent, Keyman.System.CEFManager, -// KeymanDeveloperUtils, - UserMessages, UfrmTike; -// UfrmTIKE; + UserMessages; const CEF_DESTROY = WM_USER + 300; @@ -64,7 +62,7 @@ type TCEFHostPreKeySyncEvent = procedure(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean) of object; TCEFHostKeyEvent = procedure(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean) of object; - TframeCEFHost = class(TTikeForm, IKeymanCEFHost) + TframeCEFHost = class(TForm, IKeymanCEFHost) tmrRefresh: TTimer; tmrCreateBrowser: TTimer; cefwp: TCEFWindowParent; diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.dfm b/windows/src/global/delphi/ui/UfrmWebContainer.dfm index 422ea2fee6..01f201d0f1 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.dfm +++ b/windows/src/global/delphi/ui/UfrmWebContainer.dfm @@ -12,8 +12,8 @@ inherited frmWebContainer: TfrmWebContainer PixelsPerInch = 96 TextHeight = 13 object web: TKeymanEmbeddedWB - Left = 304 - Top = 216 + Left = 296 + Top = 16 Width = 122 Height = 70 TabOrder = 0 diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index 4f26d63444..31312665b4 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -50,7 +50,7 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, UfrmKeymanBase, OleCtrls, SHDocVw, EmbeddedWB, XMLRenderer, keymanapi_TLB, UserMessages, IeConst, SHDocVw_EWB, EwbCore, - KeymanEmbeddedWB, TempFileManager; + KeymanEmbeddedWB, TempFileManager, Keyman.UI.UframeCEFHost; type TfrmWebContainer = class(TfrmKeymanBase) @@ -77,17 +77,22 @@ type pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; private - cweb: TframeCEFHost; + cef: TframeCEFHost; FDialogName: WideString; FXMLRenderers: TXMLRenderers; FXMLFileName: TTempFile; FNoMoreErrors: Boolean; // I4181 procedure WMUser_FormShown(var Message: TMessage); message WM_USER_FormShown; - procedure WMUser_FireCommand(var Message: TMessage); message WM_USER_FireCommand; +// procedure WMUser_FireCommand(var Message: TMessage); message WM_USER_FireCommand; procedure WMUser_ContentRender(var Message: TMessage); message WM_USER_ContentRender; function GetIEVersionString: WideString; procedure DownloadUILanguages; - procedure ContributeUILanguages; // I4989 + procedure ContributeUILanguages; + procedure cefLoadEnd(Sender: TObject); + procedure cefBeforeBrowse(Sender: TObject; const Url: string; + params: TStringList; wasHandled: Boolean); + procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; + out Handled: Boolean); // I4989 protected procedure DoResizeByContent; @@ -151,7 +156,6 @@ procedure TfrmWebContainer.Content_Render(FRefreshKeyman: Boolean; const AdditionalData: WideString); var FWidth, FHeight: Integer; - v: OleVariant; begin FreeAndNil(FXMLFileName); // I4181 @@ -179,8 +183,7 @@ begin ClientHeight := FHeight; end; - v := navNoHistory or navNoReadFromCache or navNoWriteToCache; - web.Navigate(FXMLFileName.Name, v); // I4181 + cef.Navigate(FXMLFileName.Name); end; procedure TfrmWebContainer.Do_Content_Render(FRefreshKeyman: Boolean); @@ -233,6 +236,58 @@ procedure TfrmWebContainer.TntFormCreate(Sender: TObject); begin inherited; FXMLRenderers := TXMLRenderers.Create; + + cef := TframeCEFHost.Create(Self); + cef.Parent := Self; + cef.Visible := True; + cef.OnBeforeBrowse := cefBeforeBrowse; + cef.OnBeforeBrowseSync := cefBeforeBrowseSync; + cef.OnLoadEnd := cefLoadEnd; +end; + +procedure TfrmWebContainer.cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); +var + aparams: TStringList; + v: Boolean; + command: string; +begin + if ShouldProcessAllCommands then + begin + v := GetParamsFromURLEx(URL, aparams); + command := aparams[0]; + aparams.Delete(0); + FireCommand(command, aparams); + aparams.Free; + end + else + begin + command := params[0]; + params.Delete(0); + FireCommand(command, params); + end; +// +// then v := GetParamsFromURLEx(URL, aparams) +// else v := GetParamsFromURL(URL, aparams); +// if v then +// begin +// PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)); +// end; +end; + +procedure TfrmWebContainer.cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); +var + params: TStringList; + v: Boolean; +begin + AssertCefThread; + if ShouldProcessAllCommands then + begin + v := GetParamsFromURLEx(URL, params); + Handled := True; + params.Free; + end + else + Handled := False; end; procedure TfrmWebContainer.TntFormDestroy(Sender: TObject); @@ -282,6 +337,15 @@ begin Screen.Cursor := crHourglass; end; +procedure TfrmWebContainer.cefLoadEnd(Sender: TObject); +begin + AssertVclThread; + DoResizeByContent; + Screen.Cursor := crDefault; + if ShouldSetCaption then Self.Caption := cef.cef.Browser.MainFrame.Name; + if ShouldSetAppTitle then Application.Title := Self.Caption; // I2786 +end; + procedure TfrmWebContainer.webDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); var @@ -459,7 +523,7 @@ begin Do_Content_Render(True); end; -procedure TfrmWebContainer.WMUser_FireCommand(var Message: TMessage); +{procedure TfrmWebContainer.WMUser_FireCommand(var Message: TMessage); var command: WideString; params: TStringList; @@ -469,7 +533,7 @@ begin params.Delete(0); FireCommand(command, params); params.Free; -end; +end;} procedure TfrmWebContainer.WMUser_FormShown(var Message: TMessage); begin -- GitLab From 8aacbc0abc1f2b15c72ad5f54614db9486b0f368 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 4 Apr 2019 17:16:21 +1100 Subject: [PATCH 03/39] [Windows] Remove and stub all EmbeddedWB references in kmshell (other apps coming) --- .../kmshell/install/UfrmInstallKeyboard.dfm | 12 - .../kmshell/install/UfrmInstallKeyboard.pas | 5 +- .../install/UfrmInstallKeyboardFromWeb.dfm | 12 - .../install/UfrmInstallKeyboardFromWeb.pas | 13 +- windows/src/desktop/kmshell/kmshell.dpr | 2 - windows/src/desktop/kmshell/kmshell.dproj | 12 +- windows/src/desktop/kmshell/kmshell.res | Bin 7040 -> 7040 bytes .../desktop/kmshell/main/UfrmBaseKeyboard.dfm | 12 - .../desktop/kmshell/main/UfrmBaseKeyboard.pas | 3 +- windows/src/desktop/kmshell/main/UfrmHTML.dfm | 26 - windows/src/desktop/kmshell/main/UfrmHTML.pas | 36 +- .../desktop/kmshell/main/UfrmKeepInTouch.dfm | 13 - .../desktop/kmshell/main/UfrmKeepInTouch.pas | 6 +- .../kmshell/main/UfrmKeyboardOptions.dfm | 13 - .../kmshell/main/UfrmKeyboardOptions.pas | 18 +- windows/src/desktop/kmshell/main/UfrmMain.dfm | 12 - windows/src/desktop/kmshell/main/UfrmMain.pas | 11 +- .../main/UfrmOnlineUpdateNewVersion.dfm | 14 - .../main/UfrmOnlineUpdateNewVersion.pas | 3 +- .../kmshell/main/UfrmProxyConfiguration.dfm | 13 - .../kmshell/main/UfrmProxyConfiguration.pas | 3 +- .../desktop/kmshell/startup/UfrmSplash.dfm | 13 - .../desktop/kmshell/startup/UfrmSplash.pas | 5 +- .../kmshell/startup/help/UfrmTextEditor.dfm | 30 +- .../kmshell/startup/help/UfrmTextEditor.pas | 25 +- .../src/desktop/kmshell/util/UfrmPrintOSK.dfm | 28 - .../src/desktop/kmshell/util/UfrmPrintOSK.pas | 13 +- windows/src/ext/embeddedwb/ChangeLog.txt | 981 - windows/src/ext/embeddedwb/Credits.txt | 159 - .../01 - New_Window_SDI_Demo/frmMain.dfm | 123 - .../01 - New_Window_SDI_Demo/frmMain.pas | 141 - .../01 - New_Window_SDI_Demo/prjSDIDemo.dpr | 46 - .../02 - New_Window_MDI_Demo/Child.dfm | 60 - .../02 - New_Window_MDI_Demo/Child.pas | 101 - .../02 - New_Window_MDI_Demo/frmMain.dfm | 116 - .../02 - New_Window_MDI_Demo/frmMain.pas | 152 - .../02 - New_Window_MDI_Demo/prjMDIDemo.dpr | 48 - .../03 - New_Window_Tabs_Demo_1/frmMain.dfm | 85 - .../03 - New_Window_Tabs_Demo_1/frmMain.pas | 187 - .../prjNewWinTabs1Demo.dpr | 47 - .../04 - New_Window_Tabs_Demo_2/fmMain.dfm | 108 - .../04 - New_Window_Tabs_Demo_2/fmMain.pas | 199 - .../prjNewWinTabs2Demo.dpr | 47 - .../05 - OnEvaluateNewWindow_Demo/fmMain.dfm | 110 - .../05 - OnEvaluateNewWindow_Demo/fmMain.pas | 103 - .../prjEvalNewWindowDemo.dpr | 47 - .../FrmMain.dfm | 201 - .../FrmMain.pas | 205 - .../PrjRightClick_Demo.dpr | 45 - .../07 - DragNDrop_Demo/frmMain.dfm | 150 - .../07 - DragNDrop_Demo/frmMain.pas | 146 - .../07 - DragNDrop_Demo/prjDragDropDemo.dpr | 43 - .../frmMain.dfm | 242 - .../frmMain.pas | 164 - .../prjElementsUnderMouseDemo.dpr | 46 - .../Unit1.dfm | 90 - .../Unit1.pas | 67 - .../prjPrintPreviewTemplateDemo.dpr | 13 - .../template.htm | 653 - .../10 - PrintingOptions_Demo/Main.dfm | 105 - .../10 - PrintingOptions_Demo/Main.pas | 243 - .../prjPrintingOptionsDemo.dpr | 46 - .../frmMain.dfm | 98 - .../frmMain.pas | 277 - .../prjMoveResizeDemo.dpr | 45 - .../prjMSHTML_EventsDemo.dpr | 13 - .../12 - MSHTML_Events_Demo/unit1.dfm | 75 - .../12 - MSHTML_Events_Demo/unit1.pas | 137 - .../ActiveFormImpl1.dfm | 74 - .../ActiveFormImpl1.pas | 419 - .../ActiveFormProj1.tlb | Bin 6004 -> 0 bytes .../ActiveFormProj1_TLB.pas | 335 - .../13 - ActiveX_Form_Demo/ReadMe.rtf | 172 - .../Target/ActiveFormProj1.htm | 15 - .../13 - ActiveX_Form_Demo/prjActiveForm.tlb | Bin 6004 -> 0 bytes .../prjActiveFormDemo.dpr | 53 - .../prjActiveFormDemo.ridl | 24 - .../prjActiveFormDemo.tlb | Bin 1052 -> 0 bytes .../prjActiveFormDemo_TLB.pas | 49 - .../prjExecScriptExDemo.dpr | 47 - .../14 - ExecScriptEx_Demo/uMain.dfm | 146 - .../14 - ExecScriptEx_Demo/uMain.pas | 85 - .../prjHTMLListenerDemo.dpr | 13 - .../15 - THTMLListener_Demo/uMain.dfm | 103 - .../15 - THTMLListener_Demo/uMain.pas | 163 - .../16 - TEWBControl_Demo/Unit1.dfm | 255 - .../16 - TEWBControl_Demo/Unit1.pas | 100 - .../16 - TEWBControl_Demo/Unit2.dfm | 63 - .../16 - TEWBControl_Demo/Unit2.pas | 33 - .../prjEWBControlDemo.dpr | 15 - .../17 - EWB Events Logger_Demo/Filters.ini | 85 - .../prjEventsTestDemo.dpr | 13 - .../17 - EWB Events Logger_Demo/umain.dfm | 711 - .../17 - EWB Events Logger_Demo/umain.pas | 1020 - .../prjSysLV32RepDemo.dpr | 13 - .../uMain.dfm | 94 - .../uMain.pas | 118 - .../frmMain.dfm | 57 - .../frmMain.pas | 208 - .../prjDragLinkToPageControl.dpr | 13 - .../EmbeddedWB Demos/EmbeddedWBDemos.bpg | 76 - .../EmbeddedWBDemos.groupproj | 240 - .../ext/embeddedwb/Demos/Mega Demo/Demo.dfm | 3846 -- .../ext/embeddedwb/Demos/Mega Demo/Demo.pas | 2157 - .../Demos/Mega Demo/prjEmbeddedWBDemo.dpr | 45 - .../01 - EditDesigner_Demo/Demo.html | 98 - .../01 - EditDesigner_Demo/prjEditDDemo.dpr | 43 - .../01 - EditDesigner_Demo/utEditDesigner.dfm | 288 - .../01 - EditDesigner_Demo/utEditDesigner.pas | 326 - .../02 - ExportFavorites_Demo/Unit1.dfm | 234 - .../02 - ExportFavorites_Demo/Unit1.pas | 78 - .../prjExportFavoritesDemo.dpr | 13 - .../03 - FileAssociate_Demo/frmMain.dfm | 367 - .../03 - FileAssociate_Demo/frmMain.pas | 178 - .../prjFile_AssDemo.dpr | 45 - .../GUID_Creator/IEGuidList.txt | 1 - .../GUID_Creator/prjGuidCreatorDemo.dpr | 45 - .../GUID_Creator/utGuidCreator.dfm | 293 - .../GUID_Creator/utGuidCreator.pas | 280 - .../04 - GUID_Demo/IEGuid/IEGuidList.txt | 0 .../04 - GUID_Demo/IEGuid/ieguiddemo_u.dfm | 205 - .../04 - GUID_Demo/IEGuid/ieguiddemo_u.pas | 185 - .../04 - GUID_Demo/IEGuid/prjIEGuidDemo.dpr | 13 - .../05 - IEAddress_Demo/frmMain.dfm | 250 - .../05 - IEAddress_Demo/frmMain.pas | 176 - .../05 - IEAddress_Demo/prjIEAddressDemo.dpr | 14 - .../06 - IECache_Demo/cachedemo_u.dfm | Bin 2931 -> 0 bytes .../06 - IECache_Demo/cachedemo_u.pas | 210 - .../06 - IECache_Demo/prjCacheDemo.dpr | 48 - .../Downloader.dfm | 87 - .../Downloader.pas | 77 - .../prjDownloaderDemo.dpr | 14 - .../DownloadForm_U.dfm | 126 - .../DownloadForm_U.pas | 325 - .../DownloadManager.dpr | 31 - .../DownloadManager.tlb | Bin 1048 -> 0 bytes .../DownloadManager_TLB.pas | 54 - .../DownloadRequestForm.dfm | 133 - .../DownloadRequestForm.pas | 140 - .../_IEDownloadManager.pas | 129 - .../Webbrowser/DownloadForm_U.dfm | 160 - .../Webbrowser/DownloadForm_U.pas | 502 - .../Webbrowser/DownloadMgrDemo.dpr | 52 - .../Webbrowser/DownloadMgrDemo_U.dfm | 93 - .../Webbrowser/DownloadMgrDemo_U.pas | 113 - .../Webbrowser/DownloadRequestForm.dfm | 133 - .../Webbrowser/DownloadRequestForm.pas | 98 - .../IEDownload_Mega_Demo/Downloaddemo_U.dfm | 561 - .../IEDownload_Mega_Demo/Downloaddemo_U.pas | 735 - .../IEDownload_Mega_Demo/prjDownloadDemo.dpr | 47 - .../DownloadForm_U.dfm | 72 - .../DownloadForm_U.pas | 256 - .../DownloadMgrDemo_U.dfm | 81 - .../DownloadMgrDemo_U.pas | 107 - .../DownloadRequestForm.dfm | 133 - .../DownloadRequestForm.pas | 138 - .../prjDownloadMgrDemo.dpr | 51 - .../prjIEDownloadSimple.dpr | 49 - .../utIEDownloadSimple.dfm | 175 - .../utIEDownloadSimple.pas | 194 - .../08 - IEMultiDownload/prjMultiDLDemo.dpr | 14 - .../08 - IEMultiDownload/utMultiDL.dfm | 285 - .../08 - IEMultiDownload/utMultiDL.pas | 347 - .../09 - IEParser_Demo/Unit1.dfm | 337 - .../09 - IEParser_Demo/Unit1.pas | 487 - .../09 - IEParser_Demo/prjIEParserDemo.dpr | 49 - .../10 - IETravellog_Demo/TravelLogDemo_U.dfm | 221 - .../10 - IETravellog_Demo/TravelLogDemo_U.pas | 177 - .../prjTravellogDemo.dpr | 48 - .../11 - LinksLabel_Demo/FrmMain.dfm | 258 - .../11 - LinksLabel_Demo/FrmMain.pas | 72 - .../11 - LinksLabel_Demo/prjLinksDemo.dpr | 44 - .../12 - LinksBar_Demo/Unit1.dfm | 352 - .../12 - LinksBar_Demo/Unit1.pas | 168 - .../12 - LinksBar_Demo/prjProject1Demo.dpr | 49 - .../13 - MimeFilter_Demo/Mime_unit.dfm | Bin 2432 -> 0 bytes .../13 - MimeFilter_Demo/Mime_unit.pas | 160 - .../13 - MimeFilter_Demo/demo.htm | 43 - .../13 - MimeFilter_Demo/pnh.gif | Bin 8795 -> 0 bytes .../13 - MimeFilter_Demo/prjMimeDemo.dpr | 50 - .../14 - RichEditWB_Demo/Unit1.dfm | 2642 - .../14 - RichEditWB_Demo/Unit1.pas | 446 - .../14 - RichEditWB_Demo/prjProject1Demo.dpr | 49 - .../15 - Zones_Security_Demo/_ZoneDemo.dfm | 189 - .../15 - Zones_Security_Demo/_ZoneDemo.pas | 248 - .../prjZonesSecurityDemo.dpr | 46 - .../16 - UI-Less_Demo/prjUIParser_Demo.dpr | 49 - .../16 - UI-Less_Demo/utParser.dfm | 195 - .../16 - UI-Less_Demo/utParser.pas | 90 - .../Various Demos/17 - URL_Demo/frmMain.dfm | 632 - .../Various Demos/17 - URL_Demo/frmMain.pas | 342 - .../17 - URL_Demo/prjMainDemo.dpr | 46 - .../UrlhistoryDemo_U.dfm | 127 - .../UrlhistoryDemo_U.pas | 122 - .../prjUrlHistoryDemo.dpr | 45 - .../19 - URLSearchHook/Searchhook.tlb | Bin 1036 -> 0 bytes .../19 - URLSearchHook/Searchhook_TLB.pas | 54 - .../19 - URLSearchHook/_SearchHook.pas | 147 - .../19 - URLSearchHook/prjSearchhookDemo.dpr | 23 - .../19 - URLSearchHook/prjSearchhookDemo.ridl | 24 - .../19 - URLSearchHook/prjSearchhookDemo.tlb | Bin 1052 -> 0 bytes .../prjSearchhookDemo_TLB.pas | 54 - .../Updater_Demo/NewUpdate.xml | 27 - .../Updater_Demo/Unit1.dfm | 95 - .../Updater_Demo/Unit1.pas | 69 - .../Updater_Demo/project1.dpr | 45 - .../Updater_XML_File_Creator/Unit1.dfm | 973 - .../Updater_XML_File_Creator/Unit1.pas | 687 - .../prjProject1Demo.dpr | 45 - .../Demos/Various Demos/VariousDemos.bpg | 102 - .../Various Demos/VariousDemos.groupproj | 264 - .../EmbeddedWB_D5-XE_Version_14.70.0.zip | Bin 1232070 -> 0 bytes windows/src/ext/embeddedwb/Licence.txt | 22 - windows/src/ext/embeddedwb/Makefile | 19 - .../Packages/EmbeddedWebBrowser_D2006.dpk | 130 - .../Packages/EmbeddedWebBrowser_D2007.dpk | 129 - .../Packages/EmbeddedWebBrowser_D2009.dpk | 128 - .../Packages/EmbeddedWebBrowser_D2010.dpk | 130 - .../Packages/EmbeddedWebBrowser_D5.dpk | 129 - .../Packages/EmbeddedWebBrowser_D6.dpk | 128 - .../Packages/EmbeddedWebBrowser_D7.dpk | 131 - .../Packages/EmbeddedWebBrowser_XE.dpk | 132 - .../Packages/EmbeddedWebBrowser_XE.dproj | 221 - .../Packages/EmbeddedWebBrowser_XE.res | Bin 448 -> 0 bytes windows/src/ext/embeddedwb/ReadMe_Install.txt | 72 - .../ext/embeddedwb/Source/AppWUStrings.pas | 166 - .../ext/embeddedwb/Source/AppWebUpdater.pas | 1640 - .../ext/embeddedwb/Source/Browse4Folder.pas | 295 - .../ext/embeddedwb/Source/CryptFuncDll.txt | 622 - .../src/ext/embeddedwb/Source/DirMonitor.pas | 158 - windows/src/ext/embeddedwb/Source/EWB.dcr | Bin 51872 -> 0 bytes windows/src/ext/embeddedwb/Source/EWB.inc | 116 - .../src/ext/embeddedwb/Source/EWBIEConst.pas | 1094 - .../ext/embeddedwb/Source/EWBMouseHook.pas | 265 - .../src/ext/embeddedwb/Source/EWB_jedi.inc | 1335 - .../ext/embeddedwb/Source/EditDesigner.pas | 717 - .../src/ext/embeddedwb/Source/Edithost.pas | 130 - .../src/ext/embeddedwb/Source/EmbeddedWB.pas | 3575 -- windows/src/ext/embeddedwb/Source/EwbAcc.pas | 827 - .../src/ext/embeddedwb/Source/EwbActns.pas | 145 - .../embeddedwb/Source/EwbBehaviorsComp.pas | 1166 - .../src/ext/embeddedwb/Source/EwbClasses.pas | 146 - .../embeddedwb/Source/EwbControlComponent.pas | 348 - windows/src/ext/embeddedwb/Source/EwbCore.pas | 1998 - .../ext/embeddedwb/Source/EwbCoreTools.pas | 411 - windows/src/ext/embeddedwb/Source/EwbDDE.pas | 234 - .../Source/EwbDisableFocusControl.pas | 36 - .../Source/EwbDisableMouseWheelFix.pas | 36 - .../src/ext/embeddedwb/Source/EwbEditors.pas | 344 - .../src/ext/embeddedwb/Source/EwbEvents.pas | 349 - .../ext/embeddedwb/Source/EwbEventsComp.pas | 756 - .../ext/embeddedwb/Source/EwbFocusControl.pas | 200 - windows/src/ext/embeddedwb/Source/EwbReg.pas | 153 - .../src/ext/embeddedwb/Source/EwbTools.pas | 3938 -- windows/src/ext/embeddedwb/Source/EwbUrl.pas | 833 - .../ext/embeddedwb/Source/ExportFavorites.pas | 481 - windows/src/ext/embeddedwb/Source/FavMenu.pas | 621 - .../embeddedwb/Source/FavoritesListView.pas | 630 - .../ext/embeddedwb/Source/FavoritesPopup.pas | 577 - .../ext/embeddedwb/Source/FavoritesTree.pas | 680 - .../embeddedwb/Source/FileExtAssociate.pas | 970 - .../ext/embeddedwb/Source/HighLightHTML.pas | 2639 - .../embeddedwb/Source/HighLightRichSyntax.pas | 241 - .../ext/embeddedwb/Source/HighLightXML.pas | 751 - .../ext/embeddedwb/Source/HistoryListView.pas | 431 - .../src/ext/embeddedwb/Source/HistoryMenu.pas | 346 - .../src/ext/embeddedwb/Source/IEAddress.pas | 1903 - windows/src/ext/embeddedwb/Source/IECache.pas | 761 - .../src/ext/embeddedwb/Source/IEDownload.pas | 3077 -- .../ext/embeddedwb/Source/IEDownloadAcc.pas | 182 - .../embeddedwb/Source/IEDownloadStrings.pas | 91 - .../ext/embeddedwb/Source/IEDownloadTools.pas | 578 - windows/src/ext/embeddedwb/Source/IEGuid.pas | 544 - .../ext/embeddedwb/Source/IEMultiDownload.pas | 635 - .../src/ext/embeddedwb/Source/IEParser.pas | 945 - .../src/ext/embeddedwb/Source/IETravelLog.pas | 289 - .../ext/embeddedwb/Source/ImportFavorites.pas | 495 - .../src/ext/embeddedwb/Source/LibXmlComps.pas | 110 - .../ext/embeddedwb/Source/LibXmlParser.pas | 2963 -- .../src/ext/embeddedwb/Source/LinksBar.pas | 429 - .../src/ext/embeddedwb/Source/LinksLabel.pas | 910 - .../ext/embeddedwb/Source/MSHTMLEvents.pas | 42161 ---------------- .../src/ext/embeddedwb/Source/MenuContext.pas | 586 - .../src/ext/embeddedwb/Source/Mshtml_Ewb.pas | 31738 ------------ .../src/ext/embeddedwb/Source/OleCtrlsFix.pas | 49 - .../ext/embeddedwb/Source/RichEditBrowser.pas | 3377 -- .../src/ext/embeddedwb/Source/SHDocVw_EWB.pas | 1976 - .../ext/embeddedwb/Source/SecurityManager.pas | 402 - .../embeddedwb/Source/SendMail_For_Ewb.pas | 518 - windows/src/ext/embeddedwb/Source/UI_Less.pas | 341 - .../src/ext/embeddedwb/Source/UrlHistory.pas | 330 - windows/src/ext/embeddedwb/Source/Wcrypt2.pas | 7870 --- .../src/ext/embeddedwb/Source/wbhFixes.pas | 52 - .../src/ext/embeddedwb/Tools/MimeFilter.pas | 426 - .../src/ext/embeddedwb/Tools/XPThemedBand.zip | Bin 197496 -> 0 bytes .../ext/embeddedwb/Tools/delphiband102.zip | Bin 14498 -> 0 bytes windows/src/ext/embeddedwb/Tools/iehelper.zip | Bin 4733 -> 0 bytes .../ext/embeddedwb/Tools/urlsearchhook.zip | Bin 2367 -> 0 bytes .../chromium/Keyman.UI.UframeCEFHost.pas | 22 +- .../global/delphi/comp/KeymanEmbeddedWB.pas | 81 - .../global/delphi/general/WebSoundControl.pas | 54 - windows/src/global/delphi/hints/UfrmHint.dfm | 12 - windows/src/global/delphi/hints/UfrmHint.pas | 3 +- .../src/global/delphi/ui/UfrmWebContainer.dfm | 28 - .../src/global/delphi/ui/UfrmWebContainer.pas | 164 +- 305 files changed, 127 insertions(+), 172217 deletions(-) delete mode 100644 windows/src/ext/embeddedwb/ChangeLog.txt delete mode 100644 windows/src/ext/embeddedwb/Credits.txt delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/frmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/frmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/prjSDIDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/Child.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/Child.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/frmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/frmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/prjMDIDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/frmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/frmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/prjNewWinTabs1Demo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/fmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/fmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/prjNewWinTabs2Demo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/fmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/fmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/prjEvalNewWindowDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/FrmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/FrmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/PrjRightClick_Demo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/frmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/frmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/prjDragDropDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/frmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/frmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/prjElementsUnderMouseDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/Unit1.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/Unit1.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/prjPrintPreviewTemplateDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/template.htm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/Main.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/Main.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/prjPrintingOptionsDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/frmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/frmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/prjMoveResizeDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/prjMSHTML_EventsDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/unit1.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/unit1.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormImpl1.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormImpl1.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormProj1.tlb delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormProj1_TLB.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ReadMe.rtf delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/Target/ActiveFormProj1.htm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveForm.tlb delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.ridl delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.tlb delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo_TLB.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/prjExecScriptExDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/uMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/uMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/prjHTMLListenerDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/uMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/uMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit1.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit1.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit2.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit2.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/prjEWBControlDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/Filters.ini delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/prjEventsTestDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/umain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/umain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/prjSysLV32RepDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/uMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/uMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/frmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/frmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/prjDragLinkToPageControl.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/EmbeddedWBDemos.bpg delete mode 100644 windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/EmbeddedWBDemos.groupproj delete mode 100644 windows/src/ext/embeddedwb/Demos/Mega Demo/Demo.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Mega Demo/Demo.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Mega Demo/prjEmbeddedWBDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/Demo.html delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/prjEditDDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/utEditDesigner.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/utEditDesigner.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/Unit1.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/Unit1.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/prjExportFavoritesDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/frmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/frmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/prjFile_AssDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/IEGuidList.txt delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/prjGuidCreatorDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/utGuidCreator.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/utGuidCreator.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/IEGuidList.txt delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/ieguiddemo_u.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/ieguiddemo_u.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/prjIEGuidDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/frmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/frmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/prjIEAddressDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/06 - IECache_Demo/cachedemo_u.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/06 - IECache_Demo/cachedemo_u.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/06 - IECache_Demo/prjCacheDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/Downloader.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/Downloader.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/prjDownloaderDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadForm_U.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadForm_U.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadManager.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadManager.tlb delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadManager_TLB.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadRequestForm.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadRequestForm.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/_IEDownloadManager.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadForm_U.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadForm_U.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo_U.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo_U.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadRequestForm.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadRequestForm.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/Downloaddemo_U.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/Downloaddemo_U.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/prjDownloadDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadForm_U.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadForm_U.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadMgrDemo_U.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadMgrDemo_U.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadRequestForm.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadRequestForm.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/prjDownloadMgrDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/prjIEDownloadSimple.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/utIEDownloadSimple.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/utIEDownloadSimple.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/prjMultiDLDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/utMultiDL.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/utMultiDL.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/Unit1.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/Unit1.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/prjIEParserDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/TravelLogDemo_U.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/TravelLogDemo_U.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/prjTravellogDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/FrmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/FrmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/prjLinksDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/Unit1.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/Unit1.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/prjProject1Demo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/Mime_unit.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/Mime_unit.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/demo.htm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/pnh.gif delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/prjMimeDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/14 - RichEditWB_Demo/Unit1.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/14 - RichEditWB_Demo/Unit1.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/14 - RichEditWB_Demo/prjProject1Demo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/_ZoneDemo.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/_ZoneDemo.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/prjZonesSecurityDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/prjUIParser_Demo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/utParser.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/utParser.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/frmMain.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/frmMain.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/prjMainDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/UrlhistoryDemo_U.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/UrlhistoryDemo_U.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/prjUrlHistoryDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/19 - URLSearchHook/Searchhook.tlb delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/19 - URLSearchHook/Searchhook_TLB.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/19 - URLSearchHook/_SearchHook.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/19 - URLSearchHook/prjSearchhookDemo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/19 - URLSearchHook/prjSearchhookDemo.ridl delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/19 - URLSearchHook/prjSearchhookDemo.tlb delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/19 - URLSearchHook/prjSearchhookDemo_TLB.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/NewUpdate.xml delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/Unit1.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/Unit1.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/project1.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/Unit1.dfm delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/Unit1.pas delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/prjProject1Demo.dpr delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/VariousDemos.bpg delete mode 100644 windows/src/ext/embeddedwb/Demos/Various Demos/VariousDemos.groupproj delete mode 100644 windows/src/ext/embeddedwb/EmbeddedWB_D5-XE_Version_14.70.0.zip delete mode 100644 windows/src/ext/embeddedwb/Licence.txt delete mode 100644 windows/src/ext/embeddedwb/Makefile delete mode 100644 windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2006.dpk delete mode 100644 windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2007.dpk delete mode 100644 windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2009.dpk delete mode 100644 windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2010.dpk delete mode 100644 windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D5.dpk delete mode 100644 windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D6.dpk delete mode 100644 windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D7.dpk delete mode 100644 windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.dpk delete mode 100644 windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.dproj delete mode 100644 windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.res delete mode 100644 windows/src/ext/embeddedwb/ReadMe_Install.txt delete mode 100644 windows/src/ext/embeddedwb/Source/AppWUStrings.pas delete mode 100644 windows/src/ext/embeddedwb/Source/AppWebUpdater.pas delete mode 100644 windows/src/ext/embeddedwb/Source/Browse4Folder.pas delete mode 100644 windows/src/ext/embeddedwb/Source/CryptFuncDll.txt delete mode 100644 windows/src/ext/embeddedwb/Source/DirMonitor.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EWB.dcr delete mode 100644 windows/src/ext/embeddedwb/Source/EWB.inc delete mode 100644 windows/src/ext/embeddedwb/Source/EWBIEConst.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EWBMouseHook.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EWB_jedi.inc delete mode 100644 windows/src/ext/embeddedwb/Source/EditDesigner.pas delete mode 100644 windows/src/ext/embeddedwb/Source/Edithost.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EmbeddedWB.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbAcc.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbActns.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbBehaviorsComp.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbClasses.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbControlComponent.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbCore.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbCoreTools.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbDDE.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbDisableFocusControl.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbDisableMouseWheelFix.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbEditors.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbEvents.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbEventsComp.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbFocusControl.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbReg.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbTools.pas delete mode 100644 windows/src/ext/embeddedwb/Source/EwbUrl.pas delete mode 100644 windows/src/ext/embeddedwb/Source/ExportFavorites.pas delete mode 100644 windows/src/ext/embeddedwb/Source/FavMenu.pas delete mode 100644 windows/src/ext/embeddedwb/Source/FavoritesListView.pas delete mode 100644 windows/src/ext/embeddedwb/Source/FavoritesPopup.pas delete mode 100644 windows/src/ext/embeddedwb/Source/FavoritesTree.pas delete mode 100644 windows/src/ext/embeddedwb/Source/FileExtAssociate.pas delete mode 100644 windows/src/ext/embeddedwb/Source/HighLightHTML.pas delete mode 100644 windows/src/ext/embeddedwb/Source/HighLightRichSyntax.pas delete mode 100644 windows/src/ext/embeddedwb/Source/HighLightXML.pas delete mode 100644 windows/src/ext/embeddedwb/Source/HistoryListView.pas delete mode 100644 windows/src/ext/embeddedwb/Source/HistoryMenu.pas delete mode 100644 windows/src/ext/embeddedwb/Source/IEAddress.pas delete mode 100644 windows/src/ext/embeddedwb/Source/IECache.pas delete mode 100644 windows/src/ext/embeddedwb/Source/IEDownload.pas delete mode 100644 windows/src/ext/embeddedwb/Source/IEDownloadAcc.pas delete mode 100644 windows/src/ext/embeddedwb/Source/IEDownloadStrings.pas delete mode 100644 windows/src/ext/embeddedwb/Source/IEDownloadTools.pas delete mode 100644 windows/src/ext/embeddedwb/Source/IEGuid.pas delete mode 100644 windows/src/ext/embeddedwb/Source/IEMultiDownload.pas delete mode 100644 windows/src/ext/embeddedwb/Source/IEParser.pas delete mode 100644 windows/src/ext/embeddedwb/Source/IETravelLog.pas delete mode 100644 windows/src/ext/embeddedwb/Source/ImportFavorites.pas delete mode 100644 windows/src/ext/embeddedwb/Source/LibXmlComps.pas delete mode 100644 windows/src/ext/embeddedwb/Source/LibXmlParser.pas delete mode 100644 windows/src/ext/embeddedwb/Source/LinksBar.pas delete mode 100644 windows/src/ext/embeddedwb/Source/LinksLabel.pas delete mode 100644 windows/src/ext/embeddedwb/Source/MSHTMLEvents.pas delete mode 100644 windows/src/ext/embeddedwb/Source/MenuContext.pas delete mode 100644 windows/src/ext/embeddedwb/Source/Mshtml_Ewb.pas delete mode 100644 windows/src/ext/embeddedwb/Source/OleCtrlsFix.pas delete mode 100644 windows/src/ext/embeddedwb/Source/RichEditBrowser.pas delete mode 100644 windows/src/ext/embeddedwb/Source/SHDocVw_EWB.pas delete mode 100644 windows/src/ext/embeddedwb/Source/SecurityManager.pas delete mode 100644 windows/src/ext/embeddedwb/Source/SendMail_For_Ewb.pas delete mode 100644 windows/src/ext/embeddedwb/Source/UI_Less.pas delete mode 100644 windows/src/ext/embeddedwb/Source/UrlHistory.pas delete mode 100644 windows/src/ext/embeddedwb/Source/Wcrypt2.pas delete mode 100644 windows/src/ext/embeddedwb/Source/wbhFixes.pas delete mode 100644 windows/src/ext/embeddedwb/Tools/MimeFilter.pas delete mode 100644 windows/src/ext/embeddedwb/Tools/XPThemedBand.zip delete mode 100644 windows/src/ext/embeddedwb/Tools/delphiband102.zip delete mode 100644 windows/src/ext/embeddedwb/Tools/iehelper.zip delete mode 100644 windows/src/ext/embeddedwb/Tools/urlsearchhook.zip delete mode 100644 windows/src/global/delphi/comp/KeymanEmbeddedWB.pas delete mode 100644 windows/src/global/delphi/general/WebSoundControl.pas diff --git a/windows/src/desktop/kmshell/install/UfrmInstallKeyboard.dfm b/windows/src/desktop/kmshell/install/UfrmInstallKeyboard.dfm index 366d20cdb4..2c5bb33354 100644 --- a/windows/src/desktop/kmshell/install/UfrmInstallKeyboard.dfm +++ b/windows/src/desktop/kmshell/install/UfrmInstallKeyboard.dfm @@ -14,16 +14,4 @@ inherited frmInstallKeyboard: TfrmInstallKeyboard ExplicitHeight = 329 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 600 - Height = 300 - ExplicitWidth = 753 - ExplicitHeight = 538 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/desktop/kmshell/install/UfrmInstallKeyboard.pas b/windows/src/desktop/kmshell/install/UfrmInstallKeyboard.pas index 2ac77ed507..cf1bf06e43 100644 --- a/windows/src/desktop/kmshell/install/UfrmInstallKeyboard.pas +++ b/windows/src/desktop/kmshell/install/UfrmInstallKeyboard.pas @@ -59,9 +59,8 @@ uses System.Contnrs, System.UITypes, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - StdCtrls, keymanapi_TLB, ExtCtrls, Menus, UfrmKeymanBase, UfrmWebContainer, - OleCtrls, SHDocVw, EmbeddedWB, - WideStrings, SHDocVw_EWB, EwbCore, KeymanEmbeddedWB; + StdCtrls, keymanapi_TLB, Menus, UfrmKeymanBase, UfrmWebContainer, + WideStrings; type diff --git a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.dfm b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.dfm index f605473606..0ba9b9f916 100644 --- a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.dfm +++ b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.dfm @@ -9,18 +9,6 @@ inherited frmInstallKeyboardFromWeb: TfrmInstallKeyboardFromWeb ExplicitHeight = 429 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 740 - Height = 400 - ExplicitWidth = 816 - ExplicitHeight = 395 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end object dlgSaveFile: TSaveDialog Filter = 'Keyman Keyboard Files (*.kmx;*.kmp)|*.kmx;*.kmp|All Files (*.*)|' + diff --git a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas index 51afcfc247..07941d4681 100644 --- a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas +++ b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas @@ -34,9 +34,7 @@ interface uses System.Contnrs, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, UfrmWebContainer, OleCtrls, SHDocVw, EmbeddedWB, - UfrmDownloadProgress, UfrmKeymanBase, SHDocVw_EWB, EwbCore, - KeymanEmbeddedWB; + Dialogs, UfrmWebContainer, UfrmDownloadProgress, UfrmKeymanBase; type TfrmInstallKeyboardFromWeb = class(TfrmWebContainer) @@ -198,21 +196,20 @@ begin end; procedure TfrmInstallKeyboardFromWeb.Download(params: TStringList); -var - doc: IHTMLDocument3; - elem: IHTMLElement; begin FURL := params.Values['url']; FFilename := params.Values['filename']; FDownloadOnly := False; - if Assigned(web.Document) then + // Query document>> +{$MESSAGE HINT 'support downloadonly checkbox'} +{TODO: support downloadonly if Assigned(web.Document) then begin doc := web.Document as IHTMLDocument3; elem := doc.getElementById('chkDownloadOnly'); if Assigned(elem) then FDownloadOnly := (elem as IHTMLInputElement).checked; - end; + end;} with TfrmDownloadProgress.Create(Self) do try diff --git a/windows/src/desktop/kmshell/kmshell.dpr b/windows/src/desktop/kmshell/kmshell.dpr index 33e87e88c9..7f4e979e36 100644 --- a/windows/src/desktop/kmshell/kmshell.dpr +++ b/windows/src/desktop/kmshell/kmshell.dpr @@ -77,7 +77,6 @@ uses UImportOlderKeyboardUtils in 'main\UImportOlderKeyboardUtils.pas', utiluac in '..\..\global\delphi\general\utiluac.pas', DownloadLocale in 'install\DownloadLocale.pas', - WebSoundControl in '..\..\global\delphi\general\WebSoundControl.pas', UserMessages in '..\..\global\delphi\general\UserMessages.pas', UILanguages in 'util\UILanguages.pas', utilmsxml in '..\..\global\delphi\general\utilmsxml.pas', @@ -96,7 +95,6 @@ uses MSXML2_TLB in '..\..\global\delphi\tlb\MSXML2_TLB.pas', VKeys in '..\..\global\delphi\general\VKeys.pas', ExtShiftState in '..\..\global\delphi\comp\ExtShiftState.pas', - KeymanEmbeddedWB in '..\..\global\delphi\comp\KeymanEmbeddedWB.pas', UImportOlderVersionSettings in 'main\UImportOlderVersionSettings.pas', KeymanMutex in '..\..\global\delphi\general\KeymanMutex.pas', ErrorControlledRegistry in '..\..\global\delphi\vcl\ErrorControlledRegistry.pas', diff --git a/windows/src/desktop/kmshell/kmshell.dproj b/windows/src/desktop/kmshell/kmshell.dproj index 529d8f1d4b..e1ef038475 100644 --- a/windows/src/desktop/kmshell/kmshell.dproj +++ b/windows/src/desktop/kmshell/kmshell.dproj @@ -94,7 +94,7 @@ false - -c + -splash true 1033 CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) @@ -204,7 +204,6 @@ - @@ -229,7 +228,6 @@ - @@ -395,15 +393,15 @@ true - + - .\ + kmshell.exe true - + - kmshell.exe + .\ true diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res index 3dbc021074868cfa8d1d194477b90cd89cef35f6..c386479de580f419ff76fe66e7d5447b2e20c18e 100644 GIT binary patch delta 13 UcmZoLZ!n)w!t~+e#xgEx04Og7q5uE@ delta 13 UcmZoLZ!n)w!t`_A#xgEx04Bx-SO5S3 diff --git a/windows/src/desktop/kmshell/main/UfrmBaseKeyboard.dfm b/windows/src/desktop/kmshell/main/UfrmBaseKeyboard.dfm index 95480a02ff..8274ec7b69 100644 --- a/windows/src/desktop/kmshell/main/UfrmBaseKeyboard.dfm +++ b/windows/src/desktop/kmshell/main/UfrmBaseKeyboard.dfm @@ -9,16 +9,4 @@ inherited frmBaseKeyboard: TfrmBaseKeyboard ExplicitHeight = 189 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 512 - Height = 160 - ExplicitWidth = 361 - ExplicitHeight = 234 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/desktop/kmshell/main/UfrmBaseKeyboard.pas b/windows/src/desktop/kmshell/main/UfrmBaseKeyboard.pas index 5f8bdb86c1..718fe2bb82 100644 --- a/windows/src/desktop/kmshell/main/UfrmBaseKeyboard.pas +++ b/windows/src/desktop/kmshell/main/UfrmBaseKeyboard.pas @@ -5,8 +5,7 @@ interface uses System.Contnrs, Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, - Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UfrmWebContainer, Vcl.OleCtrls, - SHDocVw_EWB, EwbCore, EmbeddedWB, KeymanEmbeddedWB; + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UfrmWebContainer; type TfrmBaseKeyboard = class(TfrmWebContainer) diff --git a/windows/src/desktop/kmshell/main/UfrmHTML.dfm b/windows/src/desktop/kmshell/main/UfrmHTML.dfm index 5ef0a4ff2c..b1b84ea74a 100644 --- a/windows/src/desktop/kmshell/main/UfrmHTML.dfm +++ b/windows/src/desktop/kmshell/main/UfrmHTML.dfm @@ -28,32 +28,6 @@ object frmHTML: TfrmHTML Anchors = [akLeft, akTop, akRight, akBottom] BevelOuter = bvNone TabOrder = 0 - object web: TKeymanEmbeddedWB - Left = 0 - Top = 0 - Width = 477 - Height = 273 - Align = alClient - TabOrder = 0 - Silent = False - OnCommandStateChange = webCommandStateChange - OnNewWindow3 = webNewWindow3 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - DisableErrors.fpExceptions = False - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Orientation = poPortrait - OnKeyDown = webKeyDown - ExplicitTop = 1 - ControlData = { - 4C000000A52F0000631B00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E12620C000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end object cmdOK: TButton Left = 202 diff --git a/windows/src/desktop/kmshell/main/UfrmHTML.pas b/windows/src/desktop/kmshell/main/UfrmHTML.pas index 13c643a2f0..3c7626d17b 100644 --- a/windows/src/desktop/kmshell/main/UfrmHTML.pas +++ b/windows/src/desktop/kmshell/main/UfrmHTML.pas @@ -33,15 +33,12 @@ interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - StdCtrls, ExtCtrls, OleCtrls, SHDocVw, EmbeddedWB, - keymanapi_TLB, UfrmKeymanBase, SHDocVw_EWB, EwbCore, - KeymanEmbeddedWB, Vcl.AppEvnts; + StdCtrls, ExtCtrls, keymanapi_TLB, UfrmKeymanBase, Vcl.AppEvnts, Keyman.UI.UframeCEFHost; type TfrmHTML = class(TfrmKeymanBase) cmdOK: TButton; panHTML: TPanel; - web: TKeymanEmbeddedWB; cmdPrint: TButton; cmdBack: TButton; cmdForward: TButton; @@ -54,13 +51,12 @@ type bstrUrl: WideString); procedure cmdBackClick(Sender: TObject); procedure cmdForwardClick(Sender: TObject); - procedure webCommandStateChange(ASender: TObject; Command: Integer; - Enable: WordBool); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; Shift: TShiftState); procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); private + cef: TframeCEFHost; FFileName: string; procedure SetText(const Value: string); procedure SetURL(const Value: string); @@ -89,18 +85,19 @@ uses procedure TfrmHTML.ShowFile(const FileName: WideString); begin - if FileExists(FileName) and Assigned(web) then - web.Navigate(FileName); + if FileExists(FileName) and Assigned(cef) then + cef.Navigate(FileName); end; -procedure TfrmHTML.webCommandStateChange(ASender: TObject; Command: Integer; +{$MESSAGE HINT 'TODO: support navigation state changes'} +{procedure TfrmHTML.webCommandStateChange(ASender: TObject; Command: Integer; Enable: WordBool); begin if Command = CSC_NAVIGATEFORWARD then cmdForward.Enabled := Enable else if Command = CSC_NAVIGATEBACK then cmdBack.Enabled := Enable; -end; +end;} procedure TfrmHTML.webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; Shift: TShiftState); @@ -150,17 +147,20 @@ end; procedure TfrmHTML.cmdBackClick(Sender: TObject); begin - web.GoBack; + if Assigned(cef) and Assigned(cef.cef) then + cef.cef.GoBack; end; procedure TfrmHTML.cmdForwardClick(Sender: TObject); begin - web.GoForward; + if Assigned(cef) and Assigned(cef.cef) then + cef.cef.GoForward; end; procedure TfrmHTML.cmdPrintClick(Sender: TObject); begin - web.Print; // I2641 + if Assigned(cef) and Assigned(cef.cef) then + cef.cef.Print; end; procedure TfrmHTML.FormCreate(Sender: TObject); @@ -172,6 +172,14 @@ begin if s <> '' then Font.Name := s; cmdOK.Caption := MsgFromId(SKButtonOK); cmdPrint.Caption := MsgFromId(SKButtonPrint); + + cef := TframeCEFHost.Create(Self); + cef.Parent := Self; + cef.Visible := True; + cef.ShouldOpenRemoteUrlsInBrowser := True; +// cef.OnBeforeBrowse := cefBeforeBrowse; +// cef.OnBeforeBrowseSync := cefBeforeBrowseSync; +// cef.OnLoadEnd := cefLoadEnd; end; procedure TfrmHTML.FormDestroy(Sender: TObject); @@ -189,7 +197,7 @@ end; procedure TfrmHTML.SetURL(const Value: string); begin - if Assigned(web) then web.Navigate(Value); + if Assigned(cef) then cef.Navigate(Value); end; procedure DoShowWelcome(const Title, FileName: WideString); diff --git a/windows/src/desktop/kmshell/main/UfrmKeepInTouch.dfm b/windows/src/desktop/kmshell/main/UfrmKeepInTouch.dfm index 5d5b813747..2abf43d977 100644 --- a/windows/src/desktop/kmshell/main/UfrmKeepInTouch.dfm +++ b/windows/src/desktop/kmshell/main/UfrmKeepInTouch.dfm @@ -8,17 +8,4 @@ inherited frmKeepInTouch: TfrmKeepInTouch ExplicitHeight = 525 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 653 - Height = 496 - Silent = True - ExplicitWidth = 653 - ExplicitHeight = 496 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas b/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas index 3dc7b2a4a5..90547ae53a 100644 --- a/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas +++ b/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas @@ -22,8 +22,7 @@ interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, - Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UfrmWebContainer, Vcl.OleCtrls, - SHDocVw_EWB, EwbCore, EmbeddedWB, KeymanEmbeddedWB; + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UfrmWebContainer; type TfrmKeepInTouch = class(TfrmWebContainer) @@ -95,8 +94,7 @@ var v: OleVariant; begin FPath := MakeKeymanUrl(URLPath_KeepInTouch) + '?embed=1'; - v := navNoHistory or navNoReadFromCache or navNoWriteToCache; - web.Navigate(FPath, v); // I4181 + cef.Navigate(FPath); // I4181 end; procedure TfrmKeepInTouch.FireCommand(const command: WideString; diff --git a/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.dfm b/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.dfm index dab9b96157..42316c45f5 100644 --- a/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.dfm +++ b/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.dfm @@ -9,17 +9,4 @@ inherited frmKeyboardOptions: TfrmKeyboardOptions ExplicitHeight = 331 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 564 - Height = 302 - Silent = False - ExplicitWidth = 554 - ExplicitHeight = 292 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas b/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas index 784fcb920e..2bd02dc704 100644 --- a/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas +++ b/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas @@ -24,8 +24,8 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, UfrmWebContainer, OleCtrls, SHDocVw, EmbeddedWB, keymanapi_TLB, - UserMessages, SHDocVw_EWB, EwbCore, KeymanEmbeddedWB; + Dialogs, UfrmWebContainer, keymanapi_TLB, + UserMessages; type TfrmKeyboardOptions = class(TfrmWebContainer) @@ -55,9 +55,9 @@ function ShowKeyboardOptions(AOwner: TWinControl; const AKeyboardName: WideStrin implementation uses - EwbTools, kmint, utilexecute, + utilhttp, WideStrings; {$R *.dfm} @@ -143,17 +143,19 @@ begin for I := 0 to kbd.Options.Count - 1 do begin if I > 0 then s := s + '&'; - s := s + EwbTools.Encode(kbd.Options[I].Name) + '=' + EwbTools.Encode(kbd.Options[I].Value); + s := s + URLEncode(kbd.Options[I].Name) + '=' + URLEncode(kbd.Options[I].Value); end; if s <> '' then s := '?' + s; s := ExtractFilePath(kbd.OwnerPackage.Filename) + 'options.htm' + s; - web.OnBeforeNavigate2 := nil; - v := navNoHistory or navNoReadFromCache or navNoWriteToCache; - web.Navigate(s, v); - web.OnBeforeNavigate2 := webBeforeNavigate2; + cef.Navigate(s); +{$MESSAGE HINT 'TODO: Override the onbeforenavigate'} +// web.OnBeforeNavigate2 := nil; +// v := navNoHistory or navNoReadFromCache or navNoWriteToCache; +// web.Navigate(s, v); +// web.OnBeforeNavigate2 := webBeforeNavigate2; end; procedure TfrmKeyboardOptions.WMUser_ContentRender(var Message: TMessage); diff --git a/windows/src/desktop/kmshell/main/UfrmMain.dfm b/windows/src/desktop/kmshell/main/UfrmMain.dfm index 78f4c2e623..792d45042d 100644 --- a/windows/src/desktop/kmshell/main/UfrmMain.dfm +++ b/windows/src/desktop/kmshell/main/UfrmMain.dfm @@ -15,16 +15,4 @@ inherited frmMain: TfrmMain ExplicitHeight = 533 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 617 - Height = 330 - ExplicitWidth = 617 - ExplicitHeight = 330 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/desktop/kmshell/main/UfrmMain.pas b/windows/src/desktop/kmshell/main/UfrmMain.pas index 05c7df70cb..e3cb549794 100644 --- a/windows/src/desktop/kmshell/main/UfrmMain.pas +++ b/windows/src/desktop/kmshell/main/UfrmMain.pas @@ -74,10 +74,9 @@ uses System.Contnrs, System.UITypes, Windows, Messages, SysUtils, Classes, Types, Graphics, Controls, Forms, Dialogs, - keymanapi_TLB, UfrmKeymanBase, OleCtrls, SHDocVw, EmbeddedWB, + keymanapi_TLB, UfrmKeymanBase, MSHTML_TLB, UfrmWebContainer, - XMLRenderer, SHDocVw_EWB, EwbCore, - KeymanEmbeddedWB; + XMLRenderer; type TfrmMain = class(TfrmWebContainer) @@ -219,7 +218,6 @@ begin inherited; kmcom.AutoApply := False; - web.UserInterfaceOptions := web.UserInterfaceOptions + [EnableThemes]; with TRegistryErrorControlled.Create do // I2890 try @@ -870,7 +868,8 @@ procedure TfrmMain.SaveState; var elem: IHTMLElement; begin - try +{$MESSAGE HINT 'TODO: Save state support'} + {try TODO: save state if Assigned(web.Document) then begin elem:= (web.Document as IHTMLDocument3).getElementById('state'); @@ -880,7 +879,7 @@ begin end; except FState := ''; - end; + end;} end; class function TfrmMain.ShouldRegisterWindow: Boolean; // I2720 diff --git a/windows/src/desktop/kmshell/main/UfrmOnlineUpdateNewVersion.dfm b/windows/src/desktop/kmshell/main/UfrmOnlineUpdateNewVersion.dfm index 6213cdf425..7effe7cec5 100644 --- a/windows/src/desktop/kmshell/main/UfrmOnlineUpdateNewVersion.dfm +++ b/windows/src/desktop/kmshell/main/UfrmOnlineUpdateNewVersion.dfm @@ -12,18 +12,4 @@ inherited frmOnlineUpdateNewVersion: TfrmOnlineUpdateNewVersion ExplicitHeight = 404 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 469 - Height = 375 - ExplicitLeft = 97 - ExplicitTop = 16 - ExplicitWidth = 469 - ExplicitHeight = 173 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/desktop/kmshell/main/UfrmOnlineUpdateNewVersion.pas b/windows/src/desktop/kmshell/main/UfrmOnlineUpdateNewVersion.pas index 3196a58dcd..88980ca4a7 100644 --- a/windows/src/desktop/kmshell/main/UfrmOnlineUpdateNewVersion.pas +++ b/windows/src/desktop/kmshell/main/UfrmOnlineUpdateNewVersion.pas @@ -28,8 +28,7 @@ uses System.Contnrs, System.UITypes, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - ShellAPI, UfrmWebContainer, OleCtrls, SHDocVw, EmbeddedWB, - OnlineUpdateCheck, SHDocVw_EWB, EwbCore, KeymanEmbeddedWB; + ShellAPI, UfrmWebContainer, OnlineUpdateCheck; type TfrmOnlineUpdateNewVersion = class(TfrmWebContainer) diff --git a/windows/src/desktop/kmshell/main/UfrmProxyConfiguration.dfm b/windows/src/desktop/kmshell/main/UfrmProxyConfiguration.dfm index 2f29d04ab6..24dd1861c1 100644 --- a/windows/src/desktop/kmshell/main/UfrmProxyConfiguration.dfm +++ b/windows/src/desktop/kmshell/main/UfrmProxyConfiguration.dfm @@ -9,17 +9,4 @@ inherited frmProxyConfiguration: TfrmProxyConfiguration ExplicitHeight = 317 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 428 - Height = 288 - Silent = True - ExplicitWidth = 428 - ExplicitHeight = 288 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/desktop/kmshell/main/UfrmProxyConfiguration.pas b/windows/src/desktop/kmshell/main/UfrmProxyConfiguration.pas index c3738adb06..9cd270099c 100644 --- a/windows/src/desktop/kmshell/main/UfrmProxyConfiguration.pas +++ b/windows/src/desktop/kmshell/main/UfrmProxyConfiguration.pas @@ -24,8 +24,7 @@ interface uses System.Contnrs, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, UfrmWebContainer, OleCtrls, SHDocVw, EmbeddedWB, SHDocVw_EWB, - EwbCore, KeymanEmbeddedWB; + Dialogs, UfrmWebContainer; type TfrmProxyConfiguration = class(TfrmWebContainer) diff --git a/windows/src/desktop/kmshell/startup/UfrmSplash.dfm b/windows/src/desktop/kmshell/startup/UfrmSplash.dfm index 90b68f06e0..7021da88fd 100644 --- a/windows/src/desktop/kmshell/startup/UfrmSplash.dfm +++ b/windows/src/desktop/kmshell/startup/UfrmSplash.dfm @@ -11,19 +11,6 @@ inherited frmSplash: TfrmSplash ExplicitHeight = 332 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 409 - Height = 332 - Silent = False - ExplicitWidth = 409 - ExplicitHeight = 330 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end object ApplicationEvents1: TApplicationEvents OnMessage = ApplicationEvents1Message Left = 192 diff --git a/windows/src/desktop/kmshell/startup/UfrmSplash.pas b/windows/src/desktop/kmshell/startup/UfrmSplash.pas index 99b6ed022e..3d8ecfb623 100644 --- a/windows/src/desktop/kmshell/startup/UfrmSplash.pas +++ b/windows/src/desktop/kmshell/startup/UfrmSplash.pas @@ -48,9 +48,8 @@ uses System.UITypes, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, UfrmKeymanBase, keymanapi_TLB, jpeg, - UfrmWebContainer, OleCtrls, SHDocVw, EmbeddedWB, SHDocVw_EWB, - UserMessages, - EwbCore, KeymanEmbeddedWB, Vcl.AppEvnts; + UfrmWebContainer, + UserMessages, Vcl.AppEvnts; type TfrmSplash = class(TfrmWebContainer) diff --git a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.dfm b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.dfm index 5bcdc2143c..a256148433 100644 --- a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.dfm +++ b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.dfm @@ -107,7 +107,7 @@ inherited frmTextEditor: TfrmTextEditor Left = 285 Top = 0 Width = 42 - Height = 22 + Height = 21 Hint = 'Font Size|Select font size' TabOrder = 1 Text = '0' @@ -207,32 +207,6 @@ inherited frmTextEditor: TfrmTextEditor ParentBackground = False ParentColor = True TabOrder = 2 - object webFonts: TKeymanEmbeddedWB - Left = 0 - Top = 0 - Width = 237 - Height = 595 - Align = alClient - TabOrder = 0 - Silent = False - OnBeforeNavigate2 = webBeforeNavigate2 - OnNewWindow3 = webNewWindow3 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - DisableErrors.fpExceptions = False - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Orientation = poPortrait - ExplicitWidth = 156 - ExplicitHeight = 453 - ControlData = { - 4C00000045520000070700000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end object panEditor: TPanel Left = 0 @@ -317,7 +291,7 @@ inherited frmTextEditor: TfrmTextEditor Left = 88 Top = 68 Bitmap = { - 494C01010F001400440010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 494C01010F001400480010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 0000000000003600000028000000400000004000000001002000000000000040 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff --git a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas index 2defa89f2b..c0aa29c7a1 100644 --- a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas +++ b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas @@ -50,12 +50,11 @@ uses System.Contnrs, System.UITypes, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ComCtrls, ExtCtrls, OleCtrls, SHDocVw, ActiveX, - EmbeddedWB, ToolWin, Menus, - XMLRenderer, GenericXMLRenderer, ActnList, ImgList, + Dialogs, StdCtrls, ComCtrls, ExtCtrls, ActiveX, + ToolWin, Menus, + XMLRenderer, GenericXMLRenderer, ActnList, ImgList, Keyman.UI.UframeCEFHost, utilcheckfonts, AppEvnts, KeymanTextEditorRichEdit, TempFileManager, - UfrmKeymanBase, UserMessages, SHDocVw_EWB, EwbCore, KeymanEmbeddedWB, - System.Actions, System.ImageList; + UfrmKeymanBase, UserMessages, System.Actions, System.ImageList; type TfrmTextEditor = class(TfrmKeymanBase) @@ -99,7 +98,6 @@ type EditPasteCmd: TAction; New1: TMenuItem; panFonts: TPanel; - webFonts: TKeymanEmbeddedWB; panEditor: TPanel; splitFonts: TSplitter; Cut1: TMenuItem; @@ -151,6 +149,7 @@ type procedure mnuViewFontHelperClick(Sender: TObject); procedure editorKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private + webFonts: TframeCEFHost; wm_keyman_control, wm_keyman_refresh: UINT; FUpdating: Boolean; FCheckFontsThread: TCheckFontsThread; @@ -178,7 +177,7 @@ type procedure CheckKeyboardFonts(FSetFont: Boolean); procedure CheckFontsThreadComplete(Sender: TObject); - function LoadWebBox(web: TEmbeddedWB; const name: WideString; const AdditionalData: WideString = ''): TTempFile; // I4181 + function LoadWebBox(web: TframeCEFHost; const name: WideString; const AdditionalData: WideString = ''): TTempFile; // I4181 procedure HideFontsBox; procedure FireCommand(const command: WideString; params: TStringList); @@ -266,6 +265,8 @@ begin StartCheckFontsThread; HideFontsBox; + {$MESSAGE HINT 'TODO: Support font box'} + FormCreate_Editor; end; @@ -364,11 +365,10 @@ begin end;} -function TfrmTextEditor.LoadWebBox(web: TEmbeddedWB; const name: WideString; const AdditionalData: WideString = ''): TTempFile; // I4181 +function TfrmTextEditor.LoadWebBox(web: TframeCEFHost; const name: WideString; const AdditionalData: WideString = ''): TTempFile; // I4181 var FXMLRenderers: TXMLRenderers; FXMLFileName: TTempFile; // I4181 - v: OleVariant; begin FXMLRenderers := TXMLRenderers.Create; try @@ -379,8 +379,7 @@ begin FXMLRenderers.Free; end; - v := navNoHistory or navNoReadFromCache or navNoWriteToCache; - web.Navigate(FXMLFileName.Name, v); // I4181 + web.Navigate(FXMLFileName.Name); // I4181 Result := FXMLFileName; // I4181 end; @@ -810,6 +809,7 @@ begin end; end; +{$MESSAGE HINT 'TODO: Handle new window event from font frame'} procedure TfrmTextEditor.webNewWindow3(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, bstrUrl: WideString); @@ -824,7 +824,7 @@ begin else begin Cancel := True; - (ASender as TEmbeddedWB).Go(bstrUrl); + (ASender as TframeCEFHost).Navigate(bstrUrl); end; end; @@ -870,7 +870,6 @@ begin if command = 'selectfont' then begin webFonts.SetFocus; - webFonts.SetFocusToDoc; if editor.CanFocus then // I1641 editor.SetFocus; CurrText.Name := params.Values['font']; diff --git a/windows/src/desktop/kmshell/util/UfrmPrintOSK.dfm b/windows/src/desktop/kmshell/util/UfrmPrintOSK.dfm index b367646a28..0db7e90009 100644 --- a/windows/src/desktop/kmshell/util/UfrmPrintOSK.dfm +++ b/windows/src/desktop/kmshell/util/UfrmPrintOSK.dfm @@ -19,32 +19,4 @@ inherited frmPrintOSK: TfrmPrintOSK Height = 13 Caption = 'Printing On Screen Keyboard' end - object web: TKeymanEmbeddedWB - Left = -20 - Top = -20 - Width = 10 - Height = 10 - TabStop = False - TabOrder = 0 - Silent = False - OnDocumentComplete = webDocumentComplete - OnPrintTemplateTeardown = webPrintTemplateTeardown - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - DisableErrors.fpExceptions = False - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Orientation = poPortrait - ControlData = { - 4C00000009010000090100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/desktop/kmshell/util/UfrmPrintOSK.pas b/windows/src/desktop/kmshell/util/UfrmPrintOSK.pas index 7cec88bac5..07feb17bc2 100644 --- a/windows/src/desktop/kmshell/util/UfrmPrintOSK.pas +++ b/windows/src/desktop/kmshell/util/UfrmPrintOSK.pas @@ -7,7 +7,7 @@ Modified Date: 18 May 2012 Authors: mcdurdin - Related Files: + Related Files: Dependencies: Bugs: @@ -25,13 +25,12 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtShiftState, UserMessages, - VisualKeyboard, Menus, OleCtrls, SHDocVw, ExtCtrls, keymanapi_TLB, - SHDocVw_EWB, EwbCore, EmbeddedWB, StdCtrls, UfrmKeymanBase, - KeymanEmbeddedWB; + VisualKeyboard, Menus, ExtCtrls, keymanapi_TLB, + StdCtrls, UfrmKeymanBase; +{$MESSAGE HINT 'TODO: Support printing OSK'} type TfrmPrintOSK = class(TfrmKeymanBase) - web: TKeymanEmbeddedWB; TntLabel1: TLabel; procedure webDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); @@ -78,7 +77,7 @@ begin TempPath := IncludeTrailingPathDelimiter(buf); TempFileName := 'Keyman Keyboard '+kbd.ID+'.html'; if not SaveWebPage(vv, TempPath + TempFileName) then Exit; - web.Navigate(TempPath + TempFileName); +// web.Navigate(TempPath + TempFileName); finally vv.Free; end; @@ -107,7 +106,7 @@ procedure TfrmPrintOSK.WMUserPrintKeyboard(var Message: TMessage); begin SetFocus; // I2675 BringToFront; // I2675 - web.Print; +// web.Print; end; procedure TfrmPrintOSK.DeleteWebPage; diff --git a/windows/src/ext/embeddedwb/ChangeLog.txt b/windows/src/ext/embeddedwb/ChangeLog.txt deleted file mode 100644 index d83ab47856..0000000000 --- a/windows/src/ext/embeddedwb/ChangeLog.txt +++ /dev/null @@ -1,981 +0,0 @@ -============================================================= -EmbeddedWB Component Pack -============================================================= - -[+] Added/New -[-] Removed -[*] Changed -[%] Fixed -[^] Improved/Updated - -============================================================= -Version 14.70.0 - 02.10.2010 - by smot -============================================================= - -* Delphi XE support - [^] EWB_jedi.inc (compiler directives) - -* TEwbCore - [%] IE Control Handle is not destroyed correctly (ref.: http://tinyurl.com/FixIEControl) - -* TEmbeddedWB - - [%] OnMessage destroys Msg.Result for all messages (ref.: http://tinyurl.com/OnMessageFix) - [%] Memory Leak IHtmlDocument2(ref.: http://tinyurl.com/IHtmlDocument2MemLeak) - [%] Cannot invoke shortkeys when the webbrowser gets focus (ref.: http://tinyurl.com/ShortcutsEWBFix) - [^] Minor fixes and improvements - -* TEWBTools.pas / TEmbeddedWB - [^] Changed SetProxy() (ref.: http://tinyurl.com/ProxySettingsEWBFix) - -* TIEDownload.pas - [%] Do not overwrite global formatsettings - -============================================================= -Version 14.69.1 - 23.11.2009 - by smot -============================================================= - -* TEmbeddedWB / TEwbCore - [%] Setting EmbeddedWB1.DialogBoxes.DisableAll = True prevented TSaveDialog from opening (ref.: http://tinyurl.com/yj3ucet) - [%] OndocumentComplete fired upon startup (ref.: http://tinyurl.com/ykqbfw3) - [%] TEmbeddedWB.Focused property always returned False (http://tinyurl.com/yfxqza6) - [*] Moved ZoomPercent to the published section - -* [*] Renamed TLinkLabel to TLinksLabel due to a naming conflict in D2010 (ref.: http://tinyurl.com/yk7kox4) - -============================================================= -Version 14.69.0 - 16.09.2009 - by bsalsa / smot -============================================================= - -* D2010 support - [^] EWB_jedi.inc (compiler directives) - -* TEmbeddedWB - [%] Small bug in TEmbeddedWB.Wait (ref.: http://www.bsalsa.com/forum/showthread.php?t=1211) - -* TIEAddress: - [+] TEwbCore can also be assigned to the EmbeddedWB property - [+] Opposite arrow on DropDown. - [%] Flickering. - [%] Bugged behavior when no EmbeddedWB assigned. - [%] Navigation on selected Url. - [%] Navigation on double click. - [%] bugged behavior On Enter Key - [%] TextOnLoad. - -* TWebUpdater: - [*] The application version numbering to the common style (Like Delphi) - [+] A boolean property: AutoGetExeVersion; - [+] a function to get the application version from the Exe file - (What the developer sets it in the project options). - [^] the demos with the above. - [^] Code Clean-Up - - -Version 14.68.0 - 21.07.2009 - by smot -============================================================= - -* TEwbCore / TEmbeddedWB: - [+] Enabled "Add to Favorites" menu item - [+] FOnStop Event - [+] IE8 UserInterfaceOption DPIAware (DOCHOSTUIFLAG_DPI_AWARE) - - * TEmbeddedWB: - - [+] OnHTMLCodeChange Event - [%] Possible AV when using HTMLCode property with event handlers assigned. - -* EwbFocusControl - [%] Bug in MessageHook (Thanks Ludek) - -============================================================= -Version 14.67.9 - 20.05.2009 - by bsalsa / smot -============================================================= - -* TEmbeddedWB: - [+] AColor Parameter in SearchAndHighlight - [+] FillForm ElementNr Parameter - [%] FillForm (http://tinyurl.com/fillform) - [%] OnKeyDown/OnKeyUp didn't pass ssAlt in Shift - [%] Replaced SetWindowLong with SetWindowLongW - (Unicode Issue: http://tinyurl.com/SetWindowLongW) - -* TEwbCore / TEmbeddedWB: - [+] OnPreRefresh Event - -* TXmlParser: - [%] New Delphi 2009 support - (About a 100 changes of AnciChar, WideChar CharInSet...) - -* TFavMenu: - [+] TLocalization.EmptyCaption - -* TExportFavorite: - [+] Localization of error messages - [+] OnError Event - [+] TEwbCore can also be assigned to the EmbeddedWB property - [^] Code Clean-Up - -* TImportFavorite: - [+] Localization of error messages - [+] OnError Event - [+] TEwbCore can also be assigned to the EmbeddedWB property - [^] Code Clean-Up - -* TFavoritesTree: - [+] Localization - [+] Use favorite icons (Internal ImageList). Thanks to wbk! - [+] TEwbCore can be assigned to the EmbeddedWB property - [%] Function "DoOrganizeFavDlg" doesn't work in XP (IE 7/8) - -* TIEDownload: - [+] Host: string value for download managers - [+] support for IWindowForBindingUI interface - [+] GetFileNameFromUrl. - [+] MkParseDisplayName. - [+] OnBeforeDownload Event: a procedure that fires before download - and contains all the needed info - [+] procedure Download(const pmk: IMoniker;const pbc: IBindCtx); overload; - for integration with the IE FileDownload event moniker. - [%] a check (Binding <> nil) before aborting to prevent a possible AV - [*] GetDisplayName to return WideChar and not a string. - [*] FOnGetBindInfoEx position. - [*] QueryInfoFileName behaviour. - [*] DisplayName behaviour. - [^] TBSCB.Create to support moniker integration with IE. - [-] Old download procedure. - -* IEMultiDownload: - [+] Support to folder structure so you can download a complete - web site into the same structure as in the web site. - [+] Added More options to the download routine. - [^] Optimized the code. - [%] Parsing procedure. - [+]/[^] The following events to get more info on the download structure. - TOnMultiBeforeDownloadEvent - TOnMultiCompleteEvent - TOnMultiGetDocInfoEvent - TOnMultiGetImageEvent - TOnMultiGetLinkEvent - TOnMultiGetQueryInfoEvent - TOnMultiItemAddedEvent - TOnMultiParseCompleteEvent - TOnMultiParseDocumentEvent - TOnMultiParseErrorEvent - TOnMultiParseProgressEvent - TOnMultiStateChangeEvent - TOnMultiStartParsingEvent - -* Demos: Some code Clean-Up - [+] \Demos\EmbeddedWB Demos\18 - SysListView32 Replacement - [^] \Demos\EmbeddedWB Demos\15 - THTMLListener_Demo (to work with frames) - [^] \Demos\Various Demos\02 - ExportFavorites_Demo - [^] \Demos\Various Demos\07 - IEDownload_Demos - [^] \Demos\Various Demos\08 - IEMultiDownloads - [^] \Demos\Various Demos\20 - WebUpdater_Demos - -============================================================= -Version 14.67.8 - 12.04.2009 - by bsalsa / smot -============================================================= - -* TIEParser: - [+] Proxy support. - [+] Support to interact between IEDownload and IEParser. - [+] ParserState & StateChange. - [+] OnParseError Event - [+] OnParseDocument Event - [+] OnQueryInfo Event - [+] Properties: Encoding, MimeType, Disposition, ParserState - [*] Go with Parse to avoid confusion - [*] GetPageProperties - [*] LoadFromMoniker - [*] Replaced the CreateURLMoniker with CreateURLMonikerEx - [*] to flag URL_MK_UNIFORM for better security. - [^] Enhanced GetPageProperties. - [^] the internal structure. - [^] Updated and cleaned out the unit. - [-] Some UI code. - [-] BusyChange. - [-] The Messages TPersistent. It's a user interface that doesn't belong to the component. - [-] All the extra functions to IEDownloadTools. - -* TIEDownload: - [+] Percent string and FileSize Integer to OnProgress. - [+] A better "semaphore" system to wait for the download to finish. - [+] Support for multiple downloads. - [+] function IsAsyncMoniker - [+] GetDisplayName. - [+] Download procedure which allows access to the Moniker and the BindCtx - [+] Synchronous downloading support. - [+] IeDownloadAcc.pas (Contains the extra interfaces and so on that are not - included in the current UrlMon.pas - [+] IEDownloadStrings files that contain the string for easy localization. - [+] UrlDownloadToFile with the callback. - [+] UrlDownloadToCacheFile with the callback. - [+] Property DisplayName. - [+] IsRunning function. - [+] Default value for the TimeOut in case of 0. - - [+] GetDataFromFile. - [+] TThreadStatus = (tsRunning, tsSuspended, tsWaiting, tsTerminated); - [+] IE8 IAuthenticateEx interface. - [+] IE8 IBindStatusCallbackEx interface. - [+] IE8 IHttpNegotiate3 interface. - [+] IE8 constants, records and types. - [+] Events for the above. - [+] procedure Execute; override; - procedure Suspend; - procedure Terminate; - procedure Resume; - for the BindStatusCallBack - [+] 40 or more options in the following sets: - BindF, BindF2, BindInfoF, BindInfoOptions. - [+] Added OnTerminate event for the BSCB. - [*] Moved the internal code to TCustomIEDownload for future development. - [*] Depart internal GoAction to GoInit + GoAction. - [*] GoAction to a function. - [*] Changed the Connect function so it will be more flexible. - [*] Changed OnComplete event that will fire on True complete and will present the needed data. - [*] Abort renamed to AbortBinding so you won't be confused with Cancel. - [*] Separated/added GoList from Go procedures (download a list of files). - [*] Changed the callback to a TThread to enable multiple simultaneous downloads. - [*] Replaced the places where OnStop is fired. - [*] To enable more options, I had to change the current Options - structure so you have to adapt your code! - [*] Replaced the useless OnDownload event to OnConnect. - This event will notify about the results on the connect procedure in details. - [^] The demos with the above and merged the DownloadManager demo into the IEDownload demo. - - -* TEmbeddedWB - [%] Small memory leak reported by FastMM4. - [%] ScrollToBottom to make it work with IE8 - [%] TEmbeddedWB.SetModified to prevent Exception 'Interface not supported' - [%] Made VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT work in SysListView32 - -* TEmbeddedWB/EwbFocusControl.pas - [%] a possible AV in TAppHookWindow.MessageHook - -* TEWBTools.pas - [%] SaveApplicationFormSize - Free actually freed the EWB and not TRegistry - -* SHDocVw_EWB.pas - [+] RefreshConstants REFRESH_NORMAL..REFRESH_COMPLETELY - -* TIEMultiDownload (New component by bsalsa, still in beta stage) - - This component is a combination of TIEDownload with the IEParser. - Its purposes is downloading (grab) a complete web site and/or its files. - For example: Downloading only the page images or only the referring links in - that page without the need to find them and then download one by one. - It has several events so a user can decide to approve/cancel the download - process and so on. - -* [*] Removed EWB_Compilers.inc, added EWB_jedi.inc (compiler directives) - -* Demos: - [^] \Demos\Various Demos\10 - TIEDownload_Demo - [^] \Demos\Various Demos\20 - MimeFilter_Demo - [^] \Demos\Various Demos\12 - TIEParser_Demo - [^] \Demos\Various Demos\19 - EWB Events Logger - [^] \Demos\Mega Demo\ - -============================================================= -Version 14.67.7 - 08.03.2009 - by bsalsa -============================================================= - -* TIEDownload component (major redesign) - -1. Fixed all memory leaks. -2. Built a new system that holds the callback messages until the download is complete. -3. New properties like FileFize, DownloadedFile, ServerIP, ServerAddress, MimeType, FileExtension, - DownloadsCounter and more. -4. Added support in new interfaces like IHttpNegotiate2, IBindHost, ICodeInstall, and more. -5. Added new events like GetRootSecurityId, OnGetWindow, OnFileExists, OnDataAvailableInfo, OnConnectEvent, OnCodeInstallProblem and a lot more -6. Stabilized the component and fixed all the bugs I could find. -7. Added support to download a list (TStrings) of URLs -8. Removed all the unnecessary codes I've added during the years. -9. Changed all the variables to significant ones. -10. Updated the code for IE7 and up. -11. Changed the way the moniker interacts by Microsoft specifications. -12. Added 2 demos (RunTime creation and a MegaDemo) -13. In fact, I rewrote every line in the code (More or less) - - -* IEConst.pas - - [^] constatnts - -* UI_Less.pas - - [Fixed] E_Pending - -* Demos: - - [^] \Demos\EmbeddedWB Demos\16 - Mega_Demo - [^] \Demos\Various Demos\10 - TIEDownload_Demo - [^] \Demos\Various Demos\11 - TIEDownloadMgr_Demo - - -============================================================= -Version 14.67.6 - 17.02.2009 - by smot -============================================================= - -* General - - [Fixed] D5 compatibility issues. - -* TEmbeddedWB - - [Added] optional TimeOut Parameter to TEmbeddedWB.Go(...) - [Added] TProxySettings.SetProxyFromPAC // Load proxy settings from a PAC file. - [Fixed] Wait() could cause AV (See: http://www.bsalsa.com/forum/showpost.php?p=4634&postcount=3) - -* TLinkLabel - - [Fixed] [%] Paint caused AV in D5 - -* TEwbControl - - [Added] InternetFeatures Property for D5 - - -============================================================= -Version 14.67.5 - 09.02.2009 - by smot -============================================================= - -* TEmbeddedWB - - * [%] Bug with Unicode characterts (Cyrillic symbols etc) - * [%] Set8087CW() was not called on creation of EWB (to suppress error "Invalid floating point operation") - * Modified: (TVisualEffects).DisableSounds calls now FEATURE_DISABLE_NAVIGATION_SOUNDS (IE7+) - * Modified: TEmbeddedWB.LoadFromString (AssignEmptyDocument if no document assigned) - -* unit EwbTools: - * [%] GetIEVersion (didn't return the correct IE version for IE7,8) - * Added: procedure ClickInputImage(WebBrowser: TEmbeddedWB; ImageURL: string); - * Added: procedure SetTextAreaValue(Document: IDispatch; sName, sValue: string; Options: TFindOptions); - -* unit MSHTML_EWB: - * Added: Declarated CoClasses defined in the Type Library - -* TEwbControl: - * Added: InternetFeatures Property - -* TRichEditWB: - * Fixed Memory Leak when using multiple instances. - -============================================================= -Version 14.67.4 - 31.01.2009 - by smot / bsalsa -============================================================= - -* THistoryListView: - -- Fixed inconsistent notations all over the unit. -- Fixed significant names. -- Fixed Memory leak (List). -- Code reformatting - -* TFavoritesListView: - -- Fixed inconsistent notations all over the unit. -- Fixed significant names. -- Fixed Memory leak (List). -- Code reformatting - -* TFavoritesTree: - -- Fixed inconsistent notations all over the unit. -- Fixed significant names. -- Fixed Memory leak (List). -- Code reformatting -- Removed DirMonitor (No longer needed) - -* Minor fixes and Code Cleaning - -============================================================= -Version 14.67.3 (RC1) - 28.01.2009 - by smot / bsalsa -============================================================= - -* unit TEmbeddedWB.pas - -- [^] MouseWheelFix focus detection. - -- [%] EWB didn't scroll if the mouse was over a flash content while it had not the focus & other issues fixed - -- [%] EWB instance created during runtime hangs if LoadSettings() is called. - (only if directive Enable_SubClassChildWindows is enabled) - -> Solution: Calling InitEWBChildHook in OnCreate() solves the problem. - -- [%] ShowAboutBox reintroduce; {to avoid error if member not found} - -- [%] Property value is always False after setting e.g. Silent to True in the object inspector - Solution (Workaround): reintroduced SetRegisterAsDropTarget, GetRegisterAsDropTarget, SetRegisterAsBrowser, - GetRegisterAsBrowser, SetSilent, GetSilent - -- [*] Property UnSelectAll changed to Property ClearSelection {OLECMDID_CLEARSELECTION} -- [*] property Name: string read GetName write SetName; (To assign a Name for a EWB instance created at runtime) -- [*] Added ATitle Parameter for SaveDialogEx(AFilter: string = ''; ATitle: string = '') -- [*] GetSelLength now works with frames -- [*] Method Print(). If PrintOptionsEnabled, Print uses the Header / Footer defined in PrintOptions.Header, PrintOptions.Footer -- [*] WaitWhileBusy(TimeOut: Longword = 0) to a function. // Returns True if TimeOut reached or Cancel set in OnBusyWait handler - -[+]Property Delete; {OLECMDID_DELETE} -[+]Property PasteSpecial; {OLECMDID_PASTESPECIAL} -[+]Property Undo; {OLECMDID_UNDO} -[+]Property Redo; {OLECMDID_REDO} -[+]function GetActiveFrame(): IHTMLDocument2; overload; -[+]function GetActiveFrame(doc: IHTMLDocument2): IHTMLDocument2; overload; -[+]function GetActiveElement(Doc: IHTMLDocument2 = nil): IHTMLElement; -[+]function GetSelectedText(bTopLevel: Boolean = True; ReturnAsHTML: Boolean = False): string; {also works with frames} - -[+]OnKeyDown, OnKeyUp, OnClick events - -[+]function IsCommandEnabled(sCmdId: WideString): Boolean; -[+]function QueryCommandValue(sCmdId: WideString): OleVariant; - E.g: QueryCommandValue('fontname') returns the fontname of the seleted text - -[+]bWait Parameter to AssignEmptyDocument() -> procedure AssignEmptyDocument(bWait: Boolean = False); - -[+]Method function TEmbeddedWB.NavigateWait(const URL: WideString; TimeOut: Longword = 0): Boolean; - // Instead of EmbeddedWB1.Navigate('..'); EmbeddedWB1.Wait(5000); write NavigateWait('..', 5000); - - -- [-]GetSelText, GetSelTextHTML (replaced with GetSelectedText that works with frames) - -- Removed methods from EmbeddedWB (still available in EWBTools.pas) - - function OpenAddressBook: Boolean; - function OpenCalendar: Boolean; - function OpenEudoraMail: Boolean; - function OpenGoogleMail: Boolean; - function OpenHotmailMail: Boolean; - function OpenNetMeeting: Boolean; - function OpenNewsClient: Boolean; - function OpenOutlookExpressMail: Boolean; - function OpenOutlookMail: Boolean; - function OpenRegistryEditor: Boolean; - function OpenYahooMail: Boolean; - -* Unit EWBCore; - - Added: procedure TCustomEmbeddedWB.SetFocusToBody; - -* unit EWBTools: - -- [*] InvokeCMD is now a function which returns HRESULT -- [*] Functions that call InvokeCmd now return a Result value {also changed methods in TEmbeddedWB} - -* unit TFavoritesPopup - -- [%] AddFavorite() {pointed out by qiurun, http://bsalsa.com/forum/showthread.php?p=4183#post4183 } - -* [+] Component EwbControl (EwbControlComponent.pas) - - This component encapsulates the two units EwbFocusControl.pas and EwbMouseHook.pas into an easy-to use component. - Main features: Enable / Disable FocusControl and MouseWheelFix at runtime. - -* unit EwbFocusControl.pas (NEW) - - Moved "HookMainWindow"-Code to this unit. - TEWBFocusControl takes care of setting the focus back on EWB when switching back to the application or - switching between forms. Also fixed MDI handling. - -* unit EWBMouseHook.pas (NEW) - - Moved "MouseWheelFix"-Code to this unit. - -* TWebUpdater: - - - Fully localized; - - Bugs fixed - - formated, code cleaning - - Added file : AppWUstrings: Localization porpuse... - - Fixed Non-local objects with unprotected calls to Free; - - [%] many inconsistent cases. - - [%] unit reformatting. - - Fixed Demo. - -* THistoryMenu: - - - Bugfix (pointed out by t-rex, http://www.bsalsa.com/forum/showthread.php?t=589) - -* SendMail_For_Ewb.pas: - - Fixed memory leak in SendEMailByMAPI(). - - -* IEDownload: - - Fixed : Create a directory which isn't needed in case of a stream. - - Fixed Non-local objects with unprotected calls to Free. - - [%] 2 memory leaks. - - [%] many inconsistent cases. - - [%] unit reformatting. - - [%] Demos. - -* Added 2 new Demos: - + 17 - THtmlListener_Demo - + 18 - TEWBControl_Demo - * Updated other Demos - -* ShdocVw_Ewb.pas - - - Updated with IE8 code (constants, events etc.) - -* Many other Fixes & Code Cleanup - -============================================================= -Version 14.67.2 - 09.01.2009 - by smot -============================================================= - -- [%] TEmbeddedWB freezes when scrolling with a mouse wheel (if Enable_MouseWheelFix enabled) - -> Solution: Fix in MouseHookProc - -============================================================= -Version 14.67.0 - MAJOR CHANGE - 07.01.2009 - by smot / AHUser -============================================================= -(Read the migration hints in the middle of the change log) - -Changes by AHUser: - - - [%] Much improved Delphi 2009 Unicode support - (MAPI is ANSI only) - - [%] many (possible) buffer overflows - - [%] Delphi 5 compatibility restored - - [%] Memory leaks in TWebUpdater - - [%] invalid pointers to already released local string variables (TEmbeddedWB.FormWndProc) - - [%] access violations in WBExecScript (vtString, vtAnsiString and vtChar used TVarRec.VString instead of their own union) - - [%] TIEParser.Go used a field to point to a local Char-Array - [+]more supported parameter types for WBExecScript - -Changes by smot: - -* unit TEmbeddedWB.pas - - - [%] Hide / Show methods don't update the "Visible" property - -> Solution: Added FVisible := MSG.WParam = 1; in CMVisibleChanged - - - [%] Wait() blocks if called in OnCreate or no handle is allocated - -> Solution: Check if HandleAllocated - - - [%] The Fix from 14.66.5 " Catch WA_ACTIVE and WA_CLICKACTIVE to set Focus back to EWB if it is the active control) . - -> Using HookMainWindow to catch CM_ACTIVATE (Unit EwbApplicationHook) - - - [%] Clicking on TEmbeddedWb while SysListView32 is active doesn't make it the ActiveControl - -> Solution: Subclassed "SysListView32" control - - - [%] GetCookie raises an Error if no document loaded. - -> Solution: Check if DocumentLoaded - - - Change: overrode the property "Name" to return the Delphi TObject.Name. - -> Instead of TControl(TEmbeddedWB).Name you can write TEmbeddedWB.Name - - - Change: overrode the property "HWND" as it only throws an exception when accessing it from Webbrowser control. - -> HWND now returns the handle to "Internet Explorer_Server" or "SysListView" - Hint: EmbeddedWB.Handle returns the handle to the Webbrowser Object. - - - Change: Removed " if (FProxySettings.FAddress <> '') then" in RefreshProxy() to allow removing of Proxy Server. - - - Change: DesignMode is now a property: DesignMode: Boolean read GetDesginMode write SetDesginMode; - - [+]property OnBusyWait:TOnBusyWait read FOnBusyWait write FOnBusyWait; - Added FOnBusyWait in WaitWhileBusy(), Wait() - - [+]optional Timout Parameter in Wait(TimeOut: Longword = 0) and WaitWhileBusy(TimeOut: Longword = 0) - - [+]A stub for the "Resizable" property as the WebBrowser object returns an error from this property (msdn) - - [+]AFilter Parameter to SaveDialogEx(AFilter: string = ''): string; - to call the dialog with custom filters (or to localize) - - - Added a Sender parameter to some methods: - - >>**** Migration hints:************************************************************************** - - On compiling or saving old projects an errors like this may occur because of the changes in in the parameters: - - "The method referenced by
. has an incompatible parameter list. - Remove the reference?". - - If this happens do not remove the reference, click on "Cancel" and change the - parameters for the methods as listed below by hand - - <<<********************************************************************************************** - - -> Event OnFilterPopupMenu - - procedure FilterPopupMenu(Sender: TObject; ID: Cardinal; Menu: HMENU; - const Context: IDispatch); - - -> Event OnGetDropTarget - - procedure GetDropTarget(Sender: TCustomEmbeddedWB; var DropTarget: IDropTarget); - - -> Event OnMessage - - procedure Message(Sender: TObject; var Msg: TMessage; - var Handled: Boolean); - - -> Event OnShowHelpRequest - - function ShowHelpRequest(Sender: TObject; HWND: Cardinal; - pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT; - - -> Event OnShowMessage - - function ShowMessage(Sender: TObject; HWND: Cardinal; lpstrText, - lpstrCaption: PWideChar; dwType: Integer; lpstrHelpFile: PWideChar; - dwHelpContext: Integer; var plResult: Integer): HRESULT; - - -> Event OnZoomPercentChange - - function ZoomPercentChange(Sender: TCustomEmbeddedWB; - const ulZoomPercent: Cardinal): HRESULT; - - - <<<********************************************************************************************** - - [-]ViewPageFieldsToString, ViewPageImagesToString, ViewPagePropertiesToStrings - - -* Unit EWBCore; - - - [%] Trapping of WM_SETFOCUS "Internet Explorer Server" child doesn't work anymore after it is destroyed. - -> Solution: Calling FOnHookChildWindows again in CommandTarget_Exec if nCmdID = OLECMDID_PREREFRESH - - -* Unit EWBTools; - - [+]procedure ClearSessionCookies; - - - [-]function OpenOtherWBFavorites that navigates to 'c:\newbook.htm' (useless) - - - Change: function GetFrameFromDocument: Added: " if Supports(Unk, IWebBrowser2, Result) then" (reported by perva 2008/12/10) - - - Change: function SearchText: Added aTypeSearch Parameter to indicate the type of search. - - - [%] GetIPAndHostName (D5 - D2009) - -* Unit IEParser; - - [%] Changed doc._Release to Doc := nil; (suggested by phzongna) - [%] Changed E.GetAttribute('Source', 0); to E.GetAttribute('Src', 0); (reported by JohnS) - - -* EWB.inc - Embedded Webbrowser definitions: - - // ** Activated by default: - - // Use functions from EwbTools.pas - {$DEFINE USE_EwbTools} - - // Enable Mouse Hook to catch WM_MOUSEWHEEL and set Focus on TEmbeddedWB while not active - {$DEFINE Enable_MouseWheelFix} - - // Enable Subclassing of TEmbeddedWB Child windows (focus issues, ActiveControl, TAB and ActiveControl) - {$DEFINE Enable_SubClassChildWindows} - - // Enable FormWndProc "Hooking" to handle Dialog Boxes /Popups - {$DEFINE Enable_HookParentFormWndProc} - - // Enable HookMainWindow to catch CM_ACTIVATE (EWB focus issue when switching back to the application) - {$DEFINE Enable_HookMainWindow} - - // ** Deactivated by default: - - // enable DDE Support EwbDDE.pas - {.$DEFINE USE_EwbDDE} - - // enable MSHTML events (MSHTMLEvents.pas) - {.$DEFINE Enable_EwbMSHTMLEvents} - - // Enable Mouse Events (OnEnter, OnExit, OnMove) in TEmbeddedWB (D5, D6, D7 only) - {.$DEFINE Enable_MouseEvents} - - // Enable OleCtrls Fix (experimental) - {.$DEFINE USE_OleCtrlsFix} - - // Enable Debugging with GExperts - {.$DEFINE Enable_Debug} - -* Demos: - - - Fixed Elements_Under_Mouse_Demo (reported by T-W: http://www.bsalsa.com/forum/showpost.php?p=4102&postcount=4) - - Fixed Mega Demo - - Updated all Demos, some code cleaning & minor fixes - -====================================== -Version 14.66.5 - 21.12.2008 - by smot -====================================== - -* unit TEmbeddedWB.pas & IEParser.pas - - - DonloadInSilentMode had a typo. Changed to DownloadInSilentMode - -* unit TEmbeddedWB.pas - - - - [%] Visible Property doesn't work properly. - IMPORTANT: When migrating your existing projects to the new version - make sure that the Visible Property is set to True in the Object Inspector if you want TEmbeddedWB to be visible. - - - [%] OnVisible Event is not fired. - -> Solution: CM_VISIBLECHANGED handler added - - - [%] Added DirectoryExists() for D5 in EwbCoreTools.pas - - - [%] TEmbeddedWb is not focused when switching to another application and then Alt+Tab back - - [%] TEmbeddedWb is not focused again when opening another form/dialog and closing it again while EWB has the focus - - -> Solution: In FormWndProc: Catch WA_ACTIVE and WA_CLICKACTIVE to set Focus back to EWB if it is the active control) - - - [%] TEmbeddedWb needs to be focused first before the mouse wheel can scroll the document - -> Solution: Catching CM_MOUSEWHEEL in FormWndProc) - - - [%] Clicking on TEmbeddedWb, doesn't make it the ActiveControl - - [%] OnEnter and OnExit Events don't work. - - -> Solution: Subclassed "Ineternet Explorer Server" and "ShellDocObj") - Enable_HookChildWindows must be defined in EWB.inc -> {$DEFINE Enable_HookChildWindows} - *Enabled by default* - - - [%] Modified TEmbeddedWB.Go() to compile under D5 - - [+]TEmbeddedWB.UnSelectAll; - - [+]OnWindowStateChanged Event. Note: It is available only in Microsoft Windows XP Service Pack 2 (SP2) or later. - -* unit SHDocVw_EWB.pas - - [+]unit OleCtrlsFix. USE_OleCtrlsFix must be defined in EWB.inc. {$IFDEF USE_OleCtrlsFix} - *Disabled by default* - // details: http://www.bsalsa.com/forum/showthread.php?t=361 - - -* unit FavoritesListView.pas - - -Added: RefreshList method - -* unit EwbCore.pas - - Enabled the IProtectFocus interface (IE7) - Moved the OnAllowFocusChange property to the published section. - -* Demos: - - [+]Events Test Demo - - -===================================== -Version 14.66.4 - 10.11.2008 - by smot -====================================== - -* unit TEmbeddedWB.pas - - [+]procedure ExecScript(WebBrowser: TEmbeddedWB; sExpression, sLanguage: string); - {implemented in EWBTools.pas} - - [+]function ExecScriptEx(WebBrowser: TEmbeddedWB; MethodName: string; ParamValues: array of const): OleVariant; - {implemented in EWBTools.pas} - - [+]private property Encoding to control stream encoding (only D2009), default: Encoding := TEncoding.Default; - Usage example: EmbeddedWB1.Encoding := TEncoding.UTF8; EmbeddedWB1.LoadFromString(Memo1.Text); - - - [*] LoadFromString, LoadFromWideString, LoadFromStrings (to support Encoding) - - - [*] {$DEFINE USE_EwbMSHTMLEvents} to {$DEFINE Enable_EwbMSHTMLEvents} - - - Added 2 mouse events (Not yet working in D2005-D2009) - - property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; - property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; - - [+]directive {.$DEFINE Enable_MouseEvents} // Enable Mouse Events in TEmbeddedWB, disabled by default - - [+]OnMessage Handler (which is in WndProc). Allows you to catch / modify events which come trough WndProc - - -* unit EWBTools.pas - - - replaced FillForm() with a new one (http://www.bsalsa.com/forum/showthread.php?t=499) - - [%] Warnings W1044 Suspicious typecast of string to PAnsiChar (in proxy functions) - - -* unit MSHTMLEvents.pas - - [+]{$WARN SYMBOL_PLATFORM OFF} - -* unit EwbCoreTools.pas - - [+]CharInSet function (for Delphi versions < D2009) - - -* Packages: - - [+]'..\Source\MSHTMLEvents.pas' - -* Demos: - - [+]ExecScriptEx Demo - - [^] RightClick_Demo (corrections & simplification) - -* Renamed EWB.inc to EWB_Compilers.inc - Created new EWB.inc with EmbeddedWB definitions - - -=================================== -Version 14.66.3 - by smot -=================================== - -* unit EwbCore.pas - - - Change: "EnablesFormsAutoComplete" is set to True by default -> UserInterfaceOptions := [EnablesFormsAutoComplete]; - - -* unit TEmbeddedWB.pas - - - Added SinkComponent to trap HTML Events (TMSHTMLHTMLDocumentEvents) - - Addded conditional symbol USE_EwbMSHTMLEvents to Enable SinkComponent (enabled by default) - - [+]New Type TUserAgentMode = (uaDefault, uaInternal, uaRegistry); - - uaDefault: use default IE UserAgent - uaInternal: use custom UserAgent for EWB. - uaRegistry: set custom UserAgent through registry, globally - - - [+]TProxySettings.FUserAgent - - [+]TEmbeddedWB.RefreshProxy to Refresh Proxy settings during runtime. - Usage: - with EmbeddedWB1.ProxySettings do - begin - Address := .. - Port := .. - end; - EmbeddedWB1.RefreshProxy; - - [+]TEmbeddedWB.HScrollBarVisible : Boolean; // Returns True if the horizontal scrollbar is visible - TEmbeddedWB.VScrollBarVisible : Boolean; // Returns True if the vertical scrollbar is visible - - Added: public function TEmbeddedWB.HScrollBarPosition : Integer; // Returns the horiz. scrollbar position - public function TEmbeddedWB.VScrollBarPosition : Integer; // Returns the vertical scrollbar position - - - Added public function GetFieldValue(FieldName: string): string; - -* unit EWBTools.pas - - Added: procedure GetScrollbarVisibility(WebBrowser: TEmbeddedWB; var HScroll, VScroll: Boolean); - Added: function GetScrollBarPosition(WebBrowser: TEmbeddedWB; var ScrollPos: TPoint): Boolean; - Added: function GetFieldValue(OleObject: Variant; FieldName: string): string; - -* unit TIETravellog.pas - - [%] Removed these 2 lines from TIETravelLog.Connect: - - Embeddedwb.AssignEmptyDocument; - - Embeddedwb.Wait; - -* Added unit MSHTMLEvents.pas for Event sinking. - -* Added a new Demo: Demos\EmbeddedWB Demos\MSHTML_Events to demonstrate SinkComponent - -* Split the Demos directory up into EmbeddedWB Demos, Various Demos, Archives - -=================================== -Version 14.66.2 - by smot -=================================== - - -* General: - - - Moved the packages to the \Packages folder - - Renamed ReadMe.txt to ReadMe_Install.txt - - -* unit TEmbeddedWB.pas - - - [%] Try...Except around DDEInitiate(WParam, LParam) // http://www.bsalsa.com/forum/showthread.php?t=609 - - [%] TEmbeddedWB.Go() fails when navigating to a local folder e.g. 'c:\' (tested with IE 8, XP SP3) - - [%] if DirectoryExists() = True then prefix 'file:///' - - [%] Corrected the URLS in TEmbeddedWB pointing to msdn. - [+]mUnknown to TMeasure - - - -* unit EwbCore.pas - - - Fix to TCustomEmbeddedWB.DoFilterMsg because of some issues with non-standard characters. - // http://www.bsalsa.com/forum/showthread.php?t=763 - - - [%] memory leak reported by akirabbq. OnAmbientPropertyChange(DISPID_AMBIEN T_DLCONTROL) - http://www.bsalsa.com/forum/showthread.php?t=762 - - [+]If a TPopUpMenu is assigned then the assigned TPopUpMenu is shown. - DisabledPopupMenus := [rcmAll] must be set (in the Object Inspector) - -* Many small fixes and code cleanup - - -=================================== -Version 14.66.1 - by smot -=================================== - -This version adds some constants for IE8, D2009 compatibility and includes some fixes / changes. - -* file EWB.inc: - -Added D2007, D2009 defines. - - {$IFDEF DELPHI_13_UP} - {$ELSE} - {$ENDIF} - - -* EWBCore.pas: - -EnableThemes is set to True by default (I think this makes sense) -> UserInterfaceOptions := [EnableThemes]; - - -* unit TEmbeddedWB.pas - -- Removed the Wait() in TEmbeddedWB.GetFrame as it could block -- Modified Visible Property to work properly. Instead of TControl(TEmbeddedWB).Visible you can write TEmbeddedWB.Visible -- Bsalsa UserAgent is not automatically set anytime anymore as it causes some problems. - -> Modified SetUserAgent. Renamed RemoveUserAgent to RestoreUserAgent -- [%] Handle M_GETDLGCODE message in TEmbeddedWB.WndProc - -* unit IEConst: - -- Added constants that are missing in previous delphi versions: - - BINDSTATUS_COOKIE_SENT = BINDSTATUS_ACCEPTRANGES + 1; - BINDSTATUS_COMPACT_POLICY_RECEIVED = BINDSTATUS_COOKIE_SENT + 1; - BINDSTATUS_COOKIE_SUPPRESSED = BINDSTATUS_COMPACT_POLICY_RECEIVED + 1; - BINDSTATUS_COOKIE_STATE_UNKNOWN = BINDSTATUS_COOKIE_SUPPRESSED + 1; - BINDSTATUS_COOKIE_STATE_ACCEPT = BINDSTATUS_COOKIE_STATE_UNKNOWN + 1; - BINDSTATUS_COOKIE_STATE_REJECT = BINDSTATUS_COOKIE_STATE_ACCEPT + 1; - BINDSTATUS_COOKIE_STATE_PROMPT = BINDSTATUS_COOKIE_STATE_REJECT + 1; - BINDSTATUS_COOKIE_STATE_LEASH = BINDSTATUS_COOKIE_STATE_PROMPT + 1; - BINDSTATUS_COOKIE_STATE_DOWNGRADE = BINDSTATUS_COOKIE_STATE_LEASH + 1; - BINDSTATUS_POLICY_HREF = BINDSTATUS_COOKIE_STATE_DOWNGRADE + 1; - BINDSTATUS_P3P_HEADER = BINDSTATUS_POLICY_HREF + 1; - BINDSTATUS_SESSION_COOKIE_RECEIVED = BINDSTATUS_P3P_HEADER + 1; - BINDSTATUS_PERSISTENT_COOKIE_RECEIVED = BINDSTATUS_SESSION_COOKIE_RECEIVED + 1; - -- Added IE8 constants: - - BINDSTATUS_COOKIE_DATA = BINDSTATUS_SSLUX_NAVBLOCKED + 1; //IE8 - BINDSTATUS_SERVER_MIMETYPEAVAILABLE = BINDSTATUS_COOKIE_DATA + 1; //IE8 - BINDSTATUS_SNIFFED_CLASSIDAVAILABLE = BINDSTATUS_SERVER_MIMETYPEAVAILABLE + 1; //IE8 - BINDSTATUS_64BIT_PROGRESS = BINDSTATUS_SNIFFED_CLASSIDAVAILABLE + 1; //IE8 - -* unit IEDownloadTools: - -- Added the new IE8 results to the function BindStatusText: - - BINDSTATUS_COOKIE_DATA: Result := 'Cookie headers have been received'; //IE8 - Attention: This documentation is preliminary and is subject to chang - BINDSTATUS_SERVER_MIMETYPEAVAILABLE: Result := 'Server''s authoritative MIME type reported'; //IE8 - Attention: This documentation is preliminary and is subject to chang - BINDSTATUS_SNIFFED_CLASSIDAVAILABLE: Result := 'Class identifier (CLSID) generated from authoritative Content-Type HTTP response header'; //IE8 - Attention: This documentation is preliminary and is subject to chang - BINDSTATUS_64BIT_PROGRESS: Result := 'Download progress values are above the maximum 32-bit file size limit.'; //IE8 - Attention: This documentation is preliminary and is subject to chang - diff --git a/windows/src/ext/embeddedwb/Credits.txt b/windows/src/ext/embeddedwb/Credits.txt deleted file mode 100644 index 0e60ceadc3..0000000000 --- a/windows/src/ext/embeddedwb/Credits.txt +++ /dev/null @@ -1,159 +0,0 @@ -====================================== -EmbeddedWB Component Pack -====================================== - -Credits And Contributers: - -====================================== - -* Remember that ALL the stuff here is free and there is no guaranty, what so ever, to any use of the code. -* Please do not forget to credit the contributors as listed below. -* Some procedures were found in Delphi web sites and all procedures/ functions /components legal rights are reserved to the components appropriate author. - -====================================== - -Current developers: - -Eran Bodankin - bsalsa - bsalsa@bsalsa.com -Thomas Stutz - smot - smot777@yahoo.com -Serge Volosheniuk - SergeV - SergeV@bsalsa.com - -====================================== - -EmbeddedWB Web Site Credits: - -* Jason White for donating EmbeddedWB web address. -* Per Linds? Larsen for donating context.. -* Eran Bodankin : Web site administrator and context. -* Wimpie: Forum. & a web site administrator. - -====================================== - -Delphi Web Sites with cool code ideas credits: -A big Thanks you to the following web sites with the wonderful ideas: - -http://www.cryer.co.uk/brian/delphi/ -http://www.torry.net/ -http://www.swissdelphicenter.ch/en/ -http://jvcl.sourceforge.net -http://synedit.sourceforge.net/ - -====================================== - - -* EmbeddedWB Demo: -Eran Bodankin (bsalsa)(Demo code). -smot (Demo Menus and ideas). - -* Favorites Tree: -Peter Morris (TFavoritesTree , DIRMonitor component). -Eran Bodankin (bsalsa) - (Bug fix, Updates & Upgrades). - -* Extended IEParser 2 -Per Linds? Larsen (Extended IEParser 2 component). -Marc Hervais (Modified). -Eran Bodankin (bsalsa) - (Bug fix, Updates & Upgrades). - -* FavoritesMenu: -PerLinds? Larsen (TFavoritesMenu component). -Rob Young (Contributions). -Pete Morris (Contributions). -Eran Bodankin (bsalsa) - (Bug fix, Updates & Upgrades & new procedures). - -* FavoritesListView: -Per Lindsi Larsen (TFavoritesListView component). -Eran Bodankin (bsalsa) (Bug fix, Updates & Upgrades & new procedures). - -* HistoryListView: -Per Linds? Larsen (THistoryListView component). -Eran Bodankin (bsalsa) (Bug fix, Updates & Upgrades & new procedures). - -* HistoryMenu: -Per Linds? Larsen (THistoryMenu component). -Eran Bodankin (bsalsa) - (Bug fix, Updates & Upgrades & new procedures). - -* IETools: -Per Linds? Larsen (TIETools unit). -Eran Bodankin (bsalsa) - (Bug fix, Updates & Upgrades & new procedures). - -* IECache: -PerLinds? Larsen (TIECache component) -Christian Lovis (lib dynamic linking). - -* IEAddress: -Peter Morris (Pete@StuckIndoors.com) -Khalid Almannai (almannai@batelco.com.bh) -Henri Fournier (hfournier@home.com) -Per Lindsi Larsen {lindsoe@post.tele.dk) -Eran Bodankin (bsalsa) (Bug fix, Updates & Upgrades). - -* IEConst: -Was created by : I don't know, found it on the web -Eran Bodankin (bsalsa) - added some constants - -* IEDownload: -Per Linds? Larsen (TIEDownload component). -Eran Bodankin (bsalsa) (Bug fix, Updates & Upgrades). - - -* IeGuid: -Was created by : I don't know, found it on the web. -Eran Bodankin (bsalsa) - (Bug fix, Updates & Upgrades). - -* IETravelLog: -Per Linds? Larsen (TIETravelLog Component). -Eran Bodankin (bsalsa) - (Bug fix, Updates & Upgrades). - -* IEUTILS: -Was created by : I don't know, found it on the web. -Eran Bodankin (bsalsa) (Bug fix, Updates & Upgrades & added new functions). - -* IESecurityManager: -Per Linds? Larsen (TIESecurityManager component). -Eran Bodankin (bsalsa) (Bug fix, Updates & Upgrades). - -* UrlHistory: -Per Linds?i Larsen (TUrlHistory component). -Eran Bodankin (bsalsa) (Bug fix, Updates & Upgrades). - -* SendMail: -Mike Shkolnik (TMapiMail component). -Eran Bodankin (bsalsa) (Minor Bug Fix). - -* Import Favorite: -bsalsa (TImport component) -Troels Jakobsen (Code Ideas). - -* Export Favorite: -bsalsa (TExport component) -Troels Jakobsen (Code Ideas). - -* TLinksBar: -bsalsa Eran Bodankin (TLinkBar component). - -* TRichEditWB: -bsalsa Eran Bodankin (TRichEditWB component). -Thanks to Erol S. Uzuner for the best ideas - -* TWebUpdater: -bsalsa Eran Bodankin (TWebUpdater component). -Thanks to Snuki for the best idea. - -* XmlScanner: -Stefan Heymann stefan@destructor.de (TXmlScanner component).stefan@destructor.de - -* EasyXmlScanner: -Stefan Heymann (TEasyXmlScanner component).stefan@destructor.de - -* Accesories files: - RichSyntax files: Serhiy Perevoznyk & Anderson Rodrigues Barbieri. - XMLHIghlighter: Ajay Tandon (drajaytandon@hotmail.com) - HTLHIghlighter : Serhiy Perevoznyk based on the SynHighlighter from http://synedit.sourceforge.net/ - BrowseForFolderU: http://www.cryer.co.uk/brian/delphi/ - EWB_jedi.inc from www.delphi-jedi.org/ - - -Thanks for AHUser for his Delphi 2009 fixes! - -And to all the rest that I did forget and mention here, -I am sorry, please mail me & I add you in. \ No newline at end of file diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/frmMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/frmMain.dfm deleted file mode 100644 index 26e734616a..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/frmMain.dfm +++ /dev/null @@ -1,123 +0,0 @@ -object Form1: TForm1 - Left = 276 - Top = 220 - Width = 899 - Height = 698 - Caption = 'TEmbeddedWB - SDI Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object pnlAddressBar: TPanel - Left = 0 - Top = 0 - Width = 891 - Height = 41 - Align = alTop - TabOrder = 0 - DesignSize = ( - 891 - 41) - object btnGo: TButton - Left = 833 - Top = 13 - Width = 41 - Height = 20 - Anchors = [akTop, akRight] - Caption = 'GO' - TabOrder = 0 - OnClick = btnGoClick - end - object IEAddress1: TIEAddress - Left = 6 - Top = 12 - Width = 817 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - Anchors = [akLeft, akTop, akRight] - EmbeddedWB = EmbeddedWB1 - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - ShowFavicon = True - TabOrder = 1 - TextOnLoad = tlUserDefine - TextOnShow = 'http://www.bsalsa.com/support.html' - Themes = tmXP - UseAppIcon = True - end - end - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 91 - Width = 891 - Height = 554 - Align = alClient - TabOrder = 1 - OnStatusTextChange = EmbeddedWB1StatusTextChange - OnNewWindow2 = EmbeddedWB1NewWindow2 - OnNewWindow3 = EmbeddedWB1NewWindow3 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'Mozilla/4.0(Compatible-EmbeddedWB 14.56 http://bsalsa.com/ ' - ControlData = { - 4C000000163A0000B12400000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object StatusBar1: TStatusBar - Left = 0 - Top = 645 - Width = 891 - Height = 19 - Panels = <> - SimplePanel = False - end - object Panel1: TPanel - Left = 0 - Top = 41 - Width = 891 - Height = 50 - Align = alTop - TabOrder = 3 - object Label1: TLabel - Left = 8 - Top = 8 - Width = 273 - Height = 13 - Caption = '1. Right-click a link and then click "Open in New Window".' - Transparent = True - end - object Label2: TLabel - Left = 8 - Top = 24 - Width = 838 - Height = 13 - Caption = - '2. Result: The link will be opened in a new window within your a' + - 'pplication instead of in a top-level Internet Explorer window th' + - 'at is created as a separate (nonhosted) process.' - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/frmMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/frmMain.pas deleted file mode 100644 index 0bc4953800..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/frmMain.pas +++ /dev/null @@ -1,141 +0,0 @@ -//************************************************************* -// EmbeddedWB - SDI Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit frmMain; - -interface - -uses - Classes, Controls, Forms, EmbeddedWB, StdCtrls, IEAddress, ExtCtrls, - ComCtrls, SHDocVw_EWB, EwbCore, OleCtrls; - -type - TForm1 = class(TForm) - pnlAddressBar: TPanel; - btnGo: TButton; - IEAddress1: TIEAddress; - EmbeddedWB1: TEmbeddedWB; - StatusBar1: TStatusBar; - Panel1: TPanel; - Label1: TLabel; - Label2: TLabel; - procedure btnGoClick(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure EmbeddedWB1NewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); - procedure EmbeddedWB1NewWindow2(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool); - procedure EmbeddedWB1StatusTextChange(ASender: TObject; - const Text: WideString); - private - { Private declarations } - procedure OpenNewWindow(ASender: TObject; var ppDisp: IDispatch); - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.btnGoClick(Sender: TObject); -begin - EmbeddedWB1.Go(IEAddress1.Text); -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - btnGoClick(nil); -end; - -{ - In order to specify that your browser application should be used when a new window is opened, - you set ppDisp equal to a new WebBrowser object that is contained in a new window created by your application. - In this scenario, if a user chooses to open a Web page in a new window, - the new window in your application will be used to display the new Web page. -} - -procedure TForm1.OpenNewWindow(ASender: TObject; var ppDisp: IDispatch); -var - NewApp: TForm1; -begin - Application.CreateForm(TForm1, NewApp); - NewApp.Visible := True; - NewApp.Left := Left + 50; - ppdisp := NewApp.EmbeddedWB1.Application; - NewApp.EmbeddedWB1.RegisterAsBrowser := True; - { - Set the RegisterAsBrowser property to TRUE for the newly created WebBrowser control in - order for it to participate in window name resolution. - For example, if this window name is used elsewhere in script, then this control will be used instead of a newly - created one because it checks all of the existing window names before opening a new window. -} -end; - -{ - OnNewWindow2 Fires when a new window is to be created. - http://msdn.microsoft.com/en-us/library/aa768336(VS.85).aspx -} - -procedure TForm1.EmbeddedWB1NewWindow2(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool); -begin - OpenNewWindow(ASender, ppDisp); -end; - -{ - NewWindow3 Fires when a new window is to be created. Extends NewWindow2 with - additional information about the new window. - NewWindow3 is available only in Microsoft Windows XP Service Pack 2 (SP2) or later. - http://msdn.microsoft.com/en-us/library/aa768337(VS.85).aspx -} - -procedure TForm1.EmbeddedWB1NewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); -begin - OpenNewWindow(ASender, ppDisp); -end; - -procedure TForm1.EmbeddedWB1StatusTextChange(ASender: TObject; - const Text: WideString); -begin - StatusBar1.SimpleText := Text; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/prjSDIDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/prjSDIDemo.dpr deleted file mode 100644 index 11588322a1..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/01 - New_Window_SDI_Demo/prjSDIDemo.dpr +++ /dev/null @@ -1,46 +0,0 @@ -//************************************************************* -// EmbeddedWB - SDI Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjSDIDemo; - -uses - Forms, - frmMain in 'frmMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/Child.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/Child.dfm deleted file mode 100644 index 819723734f..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/Child.dfm +++ /dev/null @@ -1,60 +0,0 @@ -object ChildFrm: TChildFrm - Left = 281 - Top = 203 - Width = 417 - Height = 341 - Caption = 'Child Browser' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - FormStyle = fsMDIChild - OldCreateOrder = False - Position = poDefault - Visible = True - OnActivate = FormActivate - OnClose = FormClose - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 0 - Width = 409 - Height = 288 - Align = alClient - TabOrder = 0 - Silent = False - OnStatusTextChange = EmbeddedWB1StatusTextChange - OnDownloadComplete = EmbeddedWB1DownloadComplete - OnNewWindow2 = EmbeddedWB1NewWindow2 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.55 from: http://www.bsalsa.com/' - ControlData = { - 4C000000452A0000BB1F00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object StatusBar1: TStatusBar - Left = 0 - Top = 288 - Width = 409 - Height = 19 - Panels = <> - SimplePanel = False - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/Child.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/Child.pas deleted file mode 100644 index 5406e0b41c..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/Child.pas +++ /dev/null @@ -1,101 +0,0 @@ -//************************************************************* -// EmbeddedWB - MDI Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit Child; - -interface - -uses - Classes, Forms, OleCtrls, EmbeddedWB, Controls, SHDocVw_EWB, EwbCore, - ComCtrls; - -type - TChildFrm = class(TForm) - EmbeddedWB1: TEmbeddedWB; - StatusBar1: TStatusBar; - procedure EmbeddedWB1NewWindow2(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool); - procedure EmbeddedWB1DownloadComplete(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure EmbeddedWB1StatusTextChange(ASender: TObject; - const Text: WideString); - procedure FormActivate(Sender: TObject); - private - public - end; - -var - ChildFrm: TChildFrm; - -implementation - -uses frmMain; - -{$R *.DFM} - -procedure TChildFrm.FormClose(Sender: TObject; var Action: TCloseAction); -begin - Action := caFree; -end; - -procedure TChildFrm.EmbeddedWB1DownloadComplete(Sender: TObject); -begin - if Pos(frmMain.MainFrm.IEAddress1.Text, Caption) = 0 then - Caption := Caption + ' ' + frmMain.MainFrm.IEAddress1.Text; -end; - -procedure TChildFrm.EmbeddedWB1NewWindow2(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool); -var - NewApp: TChildFrm; -begin - NewApp := TChildFrm.Create(Owner); - NewApp.Visible := True; - ppdisp := NewApp.EmbeddedWB1.Application; -end; - -procedure TChildFrm.EmbeddedWB1StatusTextChange(ASender: TObject; - const Text: WideString); -begin - StatusBar1.SimpleText := Text; -end; - -procedure TChildFrm.FormActivate(Sender: TObject); -begin - MainFrm.IEAddress1.EmbeddedWB := EmbeddedWB1; - if EmbeddedWB1.LocationURL <> '' then - MainFrm.IEAddress1.Text := EmbeddedWB1.LocationURL; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/frmMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/frmMain.dfm deleted file mode 100644 index 81ed740a62..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/frmMain.dfm +++ /dev/null @@ -1,116 +0,0 @@ -object MainFrm: TMainFrm - Left = 314 - Top = 324 - Width = 659 - Height = 509 - Caption = 'TEmbeddedWB - MDI Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - FormStyle = fsMDIForm - Menu = MainMenu1 - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - WindowMenu = N10 - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 651 - Height = 41 - Align = alTop - TabOrder = 0 - DesignSize = ( - 651 - 41) - object IEAddress1: TIEAddress - Left = 16 - Top = 8 - Width = 551 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - Anchors = [akLeft, akTop, akRight] - ButtonColor = clBlack - ButtonPressedColor = clBlack - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - ShowFavicon = True - TabOrder = 0 - Text = 'http://www.bsalsa.com/' - TextOnLoad = tlUserDefine - TextOnShow = 'http://www.bsalsa.com/' - Themes = tmXP - end - object Button1: TButton - Left = 585 - Top = 8 - Width = 53 - Height = 22 - Anchors = [akTop] - Caption = 'Go' - TabOrder = 1 - OnClick = Button1Click - end - end - object MainMenu1: TMainMenu - Left = 8 - Top = 48 - object File1: TMenuItem - Caption = '&File' - object Newchild1: TMenuItem - Caption = 'New Child' - OnClick = Newchild1Click - end - object N2: TMenuItem - Caption = '-' - end - object CloseAll1: TMenuItem - Caption = 'Close &All' - OnClick = CloseAll1Click - end - object N3: TMenuItem - Caption = '-' - end - object Exit1: TMenuItem - Caption = 'Exit' - OnClick = Exit1Click - end - end - object Window1: TMenuItem - Caption = '&Window' - object Cascade1: TMenuItem - Caption = '&Cascade' - OnClick = Cascade1Click - end - object Tile1: TMenuItem - Caption = '&Tile' - OnClick = Tile1Click - end - object ArrangeAll1: TMenuItem - Caption = '&Arrange All' - OnClick = ArrangeAll1Click - end - object N10: TMenuItem - AutoHotkeys = maManual - AutoLineReduction = maManual - Caption = '-' - end - object MinimizeAll1: TMenuItem - Caption = 'Minimize All' - OnClick = MinimizeAll1Click - end - end - end - object Timer1: TTimer - Left = 48 - Top = 48 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/frmMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/frmMain.pas deleted file mode 100644 index aaf5a210ae..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/frmMain.pas +++ /dev/null @@ -1,152 +0,0 @@ -//************************************************************* -// EmbeddedWB - MDI Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -unit frmMain; - -interface - -uses - Classes, Forms, Menus, Child, IEAddress, ExtCtrls, - Controls, StdCtrls, SysUtils; - -type - TMainFrm = class(TForm) - MainMenu1: TMainMenu; - File1: TMenuItem; - Newchild1: TMenuItem; - Window1: TMenuItem; - Tile1: TMenuItem; - Cascade1: TMenuItem; - ArrangeAll1: TMenuItem; - N2: TMenuItem; - CloseAll1: TMenuItem; - N10: TMenuItem; - MinimizeAll1: TMenuItem; - Panel1: TPanel; - IEAddress1: TIEAddress; - Button1: TButton; - N3: TMenuItem; - Exit1: TMenuItem; - Timer1: TTimer; - procedure Exit1Click(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure Button1Click(Sender: TObject); - procedure Newchild1Click(Sender: TObject); - procedure CloseAll1Click(Sender: TObject); - procedure Cascade1Click(Sender: TObject); - procedure Tile1Click(Sender: TObject); - procedure ArrangeAll1Click(Sender: TObject); - procedure MinimizeAll1Click(Sender: TObject); - private - procedure CreateChildForm(const ChildName: string); - { Private declarations } - public - { Public declarations } - end; -var - MainFrm: TMainFrm; - -implementation - -{$R *.DFM} - -procedure TMainFrm.CreateChildForm(const ChildName: string); -var - Child: TChildFrm; -begin - Child := TChildFrm.Create(Application); - if Assigned(Child) then - Child.Caption := ChildName; -end; - -procedure TMainFrm.NewChild1Click(Sender: TObject); -begin - CreateChildForm('Child #' + IntToStr(MDIChildCount + 1)); -end; - -procedure TMainFrm.CloseAll1Click(Sender: TObject); -var - i: Byte; -begin - for i := 0 to MdiChildCount - 1 do - MDIChildren[i].Close; -end; - -procedure TMainFrm.Cascade1Click(Sender: TObject); -begin - Cascade; -end; - -procedure TMainFrm.Tile1Click(Sender: TObject); -begin - if TileMode = tbHorizontal then - TileMode := tbVertical - else - TileMode := tbHorizontal; - Tile; -end; - -procedure TMainFrm.ArrangeAll1Click(Sender: TObject); -begin - ArrangeIcons; -end; - -procedure TMainFrm.MinimizeAll1Click(Sender: TObject); -var - I: Byte; -begin - for i := MdiChildCount - 1 downto 0 do - MDIChildren[i].WindowState := wsMinimized; -end; - -procedure TMainFrm.Button1Click(Sender: TObject); -begin - if Assigned(ActiveMDIChild) then - TChildFrm(ActiveMDIChild).EmbeddedWB1.Go(IEAddress1.Text); -end; - -procedure TMainFrm.FormShow(Sender: TObject); -begin - CreateChildForm('Child #' + IntToStr(MDIChildCount + 1)); - if Assigned(ActiveMDIChild) then - TChildFrm(ActiveMDIChild).EmbeddedWB1.Go(IEAddress1.Text); -end; - -procedure TMainFrm.Exit1Click(Sender: TObject); -begin - Close; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/prjMDIDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/prjMDIDemo.dpr deleted file mode 100644 index 2f7ed1ed5c..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/02 - New_Window_MDI_Demo/prjMDIDemo.dpr +++ /dev/null @@ -1,48 +0,0 @@ -//************************************************************* -// EmbeddedWB - MDI Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjMDIDemo; - -uses - Forms, - frmMain in 'frmMain.pas' {MainFrm}, - Child in 'Child.pas' {ChildFrm}; - -{$R *.RES} - -begin - Application.Initialize; - Application.CreateForm(TMainFrm, MainFrm); - Application.Run; -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/frmMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/frmMain.dfm deleted file mode 100644 index a9541abdac..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/frmMain.dfm +++ /dev/null @@ -1,85 +0,0 @@ -object Form1: TForm1 - Left = 289 - Top = 201 - Caption = 'TEmbeddedWB - Open In A New Window Demo (Tabs)' - ClientHeight = 418 - ClientWidth = 563 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object PageControl1: TPageControl - Left = 0 - Top = 41 - Width = 563 - Height = 358 - Align = alClient - ParentShowHint = False - ShowHint = True - TabOrder = 0 - OnChange = PageControl1Change - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 563 - Height = 41 - Align = alTop - TabOrder = 1 - DesignSize = ( - 563 - 41) - object Button1: TButton - Left = 357 - Top = 11 - Width = 52 - Height = 22 - Anchors = [akTop] - Caption = 'Go' - TabOrder = 0 - OnClick = Button1Click - end - object IEAddress1: TIEAddress - Left = 0 - Top = 11 - Width = 348 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - Anchors = [akLeft, akTop, akRight] - ButtonColor = clBlack - ButtonPressedColor = clBtnShadow - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 1 - Text = 'http://www.bsalsa.com/' - end - object cbNewTab: TCheckBox - Left = 429 - Top = 14 - Width = 121 - Height = 17 - Anchors = [akTop, akRight] - Caption = 'Open In A New Tab' - Checked = True - State = cbChecked - TabOrder = 2 - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 399 - Width = 563 - Height = 19 - Panels = <> - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/frmMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/frmMain.pas deleted file mode 100644 index b3f42e6afa..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/frmMain.pas +++ /dev/null @@ -1,187 +0,0 @@ -//************************************************************* -// EmbeddedWB - Tabs Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit frmMain; - -interface - -uses - Classes, Controls, Forms, OleCtrls, EmbeddedWB, ComCtrls, StdCtrls, - IEAddress, ExtCtrls, SysUtils; - -type - TForm1 = class(TForm) - PageControl1: TPageControl; - Panel1: TPanel; - Button1: TButton; - IEAddress1: TIEAddress; - cbNewTab: TCheckBox; - StatusBar1: TStatusBar; - procedure PageControl1Change(Sender: TObject); - procedure Button1Click(Sender: TObject); - procedure FormShow(Sender: TObject); - private - { Private declarations } - procedure DownloadCompleteEvent(Sender: TObject); - function GetActiveEWB: TEmbeddedWB; - procedure UpdateAddress; - procedure UpdateTab; - function CreateNewTabBrowser(Url: string): TTabSheet; - procedure NewWindowEvent(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); - procedure NewWebStatusTextChange(Sender: TObject; - const Text: WideString); - public - { Public declarations } - end; - -var - Form1: TForm1; - DesignTimeWB: TEmbeddedWB; - NewTab: TTabSheet; - i: integer; - -implementation - -{$R *.dfm} - -//--------Private Section--------------------------------------------- - -procedure TForm1.UpdateTab; -begin - PageControl1.ActivePage := NewTab; - UpdateAddress; -end; - -function TForm1.GetActiveEWB: TEmbeddedWB; -var - i: Integer; -begin - Result := nil; - if PageControl1.ActivePage <> nil then - for i := 0 to PageControl1.ActivePage.ControlCount - 1 do - begin - if PageControl1.ActivePage.Controls[i] is TEmbeddedWB then - begin - Result := TEmbeddedWB(PageControl1.ActivePage.Controls[i]); - Exit; - end; - end; -end; - -procedure TForm1.UpdateAddress; -var - WB: TEmbeddedWB; -begin - WB := GetActiveEWB; - if Assigned(WB) then - begin - IEAddress1.EmbeddedWB := WB; - IEAddress1.Text := WB.LocationURL; - PageControl1.ActivePage.Caption := WB.LocationName; - end; -end; - -procedure TForm1.DownloadCompleteEvent(Sender: TObject); -begin - UpdateAddress; -end; - -function TForm1.CreateNewTabBrowser(Url: string): TTabSheet; -begin - NewTab := TTabSheet.Create(PageControl1); - with NewTab do - begin - PageControl := PageControl1; - Parent := PageControl1; - PageIndex := PageControl1.ActivePageIndex; - end; - DesignTimeWB := TEmbeddedWB.Create(NewTab); - TControl(DesignTimeWB).Parent := NewTab; - with DesignTimeWB do - begin - EnableMessageHandler := True; - LoadSettings; - Align := alClient; - OnStatusTextChange := NewWebStatusTextChange; - OnNewWindow2 := NewWindowEvent; - OnDownloadComplete := DownloadCompleteEvent; - if Trim(URL) <> '' then - DesignTimeWB.NavigateWait(URL); - end; - PageControl1.ActivePage := NewTab; - Result := NewTab; -end; - -procedure TForm1.NewWindowEvent(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); -begin - CreateNewTabBrowser(DesignTimeWB.LocationURL); - PageControl1.ActivePage := NewTab; - ppdisp := DesignTimeWB.Application; - UpdateTab; -end; - -procedure TForm1.PageControl1Change(Sender: TObject); -begin - UpdateAddress; -end; - -procedure TForm1.NewWebStatusTextChange(Sender: TObject; - const Text: WideString); -begin - StatusBar1.SimpleText := Text; -end; - -//--------End Of Private Section--------------------------------------------- - -procedure TForm1.FormShow(Sender: TObject); -begin - CreateNewTabBrowser(DesignTimeWB.GetIEHomePage); - UpdateTab; -end; - -procedure TForm1.Button1Click(Sender: TObject); -begin - if cbNewtab.Checked then - begin - CreateNewTabBrowser(IEAddress1.Text); - UpdateTab; - end - else - begin - DesignTimeWB.Go(IEAddress1.Text); - UpdateTab; - end; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/prjNewWinTabs1Demo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/prjNewWinTabs1Demo.dpr deleted file mode 100644 index 9573439d8a..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/03 - New_Window_Tabs_Demo_1/prjNewWinTabs1Demo.dpr +++ /dev/null @@ -1,47 +0,0 @@ -//************************************************************* -// EmbeddedWB - Tabs Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjNewWinTabs1Demo; - -uses - Forms, - frmMain in 'frmMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/fmMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/fmMain.dfm deleted file mode 100644 index 9d49ca0eb2..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/fmMain.dfm +++ /dev/null @@ -1,108 +0,0 @@ -object Form1: TForm1 - Left = 330 - Top = 294 - Width = 726 - Height = 482 - Caption = 'TEmbeddedWB - New Window Tabs Demo 2' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 710 - Height = 38 - Align = alTop - TabOrder = 0 - object btnGo: TButton - Left = 380 - Top = 7 - Width = 43 - Height = 22 - Anchors = [akTop, akRight] - Caption = 'Go' - TabOrder = 0 - OnClick = btnGoClick - end - object btnBack: TButton - Left = 430 - Top = 7 - Width = 52 - Height = 22 - Anchors = [akTop, akRight] - Caption = 'Back' - TabOrder = 1 - OnClick = btnBackClick - end - object btnForward: TButton - Left = 489 - Top = 7 - Width = 49 - Height = 22 - Anchors = [akTop, akRight] - Caption = 'Forward' - TabOrder = 2 - OnClick = btnForwardClick - end - object IEAddress1: TIEAddress - Left = 8 - Top = 7 - Width = 361 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - Anchors = [akLeft, akTop, akRight] - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 3 - end - object cbOpenNew: TCheckBox - Left = 616 - Top = 10 - Width = 97 - Height = 17 - Anchors = [akTop, akRight] - Caption = 'OpenNewTab' - Checked = True - State = cbChecked - TabOrder = 4 - end - object btnStop: TButton - Left = 545 - Top = 7 - Width = 49 - Height = 22 - Anchors = [akTop, akRight] - Caption = 'Stop' - TabOrder = 5 - OnClick = btnStopClick - end - end - object PageControl1: TPageControl - Left = 0 - Top = 38 - Width = 710 - Height = 389 - Align = alClient - TabOrder = 1 - OnChange = PageControl1Change - end - object StatusBar1: TStatusBar - Left = 0 - Top = 427 - Width = 710 - Height = 19 - Panels = <> - SimplePanel = False - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/fmMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/fmMain.pas deleted file mode 100644 index 9dd16e813f..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/fmMain.pas +++ /dev/null @@ -1,199 +0,0 @@ -//************************************************************* -// EmbeddedWB - Tabs Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit fmMain; - -interface - -uses - Classes, Controls, Forms, ComCtrls, ExtCtrls, StdCtrls, OleCtrls, SysUtils, - IEAddress, EwbCore, EmbeddedWB, ShDocVw_Ewb; - -type - TTabSheetEx = class(TTabSheet) - private - EWB: TEmbeddedWB; - CanBack: Boolean; - CanForward: Boolean; - CanStop: Boolean; - end; - -type - TForm1 = class(TForm) - Panel1: TPanel; - PageControl1: TPageControl; - btnGo: TButton; - btnBack: TButton; - btnForward: TButton; - IEAddress1: TIEAddress; - StatusBar1: TStatusBar; - cbOpenNew: TCheckBox; - btnStop: TButton; - procedure PageControl1Change(Sender: TObject); - procedure btnGoClick(Sender: TObject); - procedure btnForwardClick(Sender: TObject); - procedure btnBackClick(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure btnStopClick(Sender: TObject); - private - { Private declarations } - procedure DownloadCompleteEvent(Sender: TObject); - procedure CommandStateChangeEvent(Sender: TObject; Command: Integer; Enable: WordBool); - procedure UpdateControls; - procedure CreateNewTabBrowser(Url: string); - procedure NewWindow2Event(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); - procedure StatusTextChangeEvent(Sender: TObject; const Text: WideString); - public - { Public declarations } - end; - -var - Form1: TForm1; - TabSheetEx: TTabSheetEx; - -implementation - -{$R *.dfm} - - -procedure TForm1.UpdateControls; -var - TabEx: TTabSheetEx; -begin - TabEx := (PageControl1.ActivePage as TTabSheetEx); - IEAddress1.Text := TabEx.EWB.LocationURL; - PageControl1.ActivePage.Caption := TabEx.EWB.LocationName; - Form1.Caption := TabEx.EWB.LocationName; - BtnForward.Enabled := TabEx.CanForward; - btnBack.Enabled := TabEx.CanBack; - btnStop.Enabled := TabEx.CanStop; -end; - -procedure TForm1.DownloadCompleteEvent(Sender: TObject); -begin - UpdateControls; -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - CreateNewTabBrowser('http://bsalsa.com/forum/'); - UpdateControls; -end; - -procedure TForm1.CreateNewTabBrowser(Url: string); -begin - TabSheetEx := TTabSheetEx.Create(PageControl1); - with TabSheetEx do - begin - PageControl := PageControl1; - EWB := TEmbeddedWB.Create(TabSheetEx); - Caption := 'Loading...'; - TOleControl(TabSheetEx.EWB).Parent := TabSheetEx; - PageControl1.ActivePage := TabSheetEx; - with EWB do - begin - LoadSettings; - Align := alClient; - Visible := True; - OnStatusTextChange := StatusTextChangeEvent; - OnNewWindow2 := NewWindow2Event; - OnDownloadComplete := DownloadCompleteEvent; - OnCommandStateChange := CommandStateChangeEvent; - Go(URL); - end; - end; -end; - -procedure TForm1.btnBackClick(Sender: TObject); -begin - btnBack.Enabled := False; - (PageControl1.ActivePage as TTabSheetEx).EWB.GoBack; -end; - -procedure TForm1.btnStopClick(Sender: TObject); -begin - btnStop.Enabled := False; - (PageControl1.ActivePage as TTabSheetEx).EWB.Stop; -end; - -procedure TForm1.btnForwardClick(Sender: TObject); -begin - btnForward.Enabled := False; - (PageControl1.ActivePage as TTabSheetEx).EWB.GoForward; -end; - -procedure TForm1.btnGoClick(Sender: TObject); -begin - if cbOpenNew.Checked then - CreateNewTabBrowser(IEAddress1.Text) - else - (PageControl1.ActivePage as TTabSheetEx).EWB.Go(IEAddress1.Text); -end; - -procedure TForm1.CommandStateChangeEvent(Sender: TObject; Command: Integer; Enable: WordBool); -const - CSC_UPDATECOMMANDS = $FFFFFFFF; -begin - case TOleEnum(Command) of - CSC_NAVIGATEBACK: - ((Sender as TEmbeddedWB).Owner as TTabSheetEx).CanBack := Enable; - CSC_NAVIGATEFORWARD: - ((Sender as TEmbeddedWB).Owner as TTabSheetEx).CanForward := Enable; - CSC_UPDATECOMMANDS: - ((Sender as TEmbeddedWB).Owner as TTabSheetEx).CanStop := (Sender as TEmbeddedWB).Busy; - end; -end; - -procedure TForm1.NewWindow2Event(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool); -begin - CreateNewTabBrowser(TabSheetEx.EWB.LocationURL); - PageControl1.ActivePage := TabSheetEx; - ppdisp := TabSheetEx.EWB.Application; -end; - -procedure TForm1.PageControl1Change(Sender: TObject); -begin - UpdateControls; -end; - -procedure TForm1.StatusTextChangeEvent(Sender: TObject; - const Text: WideString); -begin - StatusBar1.SimpleText := Text; -end; - -// http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=-1&li=500&word=%CE%D2%C3%C7%CB%B5%BA%C3%B5%C4+%D5%C5%F6%A6%D3%B1 - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/prjNewWinTabs2Demo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/prjNewWinTabs2Demo.dpr deleted file mode 100644 index 171339c2de..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/04 - New_Window_Tabs_Demo_2/prjNewWinTabs2Demo.dpr +++ /dev/null @@ -1,47 +0,0 @@ -//************************************************************* -// EmbeddedWB - Tabs Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjNewWinTabs2Demo; - -uses - Forms, - fmMain in 'fmMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/fmMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/fmMain.dfm deleted file mode 100644 index 551f9e45ef..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/fmMain.dfm +++ /dev/null @@ -1,110 +0,0 @@ -object Form1: TForm1 - Left = 162 - Top = 186 - Width = 831 - Height = 521 - Caption = 'TEmbeddedWB - OnEvaluateNewWindow Event Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 815 - Height = 105 - Align = alTop - TabOrder = 0 - object Label1: TLabel - Left = 8 - Top = 75 - Width = 774 - Height = 13 - Caption = - 'Accepts data about a new window that is attempting to display an' + - 'd determines whether that window should be allowed to open based' + - ' on the user'#39's preferences.' - Transparent = True - end - object Label2: TLabel - Left = 8 - Top = 56 - Width = 166 - Height = 13 - Caption = 'OnEvaluateNewWindow Event' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsBold, fsUnderline] - ParentFont = False - Transparent = True - end - object btnGo: TButton - Left = 423 - Top = 7 - Width = 43 - Height = 21 - Caption = 'Go' - TabOrder = 0 - end - object IEAddress1: TIEAddress - Left = 8 - Top = 7 - Width = 409 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - EmbeddedWB = EmbeddedWB1 - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 1 - TextOnLoad = tlUserDefine - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 466 - Width = 815 - Height = 19 - Panels = <> - SimplePanel = False - end - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 105 - Width = 815 - Height = 361 - Align = alClient - TabOrder = 2 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - OnEvaluateNewWindow = EmbeddedWB1EvaluateNewWindow - About = ' EmbeddedWB http://bsalsa.com/' - HTMLCode.Strings = ( - 'http://www.popupcheck.com/freescan/popup/popup_test_standard.asp') - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C0000000F550000842500000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/fmMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/fmMain.pas deleted file mode 100644 index d9e1397c41..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/fmMain.pas +++ /dev/null @@ -1,103 +0,0 @@ -//************************************************************* -// EmbeddedWB - OnEvaluateNewWindow Event Demo * -// * -// by * -// Thomas Stutz (smot) * -// smot777@yahoo.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit fmMain; - -interface - -uses - Classes, Windows, Controls, Forms, ComCtrls, Dialogs, ExtCtrls, StdCtrls, OleCtrls, - IEAddress, EwbCore, EmbeddedWB, ShDocVw_Ewb; - -type - TForm1 = class(TForm) - Panel1: TPanel; - btnGo: TButton; - IEAddress1: TIEAddress; - StatusBar1: TStatusBar; - EmbeddedWB1: TEmbeddedWB; - Label1: TLabel; - Label2: TLabel; - procedure EmbeddedWB1EvaluateNewWindow(Sender: TCustomEmbeddedWB; - pszUrl, pszName, pszUrlContext, pszFeatures: PWideChar; - fReplace: LongBool; dwFlags, dwUserActionTime: Cardinal; - var Rezult: HRESULT); - private - { Private declarations } - - public - { Public declarations } - - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - - -procedure TForm1.EmbeddedWB1EvaluateNewWindow(Sender: TCustomEmbeddedWB; - pszUrl, pszName, pszUrlContext, pszFeatures: PWideChar; - fReplace: LongBool; dwFlags, dwUserActionTime: Cardinal; - var Rezult: HRESULT); -(* -pszUrl -- A pointer to a buffer that contains the URL of the content that will be displayed in the new window. -pszName -- A pointer to a buffer that contains the name of the new window. This parameter can be NULL. -pszUrlContext -- A pointer to a buffer that contains the URL that has issued the command to open the new window. -pszFeatures -- A pointer to a buffer that contains the feature string for the new window. This value can be NULL. -fReplace -- A boolean value used when the new content specified in pszUrl is loaded into the existing window instead of creating a new one. TRUE if the new document should replace the current document in the history list; FALSE if the new document should be given a new entry. -dwFlags -- A flag or flags from the NWMF enumeration that provide situational information about the call to open the new window. This value can be 0 if no flags are needed. -dwUserActionTime -- The tick count when the last user action occurred. To find out how long ago the action occurred, call GetTickCount and compare the result with the value in this parameter. -*) -begin - if GetTickCount - dwUserActionTime > 1000 then // Check if last User Action was longer than 1 Sec. ago - begin - ShowMessage('Popup blocked! ' + 'URL: ' + pszUrl + ' - Name: ' + pszName); - Rezult := S_FALSE; //Block display of the window; - end else - begin - Rezult := S_OK; // Allow display of the window. - end; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/prjEvalNewWindowDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/prjEvalNewWindowDemo.dpr deleted file mode 100644 index cf5d5e81f0..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/05 - OnEvaluateNewWindow_Demo/prjEvalNewWindowDemo.dpr +++ /dev/null @@ -1,47 +0,0 @@ -//************************************************************* -// EmbeddedWB - Tabs Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjEvalNewWindowDemo; - -uses - Forms, - fmMain in 'fmMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/FrmMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/FrmMain.dfm deleted file mode 100644 index 6b26f2193a..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/FrmMain.dfm +++ /dev/null @@ -1,201 +0,0 @@ -object Form1: TForm1 - Left = 244 - Top = 164 - Width = 611 - Height = 623 - Caption = 'RightClick & Sortcuts Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - KeyPreview = True - Menu = MainMenu1 - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 0 - Width = 595 - Height = 567 - Align = alClient - PopupMenu = PopupMenu1 - TabOrder = 0 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - OnShowContextMenu = EmbeddedWB1ShowContextMenu - About = ' EmbeddedWB http://bsalsa.com/' - HTMLCode.Strings = ( - 'http://bsalsa.com/') - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.55 from: http://www.bsalsa.com/' - ControlData = { - 4C000000072C0000732600000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object MainMenu1: TMainMenu - Left = 8 - Top = 8 - object File1: TMenuItem - Caption = '&File' - object Exit1: TMenuItem - Caption = 'Exit' - OnClick = Exit1Click - end - end - object RightClickMenu1: TMenuItem - Caption = '&RightClickMenu' - object ShowMyPopup1: TMenuItem - Caption = 'Show My Own Popup' - GroupIndex = 1 - RadioItem = True - ShortCut = 16466 - end - object EnableAllMenus: TMenuItem - Caption = 'Enable All Menus' - Checked = True - GroupIndex = 1 - RadioItem = True - end - object DisableAllMenu1: TMenuItem - Caption = 'Disable All Menus' - GroupIndex = 1 - RadioItem = True - end - object N3: TMenuItem - Caption = '-' - GroupIndex = 1 - end - object DisableDefaultMenu1: TMenuItem - Caption = 'Disable Default Menu (Document)' - GroupIndex = 2 - end - object DisableImagesMenu1: TMenuItem - Caption = 'Disable Images Menu' - GroupIndex = 2 - end - object DisableTableMenu1: TMenuItem - Caption = 'Disable Table Menu' - GroupIndex = 2 - end - object DisableSelectedTextMenu1: TMenuItem - Caption = 'Disable Selected Text Menu' - GroupIndex = 2 - end - object DisableControlsMenu1: TMenuItem - Caption = 'Disable Controls Menu (TEdit..)' - GroupIndex = 2 - end - object DisableAnchorMenu1: TMenuItem - Caption = 'Disable Anchor Menu (Links..)' - GroupIndex = 2 - end - object DisableUnknownMenu1: TMenuItem - Caption = 'Disable Unknown Menu' - GroupIndex = 2 - end - object DisableImgDynSrcMenu1: TMenuItem - Caption = 'Disable ImgDynSrc Menu' - GroupIndex = 2 - end - object DisableDebugMenu1: TMenuItem - Caption = 'Disable Debug Menu' - GroupIndex = 2 - end - object DisableImageArtMenu1: TMenuItem - Caption = 'Disable Image Art Menu' - GroupIndex = 2 - end - object N1: TMenuItem - Caption = '-' - GroupIndex = 2 - end - object N4: TMenuItem - Caption = '------------------------' - GroupIndex = 3 - end - object Note1: TMenuItem - Caption = 'NOTE: You can disable any menu item.' - GroupIndex = 3 - end - object Note2: TMenuItem - Caption = 'See the source code for details!' - GroupIndex = 3 - end - object N2: TMenuItem - Caption = '------------------------' - GroupIndex = 3 - end - object DisableViewSource1: TMenuItem - Caption = 'Disable View Source' - GroupIndex = 4 - ShortCut = 114 - end - object DisableOpenInANewWindow1: TMenuItem - Caption = 'Disable Open In A New Window' - GroupIndex = 4 - end - object DisableOpenLink1: TMenuItem - Caption = 'Disable Open Link' - GroupIndex = 4 - end - end - object Shortcuts1: TMenuItem - Caption = '&Shortcuts' - object DisableCtrlN1: TMenuItem - Caption = 'Disable Ctrl+N' - GroupIndex = 1 - RadioItem = True - ShortCut = 49230 - OnClick = DisableCtrlN1Click - end - object DisableCtrlP1: TMenuItem - Caption = 'Disable Ctrl+P' - GroupIndex = 1 - RadioItem = True - ShortCut = 49232 - OnClick = DisableCtrlP1Click - end - object DisableCtrlA1: TMenuItem - Caption = 'Disable Ctrl+A' - GroupIndex = 1 - RadioItem = True - ShortCut = 49217 - OnClick = DisableCtrlA1Click - end - object N6: TMenuItem - Caption = '-' - GroupIndex = 1 - end - object EnableAll1: TMenuItem - Caption = 'Enable All Sortcuts' - GroupIndex = 1 - RadioItem = True - ShortCut = 49242 - OnClick = EnableAll1Click - end - end - end - object PopupMenu1: TPopupMenu - Left = 56 - Top = 8 - object wer1: TMenuItem - Caption = 'Own Popup Menu!' - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/FrmMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/FrmMain.pas deleted file mode 100644 index bda7cb8df2..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/FrmMain.pas +++ /dev/null @@ -1,205 +0,0 @@ -//************************************************************* -// Menus Demo * -// For Delphi * -// by * -// Eran Bodankin (bsalsa) -(bsalsa@bsalsa.com) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 4 conditions: -1. In your web site, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -{ - MSDN info: - http://msdn.microsoft.com/en-us/library/aa753264(VS.85).aspx -} - -unit FrmMain; - -interface - -uses - Windows, Classes, Forms, Menus, Controls, OleCtrls, EmbeddedWB, - SHDocVw_EWB, EwbCore, IEConst, StdCtrls, ExtCtrls; - -type - TForm1 = class(TForm) - EmbeddedWB1: TEmbeddedWB; - MainMenu1: TMainMenu; - File1: TMenuItem; - DisableAllMenu1: TMenuItem; - DisableAnchorMenu1: TMenuItem; - DisableControlsMenu1: TMenuItem; - DisableCtrlN1: TMenuItem; - DisableDebugMenu1: TMenuItem; - DisableDefaultMenu1: TMenuItem; - DisableImageArtMenu1: TMenuItem; - DisableImagesMenu1: TMenuItem; - DisableImgDynSrcMenu1: TMenuItem; - DisableOpenInANewWindow1: TMenuItem; - DisableSelectedTextMenu1: TMenuItem; - DisableTableMenu1: TMenuItem; - DisableUnknownMenu1: TMenuItem; - DisableViewSource1: TMenuItem; - EnableAllMenus: TMenuItem; - Exit1: TMenuItem; - Note2: TMenuItem; - N1: TMenuItem; - N2: TMenuItem; - N3: TMenuItem; - N4: TMenuItem; - Note1: TMenuItem; - RightClickMenu1: TMenuItem; - Shortcuts1: TMenuItem; - DisableOpenLink1: TMenuItem; - PopupMenu1: TPopupMenu; - wer1: TMenuItem; - ShowMyPopup1: TMenuItem; - DisableCtrlP1: TMenuItem; - DisableCtrlA1: TMenuItem; - EnableAll1: TMenuItem; - N6: TMenuItem; - procedure DisableCtrlA1Click(Sender: TObject); - procedure DisableCtrlP1Click(Sender: TObject); - procedure DisableCtrlN1Click(Sender: TObject); - procedure Exit1Click(Sender: TObject); - procedure EnableAll1Click(Sender: TObject); - procedure EmbeddedWB1ShowContextMenu(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; - const CommandTarget: IUnknown; const Context: IDispatch; - var Result: HRESULT); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.EmbeddedWB1ShowContextMenu(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IUnknown; - const Context: IDispatch; var Result: HRESULT); -begin -//=====Disable Menus======================================================= - case dwID of - CONTEXT_MENU_DEFAULT: - if DisableDefaultMenu1.Checked then - Result := S_OK; - CONTEXT_MENU_ANCHOR: - if DisableAnchorMenu1.Checked then - Result := S_OK; - CONTEXT_MENU_CONTROL: - if DisableControlsMenu1.Checked then - Result := S_OK; - CONTEXT_MENU_DEBUG: - if DisableDebugMenu1.Checked then - Result := S_OK; - CONTEXT_MENU_IMAGE: - if DisableImagesMenu1.Checked then - Result := S_OK; - CONTEXT_MENU_IMGART: - if DisableImageArtMenu1.Checked then - Result := S_OK; - CONTEXT_MENU_IMGDYNSRC: - if DisableImgDynSrcMenu1.Checked then - Result := S_OK; - CONTEXT_MENU_TABLE: - if DisableTableMenu1.Checked then - Result := S_OK; - CONTEXT_MENU_TEXTSELECT: - if DisableSelectedTextMenu1.Checked then - Result := S_OK; - CONTEXT_MENU_UNKNOWN: - if DisableUnknownMenu1.Checked then - Result := S_OK; - end; - -//=====Disable Menu Items======================================================= - - with EmbeddedWB1 do - begin - if DisableViewSource1.Checked then - DisabledPopupMenuItems := DisabledPopupMenuItems + [rcsViewSource] - else - DisabledPopupMenuItems := DisabledPopupMenuItems - [rcsViewSource]; - - if DisableOpenInANewWindow1.Checked then - DisabledPopupMenuItems := DisabledPopupMenuItems + [rcsOpenNWindow] - else - DisabledPopupMenuItems := DisabledPopupMenuItems - [rcsOpenNWindow]; - - if DisableOpenLink1.Checked then - DisabledPopupMenuItems := DisabledPopupMenuItems + [rcsOpenLink] - else - DisabledPopupMenuItems := DisabledPopupMenuItems - [rcsOpenLink]; - end; - - if DisableAllMenu1.checked then - Result := S_OK; - -//===Show your own Popup===================================================== - if ShowMyPopup1.Checked then - begin - PopupMenu1.Popup(ppt.x, ppt.y); - Result := S_OK; - end; -end; - -procedure TForm1.DisableCtrlA1Click(Sender: TObject); -begin - if DisableCtrlA1.Checked then - EmbeddedWB1.DisableCtrlShortcuts := 'A'; -end; - -procedure TForm1.DisableCtrlN1Click(Sender: TObject); -begin - if DisableCtrlN1.Checked then - EmbeddedWB1.DisableCtrlShortcuts := 'N'; -end; - -procedure TForm1.DisableCtrlP1Click(Sender: TObject); -begin - if DisableCtrlP1.Checked then - EmbeddedWB1.DisableCtrlShortcuts := 'P'; -end; - -procedure TForm1.EnableAll1Click(Sender: TObject); -begin - EmbeddedWB1.DisableCtrlShortcuts := ''; -end; - -procedure TForm1.Exit1Click(Sender: TObject); -begin - Close; -end; - - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/PrjRightClick_Demo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/PrjRightClick_Demo.dpr deleted file mode 100644 index da1dab1ce7..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/06 - RightClick_Shortcuts_Demo/PrjRightClick_Demo.dpr +++ /dev/null @@ -1,45 +0,0 @@ -//************************************************************* -// Menus Demo * -// For Delphi * -// by * -// Eran Bodankin (bsalsa) -(bsalsa@bsalsa.com) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 4 conditions: -1. In your web site, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program PrjRightClick_Demo; - -uses - Forms, - FrmMain in 'FrmMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/frmMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/frmMain.dfm deleted file mode 100644 index b13291fc1d..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/frmMain.dfm +++ /dev/null @@ -1,150 +0,0 @@ -object Form1: TForm1 - Left = 386 - Top = 355 - Width = 690 - Height = 514 - Caption = 'Drag And Drop Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnCreate = FormCreate - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 682 - Height = 97 - Align = alTop - TabOrder = 0 - DesignSize = ( - 682 - 97) - object Label1: TLabel - Left = 10 - Top = 35 - Width = 618 - Height = 24 - Caption = - 'Drag a file over the EmbeddedWB and you will see the events orde' + - 'r. ' - Font.Charset = DEFAULT_CHARSET - Font.Color = clGreen - Font.Height = -20 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - end - object Label2: TLabel - Left = 10 - Top = 65 - Width = 653 - Height = 18 - Caption = - 'Note: You must place the EmbeddedWB on a panel or another contro' + - 'l and not directly on the form.' - Font.Charset = DEFAULT_CHARSET - Font.Color = clRed - Font.Height = -15 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - end - object Button1: TButton - Left = 600 - Top = 8 - Width = 57 - Height = 21 - Anchors = [akTop, akRight] - Caption = 'GO' - TabOrder = 0 - OnClick = Button1Click - end - object IEAddress1: TIEAddress - Left = 10 - Top = 7 - Width = 569 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - DragMode = dmAutomatic - EmbeddedWB = EmbeddedWB1 - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - ShowFavicon = True - TabOrder = 1 - UseAppIcon = True - end - end - object Panel2: TPanel - Left = 0 - Top = 280 - Width = 682 - Height = 200 - Align = alBottom - TabOrder = 1 - object Memo1: TMemo - Left = 1 - Top = 12 - Width = 680 - Height = 187 - Align = alBottom - Lines.Strings = ( - '') - ScrollBars = ssBoth - TabOrder = 0 - end - end - object Panel3: TPanel - Left = 0 - Top = 97 - Width = 682 - Height = 183 - Align = alClient - Caption = 'Panel3' - TabOrder = 2 - object EmbeddedWB1: TEmbeddedWB - Left = 1 - Top = 1 - Width = 680 - Height = 181 - Align = alClient - DragCursor = crHandPoint - TabOrder = 0 - Silent = False - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnableThemes] - DropHandlingType = ddtCustom - OnGetDropTarget = EmbeddedWB1GetDropTarget - OnDragEnter = EmbeddedWB1DragEnter - OnDragLeave = EmbeddedWB1DragLeave - OnDragOver2 = EmbeddedWB1DragOver2 - OnDropEvent = EmbeddedWB1DropEvent - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.52 from: http://www.bsalsa.com/' - ControlData = { - 4C000000712C0000582600000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/frmMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/frmMain.pas deleted file mode 100644 index ee1f0df9d6..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/frmMain.pas +++ /dev/null @@ -1,146 +0,0 @@ -{*******************************************************} -{ EmbeddedWB - Drag And Drop Demo } -{ by Eran Bodankin (bsalsa) bsalsa@bsalsa.com } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************} -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! } -{*******************************************************************************} - -unit frmMain; - -interface - -uses - sysUtils, Classes, Controls, Forms, EmbeddedWB, StdCtrls, IEAddress, - ExtCtrls, Dialogs, ActiveX, OleCtrls, SHDocVw_EWB, Windows, ComObj, EwbCore; - -type - TForm1 = class(TForm) - Panel1: TPanel; - Button1: TButton; - IEAddress1: TIEAddress; - Panel2: TPanel; - Memo1: TMemo; - Panel3: TPanel; - EmbeddedWB1: TEmbeddedWB; - Label1: TLabel; - Label2: TLabel; - procedure EmbeddedWB1DropEvent(Sender: TObject; const dataObj: IDataObject; - grfKeyState: Integer; pt: TPoint; var dwEffect: Integer; - var Rezult: HRESULT); - procedure EmbeddedWB1DragEnter(Sender: TObject; const dataObj: IDataObject; - grfKeyState: Integer; pt: TPoint; var dwEffect: Integer; - var Rezult: HRESULT); - procedure EmbeddedWB1DragLeave(Sender: TObject); - procedure EmbeddedWB1DragOver2(Sender: TObject; grfKeyState: Integer; - pt: TPoint; var dwEffect: Integer; var Rezult: HRESULT); - procedure FormDestroy(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure Button1Click(Sender: TObject); - procedure EmbeddedWB1GetDropTarget(Sender: TCustomEmbeddedWB; - var DropTarget: IDropTarget); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.Button1Click(Sender: TObject); -begin - Memo1.Clear; - EmbeddedWB1.Go(IEAddress1.Text); -end; - -procedure TForm1.EmbeddedWB1DragEnter(Sender: TObject; - const dataObj: IDataObject; grfKeyState: Integer; pt: TPoint; - var dwEffect: Integer; var Rezult: HRESULT); -begin - Memo1.Lines.Add('============'); - Memo1.Lines.Add('OnDragEnter event - Key Status: ' + IntToStr(grfKeyState)); - Memo1.Lines.Add('OnDragEnter event - Point X: ' + IntToStr(pt.x) + ' Point Y: ' + IntToStr(pt.y)); - Memo1.Lines.Add('OnDragEnter event - Command: ' + IntToStr(dwEffect)); - Memo1.Lines.Add('============'); -end; - -procedure TForm1.EmbeddedWB1DragLeave(Sender: TObject); -begin - Memo1.Lines.Add('OnDragLeave event.'); - Memo1.Lines.Add('============'); -end; - -procedure TForm1.EmbeddedWB1DragOver2(Sender: TObject; grfKeyState: Integer; - pt: TPoint; var dwEffect: Integer; var Rezult: HRESULT); -begin - Memo1.Lines.Add('OnDragOver2 event - Key State: ' + IntToStr(grfKeyState)); - Memo1.Lines.Add('OnDragOver2 event - Point X: ' + IntToStr(pt.x) + ' Point Y: ' + IntToStr(pt.y)); - Memo1.Lines.Add('OnDragOver2 event - Command: ' + IntToStr(dwEffect)); - Memo1.Lines.Add('============'); -end; - -procedure TForm1.EmbeddedWB1DropEvent(Sender: TObject; - const dataObj: IDataObject; grfKeyState: Integer; pt: TPoint; - var dwEffect: Integer; var Rezult: HRESULT); -begin - Memo1.Lines.Add('OnDrop event - Key State: ' + IntToStr(grfKeyState)); - Memo1.Lines.Add('OnDrop event - Point X: ' + IntToStr(pt.x) + ' Point Y: ' + IntToStr(pt.y)); - Memo1.Lines.Add('OnDrop event - Command: ' + IntToStr(dwEffect)); - Memo1.Lines.Add('============'); -end; - -procedure TForm1.FormCreate(Sender: TObject); -begin - OleCheck(RegisterDragDrop(Handle, EmbeddedWB1)); -// To disable Drag and drop, remove the OleCheck -// and use the boolean property EnableDragAndDrop after removing the OleCheck -end; - -procedure TForm1.FormDestroy(Sender: TObject); -begin - RevokeDragDrop(EmbeddedWB1.Handle); -end; - -procedure TForm1.EmbeddedWB1GetDropTarget(Sender: TCustomEmbeddedWB; - var DropTarget: IDropTarget); -begin - Memo1.Lines.Add('OnGetDropTarget event.'); - Memo1.Lines.Add('============'); -end; - -{initialization - OleInitialize(nil); -finalization - try - OleUninitialize; - except - end; } -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/prjDragDropDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/prjDragDropDemo.dpr deleted file mode 100644 index 21e8e1a9b7..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/07 - DragNDrop_Demo/prjDragDropDemo.dpr +++ /dev/null @@ -1,43 +0,0 @@ -{*******************************************************} -{ EmbeddedWB - Drag And Drop Demo } -{ by Eran Bodankin (bsalsa) bsalsa@bsalsa.com } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************} -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! } -{*******************************************************************************} - -program prjDragDropDemo; - -uses - Forms, - frmMain in 'frmMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/frmMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/frmMain.dfm deleted file mode 100644 index be6cd190a5..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/frmMain.dfm +++ /dev/null @@ -1,242 +0,0 @@ -object frmElements: TfrmElements - Left = 233 - Top = 88 - Width = 567 - Height = 610 - Caption = 'TEmbeddedWB - Elements Under Mouse Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 32 - Width = 551 - Height = 347 - Align = alClient - TabOrder = 0 - OnWindowClosing = EmbeddedWB1WindowClosing - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C000000E2330000021C00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel1: TPanel - Left = 0 - Top = 379 - Width = 551 - Height = 195 - Align = alBottom - TabOrder = 1 - object Label1: TLabel - Left = 9 - Top = 35 - Width = 16 - Height = 13 - Caption = 'ID:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object Label2: TLabel - Left = 9 - Top = 63 - Width = 63 - Height = 13 - Caption = 'Inner Text:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object Label4: TLabel - Left = 9 - Top = 118 - Width = 67 - Height = 13 - Caption = 'Class Name:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object Label5: TLabel - Left = 9 - Top = 146 - Width = 30 - Height = 13 - Caption = 'HRef:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object Label6: TLabel - Left = 9 - Top = 8 - Width = 24 - Height = 13 - Caption = 'Tag:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object Label3: TLabel - Left = 9 - Top = 91 - Width = 64 - Height = 13 - Caption = 'Inner Html:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object Label7: TLabel - Left = 9 - Top = 174 - Width = 39 - Height = 13 - Caption = 'Frame:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object edtTag: TEdit - Left = 88 - Top = 6 - Width = 437 - Height = 21 - Anchors = [akLeft, akTop, akRight] - TabOrder = 0 - end - object edtID: TEdit - Left = 88 - Top = 33 - Width = 437 - Height = 21 - Anchors = [akLeft, akTop, akRight] - TabOrder = 1 - end - object edtInnerText: TEdit - Left = 88 - Top = 60 - Width = 437 - Height = 21 - Anchors = [akLeft, akTop, akRight] - TabOrder = 2 - end - object edtInnerHtml: TEdit - Left = 88 - Top = 87 - Width = 437 - Height = 21 - Anchors = [akLeft, akTop, akRight] - TabOrder = 3 - end - object edtHref: TEdit - Left = 88 - Top = 141 - Width = 437 - Height = 21 - Anchors = [akLeft, akTop, akRight] - TabOrder = 4 - end - object edtClassName: TEdit - Left = 88 - Top = 114 - Width = 437 - Height = 21 - Anchors = [akLeft, akTop, akRight] - TabOrder = 5 - end - object edtFrame: TEdit - Left = 88 - Top = 168 - Width = 437 - Height = 21 - Anchors = [akLeft, akTop, akRight] - TabOrder = 6 - end - end - object Panel2: TPanel - Left = 0 - Top = 0 - Width = 551 - Height = 32 - Align = alTop - TabOrder = 2 - object Button1: TButton - Left = 483 - Top = 2 - Width = 49 - Height = 25 - Anchors = [akTop] - Caption = 'Go' - TabOrder = 0 - OnClick = Button1Click - end - object IEAddress1: TIEAddress - Left = 8 - Top = 4 - Width = 458 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - Anchors = [akLeft, akTop, akRight] - ButtonColor = clBlack - ButtonPressedColor = clBlack - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 1 - Text = 'http://bsalsa.com/downloads.html' - TextOnLoad = tlUserDefine - end - end - object Timer1: TTimer - Enabled = False - Interval = 50 - OnTimer = Timer1Timer - Left = 16 - Top = 40 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/frmMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/frmMain.pas deleted file mode 100644 index 09fab014ab..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/frmMain.pas +++ /dev/null @@ -1,164 +0,0 @@ -//************************************************************* -// EmbeddedWB - Elements Under Mouse Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit frmMain; - -{$I EWB.inc} - -interface - -uses - Windows, Forms, ExtCtrls, Controls, {$IFDEF DELPHI6_UP}Variants, {$ENDIF} - IEAddress, OleCtrls, MSHTML_EWB, SHDocVw_EWB, EwbCore, EmbeddedWB, Classes, StdCtrls, SysUtils; - -type - TfrmElements = class(TForm) - EmbeddedWB1: TEmbeddedWB; - Panel1: TPanel; - edtTag: TEdit; - edtID: TEdit; - edtInnerText: TEdit; - edtInnerHtml: TEdit; - edtHref: TEdit; - Timer1: TTimer; - edtClassName: TEdit; - Panel2: TPanel; - Button1: TButton; - IEAddress1: TIEAddress; - Label1: TLabel; - Label2: TLabel; - Label4: TLabel; - Label5: TLabel; - Label6: TLabel; - Label3: TLabel; - edtFrame: TEdit; - Label7: TLabel; - procedure Button1Click(Sender: TObject); - procedure Timer1Timer(Sender: TObject); - procedure EmbeddedWB1WindowClosing(ASender: TObject; - IsChildWindow: WordBool; var Cancel: WordBool); - private - { Private declarations } - - public - { Public declarations } - end; - -var - frmElements: TfrmElements; - -implementation - -{$R *.dfm} - -function OleVarToStr(const V: OleVariant): string; -begin -{$IFDEF DELPHI_6_UP} - if VarIsStr(V) or VarIsNumeric(V) or (VarType(V) = varDate) then - Result := V - else - Result := ''; -{$ELSE} - if VarIsNull(v) then - Result := '' - else - Result := string(V) -{$ENDIF} -end; - -procedure TfrmElements.Button1Click(Sender: TObject); -begin - EmbeddedWB1.Go(IEAddress1.Text); - Timer1.Enabled := True; -end; - -procedure TfrmElements.Timer1Timer(Sender: TObject); -var - MousePos: TPoint; - HtmlElement: IHTMLElement; - ImgElement: IHTMLIMGElement; - AnchorElement: IHTMLAnchorElement; - iHTMLDoc: IHtmlDocument2; - LinkElement: IHTMLLinkElement; - varName, varSource: OleVariant; -begin - if Supports(EmbeddedWB1.Document, IHtmlDocument2, iHTMLDoc) then - begin - if GetCursorPos(MousePos) then - begin - MousePos := EmbeddedWB1.ScreenToClient(MousePos); - HtmlElement := iHTMLDoc.ElementFromPoint(MousePos.X, MousePos.Y); - if Assigned(HtmlElement) then - begin - try - edtTag.Text := HtmlElement.tagName; - edtId.Text := HtmlElement.id; - edtInnerText.Text := HtmlElement.innerText; - - edtInnerHTML.Text := HtmlElement.innerHTML; - edtClassName.Text := HtmlElement.className; - HtmlElement.QueryInterface(IHTMLIMGElement, imgElement); - - edthref.Text := ''; - - if Assigned(imgElement) then - edthref.Text := imgElement.href; - - HtmlElement.QueryInterface(IHTMLAnchorElement, AnchorElement); - if Assigned(AnchorElement) then - edthref.Text := AnchorElement.href; - - HtmlElement.QueryInterface(IHTMLLinkElement, LinkElement); - if Assigned(LinkElement) then - edthref.Text := LinkElement.href; - - varName := HtmlElement.GetAttribute('Name', 0); - varSource := HtmlElement.GetAttribute('Source', 0); - - edtFrame.Text := OleVarToStr(varName) + ' ' + OleVarToStr(varSource); - except - end; - end; - end; - end; -end; - -procedure TfrmElements.EmbeddedWB1WindowClosing(ASender: TObject; - IsChildWindow: WordBool; var Cancel: WordBool); -begin - Cancel := True; - (ASender as TEmbeddedWB).GoAboutBlank; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/prjElementsUnderMouseDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/prjElementsUnderMouseDemo.dpr deleted file mode 100644 index fb4c1402ef..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/08 - Elements_Under_Mouse_Demo/prjElementsUnderMouseDemo.dpr +++ /dev/null @@ -1,46 +0,0 @@ -//************************************************************* -// EmbeddedWB - Elements Under Mouse Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjElementsUnderMouseDemo; - -uses - Forms, - frmMain in 'frmMain.pas' {Form2}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TfrmElements, frmElements); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/Unit1.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/Unit1.dfm deleted file mode 100644 index 2685c5e53b..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/Unit1.dfm +++ /dev/null @@ -1,90 +0,0 @@ -object Form1: TForm1 - Left = 332 - Top = 255 - Width = 768 - Height = 558 - Caption = 'TEmbeddedWB - Print Preview From Template Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 41 - Width = 760 - Height = 483 - Align = alClient - TabOrder = 0 - Silent = False - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - OnShowDialog = EmbeddedWB1ShowDialog - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C0000001B470000DC2900000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 760 - Height = 41 - Align = alTop - TabOrder = 1 - DesignSize = ( - 760 - 41) - object SpeedButton1: TSpeedButton - Left = 0 - Top = 0 - Width = 217 - Height = 41 - Caption = 'Print preview from template!' - OnClick = SpeedButton1Click - end - object SpeedButton2: TSpeedButton - Left = 653 - Top = 9 - Width = 73 - Height = 22 - Anchors = [akTop] - Caption = 'GO' - OnClick = SpeedButton2Click - end - object edURL: TIEAddress - Left = 224 - Top = 10 - Width = 417 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - Anchors = [akLeft, akTop, akRight] - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - ParentShowHint = True - TabOrder = 0 - Text = 'http://www.bsalsa.com' - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/Unit1.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/Unit1.pas deleted file mode 100644 index c0193cdeee..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/Unit1.pas +++ /dev/null @@ -1,67 +0,0 @@ -//This cool demo was build by BitMaker - -unit Unit1; - -interface - -uses - SysUtils, Classes, Forms, Buttons, SHDocVw_EWB, EmbeddedWB, StdCtrls, - Controls, OleCtrls, EwbCore, ExtCtrls, IEAddress; - -type - TForm1 = class(TForm) - EmbeddedWB1: TEmbeddedWB; - Panel1: TPanel; - SpeedButton1: TSpeedButton; - SpeedButton2: TSpeedButton; - edURL: TIEAddress; - procedure FormShow(Sender: TObject); - procedure SpeedButton2Click(Sender: TObject); - procedure SpeedButton1Click(Sender: TObject); - procedure EmbeddedWB1ShowDialog(Sender: TObject; h: Cardinal; - StyleEx: Integer; OldCaption: string; var NewCaption: WideString; - var Cancel: Boolean); - - private - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.SpeedButton2Click(Sender: TObject); -begin - EmbeddedWB1.Navigate(edURL.Text); -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - EmbeddedWB1.GoHome; -end; - -procedure TForm1.SpeedButton1Click(Sender: TObject); -var - sPreviewFromTemplatePath: string; -begin - if EmbeddedWB1.DocumentLoaded then - begin - sPreviewFromTemplatePath := ExtractFilePath(Application.ExeName) + 'template.htm'; - EmbeddedWB1.PrintPreviewFromTemplate(sPreviewFromTemplatePath); - end; -end; - -procedure TForm1.EmbeddedWB1ShowDialog(Sender: TObject; h: Cardinal; - StyleEx: Integer; OldCaption: string; var NewCaption: WideString; - var Cancel: Boolean); -begin - NewCaption := 'Print Preview'; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/prjPrintPreviewTemplateDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/prjPrintPreviewTemplateDemo.dpr deleted file mode 100644 index ee67ab4bc3..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/prjPrintPreviewTemplateDemo.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program prjPrintPreviewTemplateDemo; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/template.htm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/template.htm deleted file mode 100644 index 4aa96845a6..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/09 - PrintPreviewFromTemplate_Demo/template.htm +++ /dev/null @@ -1,653 +0,0 @@ - - - - - - - - - - - - - -
-
-    - -      - -   -  % -   - -      - -      - -
- -
-
- - - - - - -
-
- - - \ No newline at end of file diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/Main.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/Main.dfm deleted file mode 100644 index fa2609b7e3..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/Main.dfm +++ /dev/null @@ -1,105 +0,0 @@ -object MainFrm: TMainFrm - Left = 384 - Top = 215 - Width = 590 - Height = 514 - Caption = 'Printing Using EmbeddedWB Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - Menu = MainMenu1 - OldCreateOrder = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 0 - Width = 582 - Height = 460 - Align = alClient - TabOrder = 0 - Silent = False - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.55 from: http://www.bsalsa.com/' - ControlData = { - 4C000000C8300000242300000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object MainMenu1: TMainMenu - Left = 8 - Top = 8 - object FileMenu: TMenuItem - Caption = 'File' - object PrintWithDlg: TMenuItem - Caption = 'Print With Dialog' - object Print: TMenuItem - Caption = 'Print' - OnClick = PrintClick - end - object PrintPreview: TMenuItem - Caption = 'Print Preview' - OnClick = PrintPreviewClick - end - object PrintPreviewMaximized: TMenuItem - Caption = 'Print Preview Maximized' - OnClick = PrintPreviewMaximizedClick - end - object PrintSetup: TMenuItem - Caption = 'Print Setup' - OnClick = PrintSetupClick - end - object PrintWithOptions: TMenuItem - Caption = 'Print With Options' - OnClick = PrintWithOptionsClick - end - object N2: TMenuItem - Caption = '-' - end - object LanscapeDlg: TMenuItem - Caption = 'Lanscape' - OnClick = LanscapeDlgClick - end - object PortraitDlg: TMenuItem - Caption = 'Portrait' - OnClick = PortraitDlgClick - end - end - object PrintWithOutDlg: TMenuItem - Caption = 'Print Without Dialog' - object LandscapeNoDlg: TMenuItem - Caption = 'Landscape' - OnClick = LandscapeNoDlgClick - end - object PortraiteNoDlg: TMenuItem - Caption = 'Portraite' - OnClick = PortraiteNoDlgClick - end - end - object N1: TMenuItem - Caption = '-' - end - object Exit: TMenuItem - Caption = 'Exit' - OnClick = ExitClick - end - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/Main.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/Main.pas deleted file mode 100644 index 761d8754a5..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/Main.pas +++ /dev/null @@ -1,243 +0,0 @@ -//************************************************************* -// EmbeddedWB - Print Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit Main; - -interface - -uses - Controls, Classes, Windows, Messages, Forms, Dialogs, Menus, - EmbeddedWB, OleCtrls, SHDocVw_EWB, EwbCore; - -type - TPrintOptions = record - Copies: Integer; //Number of copies - Portrait: Boolean; //Paper orientation - Left: string; //Left Margin - Top: string; //Top Margin - Right: string; //Right Margin - Bottom: string; //Bottom Margin - Header: string; //Header string - Footer: string; //Footer string - end; - -var - PrintOptions: TPrintOptions; - bPrintWithOpt: Boolean; - -type - TMainFrm = class(TForm) - Exit: TMenuItem; - FileMenu: TMenuItem; - LandscapeNoDlg: TMenuItem; - LanscapeDlg: TMenuItem; - MainMenu1: TMainMenu; - N1: TMenuItem; - N2: TMenuItem; - PortraitDlg: TMenuItem; - PortraiteNoDlg: TMenuItem; - Print: TMenuItem; - PrintPreview: TMenuItem; - PrintSetup: TMenuItem; - PrintWithDlg: TMenuItem; - PrintWithOptions: TMenuItem; - PrintWithOutDlg: TMenuItem; - EmbeddedWB1: TEmbeddedWB; - PrintPreviewMaximized: TMenuItem; - procedure PrintPreviewMaximizedClick(Sender: TObject); - procedure ExitClick(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure LandscapeNoDlgClick(Sender: TObject); - procedure LanscapeDlgClick(Sender: TObject); - procedure PortraitDlgClick(Sender: TObject); - procedure PortraiteNoDlgClick(Sender: TObject); - procedure PrintClick(Sender: TObject); - procedure PrintPreviewClick(Sender: TObject); - procedure PrintSetupClick(Sender: TObject); - procedure PrintWithOptionsClick(Sender: TObject); - - private - { Private declarations } - procedure WMActivate(var Msg: TWMActivate); message WM_ACTIVATE; - - public - { Public declarations } - end; - -var - MainFrm: TMainFrm; - -implementation - -{$R *.dfm} -//----------Private Section-------------------------------- - -procedure TMainFrm.WMActivate(var Msg: TWMActivate); -var - S: string; - wnd: HWND; - I: Integer; -begin - if bPrintWithOpt and (msg.active = 0) then - begin - bPrintWithOpt := false; - wnd := Msg.ActiveWindow; - I := GetWindowTextLength(wnd); - SetLength(S, I + 1); - GetWindowText(Wnd, PChar(S), I + 1); - if (S = 'Print'#0) then - begin - SetDlgItemInt(wnd, 1154, PrintOptions.Copies, False); - SendDlgItemMessage(Wnd, 1, BM_CLICK, 0, 0); - bPrintWithOpt := True; - end - else - if S = 'Page Setup'#0 then - begin - if PrintOptions.Portrait then - SendDlgItemMessage(Wnd, 1056, BM_CLICK, 0, 0) - else - SendDlgItemMessage(Wnd, 1057, BM_CLICK, 0, 0); - - SetDlgItemText(wnd, 8147, PChar(PrintOptions.Header)); - SetDlgItemText(wnd, 8149, PChar(PrintOptions.Footer)); - SetDlgItemText(wnd, 1155, PChar(PrintOptions.Left)); - SetDlgItemText(wnd, 1156, PChar(PrintOptions.Top)); - SetDlgItemText(wnd, 1157, PChar(PrintOptions.Right)); - SetDlgItemText(wnd, 1158, PChar(PrintOptions.Bottom)); - SendDlgItemMessage(Wnd, 1, BM_CLICK, 0, 0); - bPrintWithOpt := True; - end; - end; -end; - -//-----End of private section----------------------------------------------- - -procedure TMainFrm.FormShow(Sender: TObject); -begin - EmbeddedWB1.Navigate('bsalsa.com'); -end; - -procedure TMainFrm.ExitClick(Sender: TObject); -begin - Close; -end; - -procedure TMainFrm.PrintClick(Sender: TObject); -begin - EmbeddedWB1.PrintOptions.HideSetup := true; - EmbeddedWB1.Print; -end; - -procedure TMainFrm.PrintPreviewClick(Sender: TObject); -begin - EmbeddedWB1.PrintPreView; -end; - -procedure TMainFrm.PrintSetupClick(Sender: TObject); -begin - EmbeddedWB1.PrintSetup; -end; - -procedure TMainFrm.PrintWithOptionsClick(Sender: TObject); -begin - EmbeddedWB1.PrintWithOptions; -end; - -procedure TMainFrm.LanscapeDlgClick(Sender: TObject); -begin - with EmbeddedWB1.PrintOptions do - begin - Orientation := poLandscape; - Margins.Left := 16.75; // always use the unit of measurement defined on your own computer. - Header := 'This is my new header'; - end; - EmbeddedWB1.PrintWithOptions; -end; - -procedure TMainFrm.PortraitDlgClick(Sender: TObject); -begin - with EmbeddedWB1.PrintOptions do - begin - Orientation := poPortrait; - Margins.Left := 16.75; // always use the unit of measurement defined on your own computer. - Header := 'This is my new header'; - end; - EmbeddedWB1.PrintWithOptions; -end; - -procedure TMainFrm.LandscapeNoDlgClick(Sender: TObject); -begin - with PrintOptions do - begin - Copies := 1; - Portrait := False; - Footer := 'This is my Footer'; - Header := 'This is my Header'; - Left := '25,0'; - Top := '20,0'; - Right := '22,0'; - Bottom := '19,7'; - end; - bPrintWithOpt := True; - Embeddedwb1.PageSetup(true); - EmbeddedWB1.Print; - bPrintWithOpt := False; -end; - -procedure TMainFrm.PortraiteNoDlgClick(Sender: TObject); -begin - with PrintOptions do - begin - Copies := 1; - Portrait := True; - Footer := 'This is my Footer'; - Header := 'This is my Header'; - Left := '25,0'; - Top := '20,0'; - Right := '22,0'; - Bottom := '19,7'; - end; - bPrintWithOpt := True; - if Embeddedwb1.PageSetup(True) then - EmbeddedWB1.Print; - bPrintWithOpt := False; -end; - -procedure TMainFrm.PrintPreviewMaximizedClick(Sender: TObject); -begin - EmbeddedWB1.PrintPreviewExtended(SW_MAXIMIZE); -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/prjPrintingOptionsDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/prjPrintingOptionsDemo.dpr deleted file mode 100644 index 56f0ade2e5..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/10 - PrintingOptions_Demo/prjPrintingOptionsDemo.dpr +++ /dev/null @@ -1,46 +0,0 @@ -//************************************************************* -// EmbeddedWB - Print Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjPrintingOptionsDemo; - -uses - Forms, - Main in 'Main.pas' {MainFrm}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TMainFrm, MainFrm); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/frmMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/frmMain.dfm deleted file mode 100644 index 0d5166e100..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/frmMain.dfm +++ /dev/null @@ -1,98 +0,0 @@ -object Form1: TForm1 - Left = 388 - Top = 235 - Width = 574 - Height = 524 - Caption = 'TEmbeddedWB - 11 - moveto, moveby, resizeto, resizeby Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnCreate = FormCreate - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 30 - Width = 566 - Height = 441 - Align = alClient - TabOrder = 0 - OnNewWindow2 = EmbeddedWB1NewWindow2 - OnVisible = EmbeddedWB1Visible - OnAddressBar = EmbeddedWB1AddressBar - OnWindowSetResizable = EmbeddedWB1WindowSetResizable - OnWindowSetLeft = EmbeddedWB1WindowSetLeft - OnWindowSetTop = EmbeddedWB1WindowSetTop - OnWindowSetWidth = EmbeddedWB1WindowSetWidth - OnWindowSetHeight = EmbeddedWB1WindowSetHeight - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnableThemes] - OnMove = EmbeddedWB1Move - OnMoveBy = EmbeddedWB1MoveBy - OnResize = EmbeddedWB1Resize - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - VisualEffects.TextSize = 0 - UserAgent = 'EmbeddedWB 14,52 from: http://www.bsalsa.com/' - ControlData = { - 4C00000032310000722900000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object pnlAddressBar: TPanel - Left = 0 - Top = 0 - Width = 566 - Height = 30 - Align = alTop - TabOrder = 1 - DesignSize = ( - 566 - 30) - object edUrl: TEdit - Left = 8 - Top = 4 - Width = 507 - Height = 21 - Anchors = [akLeft, akTop, akRight] - TabOrder = 0 - Text = 'http://devitco.de/coint/navtest' - OnKeyPress = edUrlKeyPress - end - object btnGo: TButton - Left = 522 - Top = 4 - Width = 33 - Height = 21 - Anchors = [akTop, akRight] - Caption = 'Go' - TabOrder = 1 - OnClick = btnGoClick - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 471 - Width = 566 - Height = 19 - Panels = <> - SimplePanel = False - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/frmMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/frmMain.pas deleted file mode 100644 index 8c2ef50dff..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/frmMain.pas +++ /dev/null @@ -1,277 +0,0 @@ -{*******************************************************} -{ SDI Embedded Web Browser Demo } -{ By: } -{ Eran Bodankin (bsalsa) bsalsa@bsalsa.com } -{ Enjoy! } -{ Documentation and updated versions: } -{ http://www.bsalsa.com } -{*******************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit frmMain; - -interface - -uses - Classes, Controls, Forms, OleCtrls, EmbeddedWB, SHDocVw_EWB, Dialogs, - StdCtrls, ExtCtrls, Windows, Messages, EwbCore, ComCtrls; - -type - TForm1 = class(TForm) - EmbeddedWB1: TEmbeddedWB; - pnlAddressBar: TPanel; - edUrl: TEdit; - btnGo: TButton; - StatusBar1: TStatusBar; - procedure EmbeddedWB1Move(Sender: TCustomEmbeddedWB; cx, cy: Integer); - procedure EmbeddedWB1MoveBy(Sender: TCustomEmbeddedWB; cx, cy: Integer); - procedure EmbeddedWB1Resize(Sender: TCustomEmbeddedWB; cx, cy: Integer); - procedure EmbeddedWB1NewWindow2(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool); - procedure FormShow(Sender: TObject); - procedure EmbeddedWB1AddressBar(Sender: TObject; AddressBar: WordBool); - procedure edUrlKeyPress(Sender: TObject; var Key: Char); - procedure EmbeddedWB1NewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); - procedure EmbeddedWB1WindowSetHeight(ASender: TObject; - Height: Integer); - procedure btnGoClick(Sender: TObject); - procedure EmbeddedWB1WindowSetLeft(ASender: TObject; Left: Integer); - procedure EmbeddedWB1WindowSetResizable(ASender: TObject; - Resizable: WordBool); - procedure EmbeddedWB1WindowSetWidth(ASender: TObject; Width: Integer); - procedure FormCreate(Sender: TObject); - procedure EmbeddedWB1Visible(Sender: TObject; Visible: WordBool); - procedure EmbeddedWB1WindowSetTop(ASender: TObject; Top: Integer); - private - { Private declarations } - m_Rect: TRect; - m_bCreatedManually: Boolean; - m_bResizable: Boolean; - m_bFullScreen: Boolean; - protected - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -uses - SysUtils; - -const - SZ_BOOL: array[boolean] of string = ('False', 'True'); - -var - iBorderThick, - iBorderSize, - iCaptSize: Integer; - -procedure TForm1.FormShow(Sender: TObject); -begin - EmbeddedWB1.Go(edUrl.Text); -end; - -procedure TForm1.EmbeddedWB1NewWindow2(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool); -var - NewApp: TForm1; -begin - Application.CreateForm(TForm1, NewApp); - NewApp.m_bCreatedManually := m_bCreatedManually; - m_bCreatedManually := False; - ppdisp := NewApp.EmbeddedWB1.Application; -end; - -procedure TForm1.EmbeddedWB1AddressBar(Sender: TObject; - AddressBar: WordBool); -begin - pnlAddressBar.Visible := AddressBar; -end; - -procedure TForm1.edUrlKeyPress(Sender: TObject; var Key: Char); -begin - if (Key = #13) then - begin - Key := #0; - EmbeddedWB1.Go(edUrl.Text); - end; -end; - -procedure TForm1.EmbeddedWB1NewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); -var - NewApp: TForm1; -begin - ShowMessage(bstrUrl); - Application.CreateForm(TForm1, NewApp); - NewApp.m_bCreatedManually := m_bCreatedManually; - m_bCreatedManually := False; - ppdisp := NewApp.EmbeddedWB1.Application; -end; - -procedure TForm1.EmbeddedWB1Move(Sender: TCustomEmbeddedWB; cx, cy: Integer); -begin - if (WindowState = wsNormal) then begin - SetBounds(cX, cY, Width, Height); - OutputDebugString(PChar(Format('Move x:%d, y:%d', [cX, cY]))); - Statusbar1.SimpleText := Format('Move x:%d, y:%d', [cX, cY]); - end; -end; - -procedure TForm1.EmbeddedWB1MoveBy(Sender: TCustomEmbeddedWB; cx, cy: Integer); -begin - if (WindowState = wsNormal) then begin - OutputDebugString(PChar(Format('MoveBy cx:%d, cy:%d', [cx, cy]))); - Statusbar1.SimpleText := (Format('MoveBy cx:%d, cy:%d', [cx, cy])); - SetBounds(Left + cx, Top + cy, Width, Height); - end; -end; - -procedure TForm1.btnGoClick(Sender: TObject); -begin - EmbeddedWB1.Go(edUrl.Text); -end; - -procedure TForm1.EmbeddedWB1Resize(Sender: TCustomEmbeddedWB; cx, cy: Integer); -begin - if (WindowState = wsNormal) then begin - OutputDebugString(PChar(Format('Resize Width:%d, Height:%d', [Width, Height]))); - SetBounds(Left, Top, Width, Height); - Statusbar1.SimpleText := (Format('Resize Width:%d, Height:%d', [Width, Height])); - end; -end; - -procedure TForm1.EmbeddedWB1WindowSetLeft(ASender: TObject; Left: Integer); -begin - OutputDebugString(PChar(Format('SetLeft: %d', [Top]))); - m_Rect.Left := Left; - Statusbar1.SimpleText := Format('SetLeft: %d', [Top]); -end; - -procedure TForm1.EmbeddedWB1WindowSetTop(ASender: TObject; Top: Integer); -begin - OutputDebugString(PChar(Format('SetTop: %d', [Top]))); - m_Rect.Top := Top; - Statusbar1.SimpleText := Format('SetTop: %d', [Top]); -end; - -procedure TForm1.EmbeddedWB1WindowSetWidth(ASender: TObject; - Width: Integer); -begin - OutputDebugString(PChar(Format('SetWidth: %d', [Top]))); - m_Rect.Right := Width; - Statusbar1.SimpleText := Format('SetWidth: %d', [Top]); -end; - -procedure TForm1.EmbeddedWB1WindowSetHeight(ASender: TObject; - Height: Integer); -begin - OutputDebugString(PChar(Format('SetHeight: %d', [Top]))); - m_Rect.Bottom := Height; - Statusbar1.SimpleText := Format('SetHeight: %d', [Top]); -end; - -procedure TForm1.EmbeddedWB1WindowSetResizable(ASender: TObject; - Resizable: WordBool); -begin - OutputDebugString(PChar('SetResizable: ' + SZ_BOOL[Resizable])); - m_bResizable := Resizable; - Statusbar1.SimpleText := ('SetResizable: ' + SZ_BOOL[Resizable]); -end; - -procedure TForm1.FormCreate(Sender: TObject); -begin - m_Rect := Rect(0, 0, 0, 0); - m_bResizable := True; - m_bCreatedManually := False; - m_bFullScreen := False; -end; - -procedure TForm1.EmbeddedWB1Visible(Sender: TObject; Visible: WordBool); -var - dwClHeight: Integer; -begin - OutputDebugString(PChar('Visible: ' + SZ_BOOL[Visible])); - if not m_bCreatedManually {and not m_bFullScreen} then begin - if m_bResizable then begin - BorderStyle := bsSizeable; - BorderIcons := BorderIcons + [biMaximize]; - end - else begin - BorderStyle := bsSingle; - BorderIcons := BorderIcons - [biMaximize]; - end; - HandleNeeded; - { - pnlStatusBar.Visible := m_bStatusBar; - CoolBar.Bands[0].Visible := m_bToolBar; - if m_bAddressBar then - CoolBar.Bands.FindBand(tbAddress).Break := m_bToolBar; - CoolBar.Bands[2].Visible := m_bAddressBar; - CoolBar.Visible := m_bToolBar or m_bAddressBar; - pnlSep.Visible := CoolBar.Visible; - } - if (m_Rect.Right > 0) and (m_Rect.Bottom > 0) then begin - dwClHeight := 0; - - if pnlAddressBar.Visible then - dwClHeight := pnlAddressBar.Height; - - // if m_bStatusBar then - // dwClHeight := dwClHeight + pnlStatusBar.Height; - - m_Rect.Bottom := (iBorderSize + iBorderThick) * 2 + iCaptSize + dwClHeight + m_Rect.Bottom; - m_Rect.Right := (iBorderSize + iBorderThick) * 2 + m_Rect.Right; - - if m_bResizable then begin - inc(m_Rect.Bottom, 2); - inc(m_Rect.Right, 2); - end; - - SetBounds(m_Rect.Left, m_Rect.Top, m_Rect.Right, m_Rect.Bottom); - end; - - if m_bFullScreen then - WindowState := wsMaximized; - - end - else - m_bCreatedManually := False; - - Self.Visible := Visible; -end; - -initialization - iCaptSize := GetSystemMetrics(SM_CYCAPTION); - iBorderSize := GetSystemMetrics(SM_CXBORDER); - iBorderThick := GetSystemMetrics(SM_CXSIZEFRAME); -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/prjMoveResizeDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/prjMoveResizeDemo.dpr deleted file mode 100644 index ed70a7759e..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/11 - moveto, moveby, resizeto, resizeby_Demo/prjMoveResizeDemo.dpr +++ /dev/null @@ -1,45 +0,0 @@ -{*******************************************************} -{ SDI Embedded Web Browser Demo } -{ By: } -{ Eran Bodankin (bsalsa) bsalsa@bsalsa.com } -{ Enjoy! } -{ Documentation and updated versions: } -{ http://www.bsalsa.com } -{*******************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - - -program prjMoveResizeDemo; - -uses - Forms, - frmMain in 'frmMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/prjMSHTML_EventsDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/prjMSHTML_EventsDemo.dpr deleted file mode 100644 index 891bcaea01..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/prjMSHTML_EventsDemo.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program prjMSHTML_EventsDemo; - -uses - Forms, - unit1 in 'unit1.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/unit1.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/unit1.dfm deleted file mode 100644 index 5662b769ad..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/unit1.dfm +++ /dev/null @@ -1,75 +0,0 @@ -object Form1: TForm1 - Left = 262 - Top = 320 - Width = 831 - Height = 596 - Caption = 'TEmbeddedWB & MSHTMLEvents' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 105 - Width = 823 - Height = 457 - Align = alClient - TabOrder = 0 - OnDownloadComplete = EmbeddedWB1DownloadComplete - OnBeforeNavigate2 = EmbeddedWB1BeforeNavigate2 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - HTMLCode.Strings = ( - 'http://www.bsalsa.com/support.html') - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C00000017590000EA3700000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 823 - Height = 105 - Align = alTop - TabOrder = 1 - DesignSize = ( - 823 - 105) - object Label1: TLabel - Left = 19 - Top = 14 - Width = 95 - Height = 13 - Caption = '> Click on any URL!' - Transparent = True - end - object Memo1: TMemo - Left = 184 - Top = 8 - Width = 632 - Height = 89 - Anchors = [akLeft, akTop, akRight] - TabOrder = 0 - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/unit1.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/unit1.pas deleted file mode 100644 index 833cee70d0..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/12 - MSHTML_Events_Demo/unit1.pas +++ /dev/null @@ -1,137 +0,0 @@ -//************************************************************* -// EmbeddedWB - MSHTML Events * -// * -// by * -// Thomas Stutz (smot) * -// smot777@yahoo.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit Unit1; - -interface - -uses - Windows, Messages, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, OleCtrls {$IFDEF Enable_EwbMSHTMLEvents}, MSHTMLEvents{$ENDIF}, SHDocVw_EWB, EwbCore, EmbeddedWB, - ExtCtrls; - -type - TForm1 = class(TForm) - EmbeddedWB1: TEmbeddedWB; - Panel1: TPanel; - Label1: TLabel; - Memo1: TMemo; -{$IFDEF Enable_EwbMSHTMLEvents} - procedure EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); - procedure EmbeddedWB1DownloadComplete(Sender: TObject); - private - { Private declarations } - function DocOnClick(Sender: TObject): WordBool; - function DocSelectStart(Sender: TObject): WordBool; -{$ENDIF} - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -uses - MSHTML; - -{$IFDEF Enable_EwbMSHTMLEvents} - -function TForm1.DocOnClick(Sender: TObject): WordBool; -var - SrcElement: IHTMLElement; - Doc: IHTMLDocument2; -begin - Result := False; - Doc := TMSHTMLHTMLDocumentEvents(Sender).Source as IHTMLDocument2; - if Doc <> nil then - begin - SrcElement := Doc.parentWindow.event.srcElement; - // now you can do what you want with srcelement, like: - Memo1.Text := SrcElement.innerhtml; - Result := True; - end; -end; - -function TForm1.DocSelectStart(Sender: TObject): WordBool; -var - Doc: IHTMLDocument2; -begin - Result := True; - Doc := TMSHTMLHTMLDocumentEvents(Sender).Source as IHTMLDocument2; - if Doc <> nil then - begin - Result := False; - Caption := 'Selecting disabled!'; - end; -end; - -procedure TForm1.EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -var - FSinkComponent: TMSHTMLHTMLDocumentEvents; -begin - FSinkComponent := TEmbeddedWB(ASender).SinkComponent; // $DEFINE Enable_EwbMSHTMLEvents must be enabled in EWB.inc ! - if Assigned(FSinkComponent) then - FSinkComponent.Disconnect; -end; - -procedure TForm1.EmbeddedWB1DownloadComplete(Sender: TObject); -var - FSinkComponent: TMSHTMLHTMLDocumentEvents; - EWB : TEmbeddedWB; - Document: IHTMLDocument2; -begin - EWB := Sender as TEmbeddedWB; - if Assigned(EWB.Document) then - begin - if Succeeded(EWB.Document.QueryInterface(IID_IHTMLDocument2, Document)) then - begin - FSinkComponent := EWB.SinkComponent; - FSinkComponent.onselectstart := DocSelectStart; - FSinkComponent.OnClick := DocOnClick; - FSinkComponent.Connect(Document); - end; - end; -end; - -{$ENDIF} - -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormImpl1.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormImpl1.dfm deleted file mode 100644 index eaa89d32fe..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormImpl1.dfm +++ /dev/null @@ -1,74 +0,0 @@ -object ActiveFormX: TActiveFormX - Left = 288 - Top = 269 - Width = 494 - Height = 346 - Caption = 'ActiveFormX' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Scaled = False - OnCreate = ActiveFormCreate - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 41 - Width = 486 - Height = 271 - Align = alClient - TabOrder = 0 - Silent = False - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C0000003B320000021C00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 486 - Height = 41 - Align = alTop - TabOrder = 1 - object Button1: TButton - Left = 392 - Top = 8 - Width = 75 - Height = 25 - Caption = 'Go' - TabOrder = 0 - OnClick = Button1Click - end - object IEAddress1: TIEAddress - Left = 8 - Top = 8 - Width = 377 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 1 - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormImpl1.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormImpl1.pas deleted file mode 100644 index 9f47eeeeb2..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormImpl1.pas +++ /dev/null @@ -1,419 +0,0 @@ -{*******************************************************} -{ Active Form Demo } -{ By: } -{ Eran Bodankin (bsalsa) bsalsa@bsalsa.com } -{ Enjoy! } -{ Documentation and updated versions: } -{ http://www.bsalsa.com } -{*******************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit ActiveFormImpl1; - -{$I EWB.inc} - -{$IFDEF DELPHI6_UP} -{$WARN SYMBOL_PLATFORM OFF} -{$ENDIF} - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - ActiveX, AxCtrls, ActiveFormProj1_TLB, StdVcl, StdCtrls, OleCtrls, - SHDocVw_EWB, EwbCore, EmbeddedWB, IEAddress, ExtCtrls; - -type - TActiveFormX = class(TActiveForm, IActiveFormX) - EmbeddedWB1: TEmbeddedWB; - Panel1: TPanel; - Button1: TButton; - IEAddress1: TIEAddress; - procedure Button1Click(Sender: TObject); - procedure ActiveFormCreate(Sender: TObject); - private - { Private declarations } - FEvents: IActiveFormXEvents; - procedure ActivateEvent(Sender: TObject); - procedure ClickEvent(Sender: TObject); - procedure CreateEvent(Sender: TObject); - procedure DblClickEvent(Sender: TObject); - procedure DeactivateEvent(Sender: TObject); - procedure DestroyEvent(Sender: TObject); - procedure KeyPressEvent(Sender: TObject; var Key: Char); - procedure PaintEvent(Sender: TObject); - protected - { Protected declarations } - procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override; - procedure EventSinkChanged(const EventSink: IUnknown); override; - function Get_Active: WordBool; safecall; - function Get_AlignDisabled: WordBool; safecall; - function Get_AutoScroll: WordBool; safecall; - function Get_AutoSize: WordBool; safecall; - function Get_AxBorderStyle: TxActiveFormBorderStyle; safecall; - function Get_Caption: WideString; safecall; - function Get_Color: OLE_COLOR; safecall; - function Get_DoubleBuffered: WordBool; safecall; - function Get_DropTarget: WordBool; safecall; - function Get_Enabled: WordBool; safecall; - function Get_Font: IFontDisp; safecall; - function Get_HelpFile: WideString; safecall; - function Get_KeyPreview: WordBool; safecall; - function Get_PixelsPerInch: Integer; safecall; - function Get_PrintScale: TxPrintScale; safecall; - function Get_Scaled: WordBool; safecall; - function Get_ScreenSnap: WordBool; safecall; - function Get_SnapBuffer: Integer; safecall; - function Get_Visible: WordBool; safecall; - function Get_VisibleDockClientCount: Integer; safecall; - procedure _Set_Font(var Value: IFontDisp); safecall; - procedure Set_AutoScroll(Value: WordBool); safecall; - procedure Set_AutoSize(Value: WordBool); safecall; - procedure Set_AxBorderStyle(Value: TxActiveFormBorderStyle); safecall; - procedure Set_Caption(const Value: WideString); safecall; - procedure Set_Color(Value: OLE_COLOR); safecall; - procedure Set_DoubleBuffered(Value: WordBool); safecall; - procedure Set_DropTarget(Value: WordBool); safecall; - procedure Set_Enabled(Value: WordBool); safecall; - procedure Set_Font(const Value: IFontDisp); safecall; - procedure Set_HelpFile(const Value: WideString); safecall; - procedure Set_KeyPreview(Value: WordBool); safecall; - procedure Set_PixelsPerInch(Value: Integer); safecall; - procedure Set_PrintScale(Value: TxPrintScale); safecall; - procedure Set_Scaled(Value: WordBool); safecall; - procedure Set_ScreenSnap(Value: WordBool); safecall; - procedure Set_SnapBuffer(Value: Integer); safecall; - procedure Set_Visible(Value: WordBool); safecall; - public - { Public declarations } - procedure Initialize; override; - end; - -implementation - -uses ComObj, ComServ; - -{$R *.DFM} - -{ TActiveFormX } - -procedure TActiveFormX.DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); -begin - { Define property pages here. Property pages are defined by calling - DefinePropertyPage with the class id of the page. For example, - DefinePropertyPage(Class_ActiveFormXPage); } -end; - -procedure TActiveFormX.EventSinkChanged(const EventSink: IUnknown); -begin - FEvents := EventSink as IActiveFormXEvents; - inherited EventSinkChanged(EventSink); -end; - -procedure TActiveFormX.Initialize; -begin - inherited Initialize; - OnActivate := ActivateEvent; - OnClick := ClickEvent; - OnCreate := CreateEvent; - OnDblClick := DblClickEvent; - OnDeactivate := DeactivateEvent; - OnDestroy := DestroyEvent; - OnKeyPress := KeyPressEvent; - OnPaint := PaintEvent; -end; - -function TActiveFormX.Get_Active: WordBool; -begin - Result := Active; -end; - -function TActiveFormX.Get_AlignDisabled: WordBool; -begin -{$IFDEF DELPHI6_UP} - Result := AlignDisabled; -{$ENDIF} -end; - -function TActiveFormX.Get_AutoScroll: WordBool; -begin - Result := AutoScroll; -end; - -function TActiveFormX.Get_AutoSize: WordBool; -begin - Result := AutoSize; -end; - -function TActiveFormX.Get_AxBorderStyle: TxActiveFormBorderStyle; -begin - Result := Ord(AxBorderStyle); -end; - -function TActiveFormX.Get_Caption: WideString; -begin - Result := WideString(Caption); -end; - -function TActiveFormX.Get_Color: OLE_COLOR; -begin - Result := OLE_COLOR(Color); -end; - -function TActiveFormX.Get_DoubleBuffered: WordBool; -begin - Result := DoubleBuffered; -end; - -function TActiveFormX.Get_DropTarget: WordBool; -begin - Result := DropTarget; -end; - -function TActiveFormX.Get_Enabled: WordBool; -begin - Result := Enabled; -end; - -function TActiveFormX.Get_Font: IFontDisp; -begin - GetOleFont(Font, Result); -end; - -function TActiveFormX.Get_HelpFile: WideString; -begin - Result := WideString(HelpFile); -end; - -function TActiveFormX.Get_KeyPreview: WordBool; -begin - Result := KeyPreview; -end; - -function TActiveFormX.Get_PixelsPerInch: Integer; -begin - Result := PixelsPerInch; -end; - -function TActiveFormX.Get_PrintScale: TxPrintScale; -begin - Result := Ord(PrintScale); -end; - -function TActiveFormX.Get_Scaled: WordBool; -begin - Result := Scaled; -end; - -function TActiveFormX.Get_ScreenSnap: WordBool; -begin -{$IFDEF DELPHI6_UP} - Result := ScreenSnap; -{$ENDIF} -end; - -function TActiveFormX.Get_SnapBuffer: Integer; -begin -{$IFDEF DELPHI6_UP} - Result := SnapBuffer; -{$ENDIF} -end; - -function TActiveFormX.Get_Visible: WordBool; -begin - Result := Visible; -end; - -function TActiveFormX.Get_VisibleDockClientCount: Integer; -begin - Result := VisibleDockClientCount; -end; - -procedure TActiveFormX._Set_Font(var Value: IFontDisp); -begin - SetOleFont(Font, Value); -end; - -procedure TActiveFormX.ActivateEvent(Sender: TObject); -begin - if FEvents <> nil then - FEvents.OnActivate; -end; - -procedure TActiveFormX.ClickEvent(Sender: TObject); -begin - if FEvents <> nil then - FEvents.OnClick; -end; - -procedure TActiveFormX.CreateEvent(Sender: TObject); -begin - if FEvents <> nil then - FEvents.OnCreate; -end; - -procedure TActiveFormX.DblClickEvent(Sender: TObject); -begin - if FEvents <> nil then - FEvents.OnDblClick; -end; - -procedure TActiveFormX.DeactivateEvent(Sender: TObject); -begin - if FEvents <> nil then - FEvents.OnDeactivate; -end; - -procedure TActiveFormX.DestroyEvent(Sender: TObject); -begin - if FEvents <> nil then - FEvents.OnDestroy; -end; - -procedure TActiveFormX.KeyPressEvent(Sender: TObject; var Key: Char); -var - TempKey: Smallint; -begin - TempKey := Smallint(Key); - if FEvents <> nil then - FEvents.OnKeyPress(TempKey); - Key := Char(TempKey); -end; - -procedure TActiveFormX.PaintEvent(Sender: TObject); -begin - if FEvents <> nil then - FEvents.OnPaint; -end; - -procedure TActiveFormX.Set_AutoScroll(Value: WordBool); -begin - AutoScroll := Value; -end; - -procedure TActiveFormX.Set_AutoSize(Value: WordBool); -begin - AutoSize := Value; -end; - -procedure TActiveFormX.Set_AxBorderStyle(Value: TxActiveFormBorderStyle); -begin - AxBorderStyle := TActiveFormBorderStyle(Value); -end; - -procedure TActiveFormX.Set_Caption(const Value: WideString); -begin - Caption := TCaption(Value); -end; - -procedure TActiveFormX.Set_Color(Value: OLE_COLOR); -begin - Color := TColor(Value); -end; - -procedure TActiveFormX.Set_DoubleBuffered(Value: WordBool); -begin - DoubleBuffered := Value; -end; - -procedure TActiveFormX.Set_DropTarget(Value: WordBool); -begin - DropTarget := Value; -end; - -procedure TActiveFormX.Set_Enabled(Value: WordBool); -begin - Enabled := Value; -end; - -procedure TActiveFormX.Set_Font(const Value: IFontDisp); -begin - SetOleFont(Font, Value); -end; - -procedure TActiveFormX.Set_HelpFile(const Value: WideString); -begin - HelpFile := string(Value); -end; - -procedure TActiveFormX.Set_KeyPreview(Value: WordBool); -begin - KeyPreview := Value; -end; - -procedure TActiveFormX.Set_PixelsPerInch(Value: Integer); -begin - PixelsPerInch := Value; -end; - -procedure TActiveFormX.Set_PrintScale(Value: TxPrintScale); -begin - PrintScale := TPrintScale(Value); -end; - -procedure TActiveFormX.Set_Scaled(Value: WordBool); -begin - Scaled := Value; -end; - -procedure TActiveFormX.Set_ScreenSnap(Value: WordBool); -begin -{$IFDEF DELPHI6_UP} - ScreenSnap := Value; -{$ENDIF} -end; - -procedure TActiveFormX.Set_SnapBuffer(Value: Integer); -begin -{$IFDEF DELPHI6_UP} - SnapBuffer := Value; -{$ENDIF} -end; - -procedure TActiveFormX.Set_Visible(Value: WordBool); -begin - Visible := Value; -end; - -procedure TActiveFormX.Button1Click(Sender: TObject); -begin - EmbeddedWb1.Go(IeAddress1.Text); -end; - -procedure TActiveFormX.ActiveFormCreate(Sender: TObject); -begin - EmbeddedWb1.GoHome; -end; - -initialization - TActiveFormFactory.Create( - ComServer, - TActiveFormControl, - TActiveFormX, - Class_ActiveFormX, - 1, - '', - OLEMISC_SIMPLEFRAME or OLEMISC_ACTSLIKELABEL, - tmApartment); -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormProj1.tlb b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormProj1.tlb deleted file mode 100644 index 9700cd76efc56031c42abebc3c6778cdb5710043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6004 zcmbtYe{56N8NErI*hw4`AV3JAI5bqWg4L}e%~O%)5EF$Fh-osMX-tX}zYrH=dyYd5 zVr!&D6B|rQ)vaPJQ_)1bjP(z;F+dvHP{kzLu@+WZP`61?b-y&Kp@~ThG1xiZd-wX8 znXc8YbbRmq?z!jt?yvXW^~Qmo!Ae!3m})(esm-X;QVG=9CiD9!N*8Rpy6dC>Y*PTu z)d0=NR022)tU|*Ka03_yh9FE%Biee=VGVL!pGLjSRbPpEz*Rq4W&6_n5MsXWYCpsP zT>6K+N=3oZ{Ok2fc@TrH-|!{s=3E@k6$jRMV3o7Bc_V^K^ z%!6)c92M%A!cd&G!N8Dc?`W@3v&~YKAML|eG?~&cOHE33BBPI9)}3Vg2#61s-S!pj zmFn^WZBa`5C|Zi80*cFlL4ZE;fKJrqzT!CCiS|Hy)qQ;2%eL2y{Zjyaus`cey3Ag> ztnGnzkJ_`4H9Hl@Q7q}US*O7L@yUEttD7Iw$7#n0eSH!i92XPU?=mn9*p~nPJ&iW* zEw<1P*GIF0uChJ{y6vO#f2vy*e_rr#pyj(V)W`y zzk7$zA=+=e_V>bvUwHU)Ke@PN-|nwIb&k&_+AF%FV~xLPZQA#9bwmaIKjP7)oo;k& zI6m@h_r!AB)wdaO^IfqOHouFPg4Q8NuLJgjXlK&?@6Fp>nrz#OzE@y7=V;K@ ziTVMT58BEluIc5E!7JBS+ty%Qd1&z2rENN&cE$Rt%TJ?v;~QP0`Q%QkCzIO|&1If? zET+fo4+TEGzSuaFaCGN|Zm)9N*X^{@`H5JJXNLajL&u+Ub&KgUvncfRk-GRVNI{V|n!p6+xgtc}upU1c&pV18@9w#la|Ayy-vLn=$g!D21aw4RLbs8yHB+*6MJ&EMNQfo)RL~Q zf;++@->aGm-SKQbi6}I`T0P#=ok?YKE`J{N`KF#sT3%DstW)bgv%%UG%~?B>*3(73 z2K7R9G+D4x6HzO-K0P|_(x_8Cq2g>5`_w4UCYhjw+jeQdo?YA4iQwwgp52jLCOa6< zZL{)4u1~$@?X^PL7RP7@!{W9QBBvaRrW$Uo zTD>23Ya*Y^>_VKH?^m0LX^-=Kl<2(oz5cYlk`vhXTwA6p^@CYhO@FWIy3n7F#<7>p z8Sn->Ka7u!Y|5l9v0cHu*9P~z4BJ35y$w4!X1KM%*Jo&-OmDZi-+7KaILEcY)g!P! z8Bb2gyz=bu+qNbcxSh?2v^h_6g75ZbGdS1TOpY5ij(u;=TJY4PY(sp5nVw``pS7Cc zXTP;$q|X||dT5(B`0VpLMxIP=8_ye?FF1K($H>NHB9XEdsp7eor%0eLIg*R#IG>Lw zY=Ue&KROMOJ;SkBEz8c# z+GTq-rR>aLjk0HL4s!QQ`K7LBCl;$w_N;i3+cOc1`B1iJAQo#?_2GI|KeZHZWUf`K zstWtCF0IOk+z0#JXZYT4MIJ!T`eLWfcQx%H$G*a;^Sw{rV@`d@$%iGc3RkHr@y9i# zzk=8+!Q+WhTCJ>VOVdG$)`U3ZJsV;aIq@$?w2d z1UV?8Or5GSI#q_VQgrMaV5yGBa8`*V>niM5o?xdPS#BIDwLQ{D#wq zx7*yv9N~mZbQ%mN3SaFWzi^@@I&%zX5IS9+2H}jCa2gF~NMddh4k)fUY%-j!5_6+) zO4oF*;S7t;JmF+ZbmkdOLUiT|hx@m<7V`~fTy&a+GgYF~Y&a>=nJ*mf`=ZVQ!^w)y zLg9eo8rMR@$&1bc;gpVRk#NH3R}h^=Wpr8$XOD0em*L>#IA?H5e6^JE)oM7?qO(Le zrTcJ+;p`QiR^jm3QXG4m;p`WkrDft-YB)2Z(^e*)2Mp)iqO(jmrE9v(a1Myh1Hvg? z(}3X|6rJ`m@w6MxA<+qxiD$Xt92TABWpo}ioLS*KD4f!mI}GPl;jAd5v%+wWN<4f* zD&^iAucJ=9;o#TEiE|Ea{rm1+q8=AmLb>o8aELb@yoH=N@8AOR-#U03IdRd!JIIN5 z9b7`r=iMFnBF>;p@E%3*jz#beM)2N7@ZLo5&Z3b*nV5EP2sv@m!8znt9PoRQ;Qfi< zeTm>5kl_7_cM;xw2qwOZ_&($PWCl0}F!tL(09tr8sc~RGa1^)*&_^5k0@r{hyc;_Kt{2Z3Fog`MQ~A-( z#8ay69{Z6@7dwIwyT{m@#BMui!M~bXzgg@E2&n^Ccx`XN9`$?d z_tsvt@or4j7TkI?r%n3W|J&(3srRDZXL^5e?#=+bYhDBRJ;{44@2OiUEZRy1k#ntv zfdZh{D~mF}HF?I7;j4hR47FeX@JZrs!;DGW0T9~2cDKR3v>lc?M|#KApw1-M Z&oyZ)@B1b_yL@wB^S>9~_nGwA{{zNyi5&m{ diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormProj1_TLB.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormProj1_TLB.pas deleted file mode 100644 index 35c525605b..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ActiveFormProj1_TLB.pas +++ /dev/null @@ -1,335 +0,0 @@ -unit ActiveFormProj1_TLB; - -// ************************************************************************ // -// WARNING -// ------- -// The types declared in this file were generated from data read from a -// Type Library. If this type library is explicitly or indirectly (via -// another type library referring to this type library) re-imported, or the -// 'Refresh' command of the Type Library Editor activated while editing the -// Type Library, the contents of this file will be regenerated and all -// manual modifications will be lost. -// ************************************************************************ // - -// $Rev: 5081 $ -// File generated on 18.04.2009 17:44:15 from Type Library described below. - -// ************************************************************************ // -// Type Lib: C:\Programme\Borland\Delphi6\Lib2\EmbeddedWB\Demos\EmbeddedWB Demos\13 - ActiveX_Form_Demo\ActiveFormProj1.tlb (1) -// LIBID: {01FA00F5-15E7-4429-83C5-D744F84CA23B} -// LCID: 0 -// Helpfile: -// HelpString: ActiveFormProj1 Library -// DepndLst: -// (1) v2.0 stdole, (C:\WINDOWS\system32\stdole2.tlb) -// ************************************************************************ // -{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. -{$IFDEF DELPHI6_UP} -{$WARN SYMBOL_PLATFORM OFF} -{$VARPROPSETTER ON} -{$ENDIF} -{$WRITEABLECONST ON} -interface - -uses Windows, ActiveX, Classes, Graphics, OleCtrls, StdVCL{$IFDEF DELPHI6_UP}, Variants{$ENDIF}; - - -// *********************************************************************// -// GUIDS declared in the TypeLibrary. Following prefixes are used: -// Type Libraries : LIBID_xxxx -// CoClasses : CLASS_xxxx -// DISPInterfaces : DIID_xxxx -// Non-DISP interfaces: IID_xxxx -// *********************************************************************// -const - // TypeLibrary Major and minor versions - ActiveFormProj1MajorVersion = 1; - ActiveFormProj1MinorVersion = 0; - - LIBID_ActiveFormProj1: TGUID = '{01FA00F5-15E7-4429-83C5-D744F84CA23B}'; - - IID_IActiveFormX: TGUID = '{4E211DE2-1F58-44E6-9F79-A95BB0E157E8}'; - DIID_IActiveFormXEvents: TGUID = '{6D907064-434B-4FB7-B0FA-F9DCAA8ACFE2}'; - CLASS_ActiveFormX: TGUID = '{9FDD6750-729B-432A-8B72-7DB6D4E1712C}'; - -// *********************************************************************// -// Declaration of Enumerations defined in Type Library -// *********************************************************************// -// Constants for enum TxActiveFormBorderStyle -type - TxActiveFormBorderStyle = TOleEnum; -const - afbNone = $00000000; - afbSingle = $00000001; - afbSunken = $00000002; - afbRaised = $00000003; - -// Constants for enum TxPrintScale -type - TxPrintScale = TOleEnum; -const - poNone = $00000000; - poProportional = $00000001; - poPrintToFit = $00000002; - -// Constants for enum TxMouseButton -type - TxMouseButton = TOleEnum; -const - mbLeft = $00000000; - mbRight = $00000001; - mbMiddle = $00000002; - -type - -// *********************************************************************// -// Forward declaration of types defined in TypeLibrary -// *********************************************************************// - IActiveFormX = interface; - IActiveFormXDisp = dispinterface; - IActiveFormXEvents = dispinterface; - -// *********************************************************************// -// Declaration of CoClasses defined in Type Library -// (NOTE: Here we map each CoClass to its Default Interface) -// *********************************************************************// - ActiveFormX = IActiveFormX; - - -// *********************************************************************// -// Declaration of structures, unions and aliases. -// *********************************************************************// - PPUserType1 = ^IFontDisp; {*} - - -// *********************************************************************// -// Interface: IActiveFormX -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {4E211DE2-1F58-44E6-9F79-A95BB0E157E8} -// *********************************************************************// - IActiveFormX = interface(IDispatch) - ['{4E211DE2-1F58-44E6-9F79-A95BB0E157E8}'] - function Get_Visible: WordBool; safecall; - procedure Set_Visible(Value: WordBool); safecall; - function Get_AutoScroll: WordBool; safecall; - procedure Set_AutoScroll(Value: WordBool); safecall; - function Get_AutoSize: WordBool; safecall; - procedure Set_AutoSize(Value: WordBool); safecall; - function Get_AxBorderStyle: TxActiveFormBorderStyle; safecall; - procedure Set_AxBorderStyle(Value: TxActiveFormBorderStyle); safecall; - function Get_Caption: WideString; safecall; - procedure Set_Caption(const Value: WideString); safecall; - function Get_Color: OLE_COLOR; safecall; - procedure Set_Color(Value: OLE_COLOR); safecall; - function Get_Font: IFontDisp; safecall; - procedure Set_Font(const Value: IFontDisp); safecall; - procedure _Set_Font(var Value: IFontDisp); safecall; - function Get_KeyPreview: WordBool; safecall; - procedure Set_KeyPreview(Value: WordBool); safecall; - function Get_PixelsPerInch: Integer; safecall; - procedure Set_PixelsPerInch(Value: Integer); safecall; - function Get_PrintScale: TxPrintScale; safecall; - procedure Set_PrintScale(Value: TxPrintScale); safecall; - function Get_Scaled: WordBool; safecall; - procedure Set_Scaled(Value: WordBool); safecall; - function Get_Active: WordBool; safecall; - function Get_DropTarget: WordBool; safecall; - procedure Set_DropTarget(Value: WordBool); safecall; - function Get_HelpFile: WideString; safecall; - procedure Set_HelpFile(const Value: WideString); safecall; - function Get_ScreenSnap: WordBool; safecall; - procedure Set_ScreenSnap(Value: WordBool); safecall; - function Get_SnapBuffer: Integer; safecall; - procedure Set_SnapBuffer(Value: Integer); safecall; - function Get_DoubleBuffered: WordBool; safecall; - procedure Set_DoubleBuffered(Value: WordBool); safecall; - function Get_AlignDisabled: WordBool; safecall; - function Get_VisibleDockClientCount: Integer; safecall; - function Get_Enabled: WordBool; safecall; - procedure Set_Enabled(Value: WordBool); safecall; - property Visible: WordBool read Get_Visible write Set_Visible; - property AutoScroll: WordBool read Get_AutoScroll write Set_AutoScroll; - property AutoSize: WordBool read Get_AutoSize write Set_AutoSize; - property AxBorderStyle: TxActiveFormBorderStyle read Get_AxBorderStyle write Set_AxBorderStyle; - property Caption: WideString read Get_Caption write Set_Caption; - property Color: OLE_COLOR read Get_Color write Set_Color; - property Font: IFontDisp read Get_Font write Set_Font; - property KeyPreview: WordBool read Get_KeyPreview write Set_KeyPreview; - property PixelsPerInch: Integer read Get_PixelsPerInch write Set_PixelsPerInch; - property PrintScale: TxPrintScale read Get_PrintScale write Set_PrintScale; - property Scaled: WordBool read Get_Scaled write Set_Scaled; - property Active: WordBool read Get_Active; - property DropTarget: WordBool read Get_DropTarget write Set_DropTarget; - property HelpFile: WideString read Get_HelpFile write Set_HelpFile; - property ScreenSnap: WordBool read Get_ScreenSnap write Set_ScreenSnap; - property SnapBuffer: Integer read Get_SnapBuffer write Set_SnapBuffer; - property DoubleBuffered: WordBool read Get_DoubleBuffered write Set_DoubleBuffered; - property AlignDisabled: WordBool read Get_AlignDisabled; - property VisibleDockClientCount: Integer read Get_VisibleDockClientCount; - property Enabled: WordBool read Get_Enabled write Set_Enabled; - end; - -// *********************************************************************// -// DispIntf: IActiveFormXDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {4E211DE2-1F58-44E6-9F79-A95BB0E157E8} -// *********************************************************************// - IActiveFormXDisp = dispinterface - ['{4E211DE2-1F58-44E6-9F79-A95BB0E157E8}'] - property Visible: WordBool dispid 201; - property AutoScroll: WordBool dispid 202; - property AutoSize: WordBool dispid 203; - property AxBorderStyle: TxActiveFormBorderStyle dispid 204; - property Caption: WideString dispid -518; - property Color: OLE_COLOR dispid -501; - property Font: IFontDisp dispid -512; - property KeyPreview: WordBool dispid 205; - property PixelsPerInch: Integer dispid 206; - property PrintScale: TxPrintScale dispid 207; - property Scaled: WordBool dispid 208; - property Active: WordBool readonly dispid 209; - property DropTarget: WordBool dispid 210; - property HelpFile: WideString dispid 211; - property ScreenSnap: WordBool dispid 212; - property SnapBuffer: Integer dispid 213; - property DoubleBuffered: WordBool dispid 214; - property AlignDisabled: WordBool readonly dispid 215; - property VisibleDockClientCount: Integer readonly dispid 216; - property Enabled: WordBool dispid -514; - end; - -// *********************************************************************// -// DispIntf: IActiveFormXEvents -// Flags: (4096) Dispatchable -// GUID: {6D907064-434B-4FB7-B0FA-F9DCAA8ACFE2} -// *********************************************************************// - IActiveFormXEvents = dispinterface - ['{6D907064-434B-4FB7-B0FA-F9DCAA8ACFE2}'] - procedure OnActivate; dispid 201; - procedure OnClick; dispid 202; - procedure OnCreate; dispid 203; - procedure OnDblClick; dispid 204; - procedure OnDestroy; dispid 205; - procedure OnDeactivate; dispid 206; - procedure OnKeyPress(var Key: Smallint); dispid 207; - procedure OnPaint; dispid 208; - end; - - -// *********************************************************************// -// OLE Control Proxy class declaration -// Control Name : TActiveFormX -// Help String : ActiveFormX Control -// Default Interface: IActiveFormX -// Def. Intf. DISP? : No -// Event Interface: IActiveFormXEvents -// TypeFlags : (34) CanCreate Control -// *********************************************************************// - TActiveFormXOnKeyPress = procedure(ASender: TObject; var Key: Smallint) of object; - - TActiveFormX = class(TOleControl) - private - FOnActivate: TNotifyEvent; - FOnClick: TNotifyEvent; - FOnCreate: TNotifyEvent; - FOnDblClick: TNotifyEvent; - FOnDestroy: TNotifyEvent; - FOnDeactivate: TNotifyEvent; - FOnKeyPress: TActiveFormXOnKeyPress; - FOnPaint: TNotifyEvent; - FIntf: IActiveFormX; - function GetControlInterface: IActiveFormX; - protected - procedure CreateControl; - procedure InitControlData; override; - public - property ControlInterface: IActiveFormX read GetControlInterface; - property DefaultInterface: IActiveFormX read GetControlInterface; - property Visible: WordBool index 201 read GetWordBoolProp write SetWordBoolProp; - property Active: WordBool index 209 read GetWordBoolProp; - property DropTarget: WordBool index 210 read GetWordBoolProp write SetWordBoolProp; - property HelpFile: WideString index 211 read GetWideStringProp write SetWideStringProp; - property ScreenSnap: WordBool index 212 read GetWordBoolProp write SetWordBoolProp; - property SnapBuffer: Integer index 213 read GetIntegerProp write SetIntegerProp; - property DoubleBuffered: WordBool index 214 read GetWordBoolProp write SetWordBoolProp; - property AlignDisabled: WordBool index 215 read GetWordBoolProp; - property VisibleDockClientCount: Integer index 216 read GetIntegerProp; - property Enabled: WordBool index -514 read GetWordBoolProp write SetWordBoolProp; - published - property Anchors; - property AutoScroll: WordBool index 202 read GetWordBoolProp write SetWordBoolProp stored False; - property AutoSize: WordBool index 203 read GetWordBoolProp write SetWordBoolProp stored False; - property AxBorderStyle: TOleEnum index 204 read GetTOleEnumProp write SetTOleEnumProp stored False; - property Caption: WideString index -518 read GetWideStringProp write SetWideStringProp stored False; - property Color: TColor index -501 read GetTColorProp write SetTColorProp stored False; - property Font: TFont index -512 read GetTFontProp write SetTFontProp stored False; - property KeyPreview: WordBool index 205 read GetWordBoolProp write SetWordBoolProp stored False; - property PixelsPerInch: Integer index 206 read GetIntegerProp write SetIntegerProp stored False; - property PrintScale: TOleEnum index 207 read GetTOleEnumProp write SetTOleEnumProp stored False; - property Scaled: WordBool index 208 read GetWordBoolProp write SetWordBoolProp stored False; - property OnActivate: TNotifyEvent read FOnActivate write FOnActivate; - property OnClick: TNotifyEvent read FOnClick write FOnClick; - property OnCreate: TNotifyEvent read FOnCreate write FOnCreate; - property OnDblClick: TNotifyEvent read FOnDblClick write FOnDblClick; - property OnDestroy: TNotifyEvent read FOnDestroy write FOnDestroy; - property OnDeactivate: TNotifyEvent read FOnDeactivate write FOnDeactivate; - property OnKeyPress: TActiveFormXOnKeyPress read FOnKeyPress write FOnKeyPress; - property OnPaint: TNotifyEvent read FOnPaint write FOnPaint; - end; - -procedure Register; - -resourcestring - dtlServerPage = 'Servers'; - - dtlOcxPage = 'ActiveX'; - -implementation - -uses ComObj; - -procedure TActiveFormX.InitControlData; -const - CEventDispIDs: array [0..7] of DWORD = ( - $000000C9, $000000CA, $000000CB, $000000CC, $000000CD, $000000CE, - $000000CF, $000000D0); - CTFontIDs: array [0..0] of DWORD = ( - $FFFFFE00); - CControlData: TControlData2 = ( - ClassID: '{9FDD6750-729B-432A-8B72-7DB6D4E1712C}'; - EventIID: '{6D907064-434B-4FB7-B0FA-F9DCAA8ACFE2}'; - EventCount: 8; - EventDispIDs: @CEventDispIDs; - LicenseKey: nil (*HR:$80040154*); - Flags: $0000001D; - Version: 401; - FontCount: 1; - FontIDs: @CTFontIDs); -begin - ControlData := @CControlData; - TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnActivate) - Cardinal(Self); -end; - -procedure TActiveFormX.CreateControl; - - procedure DoCreate; - begin - FIntf := IUnknown(OleObject) as IActiveFormX; - end; - -begin - if FIntf = nil then DoCreate; -end; - -function TActiveFormX.GetControlInterface: IActiveFormX; -begin - CreateControl; - Result := FIntf; -end; - -procedure Register; -begin - RegisterComponents(dtlOcxPage, [TActiveFormX]); -end; - -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ReadMe.rtf b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ReadMe.rtf deleted file mode 100644 index 86edccde5e..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/ReadMe.rtf +++ /dev/null @@ -1,172 +0,0 @@ -{\rtf1\adeflang1037\ansi\ansicpg1255\uc1\adeff0\deff0\stshfdbch0\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1033{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f38\froman\fcharset238\fprq2 Times New Roman CE;} -{\f39\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}{\f43\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} -{\f44\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f58\fmodern\fcharset238\fprq1 Courier New CE;} -{\f59\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f61\fmodern\fcharset161\fprq1 Courier New Greek;}{\f62\fmodern\fcharset162\fprq1 Courier New Tur;}{\f63\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);} -{\f64\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f65\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f66\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255; -\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0; -\red128\green128\blue128;\red192\green192\blue192;\red64\green64\blue64;\red44\green87\blue131;}{\stylesheet{\rtlpar \qr \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af0\afs24\alang1037 \ltrch -\fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\* -\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv -\ql \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af0\afs20 \ltrch \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}{\s15\ql \li0\ri0\widctlpar -\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af2\afs20\alang1037 \ltrch -\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 \sbasedon0 \snext15 \styrsid9726358 HTML Preformatted;}}{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\pgptbl {\pgp\ipgp2\itap0\li0\ri0\sb0\sa0\brdrt\brdrs\brdrw15\brsp80\brdrcf18 \brdrl -\brdrs\brdrw15\brsp80\brdrcf18 \brdrb\brdrs\brdrw5\brsp80\brdrcf18 \brdrr\brdrs\brdrw15\brsp80\brdrcf18 }{\pgp\ipgp0\itap0\li0\ri0\sb0\sa0}{\pgp\ipgp1\itap0\li0\ri0\sb0\sa0}}{\*\rsidtbl \rsid917682\rsid1336678\rsid9726358\rsid13248054\rsid14042062} -{\*\generator Microsoft Word 11.0.5604;}{\info{\title Steps: Overview:}{\author master}{\operator master}{\creatim\yr2007\mo1\dy26\hr11\min56}{\revtim\yr2007\mo1\dy26\hr12\min40}{\version1}{\edmins44}{\nofpages2}{\nofwords751}{\nofchars3758} -{\nofcharsws4501}{\vern24689}}\paperw11906\paperh16838\margr206\rtlsect\rtlgutter \widowctrl\ftnbj\aenddoc\noxlattoyen\expshrtn\noultrlspc\dntblnsbdb\nospaceforul\formshade\horzdoc\dgmargin\dghspace180\dgvspace180\dghorigin1800\dgvorigin1440\dghshow1 -\dgvshow1\jexpand\viewkind1\viewscale100\pgbrdrhead\pgbrdrfoot\splytwnine\ftnlytwnine\htmautsp\nolnhtadjtbl\useltbaln\alntblind\lytcalctblwd\lyttblrtgr\lnbrkrule\nobrkwrptbl\snaptogridincell\allowfieldendsel\wrppunct -\asianbrkrule\rsidroot9726358\newtblstyruls\nogrowautofit \fet0\ltrpar \sectd \rtlsect\rtlgutter\linex0\headery708\footery708\colsx708\endnhere\sectlinegrid360\sectdefaultcl\sectrsid917682\sftnbj {\*\pnseclvl1\pnucrm\pnqc\pnstart1\pnindent720\pnhang -{\pntxta .}}{\*\pnseclvl2\pnucltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5 -\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8 -\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\s15\ql \li0\ri0\widctlpar -\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 \rtlch \af2\afs20\alang1037 \ltrch -\f2\fs20\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\rtlch \af2 \ltrch \cf17\insrsid9726358 Steps: Overview: -\par 1. -Create your ActiveX control -\par 2. -Deploy it for the Web -\par 3. -Register your ActiveX control using}{\rtlch \af2 \ltrch \cf17\insrsid9726358 }{\rtlch \af2 \ltrch \cf17\insrsid9726358 the executable 'regsvr32.exe' -\par 4. -Run the created HTML file in your browser -\par -\par Steps: Worked out: -\par 1. -Create your ActiveX control -\par 1. Start Delphi -\par 2. Create an 'Active Form' -\par 1. -Select from menu option 'File' -\par 2. -Select from list 'New' -\par 3. -Select from list 'Other...' -\par 4. -Select tab 'ActiveX' -\par 5. -Click on icon 'Active Form' -\par 3. Put something on this form -\par -\par e.g. -\par 1. Put a }{\rtlch \af2 \ltrch \cf17\insrsid9726358 panel with a button and a TEdit }{\rtlch \af2 \ltrch \cf17\insrsid9726358 on the form}{\rtlch \af2 \ltrch \cf17\insrsid9726358 -\par (panel align:= alTop)}{\rtlch \af2 \ltrch \cf17\insrsid9726358 -\par 2. Put a }{\rtlch \af2 \ltrch \cf17\insrsid9726358 TEmbeddedWB (Align alCilent)}{\rtlch \af2 \ltrch \cf17\insrsid9726358 -\par }{\rtlch \af2 \ltrch \cf17\insrsid9726358 3}{\rtlch \af2 \ltrch \cf17\insrsid9726358 . Double click on this button -\par }{\rtlch \af2 \ltrch \cf17\insrsid9726358 4}{\rtlch \af2 \ltrch \cf17\insrsid9726358 . }{\rtlch \af2 \ltrch \cf17\insrsid9726358 EmbeddedWB1.Go(Edit1.Text);}{\rtlch \af2 \ltrch \cf17\insrsid9726358 -\par -\par 4. Possibly save your project in a directory of your liking -\par (menu 'File'->'Save all', browse to your directory -\par e.g. c:\\temp and press the 'Save' button twice) -\par -\par 1. This will create a couple -\par of files in that directory, -\par the most important is the -\par file with the extension .ocx -\par which contains your just created -\par ActiveX control -\par -\par e.g. -\par -\par ActiveFormProj1.ocx -\par -\par 2. -Deploy it for the Web -\par -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 1. -Select from menu option 'Project' -\par 2. -Select from list 'Web Deploy' -\par 1. -In the text box 'Target dir' type or browse to the directory where your .ocx file is located -\par e.g. -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14042062 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 c:\\temp -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 2. -In the text box 'Target URL' type or browse to the }{\rtlch \af2 \ltrch \cf17\insrsid917682 }{\rtlch \af2 \ltrch \cf17\insrsid9726358 directory where your .ocx file will be deployed -(do not choose this to be the same as your current .ocx directory, or you will get the -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 error '.ocx in use by another process', when -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 you try to save your result) -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 e.g. -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 c:\\anotherdirectory -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 3. -In the text box 'HTML Dir' -\par type or browse to the directory where your .htm file -\par (which will automatically be generated by Delphi) -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14042062 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 should be located -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 e.g. -\par c:\\anotherdirectory -\par 3. -Click button 'OK' -\par 3. If you want to run it from Delphi, you could -\par 1. -Select from menu option 'Run' -\par 2. -Select from list 'Parameters' -\par 3. -Select as 'Host application' your Microsoft Internet Explorer -\par browser -\par e.g. -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 C:\\Program Files\\Internet Explorer\\iexplore.exe -\par -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 4. -Select as 'Parameter' the name of the generated .htm file directory -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 e.g. -\par -\par c:\\anotherdirectory\\ActiveFormProj1.htm -\par -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 5. -Click button 'OK' -\par 6. -Register your ActiveX control using the executable 'regsvr32.exe' on the MSDOS command line type the command -\par regsvr32.exe -\par e.g. -\par regsvr32.exe c:\\temp\\ActiveFormProj1.ocx -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 That should show 'DllRegisterServer in -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 succeeded. -\par e.g. -\par 'DllRegisterServer in ActiveFormProj1.ocx succeeded' -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 Note: -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 This will have created some entries in the Windows registry, -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 so that your .ocx ActiveX can be trusted on this computer. -\par --- -\par Note: -\par }\pard \ltrpar\s15\ql \li0\ri-1054\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx9160\tx9720\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin-1054\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 If you do not register your .ocx file, you will get a message -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 that the ActiveX can not be safely run in your browser (Your -\par current security settings prohibit running ActiveX controls on -\par this page. As a result, the page may not display correctly), -\par and you will not see the form shown (or just as an image with -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14042062 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 a 'x' in it) in your browser. -\par --- -\par Note: -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 For testing purposes of your own Delphi ActiveX programs, you -\par might have to set security settings in your Microsoft Internet -\par Explorer browser (menu 'Tools'->'Internet Options...'->tab -\par 'Security'->button 'Custom level'->select radiobutton 'Prompt' -\par in 'Initialize and Script ActiveX controls not marked as -\par safe'). -\par -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 7. -Run your application (e.g. click on the green '>' or press the key). -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 8. -That will start your browser with that form in it -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid917682 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 9. -Repeat the above steps until your are satisfied with the result -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14042062 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 4. -Run the created HTML file in your browser -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 1. In the directory where you during the 'Web deploy' -\par }{\rtlch \af2 \ltrch \cf17\insrsid9726358 Chose}{\rtlch \af2 \ltrch \cf17\insrsid9726358 to store your .htm file -\par (e.g. in c:\\anotherdirectory) there was also created a -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid14042062 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 .htm file, similar to the following: -\par }\pard \ltrpar\s15\ql \li0\ri0\widctlpar\tx916\tx1832\tx2748\tx3664\tx4580\tx5496\tx6412\tx7328\tx8244\tx9160\tx10076\tx10992\tx11908\tx12824\tx13740\tx14656\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0\pararsid9726358 {\rtlch \af2 \ltrch -\cf17\insrsid9726358 Tested successfully on Microsoft Windows XP Professional running}{\rtlch \af2 \ltrch \cf17\insrsid9726358 }{\rtlch \af2 \ltrch \cf17\insrsid9726358 Delphi}{\rtlch \af2 \ltrch \cf17\insrsid9726358 7.}{\rtlch \af2 \ltrch -\cf17\insrsid9726358 -\par }\pard\plain \rtlpar\qr \li0\ri0\widctlpar\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch \af0\afs24\alang1037 \ltrch \fs24\lang1033\langfe1033\cgrid\langnp1033\langfenp1033 {\ltrch \rtlch \f0\fs24\lang1037\insrsid1336678 -\par }} \ No newline at end of file diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/Target/ActiveFormProj1.htm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/Target/ActiveFormProj1.htm deleted file mode 100644 index 0842cbdc5d..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/Target/ActiveFormProj1.htm +++ /dev/null @@ -1,15 +0,0 @@ - -

Delphi 7 ActiveX Test Page

-You should see your Delphi 7 forms or controls embedded in the form below. -


- - - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveForm.tlb b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveForm.tlb deleted file mode 100644 index 9700cd76efc56031c42abebc3c6778cdb5710043..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6004 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 Z&oyZ)@B1b_yL@wB^S>9~_nGwA{{zNyi5&m{ diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.dpr deleted file mode 100644 index a899cbd17a..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.dpr +++ /dev/null @@ -1,53 +0,0 @@ -{*******************************************************} -{ Active Form Demo } -{ By: } -{ Eran Bodankin (bsalsa) bsalsa@bsalsa.com } -{ Enjoy! } -{ Documentation and updated versions: } -{ http://www.bsalsa.com } -{*******************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -library prjActiveForm; - -uses - ComServ, - ActiveFormProj1_TLB in 'ActiveFormProj1_TLB.pas', - ActiveFormImpl1 in 'ActiveFormImpl1.pas' {ActiveFormX: TActiveForm} {ActiveFormX: CoClass}, - prjActiveFormDemo_TLB in 'prjActiveFormDemo_TLB.pas'; - -{$E ocx} - -exports - DllGetClassObject, - DllCanUnloadNow, - DllRegisterServer, - DllUnregisterServer; - -{$R *.TLB} - -//{$R *.RES} - -begin -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.ridl b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.ridl deleted file mode 100644 index c5138e61a0..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.ridl +++ /dev/null @@ -1,24 +0,0 @@ -// ************************************************************************ // -// WARNING -// ------- -// This file is generated by the Type Library importer or Type Libary Editor. -// Barring syntax errors, the Editor will parse modifications made to the file. -// However, when applying changes via the Editor this file will be regenerated -// and comments or formatting changes will be lost. -// ************************************************************************ // -// File generated on 19.05.2009 06:35:57 (- $Rev: 12980 $, 601660584). - -[ - uuid(FE4BADD5-F458-4A6F-9C99-3B74ECBA3967), - version(1.0), - helpstring("prjActiveFormDemo Library") - -] -library prjActiveFormDemo -{ - - importlib("stdole2.tlb"); - - - -}; \ No newline at end of file diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.tlb b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo.tlb deleted file mode 100644 index 238d9d47c015777a8b0adb5a82bd967db91cedd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1052 zcmeYbb_-!*U}OLRP8Kl55D4T#L?C=*5+p7N75EPY3P64X5QDft3QQxj`O)Nv;d=lr zYJlnksXqbaOCa$dfE>aEu?r;sfSG|o0ZE<#=oc9zKBevQgNQDry)F9sXw diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo_TLB.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo_TLB.pas deleted file mode 100644 index 5c2ada0129..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/13 - ActiveX_Form_Demo/prjActiveFormDemo_TLB.pas +++ /dev/null @@ -1,49 +0,0 @@ -unit prjActiveFormDemo_TLB; - -// ************************************************************************ // -// WARNING -// ------- -// The types declared in this file were generated from data read from a -// Type Library. If this type library is explicitly or indirectly (via -// another type library referring to this type library) re-imported, or the -// 'Refresh' command of the Type Library Editor activated while editing the -// Type Library, the contents of this file will be regenerated and all -// manual modifications will be lost. -// ************************************************************************ // - -// PASTLWTR : $Revision: 1.88.1.0.1.0 $ -// File generated on 19.05.2009 06:22:38 from Type Library described below. - -// ************************************************************************ // -// Type Lib: C:\Users\smot\Documents\Delphi\Components\EmbeddedWB\Demos\EmbeddedWB Demos\13 - ActiveX_Form_Demo\prjActiveFormDemo.tlb (1) -// IID\LCID: {FE4BADD5-F458-4A6F-9C99-3B74ECBA3967}\0 -// Helpfile: -// DepndLst: -// (1) v2.0 stdole, (C:\Windows\system32\stdole2.tlb) -// (2) v4.0 StdVCL, (C:\Windows\system32\stdvcl40.dll) -// ************************************************************************ // -{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. -interface - -uses Windows, ActiveX, Classes, Graphics, OleServer, OleCtrls, StdVCL; - -// *********************************************************************// -// GUIDS declared in the TypeLibrary. Following prefixes are used: -// Type Libraries : LIBID_xxxx -// CoClasses : CLASS_xxxx -// DISPInterfaces : DIID_xxxx -// Non-DISP interfaces: IID_xxxx -// *********************************************************************// -const - // TypeLibrary Major and minor versions - prjActiveFormDemoMajorVersion = 1; - prjActiveFormDemoMinorVersion = 0; - - LIBID_prjActiveFormDemo: TGUID = '{FE4BADD5-F458-4A6F-9C99-3B74ECBA3967}'; - - -implementation - -uses ComObj; - -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/prjExecScriptExDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/prjExecScriptExDemo.dpr deleted file mode 100644 index e675031c57..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/prjExecScriptExDemo.dpr +++ /dev/null @@ -1,47 +0,0 @@ -//************************************************************* -// EmbeddedWB - Tabs Demo * -// * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjExecScriptExDemo; - -uses - Forms, - uMain in 'uMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/uMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/uMain.dfm deleted file mode 100644 index 6f03ed7e5a..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/uMain.dfm +++ /dev/null @@ -1,146 +0,0 @@ -object Form1: TForm1 - Left = 236 - Top = 168 - BorderStyle = bsDialog - Caption = 'EmbeddedWB - ExecScriptEx Demo' - ClientHeight = 448 - ClientWidth = 653 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 653 - Height = 41 - Align = alTop - TabOrder = 0 - object Label1: TLabel - Left = 8 - Top = 12 - Width = 8 - Height = 13 - Caption = 'x:' - end - object Button1: TButton - Left = 99 - Top = 8 - Width = 121 - Height = 24 - Caption = 'Execute Script' - TabOrder = 0 - OnClick = Button1Click - end - object edPara: TEdit - Left = 24 - Top = 8 - Width = 65 - Height = 21 - TabOrder = 1 - Text = '5' - end - end - object Panel2: TPanel - Left = 0 - Top = 41 - Width = 313 - Height = 407 - Align = alLeft - TabOrder = 1 - object Memo1: TMemo - Left = 1 - Top = 23 - Width = 311 - Height = 383 - Align = alClient - BorderStyle = bsNone - Lines.Strings = ( - ' ' - ' ' - 'Test Script ' - ' ' - ' ' - ' TEST Script: eval(x * x) ' - '') - ReadOnly = True - TabOrder = 0 - end - object Panel4: TPanel - Left = 1 - Top = 1 - Width = 311 - Height = 22 - Align = alTop - Caption = 'Script' - TabOrder = 1 - end - end - object Panel3: TPanel - Left = 313 - Top = 41 - Width = 340 - Height = 407 - Align = alClient - TabOrder = 2 - object EmbeddedWB1: TEmbeddedWB - Left = 1 - Top = 23 - Width = 338 - Height = 383 - Align = alClient - TabOrder = 0 - Silent = False - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [DontUse3DBorders, DontUseScrollBars, ForceFlatScrollBars, EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - HTMLCode.Strings = ( - ' ' - ' ' - 'Test Script ' - ' ' - ' ' - ' TEST Script: eval(x * x) ' - '') - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C0000007D430000112A00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel5: TPanel - Left = 1 - Top = 1 - Width = 338 - Height = 22 - Align = alTop - Caption = 'EmbeddedWB' - TabOrder = 1 - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/uMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/uMain.pas deleted file mode 100644 index dbf83c74dc..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/14 - ExecScriptEx_Demo/uMain.pas +++ /dev/null @@ -1,85 +0,0 @@ -//*************************************************************** -// EmbeddedWB ExecScriptEx Demo * -// * -// Freeware Demo * -// by * -// Thomas Stutz (smot) -(smot777@yahoo.com) * -// * -// * -//*************************************************************** -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit uMain; - -{$I EWB_jedi.inc} - -interface - -uses - Windows, StdCtrls, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB, Dialogs, Forms, SysUtils, - Classes, ExtCtrls, Controls; - -type - TForm1 = class(TForm) - Panel1: TPanel; - Button1: TButton; - edPara: TEdit; - Label1: TLabel; - Panel2: TPanel; - Memo1: TMemo; - Panel3: TPanel; - EmbeddedWB1: TEmbeddedWB; - Panel4: TPanel; - Panel5: TPanel; - procedure Button1Click(Sender: TObject); - procedure FormCreate(Sender: TObject); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.Button1Click(Sender: TObject); -var - vResult: OleVariant; - Para1: string; -begin - Para1 := edPara.Text; - vResult := EmbeddedWB1.ExecScriptEx('evaluate', [Para1]); - ShowMessage('Result from the Script: ' + IntToStr(vResult)); -end; - -procedure TForm1.FormCreate(Sender: TObject); -begin - EmbeddedWB1.HTMLCode.Assign(Memo1.Lines); -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/prjHTMLListenerDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/prjHTMLListenerDemo.dpr deleted file mode 100644 index b904d7defd..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/prjHTMLListenerDemo.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program prjHTMLListenerDemo; - -uses - Forms, - uMain in 'uMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/uMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/uMain.dfm deleted file mode 100644 index 245fe2db93..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/uMain.dfm +++ /dev/null @@ -1,103 +0,0 @@ -object Form1: TForm1 - Left = 245 - Top = 214 - Width = 747 - Height = 584 - Caption = 'TEmbeddedWB - HTMLListener Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnCreate = FormCreate - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 65 - Width = 739 - Height = 485 - Align = alClient - TabOrder = 0 - OnBeforeNavigate2 = EmbeddedWB1BeforeNavigate2 - OnDocumentComplete = EmbeddedWB1DocumentComplete - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C0000003E4B00009B3400000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 739 - Height = 65 - Align = alTop - TabOrder = 1 - DesignSize = ( - 739 - 65) - object lblClickedOnElement: TLabel - Left = 14 - Top = 8 - Width = 97 - Height = 13 - Caption = '[Clicked on Element]' - end - object lblElementUndertheMouse: TLabel - Left = 14 - Top = 32 - Width = 127 - Height = 13 - Caption = '[Element under the Mouse]' - end - object btnEnableDisable: TButton - Left = 603 - Top = 16 - Width = 115 - Height = 25 - Anchors = [akTop, akRight] - Caption = 'Disable Events' - TabOrder = 0 - OnClick = btnEnableDisableClick - end - end - object HtmlListener1: THtmlListener - Handlers = < - item - EventID = eiOnClick - OnHandle = HtmlListener1HandlersOnClickHandle - end - item - EventID = eiOnSelect - end - item - EventID = eiOnMouseMove - OnHandle = HtmlListener1HandlersOnMouseMoveHandle - end - item - EventID = eiUnknown - end> - SinkKind = skDocument - Left = 528 - Top = 12 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/uMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/uMain.pas deleted file mode 100644 index 4a80201089..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/15 - THTMLListener_Demo/uMain.pas +++ /dev/null @@ -1,163 +0,0 @@ -unit uMain; - -interface - -uses - Windows, Messages, SysUtils, Classes, Controls, Forms, - Dialogs, EwbBehaviorsComp, EwbEventsComp, EwbEvents, OleCtrls, SHDocVw_EWB, MSHTML_EWB, EwbCore, - EmbeddedWB, StdCtrls, ComObj, ActiveX, ExtCtrls; - - - -type - TForm1 = class(TForm) - EmbeddedWB1: TEmbeddedWB; - Panel1: TPanel; - btnEnableDisable: TButton; - lblClickedOnElement: TLabel; - lblElementUndertheMouse: TLabel; - HtmlListener1: THtmlListener; - procedure HtmlListener1HandlersOnClickHandle(Sender: TObject; - Event: IHTMLEventObj); - procedure FormCreate(Sender: TObject); - procedure HtmlListener1HandlersOnMouseMoveHandle(Sender: TObject; - Event: IHTMLEventObj); - procedure EmbeddedWB1DocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); - procedure btnEnableDisableClick(Sender: TObject); - procedure FormDestroy(Sender: TObject); - procedure EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); - private - { Private declarations } - HubLinksList: TInterfaceList; - FEventsEnabled: Boolean; - HubLink: IHubLink; - procedure DisconnectHtmlListeners; - procedure ConnectHtmlListeners; - procedure ConnectHtmlListener(ASender: TObject; Doc: IHTMLDocument2); - public - { Public declarations } - end; - - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.FormCreate(Sender: TObject); -begin - FEventsEnabled := True; - HubLinksList := TInterfaceList.Create; - EmbeddedWB1.Navigate('www.google.com'); -end; - -procedure TForm1.HtmlListener1HandlersOnClickHandle(Sender: TObject; - Event: IHTMLEventObj); -begin - lblClickedOnElement.Caption := Format('Clicked on Element with Tag: [%s]', [Event.srcElement.tagName]) -end; - -procedure TForm1.HtmlListener1HandlersOnMouseMoveHandle(Sender: TObject; - Event: IHTMLEventObj); -begin - lblElementUndertheMouse.Caption := Format('Element under the Mouse [%s]', [Event.srcElement.tagName]) -end; - -procedure TForm1.DisconnectHtmlListeners; -var - i: Integer; -begin - for i := HubLinksList.Count - 1 downto 0 do - begin - (HubLinksList[i] as IHubLink).Disconnect; - HubLinksList.Remove(HubLinksList[i]); - end; -end; - -procedure TForm1.ConnectHtmlListener(ASender: TObject; Doc: IHTMLDocument2); -var - CPC: IConnectionPointContainer; -begin - if Assigned(Doc) then - begin - Doc.QueryInterface(IConnectionPointContainer, CPC); - if Assigned(CPC) then - begin - HubLink := HtmlListener1.Connect2(CPC); - HubLinksList.Add(HubLink); - end; - end; -end; - -procedure TForm1.ConnectHtmlListeners; -var - i: Integer; - WB: IWebbrowser2; - HTMLDoc: IHTMLDocument2; -begin - for i := 0 to EmbeddedWB1.FrameCount - 1 do - begin - WB := EmbeddedWB1.GetFrame(i); - if Assigned(WB) then - begin - if Succeeded(WB.Document.QueryInterface(IHTMLDocument2, HTMLDoc)) then - ConnectHtmlListener(nil, HTMLDoc); - end; - end; -end; - -procedure TForm1.EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - with ASender as TEmbeddedWB do - if pDisp = DefaultInterface then - begin - DisconnectHtmlListeners; - end; -end; - -procedure TForm1.EmbeddedWB1DocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); -var - WB: IWebbrowser; - HTMLDoc: IHTMLDocument2; -begin - if FEventsEnabled then - begin - WB := (pDisp as IWebBrowser); - if Assigned(WB) then - if Succeeded(WB.Document.QueryInterface(IHTMLDocument2, HTMLDoc)) then - ConnectHtmlListener(ASender, HTMLDoc); - end; -end; - -procedure TForm1.btnEnableDisableClick(Sender: TObject); -begin - if FEventsEnabled then - begin - DisconnectHtmlListeners; - btnEnableDisable.Caption := 'Enable Events'; - FEventsEnabled := False; - end else - begin - ConnectHtmlListeners; - btnEnableDisable.Caption := 'Disable Events'; - FEventsEnabled := True; - end; -end; - -procedure TForm1.FormDestroy(Sender: TObject); -begin - DisconnectHtmlListeners; - HubLinksList.Free; -end; - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit1.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit1.dfm deleted file mode 100644 index c4abca85d9..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit1.dfm +++ /dev/null @@ -1,255 +0,0 @@ -object Form1: TForm1 - Left = 303 - Top = 383 - Width = 906 - Height = 464 - Caption = 'TEmbeddedWB - EwbControl Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object Label3: TLabel - Left = 168 - Top = 16 - Width = 71 - Height = 13 - Caption = '[active Control]' - end - object EmbeddedWB1: TEmbeddedWB - Left = 160 - Top = 56 - Width = 281 - Height = 297 - TabOrder = 0 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - HTMLCode.Strings = ( - 'http://bsalsa.com/test/FlashTest.htm') - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C000000F7260000B21E00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object EmbeddedWB2: TEmbeddedWB - Left = 448 - Top = 56 - Width = 265 - Height = 297 - TabOrder = 1 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - HTMLCode.Strings = ( - 'http://bsalsa.com/test/FlashTest.htm') - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C000000021F0000810F00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object ListBox1: TListBox - Left = 745 - Top = 0 - Width = 153 - Height = 430 - Align = alRight - ItemHeight = 13 - TabOrder = 2 - end - object Button2: TButton - Left = 581 - Top = 13 - Width = 131 - Height = 28 - Caption = 'Show Form2' - TabOrder = 3 - OnClick = Button2Click - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 153 - Height = 430 - Align = alLeft - TabOrder = 4 - object Image1: TImage - Left = 16 - Top = 8 - Width = 28 - Height = 28 - AutoSize = True - Picture.Data = { - 07544269746D617066090000424D660900000000000036000000280000001C00 - 00001C0000000100180000000000300900000000000000000000000000000000 - 0000FF00FF99A8AC99A8AC99A8AC99A8AC99A8AC99A8AC99A8AC99A8AC99A8AC - 99A8AC99A8AC99A8AC99A8AC99A8AC99A8AC99A8AC99A8AC99A8AC99A8AC99A8 - AC99A8AC99A8AC99A8AC99A8AC99A8AC99A8AC99A8ACFFFFFFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 - FFFF00FFFF00FF99A8ACFFFFFFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF99A8ACFFFF - FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFA4 - A0A0A4A0A0A4A0A0A4A0A0A4A0A0A4A0A0A4A0A0A4A0A099A8AC99A8ACA4A0A0 - FF00FFFF00FFC0DCC0FF00FFFF00FF99A8ACFFFFFFFF00FFFF00FFFF00FFFF00 - FFFF00FFFF00FFFF00FFFF00FFA4A0A099A8AC80806080806080806080806080 - 6060406040A4A0A0C0DCC099A8AC806060FF00FFFF00FFFF00FFC0DCC0FF00FF - FF00FF99A8ACFFFFFFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFC0A0 - A0C0A080F0CAA6F0CAA6F0CAA6F0CAA6F0CAA6C0C080808040C0A0A0FF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF99A8ACFFFFFFFF00FF - FF00FFFF00FFFF00FFFF00FFFF00FFF0CAA6F0CAA6F0CAA6F0CAA6F0CAA6C0C0 - 80C0A060C08060C0A0A0A4A0A0FF00FFFF00FFC0A0A0A4A0A0A4A0A0A4A0A0C0 - A0A0C0A0A0C0DCC0FF00FF99A8ACFFFFFFFF00FFFF00FFFF00FFFF00FFFF00FF - C0C080F0CAA6F0CAA6C0A060C0A060C08040C08040806020808060F0FBFFFF00 - FFFF00FFFF00FFFF00FFFF00FFA4A0A0A4A0A0A4A0A0D8E9ECF0FBFFFF00FF99 - A8ACFFFFFFFF00FFFF00FFFF00FFFF00FFC0C060F0CAA6C0A060C08040C08040 - C06020C06020C06020804020806040C0DCC0FF00FFC0DCC0FF00FFF0FBFFF0FB - FFA4A0A0C0C0A0A4A0A0D8E9ECF0FBFFFF00FF99A8ACFFFFFFFF00FFFF00FFFF - 00FFC0C0A0C0C040C0A060C08040C06040C06020C06020C06020C06020804020 - 804040C0A0A0FF00FFC0DCC0FF00FFA4A0A0A4A0A0C0A0A0C0DCC0D8E9ECC0A0 - A0F0FBFFFF00FF99A8ACFFFFFFFF00FFFF00FFFF00FF40C040C0A040C08040C0 - 6020C06020C06020C06020C06020C06020804020804020D8E9ECC0DCC0C0DCC0 - C0DCC0C0C0A0C0A080C0DCC0D8E9ECD8E9ECD8E9ECC0DCC0FF00FF99A8ACFFFF - FFFF00FFFF00FFC0C08000E02040C020C08020C06020C06020C06020C06020C0 - 6020C06020804020806040F0FBFFF0FBFFC0DCC0C0DCC0F0FBFFF0FBFFC0DCC0 - C0DCC0C0DCC0C0DCC0C0DCC0FF00FF99A8ACFFFFFFFF00FFFF00FF80C06000E0 - 2000C020C08020C06020C06020C06020C06040C08040C06040806020806040F0 - FBFFFFFFFFA4A0A0F0FBFFF0FBFFF0FBFFF0FBFFD8E9ECD8E9ECF0FBFFC0DCC0 - FF00FF99A8ACFFFFFFFF00FFFF00FF40C04000C02040C020808020C06020C080 - 40C08040C08040C08040C08040C08040806040C0A0A080A080A4A0A0F0FBFFF0 - FBFFF0FBFFF0FBFFC0DCC0808060C0DCC0FF00FFFF00FF99A8ACFFFFFFFF00FF - FF00FF40C02000C02000A02080A040C08040C08040C0A060C0A060C0A060C0A0 - 60C0A060C0A060C0804000600080A0A0FFFFFFC0DCC0F0FBFFD8E9ECF0FBFFC0 - 6020F0CAA6FF00FFFF00FF99A8ACFFFFFFFF00FFFF00FF40C02040A02080A020 - C08040C08040C0A060C0C080C0C080C0C080C0C080C0C080F0CAA6C0C06000A0 - 2080A080FFFFFF408060406020D8E9ECF0FBFFC08020F0CAA6FF00FFFF00FF99 - A8ACFFFFFFFF00FFFF00FF40C02080A020C08040C0A040C0C080F0CAA6F0CAA6 - F0CAA6F0CAA6C0C080F0CAA6C0C080C0C08040C06040A06080C06040A0400080 - 20408040C08040C08020C0DCC0FF00FFFF00FF99A8ACFFFFFFFF00FFFF00FF40 - A040808020C0A040C0A080F0CAA6F0CAA6F0CAA6F0CAA6C0DCC0C0DCC0C0DCC0 - C0DCC0C0DCC0C0DCC080E0A080E08080E08040C040808040C08020C08040F0FB - FFFF00FFFF00FF99A8ACFFFFFFFF00FFFF00FFC0A080C08040C0A060F0CAA6F0 - CAA6F0CAA6F0CAA6F0CAA6F0FBFFF0FBFFF0FBFFF0FBFFF0FBFFC0DCC0C0DCC0 - C0DCC0C0DCC0C0C0A040C04040A020C0A060FF00FFFF00FFFF00FF99A8ACFFFF - FFFF00FFFF00FFF0CAA6C0A040C0A080F0CAA6F0FBFFF0CAA6F0CAA6C0DCC0F0 - FBFFF0FBFFF0FBFFF0FBFFF0FBFFF0FBFFF0FBFFF0FBFFF0FBFFC0DCC080C060 - 80A040C0C0A0FF00FFFF00FFFF00FF99A8ACFFFFFFFF00FFFF00FFFF00FFC0A0 - 60C0C080F0CAA6F0FBFFF0FBFFF0FBFFF0CAA6F0FBFFF0FBFFF0FBFFF0FBFFF0 - FBFFF0FBFFF0FBFFF0FBFFF0FBFFF0FBFF80C08080C040FF00FFFF00FFFF00FF - FF00FF99A8ACFFFFFFFF00FFFF00FFFF00FFC0DCC0C0A060F0CAA6FFFFFFFFFF - FFFFFFFFFFFFFFF0FBFFF0FBFFF0FBFFF0FBFFF0FBFFF0FBFFF0FBFFF0FBFFF0 - FBFFC0DCC080C060C0DCC0FF00FFFF00FFFF00FFFF00FF99A8ACFFFFFFFF00FF - FF00FFFF00FFFF00FFF0CAA6C0C080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFF0FBFFF0FBFFFFFFFFFFFFFFFFFFFFFFFFFFF0FBFFC0C080C0DCC0FF00FFFF - 00FFFF00FFFF00FFFF00FF99A8ACFFFFFFFF00FFFF00FFFF00FFFF00FFFF00FF - F0CAA6C0C080FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFC0DCC0C0C0A0FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF99 - A8ACFFFFFFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFF0CAA6F0CAA6F0CAA6 - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0FBFFC0DCC0C0DCC0C0DCC0FF00 - FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF99A8ACFFFFFFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFF0CAA6F0CAA6F0CAA6F0CAA6F0CAA6 - F0CAA6FF00FFFF00FFC0DCC0FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 - FFFF00FFFF00FF99A8ACFFFFFFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF99A8ACFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF} - Transparent = True - end - object Label1: TLabel - Left = 16 - Top = 64 - Width = 101 - Height = 13 - Caption = '+ MouseWheelFix' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object Label2: TLabel - Left = 16 - Top = 139 - Width = 86 - Height = 13 - Caption = '+ FocusControl' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object chkFocusControl: TCheckBox - Left = 24 - Top = 158 - Width = 97 - Height = 17 - Caption = 'Active' - TabOrder = 0 - OnClick = chkFocusControlClick - end - object ChkMouseWheelFix: TCheckBox - Left = 24 - Top = 88 - Width = 105 - Height = 17 - Caption = 'Active' - TabOrder = 1 - OnClick = ChkMouseWheelFixClick - end - object chkActiveFormOnly: TCheckBox - Left = 24 - Top = 109 - Width = 109 - Height = 17 - Caption = 'ActiveFormOnly' - TabOrder = 2 - OnClick = chkActiveFormOnlyClick - end - end - object EwbControl1: TEwbControl - OnMouseWheel = EwbControl1MouseWheel - InternetFeatures = [ObjectCaching, Behaviors, DisableMkProtocol, GetUrlDomFilePathUnencoded, DisableLegacyCompression, XmlHttp] - Left = 16 - Top = 8 - end - object Timer1: TTimer - OnTimer = Timer1Timer - Left = 680 - Top = 384 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit1.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit1.pas deleted file mode 100644 index a8c216229d..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit1.pas +++ /dev/null @@ -1,100 +0,0 @@ -unit Unit1; - -interface - -uses - Windows, Messages, SysUtils, Classes, Controls, Forms, - Dialogs, StdCtrls, EwbControlComponent, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB, - ExtCtrls, Graphics; - -type - TForm1 = class(TForm) - EmbeddedWB1: TEmbeddedWB; - EmbeddedWB2: TEmbeddedWB; - EwbControl1: TEwbControl; - ListBox1: TListBox; - Timer1: TTimer; - Button2: TButton; - Panel1: TPanel; - chkFocusControl: TCheckBox; - ChkMouseWheelFix: TCheckBox; - chkActiveFormOnly: TCheckBox; - Image1: TImage; - Label1: TLabel; - Label2: TLabel; - Label3: TLabel; - procedure ChkMouseWheelFixClick(Sender: TObject); - procedure chkFocusControlClick(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure EwbControl1MouseWheel(p: TPoint; hwndFromPoint: HWND; - lp: Integer; var Handled: Boolean); - procedure Button2Click(Sender: TObject); - procedure chkActiveFormOnlyClick(Sender: TObject); - procedure Timer1Timer(Sender: TObject); - private - { Private declarations } - - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -uses - EwbCoreTools, Unit2; - -procedure TForm1.ChkMouseWheelFixClick(Sender: TObject); -begin - EwbControl1.MouseWheelFix.Active := ChkMouseWheelFix.Checked; -end; - -procedure TForm1.chkFocusControlClick(Sender: TObject); -begin - EwbControl1.FocusControl.Active := ChkFocusControl.Checked; -end; - -procedure TForm1.chkActiveFormOnlyClick(Sender: TObject); -begin - EwbControl1.MouseWheelFix.ActiveFormOnly := chkActiveFormOnly.Checked; -end; - -procedure TForm1.FormCreate(Sender: TObject); -var - i: ShortInt; -begin - for i := 0 to 50 do Listbox1.Items.Add(Inttostr(i)); - ChkMouseWheelFix.Checked := EwbControl1.MouseWheelFix.Active; - ChkFocusControl.Checked := EwbControl1.FocusControl.Active; -end; - -procedure TForm1.EwbControl1MouseWheel(p: TPoint; hwndFromPoint: HWND; - lp: Integer; var Handled: Boolean); -begin - if GetWinClass(hwndFromPoint) = 'TListBox' then - begin - Windows.SetFocus(hwndFromPoint); - Handled := True; - end; -end; - -procedure TForm1.Timer1Timer(Sender: TObject); -begin - try - Label3.caption := Screen.ActiveControl.Name; - except - end; -end; - -procedure TForm1.Button2Click(Sender: TObject); -begin - Form2.Show; -end; - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit2.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit2.dfm deleted file mode 100644 index f8dad8a33c..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit2.dfm +++ /dev/null @@ -1,63 +0,0 @@ -object Form2: TForm2 - Left = 304 - Top = 235 - Width = 435 - Height = 363 - Caption = 'Form2' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 16 - Top = 24 - Width = 281 - Height = 233 - TabOrder = 0 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - HTMLCode.Strings = ( - 'http://bsalsa.com/test/FlashTest.htm') - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C000000F7260000B21E00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Memo1: TMemo - Left = 312 - Top = 24 - Width = 97 - Height = 233 - Lines.Strings = ( - 'Memo1') - TabOrder = 1 - end - object Button1: TButton - Left = 176 - Top = 288 - Width = 75 - Height = 25 - Caption = 'close' - TabOrder = 2 - OnClick = Button1Click - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit2.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit2.pas deleted file mode 100644 index da4c2b8db5..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/Unit2.pas +++ /dev/null @@ -1,33 +0,0 @@ -unit Unit2; - -interface - -uses - Windows, Messages, SysUtils, Classes, Controls, Forms, - Dialogs, StdCtrls, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB; - -type - TForm2 = class(TForm) - EmbeddedWB1: TEmbeddedWB; - Memo1: TMemo; - Button1: TButton; - procedure Button1Click(Sender: TObject); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form2: TForm2; - -implementation - -{$R *.dfm} - -procedure TForm2.Button1Click(Sender: TObject); -begin - Close; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/prjEWBControlDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/prjEWBControlDemo.dpr deleted file mode 100644 index e89029d754..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/16 - TEWBControl_Demo/prjEWBControlDemo.dpr +++ /dev/null @@ -1,15 +0,0 @@ -program prjEWBControlDemo; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form1}, - Unit2 in 'Unit2.pas' {Form2}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.CreateForm(TForm2, Form2); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/Filters.ini b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/Filters.ini deleted file mode 100644 index 8776d63d7c..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/Filters.ini +++ /dev/null @@ -1,85 +0,0 @@ -[items] -OnAllowFocusChange=0 -OnAuthenticate=0 -OnBeforeNavigate2=0 -OnBusyWait=0 -OnClientToHostWindow=0 -OnCloseQuery=0 -OnCommandExec=0 -OnCommandStateChange=0 -OnDocumentComplete=0 -OnDocWindowActivate=0 -OnDownloadBegin=0 -OnDownloadComplete=0 -OnDragDrop=0 -OnDragEnter=0 -OnDragLeave=0 -OnDragOver=0 -OnDragOver2=0 -OnDropEvent=0 -OnEnableModeless=0 -OnEndDrag=0 -OnEnter=0 -OnEvaluateNewWindow=0 -OnExit=0 -OnFileDownload=0 -OnFilterDataObject=0 -OnFilterPopupMenu=0 -OnFrameWindowActivate=0 -OnGetDropTarget=0 -OnGetExternal=0 -OnGetHostInfo=0 -OnGetIDsOfNames=0 -OnGetTypeInfo=0 -OnGetTypeInfoCount=0 -OnHideUI=0 -OnInvoke=0 -OnKeyDown=0 -OnKeyUp=0 -OnMaskedCtrlChar=0 -OnMessage=0 -OnMouseDown=0 -OnMouseUp=0 -OnMove=0 -OnMoveBy=0 -OnNavigateComplete2=0 -OnNavigateError=0 -OnNewWindow2=0 -OnNewWindow3=0 -OnPopulateNSTable=0 -OnPrintTemplateInstantiation=0 -OnPrintTemplateTeardown=0 -OnPrivacyImpactedStateChange=0 -OnProgressChange=0 -OnQueryService=0 -OnQuit=0 -OnRefresh=0 -OnResize=0 -OnResizeBorder=0 -OnResizeBy=0 -OnScriptError=0 -OnSetPhishingFilterStatus=0 -OnSetSecureLockIcon=0 -OnShowContextMenu=0 -OnShowDialog=0 -OnShowHelpRequest=0 -OnShowMessage=0 -OnShowUI=0 -OnStartDrag=0 -OnStatusTextChange=0 -OnTitleChange=0 -OnTranslateAccelerator=0 -OnTranslateUrl=0 -OnUnload=0 -OnUpdatePageStatus=0 -OnUpdateUI=0 -OnVisible=0 -OnWindowClosing=0 -OnWindowSetHeight=0 -OnWindowSetLeft=0 -OnWindowSetResizable=0 -OnWindowSetTop=0 -OnWindowSetWidth=0 -OnWindowStateChanged=0 -OnZoomPercentChange=0 -OnClick=1 diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/prjEventsTestDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/prjEventsTestDemo.dpr deleted file mode 100644 index 62320e68da..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/prjEventsTestDemo.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program prjEventsTestDemo; - -uses - Forms, - umain in 'umain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/umain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/umain.dfm deleted file mode 100644 index 8c2590892d..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/umain.dfm +++ /dev/null @@ -1,711 +0,0 @@ -object Form1: TForm1 - Left = 183 - Top = 127 - Width = 1036 - Height = 780 - Caption = 'Events Test Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object Splitter1: TSplitter - Left = 705 - Top = 80 - Width = 3 - Height = 645 - Cursor = crHSplit - Align = alRight - end - object Panel1: TPanel - Left = 0 - Top = 38 - Width = 1020 - Height = 42 - Align = alTop - TabOrder = 0 - object lblFocus: TLabel - Left = 664 - Top = 13 - Width = 66 - Height = 13 - Caption = 'ActiveControl:' - end - object IEAddress1: TIEAddress - Left = 8 - Top = 11 - Width = 561 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - EmbeddedWB = EWB - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 0 - Text = 'www.google.com' - TextOnLoad = tlUserDefine - TextOnShow = 'www.google.com' - end - object btnGo: TButton - Left = 588 - Top = 9 - Width = 57 - Height = 23 - Caption = 'GO!' - TabOrder = 1 - OnClick = btnGoClick - end - end - object PageControl1: TPageControl - Left = 708 - Top = 80 - Width = 312 - Height = 645 - ActivePage = TabSheet2 - Align = alRight - TabOrder = 1 - object TabSheet1: TTabSheet - Caption = 'Events' - object ListBox1: TListBox - Left = 0 - Top = 46 - Width = 304 - Height = 571 - Align = alClient - ItemHeight = 13 - TabOrder = 0 - end - object Panel3: TPanel - Left = 0 - Top = 0 - Width = 304 - Height = 46 - Align = alTop - BevelOuter = bvNone - TabOrder = 1 - object SpeedButton1: TSpeedButton - Left = 8 - Top = 16 - Width = 113 - Height = 22 - Caption = 'Clear Eventlist' - OnClick = SpeedButton1Click - end - object Button4: TButton - Left = 136 - Top = 16 - Width = 161 - Height = 22 - Caption = 'Copy Events to Clipboard' - TabOrder = 0 - OnClick = Button4Click - end - end - end - object TabSheet2: TTabSheet - Caption = 'Filter' - ImageIndex = 1 - object CheckListBox1: TCheckListBox - Left = 0 - Top = 65 - Width = 304 - Height = 552 - Align = alClient - ItemHeight = 13 - Items.Strings = ( - 'OnAllowFocusChange' - 'OnAuthenticate' - 'OnBeforeNavigate2' - 'OnBusyWait' - 'OnClick' - 'OnClientToHostWindow' - 'OnCloseQuery' - 'OnCommandExec' - 'OnCommandStateChange' - 'OnDocumentComplete' - 'OnDocWindowActivate' - 'OnDownloadBegin' - 'OnDownloadComplete' - 'OnDragDrop' - 'OnDragEnter' - 'OnDragLeave' - 'OnDragOver' - 'OnDragOver2' - 'OnDropEvent' - 'OnEnableModeless' - 'OnEndDrag' - 'OnEnter' - 'OnEvaluateNewWindow' - 'OnExit' - 'OnFileDownload' - 'OnFilterDataObject' - 'OnFilterPopupMenu' - 'OnFrameWindowActivate' - 'OnGetDropTarget' - 'OnGetExternal' - 'OnGetHostInfo' - 'OnGetIDsOfNames' - 'OnGetTypeInfo' - 'OnGetTypeInfoCount' - 'OnHideUI' - 'OnInvoke' - 'OnKeyDown' - 'OnKeyUp' - 'OnMaskedCtrlChar' - 'OnMessage' - 'OnMove' - 'OnMoveBy' - 'OnNavigateComplete2' - 'OnNavigateError' - 'OnNewWindow2' - 'OnNewWindow3' - 'OnPopulateNSTable' - 'OnPrintTemplateInstantiation' - 'OnPrintTemplateTeardown' - 'OnPrivacyImpactedStateChange' - 'OnProgressChange' - 'OnQueryService' - 'OnQuit' - 'OnRefresh' - 'OnResize' - 'OnResizeBorder' - 'OnResizeBy' - 'OnScriptError' - 'OnSetPhishingFilterStatus' - 'OnSetSecureLockIcon' - 'OnShowContextMenu' - 'OnShowDialog' - 'OnShowHelpRequest' - 'OnShowMessage' - 'OnShowUI' - 'OnStartDrag' - 'OnStatusTextChange' - 'OnTitleChange' - 'OnTranslateAccelerator' - 'OnTranslateUrl' - 'OnUnload' - 'OnUpdatePageStatus' - 'OnUpdateUI' - 'OnVisible' - 'OnWindowClosing' - 'OnWindowSetHeight' - 'OnWindowSetLeft' - 'OnWindowSetResizable' - 'OnWindowSetTop' - 'OnWindowSetWidth' - 'OnWindowStateChanged' - 'OnZoomPercentChange') - Sorted = True - TabOrder = 0 - end - object Panel2: TPanel - Left = 0 - Top = 0 - Width = 304 - Height = 65 - Align = alTop - BevelOuter = bvNone - TabOrder = 1 - object btnSaveFilters: TSpeedButton - Left = 8 - Top = 8 - Width = 149 - Height = 22 - Caption = 'Save Filters to File' - OnClick = btnSaveFiltersClick - end - object btnLoadFilters: TSpeedButton - Left = 176 - Top = 8 - Width = 121 - Height = 22 - Caption = 'Load Filters from File' - OnClick = btnLoadFiltersClick - end - object chkFilterCheckAll: TCheckBox - Left = 3 - Top = 40 - Width = 119 - Height = 17 - Caption = 'Select All Filters' - TabOrder = 0 - OnClick = chkFilterCheckAllClick - end - end - end - object TabSheet3: TTabSheet - Caption = 'Tests' - ImageIndex = 2 - object Button1: TButton - Left = 8 - Top = 8 - Width = 265 - Height = 25 - Caption = 'Hide / Show EWB' - TabOrder = 0 - OnClick = Button1Click - end - object Button2: TButton - Left = 8 - Top = 40 - Width = 265 - Height = 25 - Caption = 'Navigate http://www.microsoft.com/surface/' - TabOrder = 1 - OnClick = Button2Click - end - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 725 - Width = 1020 - Height = 19 - Panels = < - item - Width = 50 - end> - SimplePanel = False - end - object Panel4: TPanel - Left = 0 - Top = 80 - Width = 705 - Height = 645 - Align = alClient - TabOrder = 3 - object EWB: TEmbeddedWB - Left = 1 - Top = 1 - Width = 703 - Height = 626 - Align = alClient - TabOrder = 0 - OnDragDrop = EWBDragDrop - OnDragOver = EWBDragOver - OnEndDrag = EWBEndDrag - OnEnter = EWBEnter - OnExit = EWBExit - OnStartDrag = EWBStartDrag - OnStatusTextChange = EWBStatusTextChange - OnProgressChange = EWBProgressChange - OnCommandStateChange = EWBCommandStateChange - OnDownloadBegin = EWBDownloadBegin - OnDownloadComplete = EWBDownloadComplete - OnTitleChange = EWBTitleChange - OnBeforeNavigate2 = EWBBeforeNavigate2 - OnNewWindow2 = EWBNewWindow2 - OnNavigateComplete2 = EWBNavigateComplete2 - OnDocumentComplete = EWBDocumentComplete - OnQuit = EWBQuit - OnVisible = EWBVisible - OnWindowSetResizable = EWBWindowSetResizable - OnWindowSetLeft = EWBWindowSetLeft - OnWindowSetTop = EWBWindowSetTop - OnWindowSetWidth = EWBWindowSetWidth - OnWindowSetHeight = EWBWindowSetHeight - OnWindowClosing = EWBWindowClosing - OnClientToHostWindow = EWBClientToHostWindow - OnSetSecureLockIcon = EWBSetSecureLockIcon - OnFileDownload = EWBFileDownload - OnNavigateError = EWBNavigateError - OnPrintTemplateInstantiation = EWBPrintTemplateInstantiation - OnPrintTemplateTeardown = EWBPrintTemplateTeardown - OnUpdatePageStatus = EWBUpdatePageStatus - OnPrivacyImpactedStateChange = EWBPrivacyImpactedStateChange - OnNewWindow3 = EWBNewWindow3 - OnAllowFocusChange = EWBAllowFocusChange - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - OnGetIDsOfNames = EWBGetIDsOfNames - OnGetTypeInfo = EWBGetTypeInfo - OnGetTypeInfoCount = EWBGetTypeInfoCount - OnInvoke = EWBInvoke - OnShowHelpRequest = EWBShowHelpRequest - OnShowMessage = EWBShowMessage - OnFilterDataObject = EWBFilterDataObject - OnGetExternal = EWBGetExternal - OnGetHostInfo = EWBGetHostInfo - OnEnableModeless = EWBEnableModeless - OnZoomPercentChange = EWBZoomPercentChange - OnGetDropTarget = EWBGetDropTarget - OnHideUI = EWBHideUI - OnOnDocWindowActivate = EWBOnDocWindowActivate - OnOnFrameWindowActivate = EWBOnFrameWindowActivate - OnResizeBorder = EWBResizeBorder - OnShowContextMenu = EWBShowContextMenu - OnShowUI = EWBShowUI - OnTranslateAccelerator = EWBTranslateAccelerator - OnTranslateUrl = EWBTranslateUrl - OnUpdateUI = EWBUpdateUI - OnDragEnter = EWBDragEnter - OnDragLeave = EWBDragLeave - OnDragOver2 = EWBDragOver2 - OnDropEvent = EWBDropEvent - OnScriptError = EWBScriptError - OnQueryService = EWBQueryService - OnEvaluateNewWindow = EWBEvaluateNewWindow - OnFilterPopupMenu = EWBFilterPopupMenu - OnMaskedCtrlChar = EWBMaskedCtrlChar - OnMove = EWBMove - OnMoveBy = EWBMoveBy - OnResize = EWBResize - OnResizeBy = EWBResizeBy - OnPopulateNSTable = EWBPopulateNSTable - OnAuthenticate = EWBAuthenticate - About = ' EmbeddedWB http://bsalsa.com/' - OnCloseQuery = EWBCloseQuery - OnMessage = EWBMessage - OnShowDialog = EWBShowDialog - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - OnBusyWait = EWBBusyWait - OnKeyDown = EWBKeyDown - OnKeyUp = EWBKeyUp - OnClick = EWBClick - ControlData = { - 4C000000883B0000EA3700000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object ProgressBar1: TProgressBar - Left = 1 - Top = 627 - Width = 703 - Height = 17 - Align = alBottom - Min = 0 - Max = 100 - TabOrder = 1 - end - end - object ToolBar1: TToolBar - Left = 0 - Top = 0 - Width = 1020 - Height = 38 - Cursor = crHandPoint - AutoSize = True - ButtonHeight = 36 - ButtonWidth = 45 - Flat = True - Images = ImageListToolBar - ShowCaptions = True - TabOrder = 4 - Transparent = True - Wrapable = False - object ToolbtnBack: TToolButton - Left = 0 - Top = 0 - Hint = 'Navigate Back' - Caption = 'Back' - Enabled = False - ImageIndex = 3 - ParentShowHint = False - ShowHint = True - OnClick = ToolbtnBackClick - end - object ToolBtnForward: TToolButton - Left = 45 - Top = 0 - Hint = 'Navigate Forward' - Caption = 'Forward' - Enabled = False - ImageIndex = 4 - ParentShowHint = False - ShowHint = True - OnClick = ToolBtnForwardClick - end - object ToolBtnStop: TToolButton - Left = 90 - Top = 0 - Hint = 'Stop loading' - Caption = ' Stop' - Enabled = False - ImageIndex = 0 - ParentShowHint = False - ShowHint = True - OnClick = ToolBtnStopClick - end - object ToolButton10: TToolButton - Left = 135 - Top = 0 - Width = 8 - Caption = 'ToolButton10' - ImageIndex = 10 - Style = tbsSeparator - end - object ToolBtnRefresh: TToolButton - Left = 143 - Top = 0 - Hint = 'Refresh Active Tab' - Caption = 'Refresh' - ImageIndex = 2 - ParentShowHint = False - ShowHint = True - OnClick = ToolBtnRefreshClick - end - object ToolBtnHome: TToolButton - Left = 188 - Top = 0 - Caption = 'Home' - ImageIndex = 1 - OnClick = ToolBtnHomeClick - end - object ToolButton11: TToolButton - Left = 233 - Top = 0 - Width = 8 - Caption = 'ToolButton11' - ImageIndex = 10 - Style = tbsSeparator - end - object ToolBtnSearch: TToolButton - Left = 241 - Top = 0 - Hint = 'Search...' - Caption = 'Search' - ImageIndex = 5 - ParentShowHint = False - ShowHint = True - OnClick = ToolBtnSearchClick - end - end - object Timer1: TTimer - OnTimer = Timer1Timer - Left = 835 - Top = 8 - end - object ImageListToolBar: TImageList - Left = 870 - Top = 6 - Bitmap = { - 494C01010A000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000003000000001001000000000000018 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000106600540048B47200000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000B56A005C017D21680048B4660000000000000000FF7F5A6B9452 - 31463146B5567B6FFF7F00000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000B5760060E07840682068806C235C00000000FF7F7B6FAC5561588164 - 8164615860508B413146BD770000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00007A7B2058807C21704068217900583062000000001867A270A278A278A278 - A278A278A27881688250AD359C73000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - BC7F6464407C406C406CE1780058736A00000000BD77A278A278A278A278A278 - A278A278A278A278A27882501042FF7F00000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 746A00742078217C60780054187300000000FF7FE478A278A278897900000000 - 0000DE7BA278A278A278A2706A515A6B00000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FF7F - 7B6BE86000782074425C7A77000000000000387FA278A278517A000000000000 - 00004771A278A278A278A2786050524A00000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000FF7F5B6B - 1A6BFA5E495DC760BC7B0000000000000000E478A278A2780000000000000000 - C36CA278A278E478A278A2788168CE3900000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000FF7F3A6B3A67 - FB5E1D6B0000000000000000000000000000A278A2788164000000000000C36C - A278A278E478BD774779A278A278CE3900000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000FF7F3C673A671B63 - 1B6700000000000000000000000000000000A278A278815C00000000C36CA278 - A278E478000000008979A278A278104200000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FF7F3C6B3B671B631A63 - 000000000000000000000000000000000000A278A278826C9B7BE474A278A278 - E47800000000FF7FA278A278A278F75E00000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000007B6F1963F95E3A677B6B0000 - 000000000000000000000000000000000000AB7DA278A278A270A278A278E478 - 000000000000F766A278A2780665BD7700000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FF7FB656FF7FBE77F85E00000000 - 0000000000000000000000000000000000000000A278A278A278A278E4780000 - 00000000B46EA278A278A2783967000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000F85EBE77DF7FB7567D7300000000 - 0000000000000000000000000000000000000000517EA278A278A27881686154 - 61588168A278A278A2787266FF7F000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000096569656BE77000000000000 - 000000000000000000000000000000000000000000002F7EA278A278A278A278 - A278A278A278A2785172FF7F0000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000DE7F2679A278A278 - A278A2788979DE7B000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000020016005 - A005A00560052001000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000445EE15500000000 - 0000000000000000015A025A00000000000000000000000080058005410AC10E - C10EC10EC10E400AA005A0050000000000000000000000000000000000000000 - 000000000000000000006B2D4A29945200000000007C00000000000000000000 - 0000000000000000104200400040000000000000000003564E770973E1550000 - 0000000000006462937B836603560000000000000000A109E109C10EE10EC10E - C00AC10EC10EE10EE10E000A2001000000000000000000000000000000000000 - 0000000000000000292529253146EF3D00000000007C00400000000000000000 - 0000000000000040007C0040000000000000000000000000A866CF7F0A73E155 - 000000008666D67F6B7FA8660000000000000000A1090112E21AC212C10EC00A - C10AC10EC10EC10EC10EE10E000A800500000000000000000000000000000000 - 000000000000E71C524A3967734ED65A000000001042007C0000000000000000 - 000000000040007C0000000000000000000000000000000003566C7BAD7F4C77 - 025AA766D87FAD7F6C7BC0510000000000000000A109E426E322C21AC10EE51A - DB73FD772C37C10EC10EC10EE10E800500000000000000000000000000000000 - 00000000A5146B2D1863186394520000000000001042007C0040000000000000 - 00000040007C000000000000000000000000000000000000000003568A7F8E7F - 6E7BD67FD37F8B7F03560000000000000000C109631E052FE322C112C10EC212 - 7353FF7FFE7F2B33C10EC10EE10E410A60050000000000000000000000000000 - 00000000E71C3146524AB55600000000000000000000007C007C000000000000 - 0040007C0000000000000000000000000000000000000000000000000356697F - 8E7FB17FD37F035600000000000000000000C109C52E0533E426C112C10EC10E - C10E714BFF7FFE7B2B33C10EC10EA10A60050000000000000000000000000000 - 0000AD352925AD3594520000000000000000000000001042007C007C00000040 - 007C00000000000000000000000000000000000000000000E1550356447F457F - 697F8E7FD27F6F7703560356000000000000010E06370637D96FB96BB86BB96B - B86BB867FF7FFF7FFE7B4D3FC10EC10E80050000524A2A1D5342B6525442B02D - 630C4A250000000000000000000000000000000000000000007C007C007C007C - 0000000000000000000000000000000000000000C051455E4E778C7F667F437F - 667F6B7F8E7FD37FB17FE86EE86EC051000022122B43283BFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FB763C10EC10EA0050000091D1236FF77DF73DF6F9F6B - 091DAD3500000000000000000000000000000000000000001042007C007C007C - 000000000000000000000000000000000000245A306FFB7FF97FD27FAD7F667F - 437F667F8B7FCF7FF47FF47F6C7B306FC051410E4D4B4B474D4B4E4F4E4F4E4F - 4C477257FF7FFF7F955FE526E216C10E8005524E7D67BF73FD46FD4E1D4BFB4A - BF6BAF2D00000000000000000000000000000000000000000040007C007C007C - 004000000000000000000000000000000000C051C051C051C051C051C0514E77 - 457F437FE572C051C051C051C051C051C051410E2C43935F073B063707370737 - 4E4BFD77FF7F935BE426E31EE216810A800574469F679F6BFD46FD4AFD461C4F - FF6F333A0000000000000000000000000000000000000040007C007C1042007C - 007C00400000000000000000000000000000000000000000000000000000C051 - 8C7F457F215E0000000000000000000000000000A41EB76B7053053305332A43 - FE7FFF7F935BE426E322C31A021B010A000074467F5F7F635E5F5E5B5E5F7F63 - BF67964A000000000000000000000000000000400040007C007C000000000000 - 007C007C007C000000000000000000000000000000000000000000000000C051 - B17F697F025A0000000000000000000000000000A41E4E47DA73705306370737 - B76795630533E42AE4260323A21A010A000074465E5B5F5BBF6BDF6F9F675E5F - DF63543E0000000000000000000000000000007C007C10420000000000000000 - 00001042007C007C007C0000000000000000000000000000000000000000C051 - D57F2B77E15500000000000000000000000000000000A41E704FDB77B5634D4B - 2A43283F293F293F2737C426E10D000000000000B64E3E53FE7FFE7FDF777F63 - 9546734E00000000000000000000000000001042000000000000000000000000 - 00000000000010420040007C007C00400000000000000000000000000000C051 - D77FCB6AC051000000000000000000000000000000000000A41EA41EB563D96F - B76B9463925B4C4BC52AC52A00000000000000009352D74ABF6BFF739F5F5D53 - 734E000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000C051 - B97BCC6AC05100000000000000000000000000000000000000000000C626A41E - A41EA41EA41E842200000000000000000000000000000000D652D652D652D652 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 255E0356000000000000000000000000000000000000000000000000AD316208 - 000000000000AE39000000000000000000000000000000000000932993299329 - 9329000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000C0000001 - 400140010001C00000000000000000000000000000000000000000000000620C - 8410A518631000000000000000000000000000000000000093293A32DD3EDC46 - 9A3A9329932993299329000000000000000000009435712D712D712D712D712D - 712D712D712D712D712D712D50250000000000000000000000010001E0056006 - 600660066006E005200120010000000000000000000000004208082594567A73 - BE7F9D7F5A777352082142080000000000000000000093299A3A9D32DD423D53 - 1D47162ECC18EE1C9329932993290000000000009435BF677E5F5E5B5E533D4F - 1D4B1D47FD42FD3EFD3E1D435025000000000000000020058005800680068006 - 60066006800680068006A001C0000000000000000000420800009D77D6626B41 - E73409396B41B5667B77000042080000000000009329BC3EDD3A9D32DD469E63 - 3E4F1636CC18CC183832BD3A3936932900000000942DBF6F9E637E5F5E5B1847 - C001C001D73AFD42FD3E1D4350250000000000002005A009A10E800A60066006 - 600660066006600680068006A001200100000000000029259B77412807552861 - 0761E664C75C854801289C7729250000000093291E433E3FDD3A9D321E4FBF6B - 9F5B383ACC18CC183832BD3A9A36932900000000942DDF739E67C001384BC001 - 1843F842C001D736FD421D4350250000000000002005A21AA116810E6006092B - FD77DA6FA2126006600660068006200100006B2D00009452D56649516A654969 - 2765E668E768C75CA544B666735200006B2D93293E433E3FDE3A9E2E1E4FDF77 - BF6B7842AB14CC183832BD3A9A36932900000000D435FF7BBF6FC001C001384F - 5E5B5E57F742C0011D471D4350250000000040010112C222A116800AE826FE7B - FF7F5047800A6006600660068006E00500014208630C596F6A3DCC65AA6D8A71 - 686D2771E770E768C75C4B417B77630C210093293E433F3FBC3E343E1E4FFF7B - DF77DA522F21ED183836BD3A9A36932900000000D435FF7FDF73C001C001C001 - 7E5F5E5B5E533D4F1D4B3E4750250000000040018222C326A21AE826FE7BFF7F - 4E3F6006600660066006600680064006000100008410BD7F28352F72EC71EC75 - CB7568790775E76CE7600A41DE7F8410420093293F3F19472772A2796D6AFF77 - DF77DF739E63DC46DC42BC3E9A369329000000001736FF7FDF7BBF73BF6F9E67 - 9E63C001C001C0013D4F3E4B502500000000A005C42AC32A4E4BFE7BFF7FFE7F - B663965F955B955B955B965B80066006200100008410DD7F6A3D9172707A707A - 4E7AAB754975086DE760E738BD7FA41000009329D05A857E637E037EA17DAD7A - FF77DF77BF6B9E633D53DD429A3A9131000000001736FF7FFF7FC001795FBE6F - 9E67384FC001C0015E535E53502500000000C109E736E52EB767FF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7F800660064001420C630C596FAD41167B157FF37E - 9076EC718B714969085D6A3D596F620C4208057A257E657E857E247EE27DA17D - CE7AFF77DF77BF6B9F5BDA52CF3D9035000000005A36FF7FFF7F9967C001795F - 595BC001384FC0017E5B3D53502500000000E0050A3F083BE52E945FFF7FFF7F - 7053E72E082FE82EE82EE82A800E60060001AD3900009352B45A3773997F157F - 9076EC6DAB6D8B690751D66293560000CE390000057E257E657E857E247EE27D - A17DCE7AFF77FF7739678B4D6C3D0000000000005A36FF7FFF7FFF7F9967C001 - C001595B9F6BBF673B5BB64A502500000000E005E9367053C42AC326725BFF7F - DC77093BA21AA11AA1168112800A2006000100000000E61C9B77492D1673167B - 91760E6ECC65495141289D7708210000000000000000057A257E657E657E247E - E27DA17DCF7E14734655474500000000000000007B3AFF7FFF7FFF7FFF7FFF7F - DF77DF737D67942D942D942D942D000000000000621295634D47A226C3267157 - FF7FFE7BE52AA21A81168112A10EA005000000000000210400049B77B556AC39 - 483148358A3DB45E9B730000420800000000000000000000257E657E857E657E - 037EE27DA17D43712359000000000000000000007B3AFF7FFF7FFF7FFF7FFF7F - FF7FFF7B1B5F942D7C2A3C1AB62500000000000062120A3BD86F2C47C42AC326 - 725B9563C326A21EA21AC116610EA00500000000000000004208072194567B73 - DE7FBD7F596FB5564A25630C0000000000000000000000000000257E657E857E - 647EE4796150E468000000000000000000000000BC3EFF7FFF7FFF7FFF7FFF7F - FF7FFF7F1B63942DDF2EF72D0000000000000000000062122D47DA73935B0A3F - E732E52EE632E52EE426821A8005000000000000000000000000000000006310 - 84148414430C00000000000000000000000000000000000000000000257E657E - 00000000013CC468000000000000000000000000BC3EDF7BDF77DF77DF77DF77 - DE77DE771B63942D1836000000000000000000000000000062126212935BB76B - 9463925B6F4F093F631E631E00000000000000000000000000000000AD398310 - 0000000084108C31000000000000000000000000000000000000000000000000 - 000000002140C468000000000000000000000000BC3E39363936393639363936 - 393639363936942D0000000000000000000000000000000000000000831A6212 - 621262126212221600000000000000000000424D3E000000000000003E000000 - 2800000040000000300000000100010000000000800100000000000000000000 - 000000000000000000000000FFFFFF00FFE1FFFF00000000FFC0F00F00000000 - FF80C00700000000FF00C00300000000FE01800100000000FE03070100000000 - FC070F0100000000F80F1E0100000000F07F1C0100000000E0FF186100000000 - C1FF00C10000000083FF01C10000000007FF83830000000007FF800300000000 - 8FFFC00700000000FFFFE01F00000000F81FFFFFFFFFE7E7E007FFF19FE3C3C3 - C003FFE19FC7E1878001FFC18F8FE0078001FF838F1FF00F0000FF87C63FF81F - 0000FF0FC07FE0070000807FE0FF80010000807FE1FF00000000007FE0FF0000 - 0000007FC07FFC3F8001007F0E1FFC3F8001007F1F07FC3FC003807F7FC1FC3F - E00780FFFFFFFC3FF81FE1FFFFFFFE7FF81FF0FFFFFFF81FF00FE00F8003E007 - E007C0038003C003C00380018003800180010001800380010000000180030000 - 0000000180030000000000018003000000000001800300000000000180030000 - 00008003800300008001C00780038001C003E00F80038001E007F01F8007C003 - F00FF99F800FE007F81FFF9F801FF81F00000000000000000000000000000000 - 000000000000} - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/umain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/umain.pas deleted file mode 100644 index 64d4920f11..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/17 - EWB Events Logger_Demo/umain.pas +++ /dev/null @@ -1,1020 +0,0 @@ -unit umain; - -interface - -uses - Windows, Messages, SysUtils, Classes, Controls, Forms, - Dialogs, StdCtrls, ExtCtrls, OleCtrls, SHDocVw_EWB, EwbCore, ActiveX, EmbeddedWB, - IEAddress, ComObj, URLMon, EwbAcc, CheckLst, ComCtrls, Buttons, ToolWin, - ImgList; - -type - TForm1 = class(TForm) - Timer1: TTimer; - Panel1: TPanel; - lblFocus: TLabel; - IEAddress1: TIEAddress; - btnGo: TButton; - PageControl1: TPageControl; - TabSheet1: TTabSheet; - ListBox1: TListBox; - TabSheet2: TTabSheet; - CheckListBox1: TCheckListBox; - Panel2: TPanel; - chkFilterCheckAll: TCheckBox; - Panel3: TPanel; - SpeedButton1: TSpeedButton; - StatusBar1: TStatusBar; - btnSaveFilters: TSpeedButton; - btnLoadFilters: TSpeedButton; - Splitter1: TSplitter; - TabSheet3: TTabSheet; - Button1: TButton; - Panel4: TPanel; - EWB: TEmbeddedWB; - ProgressBar1: TProgressBar; - Button2: TButton; - ImageListToolBar: TImageList; - ToolBar1: TToolBar; - ToolbtnBack: TToolButton; - ToolBtnForward: TToolButton; - ToolBtnStop: TToolButton; - ToolButton10: TToolButton; - ToolBtnRefresh: TToolButton; - ToolBtnHome: TToolButton; - ToolButton11: TToolButton; - ToolBtnSearch: TToolButton; - Button4: TButton; - procedure Timer1Timer(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure EWBAllowFocusChange(Sender: TObject; - var Value: LongBool); - procedure EWBAuthenticate(Sender: TCustomEmbeddedWB; - var hwnd: HWND; var szUserName, szPassWord: WideString; - var Rezult: HRESULT); - procedure EWBBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); - procedure EWBClientToHostWindow(ASender: TObject; var CX, - CY: Integer); - procedure EWBCloseQuery(Sender: TObject; - var CanClose: Boolean); - procedure EWBCommandExec(Sender: TObject; CmdGroup: PGUID; - nCmdID, nCmdexecopt: Cardinal; const vaIn: OleVariant; - var vaOut: OleVariant; var Rezult: HRESULT); - procedure EWBCommandStateChange(ASender: TObject; - Command: Integer; Enable: WordBool); - procedure EWBDocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); - procedure EWBDownloadBegin(Sender: TObject); - procedure EWBDownloadComplete(Sender: TObject); - procedure EWBDragDrop(Sender, Source: TObject; X, Y: Integer); - procedure EWBDragEnter(Sender: TObject; - const dataObj: IDataObject; grfKeyState: Integer; pt: TPoint; - var dwEffect: Integer; var Rezult: HRESULT); - procedure EWBDragOver(Sender, Source: TObject; X, Y: Integer; - State: TDragState; var Accept: Boolean); - procedure EWBDragLeave(Sender: TObject); - procedure EWBDropEvent(Sender: TObject; - const dataObj: IDataObject; grfKeyState: Integer; pt: TPoint; - var dwEffect: Integer; var Rezult: HRESULT); - procedure EWBDragOver2(Sender: TObject; grfKeyState: Integer; - pt: TPoint; var dwEffect: Integer; var Rezult: HRESULT); - procedure EWBEnableModeless(Sender: TCustomEmbeddedWB; - const fEnable: LongBool); - procedure EWBEndDrag(Sender, Target: TObject; X, Y: Integer); - procedure EWBEnter(Sender: TObject); - procedure EWBEvaluateNewWindow(Sender: TCustomEmbeddedWB; - pszUrl, pszName, pszUrlContext, pszFeatures: PWideChar; - fReplace: LongBool; dwFlags, dwUserActionTime: Cardinal; - var Rezult: HRESULT); - procedure EWBExit(Sender: TObject); - procedure EWBFileDownload(Sender: TCustomEmbeddedWB; - pmk: IMoniker; pbc: IBindCtx; dwBindVerb, grfBINDF: Cardinal; - pBindInfo: PBindInfo; pszHeaders, pszRedir: PWideChar; - uiCP: Cardinal; var Rezult: HRESULT); - procedure EWBFilterDataObject(Sender: TCustomEmbeddedWB; - const pDO: IDataObject; var ppDORet: IDataObject); - procedure EWBFilterPopupMenu(Sender: TObject; ID: Cardinal; Menu: HMENU; - const Context: IDispatch); - procedure EWBGetDropTarget(Sender: TCustomEmbeddedWB; var DropTarget: IDropTarget); - procedure EWBGetExternal(Sender: TCustomEmbeddedWB; - var ppDispatch: IDispatch); - procedure EWBGetHostInfo(Sender: TCustomEmbeddedWB; - var pInfo: TDOCHOSTUIINFO); - procedure EWBGetIDsOfNames(Sender: TObject; const IID: TGUID; - Names: Pointer; NameCount, LocaleID: Integer; DispIDs: Pointer; - var Rezult: HRESULT); - procedure EWBGetTypeInfo(Sender: TObject; Index, - LocaleID: Integer; var TypeInfo: ITypeInfo; var Rezult: HRESULT); - procedure EWBGetTypeInfoCount(Sender: TObject; - var Count: Integer; var Rezult: HRESULT); - procedure EWBHideUI(Sender: TObject; var Rezult: HRESULT); - procedure EWBInvoke(Sender: TObject; DispID: Integer; - const IID: TGUID; LocaleID: Integer; Flags: Word; - var Params: tagDISPPARAMS; VarResult, ExcepInfo, ArgErr: Pointer; - var Rezult: HRESULT); - procedure EWBMaskedCtrlChar(Sender: TCustomEmbeddedWB; - MaskedChar: Char); - procedure EWBMessage(Sender: TObject; var Msg: TMessage; var Handled: Boolean); - procedure EWBMove(Sender: TCustomEmbeddedWB; cx, cy: Integer); - procedure EWBMoveBy(Sender: TCustomEmbeddedWB; cx, - cy: Integer); - procedure EWBNavigateComplete2(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); - procedure EWBNavigateError(ASender: TObject; - const pDisp: IDispatch; var URL, Frame, StatusCode: OleVariant; - var Cancel: WordBool); - procedure EWBNewWindow2(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool); - procedure EWBNewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); - procedure EWBOnDocWindowActivate(Sender: TCustomEmbeddedWB; - const fActivate: LongBool); - procedure EWBOnFrameWindowActivate(Sender: TCustomEmbeddedWB; - const fActivate: LongBool); - procedure EWBPopulateNSTable(Sender: TObject); - procedure EWBPrintTemplateInstantiation(ASender: TObject; - const pDisp: IDispatch); - procedure EWBPrintTemplateTeardown(ASender: TObject; - const pDisp: IDispatch); - procedure EWBPrivacyImpactedStateChange(ASender: TObject; - bImpacted: WordBool); - procedure EWBProgressChange(ASender: TObject; Progress, - ProgressMax: Integer); - procedure EWBQuit(Sender: TObject); - procedure EWBRefresh(Sender: TCustomEmbeddedWB; CmdID: Integer; - var Cancel: Boolean); - procedure EWBResize(Sender: TCustomEmbeddedWB; cx, - cy: Integer); - procedure EWBResizeBorder(Sender: TCustomEmbeddedWB; - const prcBorder: PRect; const pUIWindow: IOleInPlaceUIWindow; - const fRameWindow: LongBool); - procedure EWBResizeBy(Sender: TCustomEmbeddedWB; cx, - cy: Integer); - procedure EWBScriptError(Sender: TObject; ErrorLine, - ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; - var ScriptErrorAction: TScriptErrorAction); - procedure EWBSetSecureLockIcon(ASender: TObject; - SecureLockIcon: Integer); - function EWBShowHelpRequest(Sender: TObject; HWND: Cardinal; - pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT; - function EWBShowMessage(Sender: TObject; HWND: Cardinal; lpstrText, - lpstrCaption: PWideChar; dwType: Integer; lpstrHelpFile: PWideChar; - dwHelpContext: Integer; var plResult: Integer): HRESULT; - procedure EWBShowUI(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const pActiveObject: IOleInPlaceActiveObject; - const pCommandTarget: IOleCommandTarget; - const pFrame: IOleInPlaceFrame; const pDoc: IOleInPlaceUIWindow; - var Rezult: HRESULT); - procedure EWBStartDrag(Sender: TObject; - var DragObject: TDragObject); - procedure EWBStatusTextChange(ASender: TObject; - const Text: WideString); - procedure EWBTitleChange(ASender: TObject; - const Text: WideString); - procedure EWBTranslateAccelerator(Sender: TCustomEmbeddedWB; - const lpMsg: PMsg; const pguidCmdGroup: PGUID; - const nCmdID: Cardinal; var Done: Boolean); - procedure EWBTranslateUrl(Sender: TCustomEmbeddedWB; - const pchURLIn: PWideChar; var ppchURLOut: WideString); - procedure EWBUnload(Sender: TObject); - procedure EWBUpdatePageStatus(ASender: TObject; - const pDisp: IDispatch; var nPage, fDone: OleVariant); - procedure EWBUpdateUI(Sender: TObject; var Rezult: HRESULT); - procedure EWBVisible(ASender: TObject; Visible: WordBool); - procedure EWBWindowClosing(ASender: TObject; - IsChildWindow: WordBool; var Cancel: WordBool); - procedure EWBWindowSetHeight(ASender: TObject; - Height: Integer); - procedure EWBWindowSetLeft(ASender: TObject; Left: Integer); - procedure EWBWindowSetResizable(ASender: TObject; - Resizable: WordBool); - procedure EWBWindowSetTop(ASender: TObject; Top: Integer); - procedure EWBWindowSetWidth(ASender: TObject; Width: Integer); - function EWBZoomPercentChange(Sender: TCustomEmbeddedWB; - const ulZoomPercent: Cardinal): HRESULT; - procedure chkFilterCheckAllClick(Sender: TObject); - procedure SpeedButton1Click(Sender: TObject); - procedure btnSaveFiltersClick(Sender: TObject); - procedure btnLoadFiltersClick(Sender: TObject); - procedure btnGoClick(Sender: TObject); - procedure Button1Click(Sender: TObject); - procedure Button2Click(Sender: TObject); - procedure ToolBtnRefreshClick(Sender: TObject); - procedure ToolbtnBackClick(Sender: TObject); - procedure ToolBtnForwardClick(Sender: TObject); - procedure ToolBtnStopClick(Sender: TObject); - procedure ToolBtnHomeClick(Sender: TObject); - procedure Button4Click(Sender: TObject); - procedure EWBBusyWait(Sender: TEmbeddedWB; AStartTime: Cardinal; - var TimeOut: Cardinal; var Cancel: Boolean); - procedure EWBShowDialog(Sender: TObject; h: Cardinal; StyleEx: Integer; - OldCaption: string; var NewCaption: WideString; var Cancel: Boolean); - procedure EWBWindowStateChanged(Sender: TObject; dwWindowStateFlags, - dwValidFlagsMask: Cardinal); - procedure EWBSetPhishingFilterStatus(Sender: TObject; - PhishingFilterStatus: Integer); - procedure EWBMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure EWBMouseUp(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure EWBKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState); - procedure EWBKeyUp(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState); - procedure EWBQueryService(Sender: TObject; const rsid, iid: TGUID; - var Obj: IUnknown); - procedure EWBShowContextMenu(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; - const CommandTarget: IUnknown; const Context: IDispatch; - var Result: HRESULT); - procedure EWBClick(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure ToolBtnSearchClick(Sender: TObject); - private - { Private declarations } - iBeforeNavigate2: Integer; - iOnDownloadBegin: Integer; - iOnDownloadComplete: Integer; - iOnNavigateComplete2: Integer; - procedure SelectFilters(CheckAll: Boolean); - procedure LogEvent(Sender: TObject; const s: string; Param1: string = ''; Param2: string = ''; Param3: string = ''; ForceLog: Boolean = False); - function IsEventFilterChecked(const s: string): Boolean; - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -uses - IniFiles, Clipbrd, EWBTools; - -{$R *.dfm} - - -procedure TForm1.EWBAllowFocusChange(Sender: TObject; - var Value: LongBool); -begin - // Queries for permission to grab the focus when loading the page or when a - // script attempts to focus an element. - LogEvent(Sender, 'OnAllowFocusChange'); -end; - -procedure TForm1.EWBAuthenticate(Sender: TCustomEmbeddedWB; - var hwnd: HWND; var szUserName, szPassWord: WideString; - var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnAuthenticate'); -end; - -procedure TForm1.EWBBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - Inc(iBeforeNavigate2); - LogEvent(ASender, 'OnBeforeNavigate2', ' (' + IntToStr(iBeforeNavigate2) + ')'); -end; - -procedure TForm1.EWBClick(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); -begin - LogEvent(Sender, 'OnClick'); -end; - -procedure TForm1.EWBClientToHostWindow(ASender: TObject; var CX, - CY: Integer); -begin - LogEvent(ASender, 'OnClientToHostWindow'); -end; - -procedure TForm1.EWBCloseQuery(Sender: TObject; - var CanClose: Boolean); -begin - LogEvent(Sender, 'OnCloseQuery'); -end; - -procedure TForm1.EWBCommandExec(Sender: TObject; CmdGroup: PGUID; - nCmdID, nCmdexecopt: Cardinal; const vaIn: OleVariant; - var vaOut: OleVariant; var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnCommandExec'); -end; - -function BoolEnableToStr(B: Boolean): string; -const - cSimpleBoolStrs: array [Boolean] of String = ('Enable = True', 'Enable = False'); -begin - Result := cSimpleBoolStrs[B]; -end; - -procedure TForm1.EWBCommandStateChange(ASender: TObject; - Command: Integer; Enable: WordBool); -const - CSC_UPDATECOMMANDS = -1; -begin - case Command of - CSC_NAVIGATEBACK: - begin - ToolbtnBack.Enabled := Enable; - LogEvent(ASender, 'OnCommandStateChange', 'CSC_NAVIGATEBACK', BoolEnableToStr(Enable)); - end; - CSC_NAVIGATEFORWARD: - begin - ToolbtnForward.Enabled := Enable; - LogEvent(ASender, 'OnCommandStateChange', 'CSC_NAVIGATEFORWARD', BoolEnableToStr(Enable)); - end; - CSC_UPDATECOMMANDS: - begin - ToolbtnStop.Enabled := Enable; - LogEvent(ASender, 'OnCommandStateChange', 'CSC_UPDATECOMMANDS', BoolEnableToStr(Enable)); - end; - end; -end; - -procedure TForm1.EWBDocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); -var - CurWebrowser: IWebBrowser; - TopWebBrowser: IWebBrowser; - Document: OLEvariant; - WindowName: string; -begin - CurWebrowser := pDisp as IWebBrowser; - TopWebBrowser := (ASender as TEmbeddedWB).DefaultInterface; - if CurWebrowser = TopWebBrowser then - LogEvent(ASender, 'OnDocumentComplete', 'All frames loaded.') - else - begin - Document := CurWebrowser.Document; - WindowName := Document.ParentWindow.Name; - LogEvent(ASender, 'OnDocumentComplete', 'Frame ' + WindowName); - end; -end; - -procedure TForm1.EWBDownloadBegin(Sender: TObject); -begin - Inc(iOnDownloadBegin); - LogEvent(Sender, 'OnDownloadBegin', ' (' + IntToStr(iOnDownloadBegin) + ')'); -end; - -procedure TForm1.EWBDownloadComplete(Sender: TObject); -begin - Inc(iOnDownloadComplete); - LogEvent(Sender, 'OnDownloadComplete', ' (' + IntToStr(iOnDownloadComplete) + ')'); -end; - -procedure TForm1.EWBDragDrop(Sender, Source: TObject; X, - Y: Integer); -begin - LogEvent(Sender, 'OnDragDrop'); -end; - -procedure TForm1.EWBDragEnter(Sender: TObject; - const dataObj: IDataObject; grfKeyState: Integer; pt: TPoint; - var dwEffect: Integer; var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnDragEnter'); -end; - -procedure TForm1.EWBDragOver(Sender, Source: TObject; X, - Y: Integer; State: TDragState; var Accept: Boolean); -begin - LogEvent(Sender, 'OnDragOver'); -end; - -procedure TForm1.EWBDragLeave(Sender: TObject); -begin - LogEvent(Sender, 'OnDragLeave'); -end; - -procedure TForm1.EWBDropEvent(Sender: TObject; - const dataObj: IDataObject; grfKeyState: Integer; pt: TPoint; - var dwEffect: Integer; var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnDropEvent'); -end; - -procedure TForm1.EWBDragOver2(Sender: TObject; - grfKeyState: Integer; pt: TPoint; var dwEffect: Integer; - var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnDragOver2'); -end; - -procedure TForm1.EWBEnableModeless(Sender: TCustomEmbeddedWB; - const fEnable: LongBool); -begin - LogEvent(Sender, 'OnEnableModeless'); -end; - -procedure TForm1.EWBEndDrag(Sender, Target: TObject; X, - Y: Integer); -begin - LogEvent(Sender, 'OnEndDrag'); -end; - -procedure TForm1.EWBEnter(Sender: TObject); -begin - LogEvent(Sender, 'OnEnter'); -end; - -procedure TForm1.EWBEvaluateNewWindow(Sender: TCustomEmbeddedWB; - pszUrl, pszName, pszUrlContext, pszFeatures: PWideChar; - fReplace: LongBool; dwFlags, dwUserActionTime: Cardinal; - var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnEvaluateNewWindow'); -end; - -procedure TForm1.EWBExit(Sender: TObject); -begin - LogEvent(Sender, 'OnExit'); -end; - -procedure TForm1.EWBFileDownload(Sender: TCustomEmbeddedWB; - pmk: IMoniker; pbc: IBindCtx; dwBindVerb, grfBINDF: Cardinal; - pBindInfo: PBindInfo; pszHeaders, pszRedir: PWideChar; uiCP: Cardinal; - var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnFileDownload'); -end; - -procedure TForm1.EWBFilterDataObject(Sender: TCustomEmbeddedWB; - const pDO: IDataObject; var ppDORet: IDataObject); -begin - LogEvent(Sender, 'OnFilterDataObject'); -end; - -procedure TForm1.EWBFilterPopupMenu(Sender: TObject; ID: Cardinal; Menu: HMENU; - const Context: IDispatch); -begin - LogEvent(Sender, 'OnFilterPopupMenu'); -end; - -procedure TForm1.EWBGetDropTarget(Sender: TCustomEmbeddedWB; var DropTarget: IDropTarget); -begin - LogEvent(Sender, 'OnGetDropTarget'); -end; - -procedure TForm1.EWBGetExternal(Sender: TCustomEmbeddedWB; - var ppDispatch: IDispatch); -begin - LogEvent(Sender, 'OnGetExternal'); -end; - -procedure TForm1.EWBGetHostInfo(Sender: TCustomEmbeddedWB; - var pInfo: TDOCHOSTUIINFO); -begin - LogEvent(Sender, 'OnGetHostInfo'); -end; - -procedure TForm1.EWBGetIDsOfNames(Sender: TObject; - const IID: TGUID; Names: Pointer; NameCount, LocaleID: Integer; - DispIDs: Pointer; var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnGetIDsOfNames'); -end; - -procedure TForm1.EWBGetTypeInfo(Sender: TObject; Index, - LocaleID: Integer; var TypeInfo: ITypeInfo; var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnGetTypeInfo'); -end; - -procedure TForm1.EWBGetTypeInfoCount(Sender: TObject; - var Count: Integer; var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnGetTypeInfoCount'); -end; - -procedure TForm1.EWBHideUI(Sender: TObject; var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnHideUI'); -end; - -procedure TForm1.EWBInvoke(Sender: TObject; DispID: Integer; - const IID: TGUID; LocaleID: Integer; Flags: Word; - var Params: tagDISPPARAMS; VarResult, ExcepInfo, ArgErr: Pointer; - var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnInvoke'); -end; - -procedure TForm1.EWBMaskedCtrlChar(Sender: TCustomEmbeddedWB; - MaskedChar: Char); -begin - LogEvent(Sender, 'OnMaskedCtrlChar'); -end; - -procedure TForm1.EWBMessage(Sender: TObject; var Msg: TMessage; - var Handled: Boolean); -begin - LogEvent(Sender, 'OnMessage', IntToStr(Msg.Msg), IntToHex(Msg.LParam, 4), IntToHex(Msg.WParam, 4)) -end; - -procedure TForm1.EWBMove(Sender: TCustomEmbeddedWB; cx, - cy: Integer); -begin - LogEvent(Sender, 'OnMove'); -end; - -procedure TForm1.EWBMoveBy(Sender: TCustomEmbeddedWB; cx, - cy: Integer); -begin - LogEvent(Sender, 'OnMoveBy'); -end; - -procedure TForm1.EWBNavigateComplete2(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); -begin - Inc(iOnNavigateComplete2); - LogEvent(ASender, 'OnNavigateComplete2', ' (' + IntToStr(iOnNavigateComplete2) + ')'); -end; - -procedure TForm1.EWBNavigateError(ASender: TObject; - const pDisp: IDispatch; var URL, Frame, StatusCode: OleVariant; - var Cancel: WordBool); -begin - LogEvent(ASender, 'OnNavigateError'); -end; - -procedure TForm1.EWBNewWindow2(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool); -begin - LogEvent(ASender, 'OnNewWindow2'); -end; - -procedure TForm1.EWBNewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); -begin - LogEvent(ASender, 'OnNewWindow3'); -end; - -procedure TForm1.EWBOnDocWindowActivate(Sender: TCustomEmbeddedWB; - const fActivate: LongBool); -begin - LogEvent(Sender, 'OnDocWindowActivate'); -end; - -procedure TForm1.EWBOnFrameWindowActivate( - Sender: TCustomEmbeddedWB; const fActivate: LongBool); -begin - LogEvent(Sender, 'OnFrameWindowActivate'); -end; - -procedure TForm1.EWBPopulateNSTable(Sender: TObject); -begin - LogEvent(Sender, 'OnPopulateNSTable'); -end; - -procedure TForm1.EWBPrintTemplateInstantiation(ASender: TObject; - const pDisp: IDispatch); -begin - LogEvent(ASender, 'OnPrintTemplateInstantiation'); -end; - -procedure TForm1.EWBPrintTemplateTeardown(ASender: TObject; - const pDisp: IDispatch); -begin - LogEvent(ASender, 'OnPrintTemplateTeardown'); -end; - -procedure TForm1.EWBPrivacyImpactedStateChange(ASender: TObject; - bImpacted: WordBool); -begin - LogEvent(ASender, 'OnPrivacyImpactedStateChange'); -end; - -procedure TForm1.EWBProgressChange(ASender: TObject; Progress, - ProgressMax: Integer); -begin - if ProgressMax <> 0 then - ProgressBar1.Position := Trunc((Progress / ProgressMax) * 100) + 1 - else - ProgressBar1.Position := 0; - - LogEvent(ASender, 'OnProgressChange', IntToStr(Progress) + '/' + IntToStr(ProgressMax)); -end; - - -procedure TForm1.EWBQuit(Sender: TObject); -begin - LogEvent(Sender, 'OnQuit'); -end; - -procedure TForm1.EWBRefresh(Sender: TCustomEmbeddedWB; - CmdID: Integer; var Cancel: Boolean); -begin - LogEvent(Sender, 'OnRefresh'); -end; - -procedure TForm1.EWBResize(Sender: TCustomEmbeddedWB; cx, - cy: Integer); -begin - LogEvent(Sender, 'OnResize'); -end; - -procedure TForm1.EWBResizeBorder(Sender: TCustomEmbeddedWB; - const prcBorder: PRect; const pUIWindow: IOleInPlaceUIWindow; - const fRameWindow: LongBool); -begin - LogEvent(Sender, 'OnResizeBorder'); -end; - -procedure TForm1.EWBResizeBy(Sender: TCustomEmbeddedWB; cx, - cy: Integer); -begin - LogEvent(Sender, 'OnResizeBy'); -end; - -procedure TForm1.EWBScriptError(Sender: TObject; ErrorLine, - ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; - var ScriptErrorAction: TScriptErrorAction); -begin - LogEvent(Sender, 'OnScriptError'); -end; - -procedure TForm1.EWBSetSecureLockIcon(ASender: TObject; - SecureLockIcon: Integer); -begin - LogEvent(ASender, 'OnSetSecureLockIcon'); -end; - -function TForm1.EWBShowHelpRequest(Sender: TObject; HWND: Cardinal; - pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT; -begin - Result := S_FALSE; - LogEvent(Sender, 'OnShowHelpRequest'); -end; - -function TForm1.EWBShowMessage(Sender: TObject; HWND: Cardinal; lpstrText, - lpstrCaption: PWideChar; dwType: Integer; lpstrHelpFile: PWideChar; - dwHelpContext: Integer; var plResult: Integer): HRESULT; -begin - Result := S_FALSE; - LogEvent(Sender, 'OnShowMessage'); -end; - -procedure TForm1.EWBShowUI(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const pActiveObject: IOleInPlaceActiveObject; - const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame; - const pDoc: IOleInPlaceUIWindow; var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnShowUI'); -end; - -procedure TForm1.EWBStartDrag(Sender: TObject; - var DragObject: TDragObject); -begin - LogEvent(Sender, 'OnStartDrag'); -end; - -procedure TForm1.EWBStatusTextChange(ASender: TObject; - const Text: WideString); -begin - LogEvent(ASender, 'OnStatusTextChange'); - StatusBar1.Panels[0].Text := Text; -end; - - -procedure TForm1.EWBTitleChange(ASender: TObject; - const Text: WideString); -begin - LogEvent(ASender, 'OnTitleChange'); - Caption := Text; -end; - -procedure TForm1.EWBTranslateAccelerator(Sender: TCustomEmbeddedWB; - const lpMsg: PMsg; const pguidCmdGroup: PGUID; const nCmdID: Cardinal; - var Done: Boolean); -var - tempC: array[1..2] of Char; - KeyState: TKeyboardState; -begin - GetKeyboardState(KeyState); - if ToAscii(lpMsg.wParam, MapVirtualKey(lpMsg.wParam, 0), keyState, @tempC[1], 0) > 0 then - LogEvent(Sender, 'OnTranslateAccelerator', IntToStr(lpMsg.message), tempC[1]) - else - LogEvent(Sender, 'OnTranslateAccelerator', IntToStr(lpMsg.message), IntToStr(lpMsg.wParam)) -end; - -procedure TForm1.EWBTranslateUrl(Sender: TCustomEmbeddedWB; - const pchURLIn: PWideChar; var ppchURLOut: WideString); -begin - LogEvent(Sender, 'OnTranslateUrl'); -end; - -procedure TForm1.EWBUnload(Sender: TObject); -begin - LogEvent(Sender, 'OnUnload'); -end; - -procedure TForm1.EWBUpdatePageStatus(ASender: TObject; - const pDisp: IDispatch; var nPage, fDone: OleVariant); -begin - LogEvent(ASender, 'OnUpdatePageStatus'); -end; - -procedure TForm1.EWBUpdateUI(Sender: TObject; var Rezult: HRESULT); -begin - LogEvent(Sender, 'OnUpdateUI'); -end; - -procedure TForm1.EWBVisible(ASender: TObject; Visible: WordBool); -begin - LogEvent(ASender, 'OnVisible'); -end; - -procedure TForm1.EWBWindowClosing(ASender: TObject; - IsChildWindow: WordBool; var Cancel: WordBool); -begin - LogEvent(ASender, 'OnWindowClosing'); -end; - -procedure TForm1.EWBWindowSetHeight(ASender: TObject; - Height: Integer); -begin - LogEvent(ASender, 'OnWindowSetHeight'); -end; - -procedure TForm1.EWBWindowSetLeft(ASender: TObject; Left: Integer); -begin - LogEvent(ASender, 'OnWindowSetLeft'); -end; - -procedure TForm1.EWBWindowSetResizable(ASender: TObject; - Resizable: WordBool); -begin - LogEvent(ASender, 'OnWindowSetResizable'); -end; - -procedure TForm1.EWBWindowSetTop(ASender: TObject; Top: Integer); -begin - LogEvent(ASender, 'OnWindowSetTop'); -end; - -procedure TForm1.EWBShowDialog(Sender: TObject; h: Cardinal; - StyleEx: Integer; OldCaption: string; var NewCaption: WideString; - var Cancel: Boolean); -begin - LogEvent(Sender, 'OnShowDialog'); -end; - -procedure TForm1.EWBWindowSetWidth(ASender: TObject; - Width: Integer); -begin - LogEvent(ASender, 'OnWindowSetWidth'); -end; - -function TForm1.EWBZoomPercentChange(Sender: TCustomEmbeddedWB; - const ulZoomPercent: Cardinal): HRESULT; -begin - Result := S_OK; - LogEvent(Sender, 'OnZoomPercentChange'); -end; - -procedure TForm1.EWBBusyWait(Sender: TEmbeddedWB; AStartTime: Cardinal; - var TimeOut: Cardinal; var Cancel: Boolean); -begin - LogEvent(Sender, 'OnBusyWait', IntToStr(GetTickCount - AStartTime)); -end; - -// WindowStateChanged is available only in Microsoft Windows XP Service -// Pack 2 (SP2) or later. - -procedure TForm1.EWBWindowStateChanged(Sender: TObject; dwWindowStateFlags, - dwValidFlagsMask: Cardinal); -begin - LogEvent(Sender, 'OnWindowStateChanged'); -end; - -// IE7 - -procedure TForm1.EWBSetPhishingFilterStatus(Sender: TObject; - PhishingFilterStatus: Integer); -begin - LogEvent(Sender, 'OnSetPhishingFilterStatus'); -end; - -procedure TForm1.EWBQueryService(Sender: TObject; const rsid, iid: TGUID; - var Obj: IUnknown); -begin - LogEvent(Sender, 'OnQueryService'); -end; - -procedure TForm1.EWBShowContextMenu(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IUnknown; - const Context: IDispatch; var Result: HRESULT); -begin - LogEvent(Sender, 'OnShowContextMenu'); -end; - -procedure TForm1.EWBMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); -begin - LogEvent(Sender, 'OnMouseDown'); -end; - -procedure TForm1.EWBMouseUp(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); -begin - LogEvent(Sender, 'OnMouseUp'); -end; - - -procedure TForm1.EWBKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState); -begin - LogEvent(Sender, 'OnKeyDown', Char(Key), IntToStr(ScanCode)); -end; - -procedure TForm1.EWBKeyUp(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState); -begin - LogEvent(Sender, 'OnKeyUp', Char(Key), IntToStr(ScanCode)); -end; - -procedure TForm1.SpeedButton1Click(Sender: TObject); -begin - Listbox1.Clear; - iBeforeNavigate2 := 0; - iBeforeNavigate2 := 0; - iOnDownloadBegin := 0; - iOnDownloadComplete := 0; - iOnNavigateComplete2 := 0; -end; - -procedure TForm1.btnSaveFiltersClick(Sender: TObject); -var - i: Integer; - IniPath: string; - ini: TIniFile; -begin - IniPath := ExtractFilePath(Application.ExeName) + 'Filters.ini'; - ini := TIniFile.Create(IniPath); - try - for i := 0 to Checklistbox1.Items.Count - 1 do - ini.WriteBool('items', Checklistbox1.Items[i], Checklistbox1.Checked[i]); - finally - ini.Free; - end; -end; - -procedure TForm1.btnLoadFiltersClick(Sender: TObject); -var - i: Integer; - IniPath: string; - ini: TIniFile; -begin - IniPath := ExtractFilePath(Application.ExeName) + 'Filters.ini'; - if FileExists(IniPath) then - begin - ini := TIniFile.Create(IniPath); - try - ini.ReadSection('items', Checklistbox1.Items); - for i := 0 to Pred(Checklistbox1.Items.Count) do - CheckListbox1.Checked[i] := ini.ReadBool('items', Checklistbox1.Items[i], False); - finally - ini.Free; - end; - end; -end; - - -procedure TForm1.SelectFilters(CheckAll: Boolean); -var - i: integer; -begin - for i := 0 to CheckListBox1.Items.Count - 1 do - begin - CheckListBox1.Checked[i] := CheckAll; - end; -end; - -function TForm1.IsEventFilterChecked(const s: string): Boolean; -var - i: integer; -begin - Result := False; - if not Assigned(CheckListBox1) then Exit; - i := CheckListBox1.Items.IndexOf(s); - if i <> -1 then - begin - Result := CheckListBox1.Checked[i]; - end; -end; - -procedure TForm1.LogEvent(Sender: TObject; const s: string; Param1: string = ''; Param2: string = ''; Param3: string = ''; ForceLog: Boolean = False); -begin - if Application.Terminated then Exit; - if Assigned(ListBox1) then - if IsEventFilterChecked(s) or ForceLog then - begin - ListBox1.ItemIndex := ListBox1.Items.add(FormatDateTime('hh:mm:ss', now) + ' : ' + - s + ' ' + Param1 + ' ' + Param2 + ' ' + Param3); - end; -end; - -procedure TForm1.chkFilterCheckAllClick(Sender: TObject); -begin - SelectFilters(chkFilterCheckAll.Checked); -end; - -procedure TForm1.Timer1Timer(Sender: TObject); -var - Control: TWinControl; -begin - Control := ActiveControl; - if Control <> nil then - lblFocus.Caption := 'Active Control: ' + ActiveControl.Name -end; - -procedure TForm1.FormCreate(Sender: TObject); -begin - btnLoadFiltersClick(nil); - PageControl1.ActivePageIndex := 0; -end; - -procedure TForm1.btnGoClick(Sender: TObject); -begin - EWB.Go(IEAddress1.Text); - LogEvent(EWB, '** WBTop complete***', '', '', '', True); -end; - -function WaitForBrowserTimeOut(WB: TEmbeddedWB; const iTimeOut: Cardinal = 6000): Boolean; -var - t1, t2: Cardinal; -begin - t1 := GetTickCOunt; - repeat - Application.ProcessMessages; - t2 := GetTickCOunt; - Sleep(10); - until (WB.ReadyState = READYSTATE_COMPLETE) or (Application.Terminated) or (t2 - t1 > iTimeOut); - Result := WB.ReadyState = READYSTATE_COMPLETE; -end; - -procedure TForm1.Button1Click(Sender: TObject); -begin - EWB.Visible := not EWB.Visible; -end; - -procedure TForm1.ToolBtnRefreshClick(Sender: TObject); -begin - EWB.Refresh2; -end; - -procedure TForm1.ToolbtnBackClick(Sender: TObject); -begin - EWB.GoBack; -end; - -procedure TForm1.ToolBtnForwardClick(Sender: TObject); -begin - EWB.GoForward; -end; - -procedure TForm1.ToolBtnStopClick(Sender: TObject); -begin - EWB.Stop; -end; - -procedure TForm1.ToolBtnHomeClick(Sender: TObject); -begin - EWB.GoHome; -end; - -procedure TForm1.ToolBtnSearchClick(Sender: TObject); -begin - EWB.ShowFindDialog; -end; - -procedure TForm1.Button4Click(Sender: TObject); -begin - ClipBoard.SetTextbuf(PChar(Listbox1.Items.Text)); -end; - -procedure TForm1.Button2Click(Sender: TObject); -begin - EWB.Go('http://www.microsoft.com/surface/'); - if WaitForBrowserTimeOut(EWB) then - LogEvent(EWB, '** WBTop complete***', '', '', '', True) - else - LogEvent(EWB, '** WBTop complete Timout reached***', '', '', '', True) -end; - - - - - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/prjSysLV32RepDemo.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/prjSysLV32RepDemo.dpr deleted file mode 100644 index 94dd6a7a47..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/prjSysLV32RepDemo.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program prjSysLV32RepDemo; - -uses - Forms, - uMain in 'uMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/uMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/uMain.dfm deleted file mode 100644 index 03285ffade..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/uMain.dfm +++ /dev/null @@ -1,94 +0,0 @@ -object Form1: TForm1 - Left = 305 - Top = 362 - Width = 696 - Height = 480 - Caption = 'EmbeddedWB SysListView Replacement Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 688 - Height = 41 - Align = alTop - TabOrder = 0 - object BitBtn1: TBitBtn - Left = 8 - Top = 8 - Width = 75 - Height = 25 - Caption = 'Go "c:\"' - TabOrder = 0 - OnClick = BitBtn1Click - end - object BitBtn2: TBitBtn - Left = 96 - Top = 8 - Width = 75 - Height = 25 - Caption = 'Go Google' - TabOrder = 1 - OnClick = BitBtn2Click - end - end - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 41 - Width = 688 - Height = 405 - Align = alClient - TabOrder = 1 - Silent = False - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - OnPreRefresh = EmbeddedWB1PreRefresh - About = ' EmbeddedWB http://bsalsa.com/' - HTMLCode.Strings = ( - 'www.google.com') - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C0000001B470000DC2900000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object ListView1: TListView - Left = 14 - Top = 272 - Width = 163 - Height = 153 - Columns = < - item - Width = 300 - end - item - Width = 150 - end> - SmallImages = ImageList1 - TabOrder = 2 - ViewStyle = vsReport - Visible = False - end - object ImageList1: TImageList - Left = 24 - Top = 216 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/uMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/uMain.pas deleted file mode 100644 index 48400a2217..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/18 - SysListView32 Replacement_Demo/uMain.pas +++ /dev/null @@ -1,118 +0,0 @@ -unit uMain; - -interface - -uses - Windows, Forms, Messages, StdCtrls, Buttons, - ExtCtrls, Classes, SysUtils, OleCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB, Controls, - ComCtrls, ImgList, Graphics; - -type - TForm1 = class(TForm) - Panel1: TPanel; - BitBtn1: TBitBtn; - BitBtn2: TBitBtn; - ImageList1: TImageList; - EmbeddedWB1: TEmbeddedWB; - ListView1: TListView; - procedure BitBtn1Click(Sender: TObject); - procedure BitBtn2Click(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure EmbeddedWB1PreRefresh(Sender: TObject); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -uses - ShellApi; - -procedure LV_InsertFiles(strPath: string; ListView: TListView; ImageList: TImageList); -var - i: Integer; - Icon: TIcon; - SearchRec: TSearchRec; - ListItem: TListItem; - FileInfo: SHFILEINFO; -begin - // Create a temporary TIcon - Icon := TIcon.Create; - ListView.Items.BeginUpdate; - try - // search for the first file - i := FindFirst(strPath + '*.*', faAnyFile, SearchRec); - while i = 0 do - begin - with ListView do - begin - // On directories and volumes - if ((SearchRec.Attr and FaDirectory <> FaDirectory) and - (SearchRec.Attr and FaVolumeId <> FaVolumeID)) then - begin - ListItem := ListView.Items.Add; - //Get The DisplayName - SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo, - SizeOf(FileInfo), SHGFI_DISPLAYNAME); - Listitem.Caption := FileInfo.szDisplayName; - // Get The TypeName - SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo, - SizeOf(FileInfo), SHGFI_TYPENAME); - ListItem.SubItems.Add(FileInfo.szTypeName); - //Get The Icon That Represents The File - SHGetFileInfo(PChar(strPath + SearchRec.Name), 0, FileInfo, - SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON); - icon.Handle := FileInfo.hIcon; - ListItem.ImageIndex := ImageList.AddIcon(Icon); - // Destroy the Icon - DestroyIcon(FileInfo.hIcon); - end; - end; - i := FindNext(SearchRec); - end; - finally - Icon.Free; - ListView.Items.EndUpdate; - end; -end; - -procedure TForm1.EmbeddedWB1PreRefresh(Sender: TObject); -var - Path: string; -begin - ListView1.Visible := EmbeddedWB1.GetIEWin('SysListView32') <> 0; - if ListView1.Visible then - begin - Path := StringReplace(EmbeddedWB1.LocationURL,'file:///','',[rfIgnoreCase]); - Path := StringReplace(Path,'/','\',[rfIgnoreCase]); - ImageList1.Clear; - LV_InsertFiles(Path, ListView1, ImageList1); - end; - EmbeddedWB1.Enabled := not ListView1.Visible; -end; - -procedure TForm1.BitBtn1Click(Sender: TObject); -begin - EmbeddedWB1.Go('c:\'); -end; - -procedure TForm1.BitBtn2Click(Sender: TObject); -begin - EmbeddedWB1.Go('www.google.com'); -end; - -procedure TForm1.FormCreate(Sender: TObject); -begin - ListView1.Align := alClient; -end; - -end. - - \ No newline at end of file diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/frmMain.dfm b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/frmMain.dfm deleted file mode 100644 index 6ca720391f..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/frmMain.dfm +++ /dev/null @@ -1,57 +0,0 @@ -object Form1: TForm1 - Left = 292 - Top = 122 - Width = 473 - Height = 434 - Caption = 'Drag a Link to a PageControl TabSheet' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object PageControl1: TPageControl - Left = 0 - Top = 0 - Width = 457 - Height = 398 - ActivePage = TabSheet1 - Align = alClient - TabOrder = 0 - object TabSheet1: TTabSheet - Caption = 'TabSheet1' - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 0 - Width = 449 - Height = 370 - Align = alClient - TabOrder = 0 - OnDownloadComplete = EmbeddedWB1DownloadComplete - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - HTMLCode.Strings = ( - 'http://www.google.com/') - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Orientation = poPortrait - ControlData = { - 4C00000027390000CA2700000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/frmMain.pas b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/frmMain.pas deleted file mode 100644 index 78c55c8384..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/frmMain.pas +++ /dev/null @@ -1,208 +0,0 @@ -unit frmMain; - -interface - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, - Dialogs, ComCtrls, ActiveX, ShlObj, ComObj, StdCtrls, OleCtrls, - SHDocVw_EWB, EwbCore, EmbeddedWB; - -type - TForm1 = class(TForm, IDropTarget) - PageControl1: TPageControl; - TabSheet1: TTabSheet; - EmbeddedWB1: TEmbeddedWB; - procedure FormCreate(Sender: TObject); - procedure FormDestroy(Sender: TObject); - procedure EmbeddedWB1DownloadComplete(Sender: TObject); - private - { Private declarations } - function GetPageControlDropIndex(PageControl: TPageControl; P: TPoint): Integer; - procedure DoDrop(data: string; pt: TPoint); - function CreateNewTabBrowser(Url: string; idx: Integer): TTabSheet; - // 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; - // IUnknown - // Ignore reference counting - function _AddRef: Integer; stdcall; - function _Release: Integer; stdcall; - public - { Public declarations } - end; - -var - Form1: TForm1; - NewTab: TTabSheet; - DesignTimeWB: TEmbeddedWB; - -implementation - -{$R *.DFM} - -procedure TForm1.FormCreate(Sender: TObject); -begin - {Allow window to accept drop events} - OleCheck(RegisterDragDrop(Handle, Form1)); -end; - -procedure TForm1.FormDestroy(Sender: TObject); -begin - {Finished accepting drops} - RevokeDragDrop(Handle); -end; - -function TForm1.GetPageControlDropIndex(PageControl: TPageControl; P: TPoint): Integer; -const - TCM_GETITEMRECT = $130A; -var - i: Integer; - r: TRect; -begin - Result := -1; - with PageControl do - begin - p := ScreenToClient(p); - for i := 0 to PageCount - 1 do - begin - Perform(TCM_GETITEMRECT, i, LPARAM(@r)); - if PtInRect(r, Point(P.X, P.Y)) then - begin - Result := i; - Exit; - end; - end; - end; -end; - -procedure TForm1.EmbeddedWB1DownloadComplete(Sender: TObject); -var - EWB: TEmbeddedWB; -begin - EWB := (Sender as TEmbeddedWB); - if EWB.LocationName <> '' then - (EWB.Parent as TTabSheet).Caption := EWB.LocationName; -end; - -function TForm1.CreateNewTabBrowser(Url: string; idx: Integer): TTabSheet; -begin - NewTab := TTabSheet.Create(PageControl1); - with NewTab do - begin - PageControl := PageControl1; - Parent := PageControl1; - PageIndex := idx; - Caption := 'Loading...'; - end; - DesignTimeWB := TEmbeddedWB.Create(NewTab); - TControl(DesignTimeWB).Parent := NewTab; - with DesignTimeWB do - begin - EnableMessageHandler := True; - LoadSettings; - OnDownloadComplete := EmbeddedWB1DownloadComplete; - Align := alClient; - if Trim(URL) <> '' then - DesignTimeWB.NavigateWait(URL); - end; - PageControl1.ActivePage := NewTab; - Result := NewTab; -end; - -// IDropTarget - -function TForm1.DragOver(grfKeyState: Longint; - pt: TPoint; - var dwEffect: Longint): HRESULT; -begin - dwEffect := DROPEFFECT_LINK; - if FindVCLWindow(pt) is TPageControl then - Result := S_OK - else - Result := S_FALSE; -end; - -function TForm1.DragEnter(const dataObj: IDataObject; - grfKeyState: Longint; - pt: TPoint; - var dwEffect: Longint): HRESULT; -begin - dwEffect := DROPEFFECT_LINK; - Result := S_OK; -end; - -procedure TForm1.DoDrop(data: string; pt: TPoint); -var - idx: Integer; -// TabSheet: TTabSheet; -begin - idx := GetPageControlDropIndex(PageControl1, pt); - if idx <> -1 then - begin - CreateNewTabBrowser(data, idx); - end; -end; - -function TForm1.DragLeave: HRESULT; -begin - Result := S_OK; -end; - -function TForm1._AddRef: Integer; -begin - Result := 1; -end; - -function TForm1._Release: Integer; -begin - Result := 1; -end; - -function TForm1.Drop(const dataObj: IDataObject; - grfKeyState: Longint; - pt: TPoint; - var dwEffect: Longint): HRESULT; -var - aFmtEtc: TFORMATETC; - aStgMed: TSTGMEDIUM; - pData: PChar; -begin - {Make certain the data rendering is available} - if (dataObj = nil) then - raise Exception.Create('IDataObject-Pointer is not valid!'); - with aFmtEtc do - begin - cfFormat := CF_TEXT; - ptd := nil; - dwAspect := DVASPECT_CONTENT; - lindex := -1; - tymed := TYMED_HGLOBAL; - end; - {Get the data} - OleCheck(dataObj.GetData(aFmtEtc, aStgMed)); - try - {Lock the global memory handle to get a pointer to the data} - pData := GlobalLock(aStgMed.hGlobal); - DoDrop(pData, pt); - finally - {Finished with the pointer} - GlobalUnlock(aStgMed.hGlobal); - {Free the memory} - ReleaseStgMedium(aStgMed); - end; - Result := S_OK; -end; - - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/prjDragLinkToPageControl.dpr b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/prjDragLinkToPageControl.dpr deleted file mode 100644 index 1281713ce3..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/19 - DragLink To PageControl_Demo/prjDragLinkToPageControl.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program prjDragLinkToPageControl; - -uses - Forms, - frmMain in 'frmMain.pas' {Form1}; - -{$R *.RES} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/EmbeddedWBDemos.bpg b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/EmbeddedWBDemos.bpg deleted file mode 100644 index 31adca61a7..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/EmbeddedWBDemos.bpg +++ /dev/null @@ -1,76 +0,0 @@ -#------------------------------------------------------------------------------ -VERSION = BWS.01 -#------------------------------------------------------------------------------ -!ifndef ROOT -ROOT = $(MAKEDIR)\.. -!endif -#------------------------------------------------------------------------------ -MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** -DCC = $(ROOT)\bin\dcc32.exe $** -BRCC = $(ROOT)\bin\brcc32.exe $** -#------------------------------------------------------------------------------ -PROJECTS = prjSDIDemo.exe prjMDIDemo.exe prjNewWinTabs1Demo.exe \ - prjNewWinTabs2Demo.exe prjEvalNewWindowDemo.exe PrjRightClick_Demo.exe \ - prjDragDropDemo.exe prjElementsUnderMouseDemo.exe prjPrintPreviewTemplateDemo.exe \ - prjPrintingOptionsDemo.exe prjMoveResizeDemo.exe prjMSHTML_EventsDemo.exe \ - prjActiveFormDemo.exe prjExecScriptExDemo.exe prjHTMLListenerDemo.exe \ - prjEWBControlDemo.exe prjEventsTestDemo.exe prjSysLV32RepDemo.exe - -#------------------------------------------------------------------------------ -default: $(PROJECTS) -#------------------------------------------------------------------------------ - -prjSDIDemo.exe: 01 - New_Window_SDI_Demo\prjSDIDemo.dpr - $(DCC) - -prjMDIDemo.exe: 02 - New_Window_MDI_Demo\prjMDIDemo.dpr - $(DCC) - -prjNewWinTabs1Demo.exe: 03 - New_Window_Tabs_Demo_1\prjNewWinTabs1Demo.dpr - $(DCC) - -prjNewWinTabs2Demo.exe: 04 - New_Window_Tabs_Demo_2\prjNewWinTabs2Demo.dpr - $(DCC) - -prjEvalNewWindowDemo.exe: 05 - OnEvaluateNewWindow_Demo\prjEvalNewWindowDemo.dpr - $(DCC) - -PrjRightClick_Demo.exe: 06 - RightClick_Shortcuts_Demo\PrjRightClick_Demo.dpr - $(DCC) - -prjDragDropDemo.exe: 07 - DragNDrop_Demo\prjDragDropDemo.dpr - $(DCC) - -prjElementsUnderMouseDemo.exe: 08 - Elements_Under_Mouse_Demo\prjElementsUnderMouseDemo.dpr - $(DCC) - -prjPrintPreviewTemplateDemo.exe: 09 - PrintPreviewFromTemplate_Demo\prjPrintPreviewTemplateDemo.dpr - $(DCC) - -prjPrintingOptionsDemo.exe: 10 - PrintingOptions_Demo\prjPrintingOptionsDemo.dpr - $(DCC) - -prjMoveResizeDemo.exe: 11 - moveto, moveby, resizeto, resizeby_Demo\prjMoveResizeDemo.dpr - $(DCC) - -prjMSHTML_EventsDemo.exe: 12 - MSHTML_Events_Demo\prjMSHTML_EventsDemo.dpr - $(DCC) - -prjActiveFormDemo.exe: 13 - ActiveX_Form_Demo\prjActiveFormDemo.dpr - $(DCC) - -prjExecScriptExDemo.exe: 14 - ExecScriptEx_Demo\prjExecScriptExDemo.dpr - $(DCC) - -prjHTMLListenerDemo.exe: 15 - THtmlListener_Demo\prjHTMLListenerDemo.dpr - $(DCC) - -prjEWBControlDemo.exe: 16 - TEWBControl_Demo\prjEWBControlDemo.dpr - $(DCC) - -prjEventsTestDemo.exe: 17 - EWB Events Logger_Demo\prjEventsTestDemo.dpr - $(DCC) - -prjSysLV32RepDemo.exe: 18 - SysListView32 Replacement_Demo\prjSysLV32RepDemo.dpr - $(DCC) - diff --git a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/EmbeddedWBDemos.groupproj b/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/EmbeddedWBDemos.groupproj deleted file mode 100644 index 82772d31e5..0000000000 --- a/windows/src/ext/embeddedwb/Demos/EmbeddedWB Demos/EmbeddedWBDemos.groupproj +++ /dev/null @@ -1,240 +0,0 @@ - - - {B89BABB2-2C99-494C-AE8C-0450D49BF2B0} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default.Personality.12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/windows/src/ext/embeddedwb/Demos/Mega Demo/Demo.dfm b/windows/src/ext/embeddedwb/Demos/Mega Demo/Demo.dfm deleted file mode 100644 index 608937f0af..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Mega Demo/Demo.dfm +++ /dev/null @@ -1,3846 +0,0 @@ -object frmMain: TfrmMain - Left = 162 - Top = 214 - Caption = 'EmbeddedWB Component Pack - Mega Demo' - ClientHeight = 724 - ClientWidth = 973 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - Menu = MainMenu1 - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - WindowState = wsMaximized - OnCloseQuery = FormCloseQuery - OnCreate = FormCreate - OnDestroy = FormDestroy - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object SplitterACC: TSplitter - Left = 401 - Top = 110 - Width = 2 - Height = 595 - ExplicitHeight = 598 - end - object PanelWEB: TPanel - Left = 403 - Top = 110 - Width = 570 - Height = 595 - Align = alClient - TabOrder = 0 - object pctrlWB: TPageControl - Left = 1 - Top = 1 - Width = 568 - Height = 593 - ActivePage = TabBrowser - Align = alClient - TabOrder = 0 - object TabBrowser: TTabSheet - Caption = 'Web Browser' - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 0 - Width = 560 - Height = 565 - Align = alClient - DragMode = dmAutomatic - TabOrder = 0 - Silent = False - OnStatusTextChange = EmbeddedWB1StatusTextChange - OnProgressChange = EmbeddedWB1ProgressChange - OnCommandStateChange = EmbeddedWB1CommandStateChange - OnDownloadBegin = EmbeddedWB1DownloadBegin - OnDownloadComplete = EmbeddedWB1DownloadComplete - OnTitleChange = EmbeddedWB1TitleChange - OnPropertyChange = EmbeddedWB1PropertyChange - OnBeforeNavigate2 = EmbeddedWB1BeforeNavigate2 - OnNewWindow2 = EmbeddedWB1NewWindow2 - OnNavigateComplete2 = EmbeddedWB1NavigateComplete2 - OnDocumentComplete = EmbeddedWB1DocumentComplete - OnVisible = EmbeddedWB1Visible - OnFullScreen = EmbeddedWB1FullScreen - OnSetSecureLockIcon = EmbeddedWB1SetSecureLockIcon - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnableThemes] - OnScriptError = EmbeddedWB1ScriptError - About = ' EmbeddedWB http://bsalsa.com/' - OnShowDialog = EmbeddedWB1ShowDialog - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.33 from: http://www.bsalsa.com/' - ExplicitWidth = 568 - ExplicitHeight = 568 - ControlData = { - 4C000000EA370000742000000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - end - object TabEditor: TTabSheet - Caption = 'Editor' - ImageIndex = 1 - TabVisible = False - object Label3: TLabel - Left = 0 - Top = 532 - Width = 560 - Height = 16 - Align = alBottom - Caption = - ' This is a Toolbar Component which is placed INSIDE the TRi' + - 'chEditWB (As Well As The ProgressBars )' - Font.Charset = DEFAULT_CHARSET - Font.Color = clRed - Font.Height = -13 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - ExplicitTop = 552 - ExplicitWidth = 605 - end - object ProgressBar2: TProgressBar - Left = 0 - Top = 22 - Width = 17 - Height = 510 - Align = alLeft - Orientation = pbVertical - TabOrder = 0 - end - object ProgressBar3: TProgressBar - Left = 0 - Top = 548 - Width = 560 - Height = 17 - Align = alBottom - TabOrder = 1 - end - object ToolBar1: TToolBar - Left = 0 - Top = 0 - Width = 560 - Height = 22 - ButtonHeight = 21 - ButtonWidth = 34 - Caption = 'ToolBar1' - ShowCaptions = True - TabOrder = 2 - object ToolButton1: TToolButton - Left = 0 - Top = 0 - AutoSize = True - Caption = 'File' - MenuItem = File1 - ParentShowHint = False - ShowHint = True - end - object ToolButton2: TToolButton - Left = 27 - Top = 0 - Caption = 'Edit' - MenuItem = Edit - end - object ToolButton3: TToolButton - Left = 61 - Top = 0 - Caption = 'Tools' - MenuItem = Tools - end - object ToolButton4: TToolButton - Left = 95 - Top = 0 - Caption = 'Add' - MenuItem = Add - end - object ToolButton5: TToolButton - Left = 129 - Top = 0 - Caption = 'Fonts' - MenuItem = Fonts - Wrap = True - end - end - object RichEditWB1: TRichEditWB - Left = 17 - Top = 22 - Width = 543 - Height = 510 - Hint = - 'File Name: Untitled. | '#10#13'Position: Line: 1 Col: 1. | '#10#13'Mod' + - 'ified. | '#10#13'Caps Lock: Off. | '#10#13'NumLock: Off. | '#10#13'Insert: Off. | ' + - #10#13'Total Lines Count: 5. |' - Align = alClient - Font.Charset = ANSI_CHARSET - Font.Color = clBlack - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - Lines.Strings = () - ParentFont = False - ParentShowHint = False - ScrollBars = ssBoth - ShowHint = True - TabOrder = 3 - WordWrap = False - AutoNavigate = True - FileName = 'Untitled' - HighlightHTML = True - HighlightURL = True - HighlightXML = True - SupprtMoreThen64KB = False - TextAlignment = taLeftJustify - HideCaret = False - Themes = tDefault - end - end - object TabImage: TTabSheet - Caption = 'Page Image' - ImageIndex = 2 - TabVisible = False - object ImageViewer: TImage - Left = 0 - Top = 0 - Width = 560 - Height = 565 - Align = alClient - ExplicitWidth = 511 - ExplicitHeight = 567 - end - end - object TabLinks: TTabSheet - Caption = 'Links Checker' - ImageIndex = 3 - TabVisible = False - object PanelLinksTop: TPanel - Left = 0 - Top = 0 - Width = 560 - Height = 508 - Align = alClient - TabOrder = 0 - object StringGrid1: TStringGrid - Left = 1 - Top = 1 - Width = 558 - Height = 506 - Align = alClient - ColCount = 3 - DefaultRowHeight = 15 - FixedCols = 0 - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing] - TabOrder = 0 - ColWidths = ( - 258 - 263 - 118) - end - end - object PanelLinksBottum: TPanel - Left = 0 - Top = 508 - Width = 560 - Height = 57 - Align = alBottom - TabOrder = 1 - object Button1: TButton - Left = 282 - Top = 16 - Width = 103 - Height = 25 - Caption = 'Check Links' - TabOrder = 0 - OnClick = Button1Click - end - object RadioButton1: TRadioButton - Left = 16 - Top = 32 - Width = 113 - Height = 17 - Caption = 'Synchronous' - TabOrder = 1 - OnClick = RadioButton1Click - end - object RadioButton2: TRadioButton - Left = 16 - Top = 8 - Width = 113 - Height = 17 - Caption = 'Asynchronous' - Checked = True - TabOrder = 2 - TabStop = True - OnClick = RadioButton2Click - end - end - end - end - end - object PanelAcc: TPanel - Left = 0 - Top = 110 - Width = 401 - Height = 595 - Align = alLeft - TabOrder = 1 - Visible = False - object Splitter2: TSplitter - Left = 1 - Top = 25 - Width = 399 - Height = 2 - Cursor = crVSplit - Align = alTop - end - object pnlFav: TPanel - Left = 1 - Top = 1 - Width = 399 - Height = 24 - Align = alTop - TabOrder = 0 - object sbRebuildView: TSpeedButton - Left = 0 - Top = 0 - Width = 23 - Height = 22 - Glyph.Data = { - 36030000424D3603000000000000360000002800000010000000100000000100 - 18000000000000030000120B0000120B00000000000000000000FFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFF003CA7839BCAFDF9F7FFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0F58BB1B - 93FF0050C75076B8E9EAF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFF5C7EBB0056C71784F21985FF2692FF0984FF2472CD6283BFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B4CAC118CFF2E98FF67B8FF6D - B7FF0787FFA2DCFF295CAFF7F8FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - 3061B01693FF5AB0FF57A0EA0E4BADA7D6FDC6EDFF1B4FA9FFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFD4D6E50067DA55B4FF378ADF788FC1CCD0E462 - A9E4003CA2FFFFFFFFFFFFFFFFFFFFFFFF1A72BCD2D7E6FFFFFFFFFFFF5C7EBC - 1F99FF79C7FF5B7BBBFFFFFFECF0F72457ABFFFFFFFFFFFFFFFFFFFFFFFF225B - AF2387F6004ED2E3E5EC001D980E73DF42B7FF8AB9E42C6EBF003A9EFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFF1455B0D0F3FF1384FF30ACFF0032AAE4E6EF0045C4 - 47C2FFB8E3FD205DB4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3C6E36684BF0571 - D11E84FF0F5DC28AA3CEFFFFFFD2D4E53CACE61D56B0FFFFFFFFFFFFFFFFFFFF - FFFD0543A2BCCBE4FFFFFF5F7FBA1E9BFF2B89FF4673BAFFFFFFFFFFFFFFFFFF - B5C1DFFFFFFFFFFFFFFFFFFFFFFFFE004CA82CCFFF939DC9617BB71194EE318B - FF2F79DDC6CEE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFB0C56AD3C - D8FF39C0FF0E7BCD1BA6FD2C92FF88BFFF3463B1FFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFE6E7F10B69BD41E5FF3AC8FF36BBFF42BBFF7BC9FF91C3F52456 - ACFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFBEDD0E67BA33B9EC56 - E3FF61D4FF86B9E93A6EBB7794C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFF9DA7D12664B477BAE53C81CAFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFC5CCE4225CB0E7EBF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF} - OnClick = sbRebuildViewClick - end - end - object PageCtrl: TPageControl - Left = 1 - Top = 27 - Width = 399 - Height = 567 - ActivePage = TabFavoritesTV - Align = alClient - TabOrder = 1 - OnChange = PageCtrlChange - object TabEvents: TTabSheet - Caption = 'Events Log' - object lvEventLog: TListBox - Left = 0 - Top = 0 - Width = 391 - Height = 539 - Align = alClient - ItemHeight = 13 - TabOrder = 0 - end - end - object TabFavoritesLV: TTabSheet - Caption = 'FavoritesLV' - ImageIndex = 1 - object FavoritesListView1: TFavoritesListView - Left = 0 - Top = 0 - Width = 391 - Height = 539 - ResolveUrl = IntShCut - Channels = False - EmbeddedWB = EmbeddedWB1 - PopupMenuMode = pmm_System - Align = alClient - ParentShowHint = False - TabOrder = 0 - end - end - object TabFavoritesTV: TTabSheet - Caption = 'FavoritesTV' - ImageIndex = 2 - object FavoritesTree1: TFavoritesTree - Left = 0 - Top = 0 - Width = 391 - Height = 539 - PopupMenuMode = pmm_System - EmbeddedWB = EmbeddedWB1 - ImportFavorites = ImportFavorite1 - ExportFavorites = ExportFavorite1 - Localization.NodeOrganiseFavorites = 'Organize favorites' - Localization.NodeAddToFavorites = 'Add To favorites' - Localization.NodeImportFavorites = 'Import favorites' - Localization.NodeExportFavorites = 'Export favorites' - Localization.NodeTools = 'Tools' - Localization.NodeFavorites = 'Favorites' - Localization.TextLinks = 'Links' - Localization.TextImported = 'Imported' - Options = [foShowRoot, foShowItems, foShowOrganize, foShowAdd, foShowImport, foShowExport] - Align = alClient - Indent = 19 - ParentColor = False - TabOrder = 0 - TabStop = True - OnNodeAdded = FavoritesTree1NodeAdded - OnExpanded = FavoritesTree1Expanded - end - end - object TabHistoryLV: TTabSheet - Caption = 'HistoryLV' - ImageIndex = 3 - object HistoryListView1: THistoryListView - Left = 0 - Top = 0 - Width = 391 - Height = 539 - EmbeddedWB = EmbeddedWB1 - Align = alClient - ParentShowHint = False - TabOrder = 0 - end - end - object TabFTP: TTabSheet - Caption = 'Local Folders' - ImageIndex = 4 - object EmbeddedWB2: TEmbeddedWB - Left = 0 - Top = 49 - Width = 391 - Height = 490 - Align = alClient - DragMode = dmAutomatic - TabOrder = 0 - Silent = False - OnCommandStateChange = EmbeddedWB2CommandStateChange - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.33 from: http://www.bsalsa.com/' - ExplicitHeight = 493 - ControlData = { - 4C000000911400008C2900000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 391 - Height = 49 - Align = alTop - TabOrder = 1 - object sbRefresh: TSpeedButton - Left = 32 - Top = 0 - Width = 33 - Height = 41 - Glyph.Data = { - 360C0000424D360C000000000000360000002800000020000000200000000100 - 180000000000000C0000120B0000120B00000000000000000000FF00FFFF00FF - FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 - FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 - FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EB1908EB1908EB1908EB1908EB1908EB1908EB190 - 8EB1908EB1908EB1908EB1908EB1908EB1908EB1908EB1908EB1908EB1908EB1 - 908EB1908EB1908EB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE - FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE - FEFEFEFEFEFEFEFEB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE - FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE - FEFEFEFEFEFEFEFEB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEFCFBFEFCFBFEFCFBFEFCFBFEFCFBFEFCFBFEFC - FBFEFCFBFEFCFBFEFCFBFEFCFBFEFCFBFEFCFBFEFCFBFEFCFBFEFCFBFEFCFBFE - FCFBFEFCFBFEFCFBB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEFBF8FEFBF8FEFBF8FEFBF8007000FEFBF8FEFB - F8ADD5AA3699360070000070000070001C881CADD5AAFEFBF8FEFBF8FEFBF8FE - FBF8FEFBF8FEFBF8B1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEFAF6FEFAF6FEFAF6FEFAF600700045A14455AA - 5300700000700000700000700000700000700000700088C283FEFAF6FEFAF6FE - FAF6FEFAF6FEFAF6B1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEF8F3FEF8F3FEF8F3FEF8F30070000070000070 - 0000700000700000700045A043ADD4A6ADD4A665B162077807ADD4A6FEF8F3FE - F8F3FEF8F3FEF8F3B1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEF7F2FEF7F2FEF7F2FEF7F20070000070000070 - 0000700000700076B870FEF7F2FEF7F2FEF7F2FEF7F2D4E5CB369835FEF7F2FE - F7F2FEF7F2FEF7F2B1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEF6EFFEF6EFFEF6EFFEF6EF0070000070000070 - 000070001C881BFEF6EFFEF6EFFEF6EFFEF6EFFEF6EFFEF6EFE9EDDCFEF6EFFE - F6EFFEF6EFFEF6EFB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEF4EDFEF4EDFEF4EDFEF4ED0070000070000070 - 0000700000700088C07FFEF4EDFEF4EDFEF4EDFEF4EDFEF4EDFEF4EDFEF4EDFE - F4EDFEF4EDFEF4EDB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEF3EAFEF3EAFEF3EAFEF3EA0070000070000070 - 00007000007000007000007000FEF3EAFEF3EAFEF3EAFEF3EAFEF3EAFEF3EAFE - F3EAFEF3EAFEF3EAB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEF3E7FEF3E7FEF3E7FEF3E7FEF3E7FEF3E7FEF3 - E7FEF3E7FEF3E7007000007000007000007000007000007000007000FEF3E7FE - F3E7FEF3E7FEF3E7B1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEF2E6FEF2E6FEF2E6FEF2E6FEF2E6FEF2E6FEF2 - E6FEF2E6FEF2E6FEF2E688BF7B007000007000007000007000007000FEF2E6FE - F2E6FEF2E6FEF2E6B1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEF0E3FEF0E3FEF0E3FEF0E3E9E7D0FEF0E3FEF0 - E3FEF0E3FEF0E3FEF0E3FEF0E31C871A007000007000007000007000FEF0E3FE - F0E3FEF0E3FEF0E3B1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFEEFE1FEEFE1FEEFE1FEEFE1369631D4DEBCFEEF - E1FEEFE1FEEFE1FEEFE176B569007000007000007000007000007000FEEFE1FE - EFE1FEEFE1FEEFE1B1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFEEDEFFEEDEFFEEDEFFEEDEADCC9807780666AC - 59ADCC98ADCC98469D3E007000007000007000007000007000007000FFEEDEFF - EEDEFFEEDEFFEEDEB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFEDDCFFEDDCFFEDDCFFEDDCFFEDDC88BB760070 - 0000700000700000700000700000700000700056A44A469D3D007000FFEDDCFF - EDDCFFEDDCFFEDDCB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFEBDAFFEBDAFFEBDAFFEBDAFFEBDAFFEBDAADCA - 961C8618007000007000007000379530ADCA96FFEBDAFFEBDA007000FFEBDAFF - EBDAFFEBDAFFEBDAB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFEAD8FFEAD8FFEAD8FFEAD8FFEAD8FFEAD8FFEA - D8FFEAD8FFEAD8FFEAD8FFEAD8FFEAD8FFEAD8FFEAD8FFEAD8FFEAD8FFEAD8FF - EAD8FFEAD8FFEAD8B1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFE9D5FFE9D5FFE9D5FFE9D5FFE9D5FFE9D5FFE9 - D5FFE9D5FFE9D5FFE9D5FFE9D5FFE9D5FFE9D5FFE9D5FEE9D4FEE7D4FEE7D4FE - E7D4FEE7D4FEE7D4B1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFE7D3FFE7D3FFE7D3FFE7D3FFE7D3FFE7D3FFE7 - D3FFE7D3FFE7D3FFE7D3FFE7D3FFE7D3FEE6D1E5CEBAE1CAB7DDC7B4D9C4B1D5 - C0ADD1BCABD0BBAAB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFE6D0FFE6D0FFE6D0FFE6D0FFE6D0FFE6D0FFE6 - D0FFE6D0FFE6D0FFE6D0FFE6D0FFE6D0FBE3CCCCB7A3C2AD9AB7A492AD9A8AA3 - 918299897A9D897EB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFE5CFFFE5CFFFE5CFFFE5CFFFE5CFFFE5CFFFE5 - CFFFE5CFFFE5CFFFE5CFFFE5CFFFE5CFFFE5CFBDA996AC98889D8A7B8C7D6E7D - 6E62907F75BFA39CB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFE3CCFFE3CCFFE3CCFFE3CCFFE3CCFFE3CCFFE3 - CCFFE3CCFFE3CCFFE3CCFFE3CCFFE3CCFFE3CCFAF0E7FEFEFEF7F6F4E9E5E1ED - E0DACEB2ABB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFE3CAFFE3CAFFE3CAFFE3CAFFE3CAFFE3CAFFE3 - CAFFE3CAFFE3CAFFE3CAFFE3CAFFE3CAFFE3CAEBD8C6FEFEFEFEFEFCF2E7E2CE - B2ACB1908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFE2C7FFE2C7FFE2C7FFE2C7FFE2C7FFE2C7FFE2 - C7FFE2C7FFE2C7FFE2C7FFE2C7FFE2C7FFE2C7D9C1ACFEFEFEFEF8F4D0B6B0B1 - 908EFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFE1C5FFE1C5FFE1C5FFE1C5FFE1C5FFE1C5FFE1 - C5FFE1C5FFE1C5FFE1C5FFE1C5FFE1C5FFE1C5D1B7A1FEFAF7D0B7B1B1908EFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFE0C2FFE0C2FFE0C2FFE0C2FFE0C2FFE0C2FFE0 - C2FFE0C2FFE0C2FFE0C2FFE0C2FFE0C2FFE0C2D1BDABD0B7B1B1908EFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EFFDEC1FFDEC1FFDEC1FFDEC1FFDEC1FFDEC1FFDE - C1FFDEC1FFDEC1FFDEC1FFDEC1FFDEC1FAD9BDC0A69EB1908EFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFB1908EB1908EB1908EB1908EB1908EB1908EB1908EB190 - 8EB1908EB1908EB1908EB1908EB1908EB1908EB1908EFF00FFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} - ParentShowHint = False - ShowHint = True - OnClick = sbRefreshClick - end - object sbConnect: TSpeedButton - Left = 64 - Top = 2 - Width = 33 - Height = 39 - Glyph.Data = { - 9E020000424D9E0200000000000036000000280000000E0000000E0000000100 - 1800000000006802000000000000000000000000000000000000FFFFFFFFFFFF - FFFFFFFFFFFF79B17C2A882A0078000078002A892A79B27CFFFFFFFFFFFFFFFF - FFFFFFFF0000FFFFFFFFFFFFA2C8A600780027A73340D3544DEE6248EC5A34CE - 401BA420007800A2C8A6FFFFFFFFFFFF0000FFFFFFA0C8A50A7F0D51DE6D53E5 - 6F36BB4543CC5043CF4E41D14B41E44F33D33C057E06A0C8A5FFFFFF0000FFFF - FF0078005AE17A5EE97A1A9120ADCEAD228B2337B63E42C54A3EC4453ED84933 - D33C007800FFFFFF000073AD7733AB466EF69457DC691B9120FFFFFFF2F7F280 - B5801A921E3FC1463EC34340E34D1AA31F73AD7700002586275FDD8266EA835C - E1701D9323FFFFFFFFFFFFFFFFFFC9DEC943984327A32B3FD04933CE3E258627 - 00000078007FFDAD69EC8563E87A1F9527FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - 80B58029AD3145EB57007800000000780085FDB56FF18D6AF083229829FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFF80B5802BAE354AED5F00780000002085226CDE93 - 78F79A70F78D239A2DFFFFFFFFFFFFFFFFFFC9DEC9318F332DA83349D6593ED2 - 502085220000579E5C3EAD548BFDBA73FA90249A2EFFFFFFF2F7F271AD712098 - 274CCF5A4BCF5757EE7224A73064A46A0000FFFFFF00780079E7A384FCAE259A - 30ADCEAD258F2949C95957DB6851D6615AE7754DDD69007800FFFFFF0000FFFF - FF82B28C0D801377E7A27CEEA952C96D64E57F63E77D61E67B69F48E56E07608 - 7F0D82B28CFFFFFF0000FFFFFFFFFFFF7EB0890078003DAD5370E69A80FDB07A - FDA95BDC7E30AB430078007EB088FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFAA - C6BA559E5D19831C00780000780019831B499950FFFFFFFFFFFFFFFFFFFFFFFF - 0000} - ParentShowHint = False - ShowHint = True - OnClick = sbConnectClick - end - object sbUp: TSpeedButton - Left = 0 - Top = 3 - Width = 33 - Height = 38 - Glyph.Data = { - 360C0000424D360C000000000000360000002800000020000000200000000100 - 180000000000000C0000120B0000120B00000000000000000000FF00FF0B7FBA - 0B7FBA0B7FBA0B7FBA0B7FBAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 - FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBA1387BF - A9DCEF42B5E735A9DD2399D00B7FBA0B7FBA0B7FBA0B7FBA0B7FBAFF00FFFF00 - FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBA0B7FBA - A0D3E757C7F657C7F657C7F657C7F651C1F04ABBED35A9DD279DD10B7FBA0B7F - BA0B7FBA0B7FBA0B7FBAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBA279DD1 - 43A3CE90DAF757C7F657C7F657C7F657C7F657C7F657C7F657C7F656C6F451C1 - F045B7E935A9DD2398CF0B7FBA0B7FBA0B7FBA0B7FBA0B7FBAFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBA39AFD9 - 1688BFBFE9F857C7F657C7F657C7F657C7F657C7F657C7F657C7F657C7F657C7 - F657C7F657C7F657C7F656C6F451C1F045B7E931A4DA2398CF0B7FBA0B7FBA0B - 7FBA0B7FBA0B7FBAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBA37ACD8 - 188FC58FCAE260CBF657C7F657C7F657C7F657C7F657C7F657C7F657C7F657C7 - F657C7F657C7F657C7F657C7F657C7F657C7F657C7F657C7F656C6F451C1F041 - B4E52DA0D7168AC50B7FBAFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBA37ACD8 - 2EA4D43198C792DDF75ACBF65ACBF65ACBF65ACBF65ACBF65ACBF65ACBF65ACB - F65ACBF65ACBF65ACBF65ACBF65ACBF65ACBF65ACBF65ACBF65ACBF65ACBF65A - CBF652C4EF3CAFE10B7FBAFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBA37ACD8 - 3CADD71488BFC2EAF75ECFF65ECFF65ECFF65ECFF65ECFF65ECFF65ECFF65ECF - F65ECFF65ECFF65ECFF65ECFF65ECFF65ECFF65ECFF65ECFF65ECFF65ECFF65E - CFF657C9F247BAE90B7FBAFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBA39AFD9 - 3EADD91990C67DC9E273D8F763D3F663D3F663D3F663D3F663D3F663D3F663D3 - F663D3F663D3F663D3F663D3F663D3F663D3F663D3F663D3F663D3F663D3F663 - D3F65BCCF24CBFE935AADA0B7FBAFF00FFFF00FFFF00FFFF00FF0B7FBA39ADDA - 40AFDC34A9D72792C5A3E7F867D8F667D8F667D8F667D8F667D8F667D8F667D8 - F667D8F667D8F667D8F667D8F667D8F667D8F667D8F667D8F667D8F667D8F667 - D8F65FD1F24DC1E766D5F40F83BCFF00FFFF00FFFF00FFFF00FF0B7FBA3BAFDD - 41B0E041B0E01387BFC5E9F46ADCF76ADCF76ADCF76ADCF76ADCF76ADCF76ADC - F76ADCF76ADCF76ADCF76ADCF76ADCF76ADCF76ADCF76ADCF76ADCF76ADCF76A - DCF764D5F34DC1E76BDAF6289FCF0B7FBAFF00FFFF00FFFF00FF0B7FBA3CB0E0 - 43B2E243B2E22198CC62B4D77EE2F86EE0F76EE0F76EE0F76EE0F76EE0F76EE0 - F76EE0F76EE0F76EE0F76EE0F76EE0F76EE0F76EE0F76EE0F76EE0F76EE0F76E - E0F767D9F351C5E670E0F65DCFEB0B7FBAFF00FFFF00FFFF00FF0B7FBA3CB0E0 - 46B4E646B4E63CB0E02390C4C7F2F873E3F773E3F773E3F773E3F773E3F72D92 - 62004B000C651B26895262D0D073E3F773E3F773E3F773E3F773E3F773E3F773 - E3F76BDDF358CCE776E5F676E5F60B7FBAFF00FFFF00FFFF00FF0B7FBA3FB1E1 - 48B5E948B5E948B5E91287BF95CEE3A5EFFA76E7F876E7F876E7F876E7F876E7 - F8349C80035406004B00004E00136E2862D0D076E7F876E7F876E7F876E7F876 - E7F86FE1F358CCE77BEBF77BEBF742B8DC0B7FBAFF00FFFF00FF0B7FBA48B4E3 - 4AB6ED4AB6ED4AB6ED2DA0D71284BCA0D3E7D8F2F7DAF8FBD0F6FBB8F4FAB8F4 - FAA0F0FA65CBBC0D661B005B00006600004B003296637EEBF87EEBF87EEBF87E - EBF877E5F362D1E786EFF786EFF786EFF70F83BCFF00FFFF00FF0B7FBA53B7E5 - 4CB8EF4CB8EF4CB8EF4CB8EF39AAE11C92C90B7FBA0B7FBA0B7FBA0B7FBA0B7F - BA6EBADAC0E3EFA6E7E5035406036D03047B0500550028834391EEFA91EEFA91 - EEFA89E7F473D4E99FF3F89FF3F89FF3F839A3CE0B7FBAFF00FF0B7FBA5FBBE6 - 51BDF051BDF051BDF051BDF051BDF051BDF051BDF056C4F357C6F347BAE941B4 - E52DA3D41287BF79BFDD96C6AB004E00118C120E8B0F0156012D8343A5EFFAA5 - EFFA9DE9F486D7E9BBF6F8BBF6F8BBF6F899E1EE0B7FBAFF00FF0B7FBA83CFEF - 56C4F256C4F256C4F256C4F256C4F256C4F256C4F256C4F256C4F256C4F256C4 - F256C4F24BBBEA188FC539A3CE16651A0C780F229C231B961C005701499863BA - F2FAB2EDF89DD8E9D8F8FAD8F8FAD8F8FAD8F8FA0B7FBAFF00FF0B7FBAAAE5F8 - 5CCAF35CCAF35CCAF35CCAF35CCAF35CCAF35CCAF35CCAF35CCAF35CCAF35CCA - F35CCAF35CCAF35CCAF32DA3D409694C06680637AB3B37AB3B1C9521004B0091 - CFBDBFF2FA9DD8E9E0F8FAE0F8FAE0F8FAE0F8FA72C0DD0B7FBA0B7FBAAAE5F8 - 62CFF362CFF362CFF362CFF362CFF362CFF362CFF362CFF362CFF362CFF362CF - F362CFF362CFF362CFF35ECFF6349C80005A0150B8534FBC554BBD540C780F1C - 6C25B4DCEBC5E3EFF7FBFCF7FBFCF7FBFCEFFBFBEFFBFB0B7FBA0B7FBAAFE9F8 - 68D5F468D5F468D5F468D5F468D5F468D5F468D5F468D5F468D5F468D5F468D5 - F468D5F468D5F468D5F468D5F446B0A6015C0267C96F67C96F67C96F34B64201 - 510108758C0B7FBA0B7FBA0B7FBA0B7FBA0B7FBA0B7FBA0B7FBA0B7FBAB2EDF8 - 6DDCF46DDCF46DDCF46DDCF46DDCF46DDCF46DDCF46DDCF46DDCF46DDCF46DDC - F46DDCF46DDCF46DDCF46DDCF42B8F6003670481D38880D5897FD88A6AD47908 - 740F2486510B7FBAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBAB2EDF8 - 74E2F674E2F674E2F674E2F674E2F674E2F674E2F674E2F674E2F674E2F674E2 - F674E2F674E2F674E2F674E2F6136E2818842199E0A199E0A197E3A397E3A322 - A131075B0F0B7FBAFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBABFF2FA - 79E9F679E9F679E9F679E9F679E9F679E9F679E9F679E9F679E9F679E9F6004B - 00005200005A01015C02025E03025E034AB653B2EABAB2EABAAFEBB8ACEDBA6F - E2882C9336004B00004B00004B00004B00FF00FFFF00FFFF00FF0B7FBAA9DCEF - 87EFF77FEEF77FEEF77FEEF77FEEF77FEEF77FEEF77FEEF77FEEF77FEEF7BBF4 - FA004F0072BA74D1EFD4D1EFD4D0F0D4D0F0D4CBF2D1C9F2D0C5F3CFC5F3CFBF - F7CEBFF7CEBFF7CE5DD47A025403FF00FFFF00FFFF00FFFF00FFFF00FF0B7FBA - C4F7FA80EFF780EFF780EFF780EFF780EFF780EFF780EFF780EFF73EB5D80B7F - BA0B7FBA004F0076BF7AD5F3D9D5F3D9D7F4DCD8F6DDD9F7E0D9F7E0D8F8E0D5 - FAE0D3FBE05DD47A025403FF00FFFF00FFFF00FFFF00FFFF00FFFF00FF0B7FBA - 62B4D79DF3F880EFF780EFF780EFF780EFF780EFF780EFF780EFF71990C60B7F - BAFF00FFFF00FF0050017AC481D7F4DCD8F6DDD9F7E0DAF8E1DCFAE3DDFBE5DE - FCE75ABD6C025403FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - 0B7FBA62B4D76EBADA8FCAE29DD8E996D8EA96D8EAC7F2F87DC9E20B7FBAFF00 - FFFF00FFFF00FFFF00FF0151017FC988D9F7E0DAF8E1DCFAE3DDFBE5D4FCE042 - B156004B00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FF0B7FBA0B7FBA0B7FBA0B7FBA0B7FBA0B7FBA0B7FBA0B7FBAFF00FFFF00 - FFFF00FFFF00FFFF00FFFF00FF0152024FB15CDCFAE3DDFBE5D4FCE03BB15000 - 4B00FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 - FFFF00FFFF00FFFF00FFFF00FFFF00FF004B0050AD5CD4FCE03BB150004B00FF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 - FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF004B00188421004B00FF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF - FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 - FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF004B00FF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} - ParentShowHint = False - ShowHint = True - OnClick = sbUpClick - end - object Label1: TLabel - Left = 208 - Top = 8 - Width = 50 - Height = 13 - Caption = 'Password:' - end - object Label2: TLabel - Left = 208 - Top = 32 - Width = 26 - Height = 13 - Caption = 'User:' - end - object edtUser: TEdit - Left = 264 - Top = 0 - Width = 121 - Height = 21 - TabOrder = 0 - Text = 'anonymous' - end - object edtPassword: TEdit - Left = 264 - Top = 24 - Width = 121 - Height = 21 - TabOrder = 1 - Text = 'anonymous' - end - end - end - end - end - object PanelTop: TPanel - Left = 0 - Top = 0 - Width = 973 - Height = 110 - Align = alTop - Alignment = taLeftJustify - TabOrder = 2 - object MainToolBar: TToolBar - Left = 1 - Top = 1 - Width = 971 - Height = 36 - Cursor = crHandPoint - AutoSize = True - ButtonHeight = 36 - ButtonWidth = 69 - EdgeBorders = [ebRight] - Images = ilToolBar - ParentShowHint = False - ShowCaptions = True - ShowHint = True - TabOrder = 0 - Transparent = True - object ToolbtnBack: TToolButton - Left = 0 - Top = 0 - Hint = 'Navigate Back' - Caption = 'Back' - Enabled = False - ImageIndex = 4 - ParentShowHint = False - ShowHint = True - OnClick = ToolbtnBackClick - end - object ToolBtnForward: TToolButton - Left = 69 - Top = 0 - Hint = 'Navigate Forward' - AutoSize = True - Caption = 'Forward' - Enabled = False - ImageIndex = 3 - ParentShowHint = False - ShowHint = True - OnClick = ToolBtnForwardClick - end - object ToolBtnStop: TToolButton - Left = 120 - Top = 0 - Hint = 'Stop loading' - Caption = ' Stop' - Enabled = False - ImageIndex = 0 - ParentShowHint = False - ShowHint = True - OnClick = ToolBtnStopClick - end - object ToolButton10: TToolButton - Left = 189 - Top = 0 - Width = 8 - Caption = 'ToolButton10' - ImageIndex = 10 - Style = tbsSeparator - end - object ToolBtnRefresh: TToolButton - Left = 197 - Top = 0 - Hint = 'Refresh Active Tab' - AutoSize = True - Caption = 'Refresh' - ImageIndex = 2 - ParentShowHint = False - ShowHint = True - OnClick = ToolBtnRefreshClick - end - object ToolBtnHome: TToolButton - Left = 246 - Top = 0 - Hint = 'Go Home' - Caption = 'Home' - ImageIndex = 1 - OnClick = ToolBtnHomeClick - end - object ToolButton11: TToolButton - Left = 315 - Top = 0 - Width = 8 - Caption = 'ToolButton11' - ImageIndex = 10 - Style = tbsSeparator - end - object ToolBtnSearch: TToolButton - Left = 323 - Top = 0 - Hint = 'Search...' - AutoSize = True - Caption = 'Search' - ImageIndex = 5 - ParentShowHint = False - ShowHint = True - OnClick = ToolBtnSearchClick - end - object ToolBtnAccesories: TToolButton - Left = 367 - Top = 0 - Hint = 'Show Favorites' - AutoSize = True - Caption = 'Accessories' - ImageIndex = 8 - ParentShowHint = False - ShowHint = True - Style = tbsCheck - OnClick = ToolBtnAccesoriesClick - end - object tbBlock: TToolButton - Left = 434 - Top = 0 - Hint = 'Block Popups' - AutoSize = True - Caption = 'Block Popups' - ImageIndex = 9 - Style = tbsCheck - end - object Spacer: TToolButton - Left = 507 - Top = 0 - Width = 10 - Caption = 'Spacer' - ImageIndex = 10 - Style = tbsSeparator - end - object PanelSecurity: TPanel - Left = 517 - Top = 0 - Width = 298 - Height = 36 - Align = alLeft - TabOrder = 0 - object GroupBox1: TGroupBox - Left = 1 - Top = 1 - Width = 296 - Height = 34 - Align = alLeft - Caption = 'Page Security Status:' - TabOrder = 0 - object imgZone: TImage - Left = 56 - Top = 16 - Width = 25 - Height = 17 - end - object ImgSSL: TImage - Left = 128 - Top = 16 - Width = 25 - Height = 19 - Picture.Data = { - 055449636F6E0000010001001010000001002000680400001600000028000000 - 1000000020000000010020000000000000000000130B0000130B000000000000 - 0000000000000000000000000D162735131D327C111D337E111D337D111D337D - 111D337D111D337D111D337D111D337D111E337D121E337F0B101B5100000110 - 000000000000000000000000345B8BDC3095D3FF1D92DBFF1D8EDAFF1B8BDAFF - 1987DAFF1783DAFF1680DAFF137CDAFF1179DBFF1274D4FF1E487EE80302022C - 0000000000000000000000003C7AADF525C7FFFF1ABCFFFF18B6FFFF15B1FFFF - 12ABFFFF0FA5FFFF0CA0FFFF099BFFFF0695FFFF0393FFFF165CA6FA04000032 - 0000000000000000000000003977AAF023BFFFFF1EBDFFFF1CB8FFFF19B3FFFF - 16AEFFFF14A9FFFF11A3FFFF0E9EFFFF0C99FFFF0997FFFF175DA3F604000031 - 0000000000000000000000003D7BA9F029C9FFFF21C3FFFF22C3FFFF21C1FFFF - 20C0FFFF20BEFFFF1BB6FFFF13A7FFFF0F9FFFFF0C9FFFFF1960A2F604000031 - 0000000000000000000000003F84AFF032D9FFFF2AD3FFFF2BD3FFFF2BD3FFFF - 2BD3FFFF2BD4FFFF2CD4FFFF26CBFFFF17B0FFFF0FA4FFFF1B66A7F604000031 - 0000000000000000000000004396C0F037E9FFFF30E3FFFF31E3FFFF31E3FFFF - 31E3FFFF31E3FFFF31E3FFFF32E5FFFF2EDFFFFF18BAFFFF1B73B7F604020332 - 00000000000000000000000050A7D0FA5BFDFFFF46F7FFFF49F8FFFF4CFAFFFF - 4CF9FFFF4CF8FFFF4CF9FFFF49F8FFFF49FAFFFF47F3FFFF2C91CAFF0203072E - 0000000000000000000000003393D2A95FC1E5F46FD1EAFF68CAE6FF5EC9EAEF - 5ECFF3E85CC9EAE85DCAECEA67CAE6FE6ED0EAFF5CC5E8F72A7CADB10104080D - 0000000000000000000000001F8DD80354759A92CACDD6FF9C9DA9FC21283866 - 104770232997E4232478B630838491F2C2C9D4FF404556A9020E170700000000 - 000000000000000000000000000000008564637DF1EDEBFFBBAAA8FC200F0B47 - 000000000000000006131D0594807CEFEAE4E3FF473330990000000000000000 - 000000000000000000000000000000008C6D6C7FF2F2F2FFC6B9B9FE261A1A60 - 00000000000000001A0C0A1FA69797F5EDEAEAFF493A3A970000000000000000 - 000000000000000000000000000000008A6B6B53DED7D7FFF0EDEDFF756262C3 - 120B0B430C07072D6B5555A9D7D2D2FFE2D8D8FF3D2E2E6A0000000000000000 - 000000000000000000000000000000008C6D6D0CB29C9CD4FFFFFFFFE7E2E2FF - B1A1A1EDAB9B9BEAD7D1D1FFFCFDFDFFA99696DD100B0B1A0000000000000000 - 00000000000000000000000000000000000000009A7C7C3AC4B3B3E4F8F7F7FF - FEFFFFFFFBFCFCFFFAF7F7FFC6B3B3EA3F323245000000000000000000000000 - 000000000000000000000000000000000000000000000000A1848427B29A9A93 - C6B5B5CDC8B7B7CF9E89899B5343433200000000000000000000000000000000 - 00000000FFFF0000C0030000C0030000C0030000C0030000C0030000C0030000 - C0030000C0030000E3C70000F3C70000F3C70000F18F0000F00FFFFFF81FFFFF - FC3FFFFF} - Visible = False - end - object lblZone: TLabel - Left = 8 - Top = 16 - Width = 3 - Height = 13 - ParentShowHint = False - ShowHint = True - end - object lblSSL: TLabel - Left = 104 - Top = 16 - Width = 3 - Height = 13 - end - object lblLevel: TLabel - Left = 160 - Top = 16 - Width = 3 - Height = 13 - end - object imgUn: TImage - Left = 104 - Top = 16 - Width = 17 - Height = 17 - Picture.Data = { - 055449636F6E0000010001001010000001002000680400001600000028000000 - 1000000020000000010020000000000000000000130B0000130B000000000000 - 0000000000000000090F1A281B2C4B991F3A62B41D385FB01D385FB01D385FB0 - 1D385FB01D385FB01D375FB01D375FB01D375FB01E3861B31728459F060A1245 - 0000000500000000294572913E9BD4FF1FA8F0FF1A9FEBFF199BEBFF1797EBFF - 1594EBFF128FEBFF118BEBFF0F88EBFF0D84EBFF0881F0FF1572D2FF192D4D9E - 00000009000000002B49779738B6EEFF1BC2FFFF1BBAFFFF18B5FFFF15B0FFFF - 13AAFFFF10A5FFFF0EA1FFFF0B9CFFFF0997FFFF0496FFFF0B84EBFF1A2F51A2 - 0000000A000000002B49769638B2EFFF1CC0FFFF1FBDFFFF1DBAFFFF1BB6FFFF - 19B2FFFF16ADFFFF12A6FFFF0FA0FFFF0E9DFFFF0A9CFFFF1089EBFF192F50A1 - 00000009000000002B4975963FBFEEFF24CCFFFF25C8FFFF25C8FFFF25C7FFFF - 25C7FFFF25C7FFFF22C3FFFF1AB4FFFF12A3FFFF0DA2FFFF148FEBFF192F50A1 - 00000009000000002C55869646CDF1FF2DDDFFFF2ED8FFFF2ED8FFFF2ED9FFFF - 2ED9FFFF2ED9FFFF2FDAFFFF2FDAFFFF26CBFFFF14AFFFFF1596EFFF1A375BA1 - 00000009000000002E6CA29751E1F5FF33F1FFFF34ECFFFF34ECFFFF34ECFFFF - 34ECFFFF34ECFFFF34ECFFFF34ECFFFF35EFFFFF2CE4FFFF1EAFF6FF1B4770A2 - 0000000A000000002D7FBE906BDBF2FF6AFFFFFF60FEFFFF61FEFFFF61FDFFFF - 5EF5FEFF5EF4FDFF5EF5FEFF58F6FFFF52F0FEFF5AFBFFFF4FD7FFFF1C588894 - 00000000000000002A8FD5240000000000000000000000000000000000000000 - 3698D880369FE37E3797D6815F8AABDD86B3CFFF6A8FADF326527390061C2A20 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000004F5D77018A655FB7D7CFCBFF997D7AE01005042400000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000005000001746161BBDAD9D9FF9D8B8BE3130B0B3100000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000140C0C1B8E7B7BDEECEDEDFF998787DB0B05052200000000 - 0000000000000000000000000000000000000000998604FF998604FF998604FF - 2C2020602F2323547B6565BBCFC8C8FFF4F0F0FF756262AF0000000600000000 - 0000000000000000000000000000000093747437998604FFFFFFFFFFF1EEEEFF - CFC3C3FDCCC0C0FDE6E4E4FFFCFCFCFFC0ADADEE312525400000000000000000 - 00000000000000000000000000000000000000009A7E7E44C1AEAEE0ECE7E7FF - FDFDFDFFFFFFFFFFF1EBEBFFB9A6A6E040333351000000000000000000000000 - 000000000000000000000000000000000000000000000000A3868616AA8F8F62 - BAA2A295837373937562625E5647471400000000000000000000000000000000 - 00000000C0030000800100008001000080010000800100008001000080010000 - 80010000FC830000FFC78044E3C70000E3C70000E1870000F00F0000F81F0000 - FE7F0000} - Visible = False - end - end - end - end - object PanelMiddle: TPanel - Left = 1 - Top = 37 - Width = 971 - Height = 36 - Align = alTop - TabOrder = 1 - object PanelSearch: TPanel - Left = 754 - Top = 1 - Width = 216 - Height = 34 - Align = alRight - TabOrder = 0 - DesignSize = ( - 216 - 34) - object spdBtnGoogleSearch: TSpeedButton - Left = 167 - Top = 7 - Width = 41 - Height = 18 - Hint = 'Navigate to a Webpage' - Anchors = [akTop, akRight] - Caption = 'GO' - Flat = True - Glyph.Data = { - AA030000424DAA03000000000000360000002800000011000000110000000100 - 1800000000007403000000000000000000000000000000000001FFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFF44B53C44B53C44B53C44B53C44B53C - 44B53C44B53C44B53C44B53C44B53C44B53C44B53C44B53C44B53C44B53C001A - DC00FFFFFFD65B37FFF3FFE3FFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFBF5FFFFFFFFF8FFF4F4FFFFFFFF00FFFFFFD26B15FFFFEEFF - FFF7FFFFF7FFF6E4BC73578F251AA02C13C53113BF3F16CB2A0EB4421DA98462 - F6F6E4FFFFFF00000000FFFFFFDB5F19F4FFFEE1FFF8FCE6E08B2628A4160BD9 - 8F89FFF9E7F3FFFCF3FFEFFFFFEEFAD2AF561300FFFFFF00000000000000FFFF - FFF7561FFFFFFFFFF9E7C52E209F120FFFD7BCFBFFF7FFFFFFEDF4FFFFFFFFFF - FAFBFFE5D0801F15FFFFFFFFFFFFFFFFFF00FFFFFFD96022EAFFF4D6A47ABD25 - 00C78F7CF6FFEDFFFFF8FFF8FFF4FFFEFECEC2B13731AA2A15B63325D08F86F4 - FFFE1924D200FFFFFFD15E1BFFFFF3DB6E42962200F4FBF8FFFFFFFFF1F7FFFF - FFFFFFF3F6FFE8E3DBC4F9EACAFFE5D0F2D3CAE9FFFD0023C700FFFFFFE16114 - FFFFEECB5B26B0491CF8FAFFF6F0FFF4FFFEFFFFF3FFF5FFF8FFFEF8FFFEFFFF - F8FFFFFFE9FFFDD9F8FF2F20D600FFFFFFD65327FFFFEEB96E22B15A1CE9FFFD - F8FFFEFFF8FFFFF5FFFFFFFFFFF8FFFAF5FFFFFFFFF4FFFEEAFFF4F8FAFF1218 - DD00FFFFFFE85821FFFFF7E99A6FB5381CFFF5FFF8FFFEF4FFFEFFF8FFFFFFF3 - FFFFF3F4F4FFFFFFF8F4FFFEEDFFF7FFF8FF0E14CB00FFFFFFE7681DFFFBF5DF - 9981933B17F9D9D3FFFFF7E6FFF8F7FFF0E1FFF8F3FFF4FFF5FFFFFAFBFFFFFF - F3FFF4E9FFFD002ACD00FFFFFFCA5C20E3FFFEFFFFF8D88565993523FFF9EAE3 - FFFEEFFEFAFFFFFFFFFFF8FFFFFFF3DCCDD4D2CAF3FFF4F3F9FF0F28D200FFFF - FFCF6315F8FFFEF6FFEDFFF5C1CA7446BA3313FFEBDDFFFFE9FFFFFFFFFFE9FF - D7C98C381C743029FFEEEEFFF3FF0710D100FFFFFFF65C15FFFFF8FFFFF8FFFF - EEFFF2D7E99E7EAF685AB13A24C6321AB13604B86031EFAC6FF0DEBFF3FFF4E6 - F8FF0026CE00FFFFFFD85B2FEBFAF6FFFFFFF7F5FBE3FFFEFFFFE9FFFFF8FFF6 - E4ECDFE1FFFFF3F8F0F0FFFFF8FFF5FFF8FAFFF9F1FF222ECC00FFFFFFE86307 - 4AB65639B64855AD4F45B34D50B84339B35541B14D52B54D44B53C3DB8504AB9 - 473BB44C40B72D44B53C44B53C00} - ParentShowHint = False - ShowHint = True - OnClick = spdBtnGoogleSearchClick - end - object edtSearch: TEdit - Left = 8 - Top = 4 - Width = 161 - Height = 21 - TabOrder = 0 - Text = 'Search In Google' - OnDblClick = edtSearchDblClick - end - end - object PaneAddress: TPanel - Left = 1 - Top = 1 - Width = 753 - Height = 34 - Align = alClient - TabOrder = 1 - DesignSize = ( - 753 - 34) - object btnGo: TSpeedButton - Left = 443 - Top = 5 - Width = 41 - Height = 22 - Hint = 'Navigate to a Webpage' - Caption = 'GO' - Flat = True - Glyph.Data = { - 9E020000424D9E0200000000000036000000280000000E0000000E0000000100 - 1800000000006802000000000000000000000000000000000000FFFFFFFFFFFF - FFFFFFFFFFFF79B17C2A882A0078000078002A892A79B27CFFFFFFFFFFFFFFFF - FFFFFFFF0000FFFFFFFFFFFFA2C8A600780027A73340D3544DEE6248EC5A34CE - 401BA420007800A2C8A6FFFFFFFFFFFF0000FFFFFFA0C8A50A7F0D51DE6D53E5 - 6F36BB4543CC5043CF4E41D14B41E44F33D33C057E06A0C8A5FFFFFF0000FFFF - FF0078005AE17A5EE97A1A9120ADCEAD228B2337B63E42C54A3EC4453ED84933 - D33C007800FFFFFF000073AD7733AB466EF69457DC691B9120FFFFFFF2F7F280 - B5801A921E3FC1463EC34340E34D1AA31F73AD7700002586275FDD8266EA835C - E1701D9323FFFFFFFFFFFFFFFFFFC9DEC943984327A32B3FD04933CE3E258627 - 00000078007FFDAD69EC8563E87A1F9527FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - 80B58029AD3145EB57007800000000780085FDB56FF18D6AF083229829FFFFFF - FFFFFFFFFFFFFFFFFFFFFFFF80B5802BAE354AED5F00780000002085226CDE93 - 78F79A70F78D239A2DFFFFFFFFFFFFFFFFFFC9DEC9318F332DA83349D6593ED2 - 502085220000579E5C3EAD548BFDBA73FA90249A2EFFFFFFF2F7F271AD712098 - 274CCF5A4BCF5757EE7224A73064A46A0000FFFFFF00780079E7A384FCAE259A - 30ADCEAD258F2949C95957DB6851D6615AE7754DDD69007800FFFFFF0000FFFF - FF82B28C0D801377E7A27CEEA952C96D64E57F63E77D61E67B69F48E56E07608 - 7F0D82B28CFFFFFF0000FFFFFFFFFFFF7EB0890078003DAD5370E69A80FDB07A - FDA95BDC7E30AB430078007EB088FFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFAA - C6BA559E5D19831C00780000780019831B499950FFFFFFFFFFFFFFFFFFFFFFFF - 0000} - ParentShowHint = False - ShowHint = True - OnClick = btnGoClick - end - object ProgressBar1: TProgressBar - Left = 496 - Top = 5 - Width = 258 - Height = 20 - Anchors = [akLeft, akTop, akRight, akBottom] - TabOrder = 0 - Visible = False - end - object IEAddress1: TIEAddress - Left = 3 - Top = 5 - Width = 430 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - ArrowColor = clNavy - BorderColor = clInactiveCaptionText - ButtonPressedColor = clInactiveCaptionText - EmbeddedWB = EmbeddedWB1 - HintColor = clYellow - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 1 - Themes = tmXP - UseAppIcon = True - end - end - end - object LinksBar1: TLinksBar - Left = 1 - Top = 86 - Width = 971 - Height = 23 - Align = alBottom - AutoSize = True - ButtonHeight = 21 - ButtonWidth = 65 - Caption = 'LinksBar1' - ParentShowHint = False - PopupMenu = PopupMenu1 - ShowCaptions = True - ShowHint = True - TabOrder = 2 - About = 'LinksBar by bsalsa : bsalsa@gmail.com' - MaxCaptionLength = 15 - ShowImages = False - WebBrowser = EmbeddedWB1 - end - end - object stBar: TStatusBar - Left = 0 - Top = 705 - Width = 973 - Height = 19 - Panels = < - item - Width = 500 - end - item - Width = 50 - end - item - Width = 50 - end - item - Width = 50 - end - item - Width = 50 - end> - end - object MainMenu1: TMainMenu - Left = 144 - Top = 240 - object MMFile: TMenuItem - Caption = '&File' - object Open: TMenuItem - Caption = '&Open Page Dialog...' - OnClick = OpenClick - end - object LoadFromStream: TMenuItem - Caption = 'Load From Stream' - OnClick = LoadFromStreamClick - end - object LoadFromStrings: TMenuItem - Caption = 'Load From Strings' - OnClick = LoadFromStringsClick - end - object N16: TMenuItem - Caption = '-' - end - object SavePageToStrings1: TMenuItem - Caption = 'Save Page To Strings' - OnClick = SavePageToStrings1Click - end - object SavePageToStream: TMenuItem - Caption = 'Save Page To Stream' - OnClick = SavePageToStreamClick - end - object SaveThePageTofile1: TMenuItem - Caption = 'Save Page to file' - OnClick = SaveThePageTofile1Click - end - object miSave: TMenuItem - Caption = 'Save Dialog' - OnClick = miSaveClick - end - object SaveAs1: TMenuItem - Caption = '&Save page As...' - OnClick = SaveAs1Click - end - object Savepagetext: TMenuItem - Caption = 'Save page text' - OnClick = SavepagetextClick - end - object SaveAllImages: TMenuItem - Caption = 'Save Page Images' - OnClick = SaveAllImagesClick - end - object N1: TMenuItem - Caption = '-' - end - object Print: TMenuItem - Caption = '&Print...' - OnClick = PrintClick - end - object PrintPreview1: TMenuItem - Caption = 'Print Previe&w' - OnClick = PrintPreview1Click - end - object PageSetup1: TMenuItem - Caption = 'Page &Setup' - OnClick = PageSetup1Click - end - object PrintWithOptions: TMenuItem - Caption = 'Print With Options' - OnClick = PrintWithOptionsClick - end - object N3: TMenuItem - Caption = '-' - end - object OfflineMode1: TMenuItem - Caption = 'Work Offline' - OnClick = OfflineMode1Click - end - object Exit1: TMenuItem - Caption = '&Exit' - OnClick = Exit1Click - end - end - object MMEdit: TMenuItem - Caption = '&Edit' - object Cut1: TMenuItem - Caption = 'Cut To Clipboard' - OnClick = Cut1Click - end - object Pastefromclipboard1: TMenuItem - Caption = 'Paste from Clipboard' - OnClick = Pastefromclipboard1Click - end - object Copy: TMenuItem - Caption = 'Cop&y to Clipboard' - OnClick = CopyClick - end - object SelectAll: TMenuItem - Caption = 'Select &All' - OnClick = SelectAllClick - end - object N5: TMenuItem - Caption = '-' - end - object FindDialog: TMenuItem - Caption = '&Find Dialog' - OnClick = FindDialogClick - end - end - object MMView: TMenuItem - Caption = '&View' - object ViewSourceHtml: TMenuItem - Caption = '&Page Source (Html)' - OnClick = ViewSourceHtmlClick - end - object PageSourceText: TMenuItem - Caption = 'Page Source (Text)' - OnClick = PageSourceTextClick - end - object PageSourceHtmlasstrings1: TMenuItem - Caption = 'Page Source (Html As Strings)' - OnClick = PageSourceHtmlasstrings1Click - end - object PageSourceTextasstrings1: TMenuItem - Caption = 'Page Source (Text A Strings)' - OnClick = PageSourceTextasstrings1Click - end - object ViewPageImagesAsAList1: TMenuItem - Caption = 'View Page Images As A List' - end - object N6: TMenuItem - Caption = '-' - end - object CharacterSet1: TMenuItem - Caption = 'Encoding' - object CharSetAutomatic1: TMenuItem - Caption = 'Automatic' - Checked = True - GroupIndex = 1 - Hint = '_autodetect_all' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object N7: TMenuItem - Caption = '-' - GroupIndex = 1 - RadioItem = True - end - object CentralEuropeanISO1: TMenuItem - Caption = 'Central European (ISO)' - GroupIndex = 1 - Hint = 'iso-8859-2' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object WesternEuropeanISO1: TMenuItem - Caption = 'Western European (ISO)' - GroupIndex = 1 - Hint = 'iso-8859-1' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object UnicodeUTF1: TMenuItem - Caption = 'Unicode (UTF-8)' - GroupIndex = 1 - Hint = 'utf-8' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object N8: TMenuItem - Caption = '-' - GroupIndex = 1 - RadioItem = True - end - object ArabicWindows1: TMenuItem - Caption = 'Arabic (Windows)' - GroupIndex = 1 - Hint = 'windows-1256' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object BalticWindows1: TMenuItem - Caption = 'Baltic (Windows)' - GroupIndex = 1 - Hint = 'windows-1257' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object ChineseSimplifiedGB1: TMenuItem - Caption = 'Chinese Simplified (GB2312)' - GroupIndex = 1 - Hint = 'gb2312' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object ChineseTraditionalBIG1: TMenuItem - Caption = 'Chinese Traditional (Big5)' - GroupIndex = 1 - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object GreekWindows1: TMenuItem - Caption = 'Greek (Windows)' - GroupIndex = 1 - Hint = 'windows-1253' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object Korean1: TMenuItem - Caption = 'Korean (ISO)' - GroupIndex = 1 - Hint = 'iso-2022-kr' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object haiWindows1: TMenuItem - Caption = 'Thai (Windows)' - GroupIndex = 1 - Hint = 'windows-874' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - object urkishWindows1: TMenuItem - Caption = 'Turkish (Windows)' - GroupIndex = 1 - Hint = 'windows-1254' - RadioItem = True - OnClick = CharSetAutomatic1Click - end - end - object Zoom1: TMenuItem - Caption = 'Text Size' - OnClick = Zoom1Click - object Largest1: TMenuItem - Tag = 4 - Caption = 'Largest' - OnClick = Smallest1Click - end - object Large1: TMenuItem - Tag = 3 - Caption = 'Large' - OnClick = Smallest1Click - end - object Medium1: TMenuItem - Tag = 2 - Caption = 'Medium' - OnClick = Smallest1Click - end - object Small1: TMenuItem - Tag = 1 - Caption = 'Small' - OnClick = Smallest1Click - end - object Smallest1: TMenuItem - Caption = 'Smallest' - OnClick = Smallest1Click - end - end - object N4: TMenuItem - Caption = '-' - end - object ScrollToTheTop1: TMenuItem - Caption = 'Scroll to the top' - OnClick = ScrollToTheTop1Click - end - object ScrolToPosition1: TMenuItem - Caption = 'Scroll To Position' - OnClick = ScrolToPosition1Click - end - object Scrolltothebottom1: TMenuItem - Caption = 'Scroll to the bottom' - OnClick = Scrolltothebottom1Click - end - object N12: TMenuItem - Caption = '-' - end - object ViewHidethelinksbar1: TMenuItem - Caption = 'View/Hide the links bar' - OnClick = ViewHidethelinksbar1Click - end - end - object MMNavigation: TMenuItem - Caption = 'Navigation' - object GoHome1: TMenuItem - Caption = 'Go Home' - OnClick = ToolBtnHomeClick - end - object GoBack1: TMenuItem - Caption = 'Go Back' - OnClick = ToolbtnBackClick - end - object GoForward1: TMenuItem - Caption = 'Go Forward' - OnClick = ToolBtnForwardClick - end - object GoAboutBlank1: TMenuItem - Caption = 'Go About : Blank' - OnClick = GoAboutBlank1Click - end - object N9: TMenuItem - Caption = '-' - end - object Stop1: TMenuItem - Caption = 'Stop' - OnClick = ToolBtnStopClick - end - object Refresh1: TMenuItem - Caption = 'Refresh' - OnClick = ToolBtnRefreshClick - end - object N11: TMenuItem - Caption = '-' - end - object GoDowloadMasked1: TMenuItem - Caption = 'Go Dowload Masked' - OnClick = GoDowloadMasked1Click - end - object GoWithQueryDetails1: TMenuItem - Caption = 'Go With Query Details' - OnClick = GoWithQueryDetails1Click - end - object Godownloadafile1: TMenuItem - Caption = 'Go And Download A File' - OnClick = Godownloadafile1Click - end - end - object MMTools: TMenuItem - Caption = '&Tools' - object EmbeddedWBOptions1: TMenuItem - Caption = 'EmbeddedWB Functions' - object FillFormWithPersonalDetails1: TMenuItem - Caption = 'Fill Form With Personal Details' - OnClick = FillFormWithPersonalDetails1Click - end - object GetDefaultWebBrowserFromResistry1: TMenuItem - Caption = 'Get Default Web Browser From Resistry' - OnClick = GetDefaultWebBrowserFromResistry1Click - end - object CreateAShortCutOnYourDeskTop1: TMenuItem - Caption = 'Create A ShortCut On Your Desktop' - OnClick = CreateAShortCutOnYourDeskTop1Click - end - object checkOnlineStatus2: TMenuItem - Caption = 'Check Online Status' - OnClick = checkOnlineStatus2Click - end - object GetHostAndIP1: TMenuItem - Caption = 'Get Host And IP' - OnClick = GetHostAndIP1Click - end - object GetSpecialFolderPath1: TMenuItem - Caption = 'Get Special Folder Path' - OnClick = GetSpecialFolderPath1Click - end - object N20: TMenuItem - Caption = '-' - end - object SetDesignMode: TMenuItem - Caption = 'Set Design mode on/off' - OnClick = SetDesignModeClick - end - end - object Security1: TMenuItem - Caption = 'Security' - object AddToRestrictedZoneList: TMenuItem - Caption = 'Add To Restricted Zone List' - OnClick = AddToRestrictedZoneListClick - end - object CheckIfInResrictedZoneList1: TMenuItem - Caption = 'Check If In Resricted Zone List' - OnClick = CheckIfInResrictedZoneList1Click - end - object N18: TMenuItem - Caption = '-' - end - object AddToTrustedListZoneList1: TMenuItem - Caption = 'Add To Trusted List Zone List' - OnClick = AddToTrustedListZoneList1Click - end - object CheckIfInTrustedZoneList1: TMenuItem - Caption = 'Check If In Trusted Zone List' - OnClick = CheckIfInTrustedZoneList1Click - end - object N19: TMenuItem - Caption = '-' - end - object CheckSiteSecurityLevel1: TMenuItem - Caption = 'Check Site Security Level' - OnClick = CheckSiteSecurityLevel1Click - end - object CheckSiteSecurityZone1: TMenuItem - Caption = 'Check Site Security Zone' - OnClick = CheckSiteSecurityZone1Click - end - object CheckPageSecurityEncryption1: TMenuItem - Caption = 'Check Page Security Encryption' - OnClick = CheckPageSecurityEncryption1Click - end - end - object FavoritesTools1: TMenuItem - Caption = 'Favorites Tools' - object OpenOtherBrowsersFavorites1: TMenuItem - Caption = 'Open Other Browsers Favorites' - end - object ImportExportWizard1: TMenuItem - Caption = 'Show Import / Export Wizard' - OnClick = ImportExportWizard1Click - end - object ShowOrganizeFavorites1: TMenuItem - Caption = 'Show Organize Favorites' - OnClick = ShowOrganizeFavorites1Click - end - object ExportFavorites1: TMenuItem - Caption = 'Export Favorites' - OnClick = ExportFavorites1Click - end - object ImportFavorites1: TMenuItem - Caption = 'Import Favorites' - OnClick = ImportFavorites1Click - end - object AddToFavorites1: TMenuItem - Caption = 'Add To Favorites' - OnClick = AddToFavorites1Click - end - object GetFavoritesPath1: TMenuItem - Caption = 'Get Favorites Path' - OnClick = GetFavoritesPath1Click - end - end - object HistoryTools1: TMenuItem - Caption = 'History Tools' - object GetHistoryPath1: TMenuItem - Caption = 'Get History Path' - OnClick = GetHistoryPath1Click - end - object DeleteHistory1: TMenuItem - Caption = 'Delete History' - OnClick = DeleteHistory1Click - end - object ClearAddressBarTypedURLs1: TMenuItem - Caption = 'Clear Address Bar ( Typed URL'#39's)' - OnClick = ClearAddressBarTypedURLs1Click - end - end - object CacheTools1: TMenuItem - Caption = 'Cache Tools' - object GetCachedPath: TMenuItem - Caption = 'Get Cached File Path' - OnClick = GetCachedPathClick - end - object ClearCache1: TMenuItem - Caption = 'Clear Cache' - OnClick = ClearCache1Click - end - end - object MailTools1: TMenuItem - Caption = 'Mail Tools' - object SendThePageInMail1: TMenuItem - Caption = 'Send The Page In Mail' - OnClick = SendThePageInMail1Click - end - object SendTheURL: TMenuItem - Caption = 'Send The Url In Mail' - OnClick = SendTheURLClick - end - object SavePageToEmail2: TMenuItem - Caption = 'Save Page To Email' - end - object CreateNewMail1: TMenuItem - Caption = 'Create New Mail' - OnClick = CreateNewMail1Click - end - object N10: TMenuItem - Caption = '-' - end - object OpenYahooMail1: TMenuItem - Caption = 'Open Yahoo Mail' - OnClick = OpenYahooMail1Click - end - object OpenOutlook1: TMenuItem - Caption = 'Open Outlook' - OnClick = OpenOutlook1Click - end - object OpenOutlookExpress1: TMenuItem - Caption = 'Open Outlook Express' - OnClick = OpenOutlookExpress1Click - end - object OpenGoogleMail1: TMenuItem - Caption = 'Open Google Mail' - OnClick = OpenGoogleMail1Click - end - object OpenAddressBook1: TMenuItem - Caption = 'Open Address Book' - OnClick = OpenAddressBook1Click - end - object OpenHotmailMail1: TMenuItem - Caption = 'Open Hotmail Mail' - OnClick = OpenHotmailMail1Click - end - end - object HomePage1: TMenuItem - Caption = 'Home Page' - object GetIEHomePage: TMenuItem - Caption = 'Get IE Home Page' - OnClick = GetIEHomePageClick - end - object SetIENewHomePage: TMenuItem - Caption = 'Set IE New Home Page' - OnClick = SetIENewHomePageClick - end - end - object Cookies1: TMenuItem - Caption = 'Cookies' - object CookiesCheck1: TMenuItem - Caption = 'Check the site for Cookies' - OnClick = CookiesCheck1Click - end - object GetCookiesPath1: TMenuItem - Caption = 'Get Cookies Path' - OnClick = GetCookiesPath1Click - end - end - object Images1: TMenuItem - Caption = 'Images' - object ShowTheImageEditor1: TMenuItem - Caption = 'Show The Image Editor' - OnClick = ShowTheImageEditor1Click - end - object GetAScreanCapture1: TMenuItem - Caption = 'Get A Page Capture (Bmp)' - OnClick = GetAScreanCapture1Click - end - object GetJpegPageCapture1: TMenuItem - Caption = 'Get A Page Capture (Jpeg)' - OnClick = GetJpegPageCapture1Click - end - object GetThumbnail: TMenuItem - Caption = 'Get page to Thumbnail' - OnClick = GetThumbnailClick - end - end - object GoSearch1: TMenuItem - Caption = 'Go Search' - object SearchImMsn1: TMenuItem - Caption = 'Search Im Msn' - OnClick = SearchImMsn1Click - end - object SearchInGoogle1: TMenuItem - Caption = 'Search In Google' - OnClick = SearchInGoogle1Click - end - object SearchInYahoo1: TMenuItem - Caption = 'Search In Yahoo' - OnClick = SearchInYahoo1Click - end - end - object Open1: TMenuItem - Caption = 'Show / Open' - object ShowInternetExplorerVersion1: TMenuItem - Caption = 'Show Internet Explorer Version' - OnClick = ShowInternetExplorerVersion1Click - end - object InternetOptions1: TMenuItem - Caption = 'Show Internet &Options...' - OnClick = InternetOptions1Click - end - object Properties: TMenuItem - Caption = 'Show Page Properties' - OnClick = PropertiesClick - end - object OpenNewsClient1: TMenuItem - Caption = 'Open News Client' - OnClick = OpenNewsClient1Click - end - object OpenCalender1: TMenuItem - Caption = 'Open Calender' - OnClick = OpenCalender1Click - end - object OpenNetMeeting: TMenuItem - Caption = 'Open Net Meeting' - OnClick = OpenNetMeetingClick - end - object OpenFoldersExplore1: TMenuItem - Caption = 'Open Folders (Explore)' - OnClick = OpenFoldersExplore1Click - end - object OpenRegistryEditor1: TMenuItem - Caption = 'Open Registry Editor' - OnClick = OpenRegistryEditor1Click - end - end - object N2: TMenuItem - Caption = '-' - end - object LinksList1: TMenuItem - Caption = 'Links List' - object AddTheSiteToTheList1: TMenuItem - Caption = 'Add The Site To The List' - OnClick = AddTheSiteToTheList1Click - end - object RemoveTheSiteFromTheList1: TMenuItem - Caption = 'Remove The Site From The List' - OnClick = RemoveTheSiteFromTheList1Click - end - object NavigateToLinkItem1: TMenuItem - Caption = 'Navigate To Link Item' - OnClick = NavigateToLinkItem1Click - end - object CheckTheLinks: TMenuItem - Caption = 'Check the links' - OnClick = CheckTheLinksClick - end - object N13: TMenuItem - Caption = '-' - end - object ShowTheList1: TMenuItem - Caption = 'Show The List' - OnClick = ShowTheList1Click - end - object ShowHideTheLinksToolbar1: TMenuItem - Caption = 'Show / Hide The Links Toolbar' - OnClick = ViewHideTheLinksToolbar1Click - end - object N15: TMenuItem - Caption = '-' - end - object ClearTheLinkList1: TMenuItem - Caption = 'Clear The Link List' - OnClick = ClearTheLinkList1Click - end - end - object IEDownload: TMenuItem - Caption = 'IE Download' - object CheckURLsFromALinkList1: TMenuItem - Caption = 'Check URL'#39's From A Link List' - OnClick = CheckURLsFromALinkList1Click - end - end - object RichViewWBDemo1: TMenuItem - Caption = 'RichViewWB Demo' - object ShowTheEditor2: TMenuItem - Caption = 'Show The Editor' - OnClick = ShowTheEditor2Click - end - object N28: TMenuItem - Caption = '-' - end - object Fonts: TMenuItem - Caption = 'Fonts' - object SelectFonts1: TMenuItem - Caption = 'Set Fonts' - OnClick = SelectFonts1Click - end - object SetFontColor: TMenuItem - Caption = 'Set Font Color' - OnClick = SetFontColorClick - end - object SetSize1: TMenuItem - Caption = 'Set Size' - OnClick = SetSize1Click - end - object SetBold1: TMenuItem - Caption = 'Set Bold' - OnClick = SetBold1Click - end - object SetItalic1: TMenuItem - Caption = 'Set Italic' - OnClick = SetItalic1Click - end - object SetUnderLine1: TMenuItem - Caption = 'Set UnderLine' - OnClick = SetUnderLine1Click - end - object AddBackroundColor1: TMenuItem - Caption = 'Add Backround Color To Selected Text' - OnClick = AddBackroundColor1Click - end - object ResetFontsFormat1: TMenuItem - Caption = 'Reset Fonts Format' - OnClick = ResetFontsFormat1Click - end - end - object File1: TMenuItem - Caption = 'File' - object New1: TMenuItem - Caption = 'New' - OnClick = New1Click - end - object Open2: TMenuItem - Caption = 'Open' - OnClick = Open2Click - end - object Save1: TMenuItem - Caption = 'Save' - OnClick = Save1Click - end - object SaveAs2: TMenuItem - Caption = 'Save As..' - OnClick = SaveAs2Click - end - object N27: TMenuItem - Caption = '-' - end - object Print1: TMenuItem - Caption = 'Print' - OnClick = Print1Click - end - end - object Tools: TMenuItem - Caption = 'Tools' - object CreateASnapshot1: TMenuItem - Caption = 'Create A Snapshot' - OnClick = CreateASnapshot1Click - end - object PreviewRichEditLinesInTheBrowser1: TMenuItem - Caption = 'Preview Code In The Browser (Stream)' - OnClick = PreviewRichEditLinesInTheBrowser1Click - end - object LoadCodeFromBrowserStream1: TMenuItem - Caption = 'Load HTML Code From Browser (Stream)' - OnClick = LoadCodeFromBrowserStream1Click - end - object N22: TMenuItem - Caption = '-' - end - object MailSelectedText1: TMenuItem - Caption = 'Mail Selected Text' - OnClick = MailSelectedText1Click - end - object Mail1: TMenuItem - Caption = 'Mail' - OnClick = Mail1Click - end - object N23: TMenuItem - Caption = '-' - end - object HighlighHTML1: TMenuItem - Caption = 'Highligh HTML' - OnClick = HighlighHTML1Click - end - object HighLightXML1: TMenuItem - Caption = 'HighLight XML' - OnClick = HighLightXML1Click - end - object HighLightURL1: TMenuItem - Caption = 'HighLight URL' - OnClick = HighLightURL1Click - end - object N25: TMenuItem - Caption = '-' - end - object SetColor1: TMenuItem - Caption = 'Set Color' - OnClick = SetColor1Click - end - object hemes1: TMenuItem - Caption = 'Sert Themes' - OnClick = hemes1Click - end - end - object Edit: TMenuItem - Caption = 'Edit' - object Find1: TMenuItem - Caption = 'Find' - OnClick = Find1Click - end - object Replace1: TMenuItem - Caption = 'Replace' - OnClick = Replace1Click - end - object GoToLineNumber1: TMenuItem - Caption = 'Go To Line Number..' - OnClick = GoToLineNumber1Click - end - object SetSelectionAsAHyperLink1: TMenuItem - Caption = 'Set Selection As A HyperLink' - OnClick = SetSelectionAsAHyperLink1Click - end - object SetWordAsAHyperLink1: TMenuItem - Caption = 'Set Word As A HyperLink' - OnClick = SetWordAsAHyperLink1Click - end - object WrapLongLines1: TMenuItem - Caption = 'Wrap Long Lines' - Checked = True - OnClick = WrapLongLines1Click - end - end - object Add: TMenuItem - Caption = 'Add' - object InsertFromImageList: TMenuItem - Caption = 'Insert Smiles And Formated Text from image list Demo' - OnClick = InsertFromImageListClick - end - object InsertFile: TMenuItem - Caption = 'Insert File ( As Link)' - OnClick = InsertFileClick - end - object InsertBitmap: TMenuItem - Caption = 'Insert Bitmap' - OnClick = InsertBitmapClick - end - object N21: TMenuItem - Caption = '-' - end - object AddDateAndTime1: TMenuItem - Caption = 'Add Date And Time' - OnClick = AddDateAndTime1Click - end - object N26: TMenuItem - Caption = '-' - end - object AddBullets1: TMenuItem - Caption = 'Add Bullets' - OnClick = AddBullets1Click - end - object AddRomanNumbers1: TMenuItem - Caption = 'Add Roman Line Numbers' - OnClick = AddRomanNumbers1Click - end - object AddLineNumbers1: TMenuItem - Caption = 'Add Line Numbers' - OnClick = AddLineNumbers1Click - end - object N24: TMenuItem - Caption = '-' - end - object AddAButton1: TMenuItem - Caption = 'Add A Button' - OnClick = AddAButton1Click - end - object AddTEditBox1: TMenuItem - Caption = 'Add TEdit Box' - OnClick = AddTEditBox1Click - end - object AddARadioButton1: TMenuItem - Caption = 'Add A Radio Button' - OnClick = AddARadioButton1Click - end - object AddACheckBox1: TMenuItem - Caption = 'Add A TCheckBox' - OnClick = AddACheckBox1Click - end - end - end - end - end - object HistoryMenu: THistoryMenu - EmbeddedWB = EmbeddedWB1 - MainMenu = MainMenu1 - MenuPosition = 6 - Caption = 'History' - Left = 112 - Top = 208 - end - object ilToolBar: TImageList - Left = 46 - Top = 208 - Bitmap = { - 494C01010C000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000004000000001001000000000000020 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FF7F - FF7FFF7F00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000AC414739473947394739 - 4739473947394739473947396A39000000000000000000000000BD77954ED02D - D0211136185FBD77FF7F00000000000000000000000000000000FF7F5A6B9452 - 31463146B5567B6FFF7F000000000000000000000000C94D466A436E236E236E - 036E026E026EE26DE26DC26966450000000000005056676AA37A637663764276 - 42762276227621760176017AC269AB3D0000000000000000323E1322D119B00D - 6D156E014D01D0193963FF7F00000000000000000000FF7F7B6FAC5561588164 - 8164615860508B413146BD7700000000000000000000E859047FE37EC37EC27E - A27E817E817E617E407E407E63510000000000005056C776037FE37EC37EC27E - A27E827E817E617E417E407E0176AB3D0000000000001232542E1326F221D119 - 494E8F09D1155532552EF75AFF7F00000000000000001867A270A278A278A278 - A278A278A27881688250AD359C730000000000000000E855E47EE37EE37EC37E - A27EA27E827E617E617E417E83510000000000005056C776037FE37EE37EC37E - C37EA27E827E817E617E617E2276AB3D000000007346963A5536342E1326F221 - 4C426E0975367536342E8F097B6F000000000000BD77A278A278A278A278A278 - A278A278A278A278A27882501042FF7F0000000000000956257F047F047F047F - 047FE47EC37E827E617E617E84510000000000005056E776247F247F247F047F - 047F047F047FC37E827E817E2276AB3D00000000F94EB742963A7536342E1326 - AF1DCF5A973E75368F054D01D029FF7F0000FF7FE478A278A278897900000000 - 0000DE7BA278A278A278A2706A515A6B000000000000295A667F457F457F457F - 457F457F457F247FC27E817EA455000000000000705A287B657F657F657F657F - 657F657F657F657F247FA27E4276AB410000F75A1953D84AB742963A5532552E - B019F57F5532B0118F0D6E014D01BE770000387FA278A278517A000000000000 - 00004771A278A278A278A2786050524A0000000000006962A67F867F867F867F - 867F867F867F867F657FE37EC45D00000000000090628A7BC67FA67FA67FA67F - A67FA67FA67FA67FA67F857FA37AEB490000954E3A5B3A5B1A57F952F94A7B6F - FF7F927BED2DD119B0158F0D6F019C730000E478A278A2780000000000000000 - C36CA278A278E478A278A2788168CE39000000000000AA6AEB7FC87FE97FE97F - E97FE97FE97FE97FE97FC87F4566000000000000D16E6D7BED7FEC7FEC7FEC7F - CB7FCB7FCB7FCB7FCA7FEB7F497F2D520000D6527C675B633A5B1A5714639977 - 9677907F6E77F21DD119B01590099C730000A278A2788164000000000000C36C - A278A278E478BD774779A278A278CE39000000000000CE720C734D772D732D77 - 4D7B2D772D772C734D770C778D6200000000000000000000000000000000485A - CA720000C9724C5AD0664D56C84900000000B656BD6F7C675B633A5BBA77DB7F - D67FD67FD27FCF25F221D119B011DE7B0000A278A278815C00000000C36CA278 - A278E478000000008979A278A27810420000000000000000B362396B73560000 - 000000000000314A386B10460000000000000000000000000000000000000000 - 000000000000B1353A67F23D000000000000DE7BFF7B9D6F9C6B9D6F9A73D97F - F87F543A7542754275361326D025FF7F0000A278A278826C9B7BE474A278A278 - E47800000000FF7FA278A278A278F75E00000000000000000000BE77B7560000 - 00000000000013429D7312420000000000000000000000003446F95EAF350000 - 000000000000AF357B6F33460000000000000000F75ADE77DE73BE73596BDA7F - F97F964AD84AB846B73E973E5A6B00000000AB7DA278A278A270A278A278E478 - 000000000000F766A278A2780665BD7700000000000000000000DE7BF85E0000 - 000000000000754EBD7732460000000000000000000000009752FF7F544A0000 - 000000000000F23DBD77134200000000000000000000FF7FDE7BBE73175FFB7F - DA7FD556F94ED84AD846744AFF7F000000000000A278A278A278A278E4780000 - 00000000B46EA278A278A27839670000000000000000000000005B6BBE771242 - 0000000033465A6B7C6F0000000000000000000000000000764EDE7B7C6FAF35 - 00000000D0393967DE7BF03D0000000000000000000000009C6FFF7BF75AFD7F - FB7F576B1A573A57954E00000000000000000000517EA278A278A27881686154 - 61588168A278A278A2787266FF7F000000000000000000000000B756FF7F9C73 - 965296525A6BFF7F965200000000000000000000000000000000D85AFF7FBE77 - 1963F95E9C73FF7FB756000000000000000000000000000000003967944E0000 - FE7FFC7F744ADE7B00000000000000000000000000002F7EA278A278A278A278 - A278A278A278A2785172FF7F00000000000000000000000000000000F95EDF7B - FF7FFF7FDF7BF95E0000000000000000000000000000000000000000B8569D73 - FF7FFF7FBE7797520000000000000000000000000000000000000000FF7FDE7B - 9C735A6BFF7F000000000000000000000000000000000000DE7F2679A278A278 - A278A2788979DE7B000000000000000000000000000000000000000000001A63 - 1A631A63D85A0000000000000000000000000000000000000000000000000000 - B856544A000000000000000000000000000000000000000000000000A62A8005 - 8005A10580050000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000445EE15500000000 - 0000000000000000015A025A00000000000000000000000000008005400A221A - 400A221A400AA10D800500000000000000000000000000000000000000000000 - 000000000000000000006B2D4A29945200000000007C00000000000000000000 - 0000000000000000104200400040000000000000000003564E770973E1550000 - 0000000000006462937B83660356000000000000000000008005400A221AC00A - 221A8422221AE10E221A400A0000000000000000000000000000000000000000 - 0000000000000000292529253146EF3D00000000007C00400000000000000000 - 0000000000000040007C0040000000000000000000000000A866CF7F0A73E155 - 000000008666D67F6B7FA8660000000000000000000080050623A10D400A221A - 400A400A400A221AC00AA10D400A000000000000000000000000000000000000 - 000000000000E71C524A3967734ED65A000000001042007C0000000000000000 - 000000000040007C0000000000000000000000000000000003566C7BAD7F4C77 - 025AA766D87FAD7F6C7BC0510000000000000000A62A062384260623400A2A3F - FF7FFF7F0433400A221AC00A221A4F4F00000000000000000000000000000000 - 00000000A5146B2D1863186394520000000000001042007C0040000000000000 - 00000040007C000000000000000000000000000000000000000003568A7F8E7F - 6E7BD67FD37F8B7F035600000000000000000000400A26370623A10D2A3FDB77 - FF7F4D4BC00A221A400A221A400A400A4F4F0000000000000000000000000000 - 00000000E71C3146524AB55600000000000000000000007C007C000000000000 - 0040007C0000000000000000000000000000000000000000000000000356697F - 8E7FB17FD37F035600000000000000000000220E221A2637221A2A3FDB77FF7F - 4D4B400A400A400A221A400A221A400A80050000000000000000000000000000 - 0000AD352925AD3594520000000000000000000000001042007C007C00000040 - 007C00000000000000000000000000000000000000000000E1550356447F457F - 697F8E7FD27F6F7703560356000000000000A10D062326372637FF7FFF7FFF7F - B86B935FB86BB86BB86BB86B0623221A80050000524A2A1D5342B6525442B02D - 630C4A250000000000000000000000000000000000000000007C007C007C007C - 0000000000000000000000000000000000000000C051455E4E778C7F667F437F - 667F6B7F8E7FD37FB17FE86EE86EC0510000220E26372637DB77FF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7F4D4BC00A80050000091D1236FF77DF73DF6F9F6B - 091DAD3500000000000000000000000000000000000000001042007C007C007C - 000000000000000000000000000000000000245A306FFB7FF97FD27FAD7F667F - 437F667F8B7FCF7FF47FF47F6C7B306FC05184224B434D4B0623935FFF7FFF7F - B5674D4B2A3F4D4B2A3F2C430623221A400A524E7D67BF73FD46FD4E1D4BFB4A - BF6BAF2D00000000000000000000000000000000000000000040007C007C007C - 004000000000000000000000000000000000C051C051C051C051C051C0514E77 - 457F437FE572C051C051C051C051C051C05100000433945726372637935FFF7F - DB772A3F221A0623221A8422221A400A000074469F679F6BFD46FD4AFD461C4F - FF6F333A0000000000000000000000000000000000000040007C007C1042007C - 007C00400000000000000000000000000000000000000000000000000000C051 - 8C7F457F215E00000000000000000000000000004F4FB567945784262637935F - FF7FFF7F263784260623221A021BA62A000074467F5F7F635E5F5E5B5E5F7F63 - BF67964A000000000000000000000000000000400040007C007C000000000000 - 007C007C007C000000000000000000000000000000000000000000000000C051 - B17F697F025A000000000000000000000000000000002A3FDB77945726370623 - 4D4BB5670433062384260623221A0000000074465E5B5F5BBF6BDF6F9F675E5F - DF63543E0000000000000000000000000000007C007C10420000000000000000 - 00001042007C007C007C0000000000000000000000000000000000000000C051 - D57F2B77E1550000000000000000000000000000000000006E4FFF7F94574D4B - 2A3F26372637283F2637221A0000000000000000B64E3E53FE7FFE7FDF777F63 - 9546734E00000000000000000000000000001042000000000000000000000000 - 00000000000010420040007C007C00400000000000000000000000000000C051 - D77FCB6AC05100000000000000000000000000000000000000000623B567B86B - B86BB86B935F4B43C00A000000000000000000009352D74ABF6BFF739F5F5D53 - 734E000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000C051 - B97BCC6AC051000000000000000000000000000000000000000000004F4F2637 - 2637A62A0623000000000000000000000000000000000000D652D652D652D652 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 255E0356000000000000000000000000000000000000000000000000AD316208 - 000000000000AE39000000000000000000000000000000000000932993299329 - 9329000000000000000000000000000000000000000031293129312931293129 - 3129312931293129312931293129312900000000000000000000000000000623 - A62A263726374F4F00000000000000000000000000000000000000000000620C - 8410A518631000000000000000000000000000000000000093293A32DD3EDC46 - 9A3A93299329932993290000000000000000000000003129BF5B163F193F1D43 - 1C3FDD36BD36BD32BD36BD36DD36312900000000000000000000C00A4B43935F - B86BB86BB86BB567062300000000000000000000000000004208082594567A73 - BE7F9D7F5A777352082142080000000000000000000093299A3A9D32DD423D53 - 1D47162ECC18EE1C93299329932900000000000000003129BF63B02E020A6A1A - E201E2012812982EBD32BD32DD3631290000000000000000221A2637283F2637 - 26372A3F4D4B9457FF7F6E4F00000000000000000000420800009D77D6626B41 - E73409396B41B5667B77000042080000000000009329BC3EDD3A9D32DD469E63 - 3E4F1636CC18CC183832BD3A393693290000000000003121BF6B1543C001A001 - A001A001A001E205BA32BD32DD363129000000000000221A0623842606230433 - B5674D4B062326379457DB772A3F000000000000000029259B77412807552861 - 0761E664C75C854801289C7729250000000093291E433E3FDD3A9D321E4FBF6B - 9F5B383ACC18CC183832BD3A9A3693290000000000003121DF731543E101A001 - E101B32E6B1AA0016B1ABD36DD36312900000000A62A021B221A062384262637 - FF7FFF7F935F263784269457B5674F4F00006B2D00009452D56649516A654969 - 2765E668E768C75CA544B666735200006B2D93293E433E3FDE3A9E2E1E4FDF77 - BF6B7842AB14CC183832BD3A9A3693290000000000007129DF773547C001A001 - A0018D221D47912A6A1ADD3ADD36312900000000400A221A8422221A0623221A - 2A3FDB77FF7F935F263726379457043300004208630C596F6A3DCC65AA6D8A71 - 686D2771E770E768C75C4B417B77630C210093293E433F3FBC3E343E1E4FFF7B - DF77DA522F21ED183836BD3A9A3693290000000000007129FF7F9C67113FD036 - AF2EB02E3D4F1D47D032DD3EDD3A31290000400A221A06232C432A3F4D4B2A3F - 4D4BB567FF7FFF7F935F06234D4B4B43842200008410BD7F28352F72EC71EC75 - CB7568790775E76CE7600A41DE7F8410420093293F3F19472772A2796D6AFF77 - DF77DF739E63DC46DC42BC3E9A369329000000000000B529FF7F5147BF73BE67 - D036AF2EAF2EB02E1D471D431E3F312900008005C00A4D4BFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FDB7726372637220E00008410DD7F6A3D9172707A707A - 4E7AAB754975086DE760E738BD7FA41000009329D05A857E637E037EA17DAD7A - FF77DF77BF6B9E633D53DD429A3A9131000000000000B529FF7FCB2E3347BF73 - CD2EA001A001C0013D4F1D473E47312900008005221A0623B86BB86BB86BB86B - 935FB86BFF7FFF7FFF7F263726370623A10D420C630C596FAD41167B157FF37E - 9076EC718B714969085D6A3D596F620C4208057A257E657E857E247EE27DA17D - CE7AFF77DF77BF6B9F5BDA52CF3D9035000000000000F929FF7F0D37A001CC2E - 3347E105A001C0013E533E4F1D47312900008005400A221A400A221A400A400A - 400A4D4BFF7FDB772A3F221A2637221A220EAD3900009352B45A3773997F157F - 9076EC6DAB6D8B690751D66293560000CE390000057E257E657E857E247EE27D - A17DCE7AFF77FF7739678B4D6C3D0000000000000000F929FF7FDE77220AA001 - A001A001A001C001BF631A53743E312900004F4F400A400A221A400A221AC00A - 4D4BFF7FDB772A3FA10D06232637400A000000000000E61C9B77492D1673167B - 91760E6ECC65495141289D7708210000000000000000057A257E657E657E247E - E27DA17DCF7E147346554745000000000000000000001A2EFF7FFF7FDA6BA926 - 020A020AAB2A020A4F1D512151213129000000004F4F221AC00A221A400A0433 - FF7FFF7F2A3F400A062384260623A62A000000000000210400049B77B556AC39 - 483148358A3DB45E9B730000420800000000000000000000257E657E857E657E - 037EE27DA17D437123590000000000000000000000001A2EFF7FFF7FFF7FFF7F - DA6BDA6BFF7B933E4E1D1C1EDC0D5419000000000000400AA10DC00A221A400A - 400A400A221A400AA10D06238005000000000000000000004208072194567B73 - DE7FBD7F596FB5564A25630C0000000000000000000000000000257E657E857E - 647EE4796150E46800000000000000000000000000007C32FF7FFF7FFF7FFF7F - FF7FFF7FFF7FDA5A51219F22952100000000000000000000400A221AE10E221A - 8422221AC00A221A400A80050000000000000000000000000000000000006310 - 84148414430C00000000000000000000000000000000000000000000257E657E - 00000000013CC46800000000000000000000000000007C32DE77DE77DE77DE77 - DE77DE77DE77DA5A5121B52900000000000000000000000000008005A10D400A - 221A400A221A400A8005000000000000000000000000000000000000AD398310 - 0000000084108C31000000000000000000000000000000000000000000000000 - 000000002140C46800000000000000000000000000007C32F929F929F929F929 - F929F929F929F929512100000000000000000000000000000000000000008005 - A10580058005A62A00000000000000000000424D3E000000000000003E000000 - 2800000040000000400000000100010000000000000200000000000000000000 - 000000000000000000000000FFFFFF0000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000FC7FFFFFFFFFC003F00FF00FC0038001 - E007C007C0038001C003C003C003800180038001C003800180010701C0038001 - 00010F01C003800100011E01C003800100011C01C003FC8300011861E3C7FFC7 - 000100C1F3C7E3C7800301C1F3C7E3C7C0038383F18FE187E00F8003F00FF00F - F21FC007F81FF81FF83FE01FFC3FFE7FF83FFFFFFFFFE7E7F00FFFF19FE3C3C3 - E007FFE19FC7E187C003FFC18F8FE0078001FF838F1FF00F8000FF87C63FF81F - 0000FF0FC07FE0070000807FE0FF80010000807FE1FF00000000007FE0FF0000 - 8001007FC07FFC3F8001007F0E1FFC3FC003007F1F07FC3FE007807F7FC1FC3F - F00F80FFFFFFFC3FF83FE1FFFFFFFE7FF81FF0FFC001FC1FF00FE00FC001F00F - E007C003C001E007C0038001C001C00380010001C001800100000001C0018001 - 00000001C001000000000001C001000000000001C001000000000001C0010000 - 00008003C00100018001C007C0018001C003E00FC001C003E007F01FC003E007 - F00FF99FC007F00FF81FFF9FC00FFC1F00000000000000000000000000000000 - 000000000000} - end - object ExportFavorite1: TExportFavorite - About = - 'TExportFavorites by bsalsa. Help & Support: http://www.bsalsa.co' + - 'm/' - FavoritesPath = 'Auto' - SuccessMessage.Strings = ( - 'Your favorites have been exported to successfully!') - TargetFileName = 'newbook.htm' - TargetPath = 'C:\' - Localization.TargetPathInvalid = 'The target path is invalid.' - Localization.TargetFileNameInvalid = 'The target file name is invalid.' - Localization.TargetFileNameExtInvalid = 'The target file name extension is invalid. It must be "*.htm".' - Localization.FavoritesPathInvalid = 'The Favorites Path is invalid.' - Localization.NoSuccessMessage = 'You must enter a SuccessMessage or turn off messages.' - Localization.ChangeItMessage = 'Please change it.' - Localization.HTMLTitle = 'Exported Favorites' - Left = 16 - Top = 240 - end - object ImportFavorite1: TImportFavorite - About = - 'TImportFavorites by bsalsa. Help & Support: http://www.bsalsa.co' + - 'm/' - CurrentFileName = 'newbook.htm' - CurrentFilePath = 'C:\' - FavoritesPath = 'Auto' - SuccessMessage.Strings = ( - 'Your favorites have been ') - TargetSubFolder = 'Imported Bookmarks' - Left = 48 - Top = 240 - end - object ilFavoritesTree: TImageList - Left = 16 - Top = 208 - Bitmap = { - 494C010109000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000003000000001001000000000000018 - 000000000000000000000000000000000000DE7B3536B225133AD856DE77DE7B - DF7BFF7BFF7FFF7F000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000005A16171EDF7B5D5F9B3A1436343E - 54427542D8567B6BDE7BFF7F0000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000BF12F23100005B67F429181E7B22 - BD26DC2E782E2C19323A9C6FFF7F000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000BF126E21B7525C1A9E1E7E1E7E1E - 9E1EDE225F379F4F77328E297C6FFF7F00000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000009D1A71159D1A9E1E7D1A5D165D1A - 5D1A5D1A9E1E1F2FDF4FD93A1236DE7700000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000DB42FF1EBE1A7D165C165C163636 - BD73DA4A3D1A9E1AFF26DF5790217C6BFF7F0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000FF1EBE1A7C165C127211BE77 - 00000000382E1826592ABA36B9427C6FFF7F0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000DB36FE1A9D167C12930D7111 - 721172117211721172159315B21D974EFF7F0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000009D6F00001E27DE1A9D167C167C16 - 7D167D165D165D167D1A9E1E1F33D752FF7F0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000FF7B5C4F7D635E2BFE1AB3117736 - 983A783A391A5C165D167E1E9B223A63FF7F0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000009F477D573B435E2BF5119C6F - 00003A635B167C167D169E1EB31D9D73FF7F0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000005C57FF539E535C4F5E271612 - 92115A127C167C167D1ADE1ED856DE77FF7F0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000007D4FFF577E479E5F7E2B - 1E1FDD16BD16BD16DE1A563A9D6F195BDE7B0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000005D53FF5BDF4BDF3B - BF2F3E1F1E1FDD1ED94E00000000D94ABE730000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000FF7F9D635D53 - 3C471B433D373336195B00009D6F763ADE770000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000FF7FFF7BBA36FC327832BB225B63FF7F0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000006C32E6190000000000000000000000000000000000000000 - 0000000000000000000000000000000000009C735A6B9C73DE7B000000000000 - 000000000000000000000000000000000000BD7739675A6BBD77FF7F00000000 - 00000000000000000000000000000000000000000000FF7FDE7BFF7F00000000 - 0000000000006C32C002C002E619000000000000000000000000000000000000 - 000000000000000000000000000000000000005EC15585418C31EF3D94523967 - 9C73FF7F0000000000000000000000000000015EE15DA3498839CE393146F75E - 7B6FBD77FF7F00000000000000000000000000000000CF7A6C6A3967BD77FF7F - 000000006B2E0003200320032003061A000000000000997FA071577B00000000 - 00000000000084690061000000000000000075772A7F2A7FC77641660062C155 - 863DAD351042B5565A6BDE7B00000000000043620A7B0A7B0A7B866E2262E15D - A4458935CE39734E18639C7300000000000000000000BB7FE07DA07191625A6B - DE7B6A2A600380038003800380038003AC32000000000000207E007E806D0000 - 00006C72606D207E2065000000000000000075772A7F2A7F2A7F2A7F2A7F2A7F - 2A7FC6764166005EA24D5A6B000000000000E872B87F0A7B0A7B0A7B0A7B0A7B - 0A7B0A7B856A025EE159CE39DE7B00000000000000000000007A607E007E806D - 2B66C0312022E003C003E003E0038822EE3A000000000000E075C07E607EE079 - 806D607EC07E607ED376000000000000000075772A7F2A7F2A7F2A7F2A7F2A7F - 2A7F2A7F2A7F2A7F005E3967000000000000C86E32732B7B2B7B2B7B2B7B2B7B - 2B7B2B7B2B7B2B7BC87285415A6B00000000000000000000C075C07EC07E607E - 807EC07EC07EEB2FE71FE71FEB2F00000000000000000000E075E07EE07EC07E - E07EE07EE07E407E0000000000000000000075774B7F4B7F4B7F4B7F4B7F4B7F - 4B7F4B7F4B7F4B7F005E3967000000000000E97264664D7B4C7B4C7B4C7B4C7B - 4C7B4C7B4C7B4C7BE972015E3146FF7F00000000000000004576017F017F017F - 017F017F017FFA6BFD77FD77FA6B00000000000000000000CE7A227F227F227F - 227F227F227FC0710000000000000000000075776C7F6C7F6C7F6C7F6C7F6C7F - 6C7F6C7F6C7F6C7F005E3967000000000000E976C872DC7F6D7B6D7B6D7B6D7B - 6D7B6D7B6D7B6D7B0A732B7769319C73000000000000DE7B2476427F427F427F - 427F427F427FC026C026C026C02600000000000000000000007A637F637F637F - 637F637F637FC37E8269000000000000000075778D7F8D7F8D7F8D7F8D7F8D7F - 8D7F8D7F8D7F8D7F005E3967000000000000EA76C976CC6A8E7F8E7F8E7F8E7F - 8E7F8E7F8E7F8E7F2B738E7BC255D65A00000000DE7B217A867F847F847F847F - 847F847F847F467FA06D925E7B6FFF7F00000000997F817EA57FA57FA57FA57F - A57FA57FA57F857F257F40690000000000007577AF7FAE7FAE7FAE7FAE7FAE7F - AE7FAE7FAE7FAE7F005E39670000000000000D7BE976C8766666EE6E7677FD7F - B17FB17FB17FB17F4D77B27BA76ACE39FF7FBD77407EEA7FC67FC67FC67FC67F - C67FC67FC67FC67F867F00722C625A6BFF7F0E7F077FE77FE77FE77FE77FE77F - E77FE77FE77FE77FE77F877F4069000000005377F57FF27FD07FCF7FCF7FCF7F - CF7FCF7FCF7FCF7F005E39670000000000004F7B0B7B0B7B0B7B0B7B0B7BC872 - 5473D87FD67FD67F5277D97FD97F853D7B6F607ED37FF97FF47FF07FEB7FE87F - E87FE87FEF7FF07FF47FF47F2372E965DE7B607E407E407EA27E097FD77FE87F - E87FEA7FC97A4476E171606D4069E86D00002D77A56E4166EC6EF77FD47FD37F - D37FD37FD37FD37F005E3967000000000000707B4C7B4C7B4C7B4C7B4C7B4C7B - 4C7B226254737677FF7FFE7FFE7FE15D7B6F0000DB7F977F0F7F877A827EE87F - E87FF27FC1714972AF76577BFF7F0000000000000000000000000000007AE97F - E87FD77F577F000000000000000000000000927B8E7B8E7B8D7B987BFC7FFA7F - F97FD77FD77FD77F005E3967000000000000927B8E7B8E7B8E7B8E7B8E7B8E7B - 8E7B8E7B8E7B8E7BE15D396700000000000000000000000000000000437AF07F - E87FE97E7B6F00000000000000000000000000000000000000000000767FF97F - E97F00760000000000000000000000000000DA7FAF7BAF7BAF7BAF7BBA7BFF7F - FE7FFE7FFC7FFB7F005E5A6B000000000000DA7FAF7BAF7BAF7BAF7BB27FD37F - AF7BAF7BAF7BAF7BE15D5A6B00000000000000000000000000000000FD7F097F - EE7FE175DE7B000000000000000000000000000000000000000000000000207E - FA7FAC7A0000000000000000000000000000245EB07BB07BB07BB07BE74D336F - AB668A6646622362136BFF7F000000000000245EB07BB07BB07BB07BE74D566F - EF6ACF6ACF6A8B66136BFF7F000000000000000000000000000000000000207E - 4C7F376BFF7F000000000000000000000000000000000000000000000000CC7E - 827E000000000000000000000000000000000000EF6A486247624562BD770000 - 0000000000000000000000000000000000000000EF6A486247624562BD770000 - 000000000000000000000000000000000000000000000000000000000000DB7F - 007ADE7B00000000000000000000000000000000000000000000000000000000 - 667E000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000009C7339673967396739673967 - 396739673967396739679C73BD77000000000000000000000000000000000000 - 000000000000000095526C2DCF39186300000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 657EFF7F0000000000000000000000000000FF7FD52993219321932193219321 - 9321932193219321932178429C73000000000000000000000000000000000000 - 000000000000D75A7A4E7A4ED3393A67000000000000000000000000BD777B6F - 7B6F7B6F7B6FDE7BDE7B0000000000000000000000000000000000000000CB7E - 827E9C730000000000000000000000000000BD77F725BF6F7F637F637F633F57 - 3F573F573F573F573F579321396700000000000000000000A071C27100000000 - 00000000000015427A4EF03DDE7B7B6FB5560000000000000000DE7B40024002 - 4002400240027B6FDE7B0000000000000000000000000000000000000000207E - F67F4972FF7F000000000000000000000000BD77F725BF6F531953199F675319 - 53193315331533153F5793213967000000000000000000000476207EC0754A76 - 0000FF7FA369F3419B524C2911429131524A0000000000000000DE7B4002E01E - C01EA01E40027B6FDE7B000000000000000000000000000000000000537FF67F - E97F0076BD77000000000000000000000000BD77F725BF73BF6FBF6FBF6FBF6F - 7F637F637F633F573F579321396700000000000000000000127BC07EA07E407E - 806DE075245E1642594A794E584AD4397B6F00000000DE7BDE7BDE7B40020023 - E01EC01E40027B6FDE7BDE7BDE7BDE7B000000000000000000000000007AE97F - E87FD57FAF6AFF7F00000000000000000000BD77F725BF7353195319BF6F5319 - 53195319531953193F5793213967000000000000000000000000807EE07E217B - 4531873DF541F641F641F43D35465A6B00000000BD77BD77BD77BD7740020023 - 0023E01E40025A6B7B6F7B6F7B6FDE7BDE7B607E407E407EA27E097FD57FE87F - E87FEA7FC97A4476E171606D4069E769FF7FBD77F725BF73BF73BF73BF6FBF6F - BF6FBF6F1E577F637F639321396700000000000000000000000000721242DF7B - BF77DB5A16421642CD490000000000000000DE7BA00EA00EA00E800680062023 - 0023E01E400240024002400240027B6FDE7BCC76077FE77FE77FE77FE77FE77F - E77FE77FE77FE77FE77F877F4069F75EDE7BBD77F725BF7317361736BF731736 - 1732F7312004F82D7F639321396700000000000000000000667A445AFF7F7452 - 97565F6B9A520B4AA06DFE7F000000000000DE7BE01680276027402340234023 - 20230023E01EE01EC01EA01E40027B6FDE7BFF7F1273817EA57FA57FA57FA57F - A57FA57FA57F857F257F40691863DE7B0000BD77F725DF7300002004BF73BF73 - 7F670000846E2004DD4ECB0C3967FF7FDE7B00000000427E877F6656B75A847F - 44773E67584A056B667F00729A7B00000000DE7BE01680278027602740234023 - 402320230023E01EE01EC01E40027B6FDE7B0000FF7F5673007A637F637F637F - 637F637F637FC37E61693967DE7B00000000BD77F725DF732629EA7620047F67 - 0000846E0000846E20042004A5183977004C0000407EEE7FE77F8777E75E845A - 0F465F6BEE3DC77FE77FC77F6276B0720000DE7BE01681278027602760274023 - 4023402320230023E01EE01E40027B6FDE7B00000000FF7FAC76227F227F227F - 227F227F227F9353B763B763955700000000BD77F725DF77DF732629EA764108 - 524A0000846E000044662466246600180054EA7E607E407E817EA47E097F2B67 - F33DAD56DA7BC97A2272816D826DA3690000DE7BE016E016E016E016E0166027 - 4023402340024002400240024002BD770000000000000000E075E07EE07EC07E - E07EE07EE07EF24BF24BF24BF24B00000000DE7B182EF725F725F7252629EA76 - 4108133E0000446A446A446A446A8061215800000000000000000000BA7FD77F - E87FEA7FC0710000000000000000000000000000DE7BDE7BDE7BBD77E0166027 - 6027402380067B6FDE7BDE7BDE7B00000000000000000000E075C07E607EE079 - 806D607EC07EE413E003E003E517000000000000DE7BBD77BD77BD77BD772629 - EA7641088672867286728672867280616374000000000000000000000000007A - E87FFA7F127B0000000000000000000000000000000000000000DE7BE0168027 - 60276027A00E7B6FDE7B0000000000000000000000000000207E007E806DB45E - 5A6BE0014003C003A003C003C00340030002000000000000000000000000BD77 - 89350852AA6EEA76EA76EA76EA760018847C000000000000000000000000317F - FB7F207A00000000000000000000000000000000000000000000DE7BE0168127 - 80276027A00E7B6F0000000000000000000000000000557BA0714E623967DE7B - FF7FFF7F00026003600360036003400200000000000000000000000000000000 - DE7BED416835620C620C620C620C3977847C0000000000000000000000000000 - 407EAA7A00000000000000000000000000000000000000000000DE7B201FE016 - E016E016A00EDE7B0000000000000000000000000000FF7F5A6BBD77FF7F0000 - 000000000000C001000300030002DD7700000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - A87E0000000000000000000000000000000000000000000000000000DE7BDE7B - DE7BDE7BDE7B0000000000000000000000000000000000000000000000000000 - 0000000000000000A001E001DD7700000000424D3E000000000000003E000000 - 2800000040000000300000000100010000000000800100000000000000000000 - 000000000000000000000000FFFFFF00001F0000000000000007000000000000 - 2003000000000000000100000000000000010000000000000000000000000000 - 8180000000000000800000000000000040000000000000000000000000000000 - 81000000000000008000000000000000C000000000000000E00C000000000000 - F008000000000000FF00000000000000FFE7FFFF0FFF07FFC7C3FFFF007F003F - C181C7CF00070007C000E30F00070003E000E00F00070003E003E01F00070001 - E003E01F00070001C003E00F0007000180018007000700000000000300070000 - 00000001000700008003F83F00070007F83FF87F00070007F83FFC7F00070007 - FC3FFCFF83FF83FFFC7FFEFFFFFFFFFF8003FFE1FFFFFE7F0003FFC1F80FFC7F - 0003E7C0F00FFC3F0003E100F00FF83F0003E000C001F81F0003F00180000000 - 0003F00F000000000003E007000000010000C00300008003000080010000C003 - 000000010001E0030000F83F8003E0038000FC3FF00FE000FC00FC7FF01FC001 - FE00FE7FF01FC3C1FFFFFEFFF83FFFE300000000000000000000000000000000 - 000000000000} - end - object FavoritesMenu1: TFavoritesMenu - About = 'TFavoritesMenu - from http://www.bsalsa.com/' - Caption = 'Favorites' - EmbeddedWB = EmbeddedWB1 - Localization.AddFavorites = 'Add to Favorites' - Localization.OrganizeFavorites = 'Organize Favorites' - Localization.ImportFavorites = 'Import Favorites' - Localization.ExportFavorites = 'Export Favorites' - Localization.ImportExportWizard = 'Import Export Favorites Wizard' - Localization.EmptyCaption = ' (empty) ' - MainMenu = MainMenu1 - MenuPosition = 7 - OnAddFavorites = FavoritesMenu1AddFavorites - Left = 144 - Top = 208 - end - object PopupMenu1: TPopupMenu - Left = 80 - Top = 240 - object AddCurrentSiteToTheLinksList1: TMenuItem - Caption = 'Add Current Site To The Links List' - OnClick = AddTheSiteToTheList1Click - end - object RemoveTheCurrentSiteFromTheLinksList1: TMenuItem - Caption = 'Remove The Current Site From The Links List' - OnClick = RemoveTheSiteFromTheList1Click - end - object NavigateToLinkListItem1: TMenuItem - Caption = 'Navigate To Link List Item' - OnClick = NavigateToLinkItem1Click - end - object N14: TMenuItem - Caption = '-' - end - object ShowTheList2: TMenuItem - Caption = 'Show The List' - OnClick = ShowTheList1Click - end - object ViewHideTheLinksToolbar1: TMenuItem - Caption = 'View/Hide The Links Toolbar' - OnClick = ViewHideTheLinksToolbar1Click - end - object N17: TMenuItem - Caption = '-' - end - object ClearTheLinksList1: TMenuItem - Caption = 'Clear The Links List' - OnClick = ClearTheLinkList1Click - end - end - object IEDownload1: TIEDownload - About = ' IEDownload http://bsalsa.com/' - AdditionalHeader.Strings = ( - 'Content-Type: application/x-www-form-urlencoded') - DefaultProtocol = 'http://' - DefaultUrlFileName = 'index.html' - OnResponse = IEDownload1Response - TimeOut = 60000 - UserAgent = 'Mozilla/4.0 (compatible; MSIE 5.0; Win32)' - Left = 112 - Top = 240 - end - object ilsSmilies: TImageList - Height = 19 - Width = 19 - Left = 80 - Top = 208 - Bitmap = { - 494C01012F003100040013001300FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 00000000000036000000280000004C000000E400000001001000000000006087 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000002525872DE11CE11C021DA014000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000002142214200000000 - 0000E5200521E31CA01400000000000000000000000000000000000000002142 - 214221422142013E000000000000000000000000000000000000000000000000 - 000000002142214221422142013E000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000824E614A824E00000000000000006B35272DA31C - 000000000000000000000000000000000000824E614A824E614A824E41462142 - 2142E1390000000000000000000000000000000000000000824E614A00000000 - 0000000000002142E13900000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000824EA252A252A2520000000000002931A51CE72000000000000000000000 - 0000000000000000824EA252A252A252A252A252A25241464146013EE1390000 - 0000000000000000000000000000824EA2520000A57CA57C4224A57CA57C0000 - 013EE13900000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000C256C256E25A - E25AE25A00000000000000000000000000000000000000000000000000000000 - E25AC256C256C256C256C256A252A252A2522142214200000000000000000000 - 000000000000E25A000000000000000000000000000000000000214200000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000C256E25A4263426342634263E25A0000 - 00000000000000000000000000000000000000000000C256E25AE25A42634263 - 4263E25AE25AC256A252824E2142013E000000000000000000000000C256E25A - 0000000000000000000000000000000000002142013E00000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000E25A4263836B836B836B836B836B42630000000000000000 - 0000000000000000000000000000E25A4263836B836B836B876F836BE25AE25A - C256824E41462142000000000000000000000000E25A00000000000000000000 - 0000000000000000000000002142000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 4263836B856F856F856F856F836B836B4263C256A252824E2142000000000000 - 0000000000004263836B856F856F856F876F856F876F4263C256A252824E2142 - 0000000000000000000000004263000000000000000000000000000000000000 - 0000000021420000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000004263856F856F876F - 876F876F876F836B4263E25AA252614A21420000000000000000000000004263 - 836B856F876F876F876F856F876F4263E25AA252614A21420000000000000000 - 0000000042630000000000000000000000000000000000000000000021420000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000004263836B856F876FA873876F856F836B - 00000000A252824E21420000000000000000000000004263836B876F876F876F - 876F856F836B4263C256A252824E214200000000000000000000000042630000 - 0000000000000000000000000000000000000000214200000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000836B856F876F876F876F856F836B00000000A252824E - 00000000000000000000000000000000836B856F876F876F876F856F836B4263 - C256A252824E00000000000000000000000000000000836B0000FF7FBF6BFF7F - FF7FBF6BFF7FBF6B0000824E0000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000836B856F856F856F856F856F836B4263C256A252614A0000000000000000 - 0000000000000000836B856F856F856F856F856F836B4263C256A252614A0000 - 0000000000000000000000000000836B00000000000000000000000000000000 - 0000614A00000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000836B836B - 856F836B836B4263E25AC256824E000000000000000000000000000000000000 - 0000836B836B856F836B836B4263E25AC256824E000000000000000000000000 - 0000000000000000836B836B856F836B836B4263E25AC256824E000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000426342634263E25A - C256000000000000000000000000000000000000000000000000000000004263 - 42634263E25AC256000000000000000000000000000000000000000000000000 - 00000000426342634263E25AC256000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000A1146010601000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000006235 - 623562358114A214274E8962284E000000000000000000000000000000000000 - 0000000000000000000000000000CF6A3077A449000000000000000000000000 - 000000000000000000000000000000002142214221422142013E000000000000 - 00000000000000000000000000002142214221422142013E0000000000000000 - 000000000000000000000000000000000000A341E449A3418114E21C274E8862 - 274EE42000000000000000000000000000000000000000000000000000000000 - 0000000000005277947F055A0000000000000000000000000000000000000000 - 00000000824E614A824E614A824E414621422142E13900000000000000000000 - 0000824E824E824E824E824E614A21422142E139000000000000000000000000 - 000000000000A341E44987628762E449E21CA53D074AE420E42047528962284E - 000000000000000000000000000000000000000000000000000000000000CF6A - B67F8C6600000000000000000000000000000000000000000000000000000000 - A252004800480048614A4146013EE1390000000000000000824EA2520000A252 - A252A252824E824E00002142E13900000000000000000000000000000000074A - 8762086F086F086F074A8114E320274E89628962032500000000000000000000 - 00000000000000000000000000000000000000000000000052778C6600000000 - 0000000000000000824E824E013E2142013E2142013E21420000004C005C004C - 0048614A414621420000000000000000C256E25AE25A00000000000000000000 - 824E4146214200000000000000000000000000000000876229738D7F8F7F8D7F - 8962E320A53D074AE420E42047528962284E0000000000000000000000000000 - 0000000000000000000000000000000052773077275600000000000000000000 - A252A252824E614A824E614A614A214200000000000000000000000000002142 - 013E00000000E25AE25A42634263426342634263E25AE25AA252824E2142013E - 000000000000000000000000000029738D7F8F7F8F7F2C738D7F284EE3208114 - 074A89628862032500000000000000000000000000008D668D66C549A31CA114 - C7493077CF6A6535CF6A947F3077295A0000000000000000A873A252A252A252 - A252A252824E013E0000856F42634263E25AC256824E0000214200000000E25A - 4263836B836B836B836B836B4263E25AC256824E614A21420000000000000000 - 0000000000002C738F7F8F7F2C73A73DAB628D7F284EE320274E88626535074A - 274E000000000000000000000000295A2756A73D8D66295AE3204B5A947FCF6A - C749CF6AB67FB67F5277000000000000A8734263426342634263A252824E013E - 0000856F836B836B4263C256A252824E2142000000004263836B856F856F856F - 856F856F836B4263E25AA252824E214200000000000000000000000000000000 - 274E29738D7FAB62252DAB622973A73D8114A214A53D88628862000000000000 - 000000000000A31C252D8D66AD622756A114E3204B5A947FCF6AC7495277947F - 3077000000000000A87300004263824E0000A252824E013E0000876F876F836B - 4263E25AA252824E2142000000004263836B856F876F876F876F856F836B4263 - E25AA252824E2142000000000000000000000000000000000000074A29732C73 - 0000000000000000000000000000000000000000000000000000000000004B5A - AD624B5A042D042D2756C749E3208D66947F5277947F30778C66000000000000 - A87300004263824E0000C256000021420000876F856F836B4263E25AA252614A - 2142000000004263836B856F00000000876F856F836B00000000A252824E2142 - 000000000000000000000000000000000000000088622C730000000000000000 - 000000000000000000000000000000000000000000000000E320252DAD62AD62 - 295AE320A31C27560E730E730E738C66055A000000000000000000004263824E - 0000000000000000876F876F856F836B4263E25A0000824E0000000000000000 - 836B856F00000000876F856F836B00000000A252824E00000000000000000000 - 00000000000000000000000088628F7FAB620000000000000000000000000000 - 000000000000000000000000000000004B5AAD624B5A042D042D2756C549E320 - E5558C668C66E555A449000000000000000000004263824E0000836B856F0000 - 00000000856F000000000000A252614A0000000000000000836B856F856F856F - 856F856F836B4263E25AA252824E000000000000000000000000000000000000 - 0000000088628F7F2C7300000000000000000000000000000000000000000000 - 00000000000000000000E320042D295A8D66295AE3206010A449E555A4490000 - 0000000000000000000000004263824E00000000836B836B856F836B836B4263 - E25AC256824E000000000000000000000000836B836B836B836B836B4263E25A - C256824E000000000000000000000000000000000000000000000000274E2C73 - AB62000000000000000000000000000000000000000000000000000000000000 - 00004B5AAD62295AA31CA114623D623D623D0000000000000000000000000000 - 000000004263824E0000000000000000426342634263E25AC256000000000000 - 0000000000000000000000000000426342634263E25AE25A0000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000400080008000400000000 - 0000000000000000000000000000000000000008000800080004000000000000 - 0000000000000000000000002142214221422142013E00000000000000000000 - 0000000000000000000000000000000000002142214221422142013E00000000 - 00000000000000000000000000000000000000002142214221422142013E0000 - 0000000000000000000000000014665166516651000800000000214221422142 - 2142013E000000000008665166516651000C0000000000000000000000000000 - 614A824E000000000000000000002142E1390000000000000000000000000000 - 000000000000614A824E000000000000000000002142E1390000000000000000 - 0000000000000000824E614A824E614A824E414621422142E139000000000000 - 00000000000C6651665166510000824E614A824E614A824E414621422142E139 - 00006651665166510010000000000000000000000000824EA25200000000FF7F - FF7FBF6B000000002142E13900000000000000000000000000000000824EA252 - 00000000FF7FFF7FBF6B000000002142E139000000000000000000000000824E - A252A252000000000000000000004146013EE139001000000000000000004010 - 66510000824EA252A252000000000000000000004146013EE139001066514014 - 000000000000000000000000000000000000BF6B0000FF7FFF7FBF6B0000FF7F - 0000214200000000000000000000000000000000C2560000BF6B0000FF7FFF7F - BF6B0000FF7F00002142000000000000000000000000C256C2560000E25AE25A - C256C256A252000041462142200C0000000000000000400866514008C256C256 - 0000E25AE25AC256C256A252000041462142200C6651000400000000E03D0000 - E03DE03D0000E03D0000BF6B0000FF7FFF7FBF6B0000FF7FBF6B0000013E0000 - 0000000000000F000F000F000F000F00BF6B0000FF7FFF7FBF6B0000FF7FBF6B - 0000013E0000000000000000C256E25A00004263426342634263E25AC256A252 - 00002142013E60080000000000000000600CC256E25A00004263426342634263 - E25AC256A25200002142013E6008600800000000E03D0000E03DE03D0000E03D - 000000000000FF7FFF7FBF6B0000FF7FBF6B0000214200000000000000000000 - 00000F000000FF7FBF6B0000FF7FFF7FBF6B0000FF7FBF6B0000214200000000 - 00000000E25A4263836B836B836B836B836B4263E25AC256824E414621422004 - 000000000000630C0000E25A4263836B836B836B836B836B4263E25AC256824E - 414621422004200400000000E03D0000E03DE03D0000E03D0000426342630000 - FF7FBF6B0000FF7FBF6B00002142000000000000000000000000426342630000 - BF6B0000FF7FFF7FBF6B0000FF7FBF6B0000214200000000000000044263836B - 856F856F856F856F856F42634263C256A252824E214240080000000000000000 - 00044263836B856F856F856F856F856F42634263C256A252824E214240082004 - 00000000E03D0000000000000000E03D00004263426300000000000000000000 - 0000000021420000000000000000000000004263426300000000000000000000 - 00000000000000000000214200000000001400044263836B856F876F876F876F - 856F836B4263E25AA252614A21420000001400000000410C00044263836B856F - 876F876F876F856F836B4263E25AA252614A214200006008000000000000E03D - E03DE03DE03D0000000042630000876F856F836B4263E25AA252614A21420000 - 0000000000000000000042630000856F876FA873876F856F836B4263E25AA252 - 614A214200000000001440084263836B876F00000000876F856F836B00000000 - A252824E21420008001400000000000040084263836B876F00000000876F856F - 836B00000000A252824E21420008601000000000E03DE03DE03DE03DE03DE03D - 0000000000000000856F00004263E25A0000824E000000000000000000000000 - 0F00000000000000876F876F0000856F00004263E25A0000824E000000000000 - 001483144008836B856F00000000876F856F836B00000000A252824E00048314 - 001400000000200466514008836B856F00000000876F856F836B00000000A252 - 824E00046651000400000000E03DE03DE03DE03DE03DE03D000000000000856F - 856F836B00000000A252614A000000000000000000000F00E03D007CF75E0F00 - 00000000856F856F836B00000000A252614A000000000000001483146008836B - 856F856F856F856F856F836B4263C256A252614A401483140014000000004010 - 66516008836B856F856F856F856F856F836B4263C256A252614A401466518220 - 00000000E03DE03DFF7FE03DE03DE03D0000836B0000836B836B4263E25AC256 - 824E000000000000000000000F00F75EE03DE03DF75EF75E0F00856F836B836B - 4263E25AC256824E00000000000000000014831483140008000840144010200C - 2010000800080008000440108314831400140000000000086651665100080008 - 40144010200C20100008000800080004401066516651000800000000E03DFF7F - FF7FFF7FFF7FE03D00000000426342634263E25AC25600000000000000000000 - 00000F00F75EF75EF75EF75E003CF75EF75E0F0042634263E25AC25600000000 - 0000000000000000000883148314831483148314831483148314831483148314 - 8314831483148314401000000000000840148445665166516651665166516651 - 6651665166516651665166512010401000000000E03DE03DFF7FFF7FFF7FFF7F - 0000000000000000000000000000000000000000000000000F000F000F000F00 - 0F000F000F000F000F000F000F00000000000000000000000000000000000000 - 0014831483148314831483148314831483148314831483148314831483148314 - 00140000000000000008601C665166516651665166516651665166516651844D - 66512010000400000000000000000000EF3DEF3DEF3DEF3D0000000000000000 - 000000000000000000000000000000000000000000000000000000000000003C - 0000000000000000000000000000000000000000000000000014831400002010 - 83148314831483148314831483148314001C000C200C83140014000000000000 - 00000000201020106651665166516651665166516651001C000C200C00000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000003C000000000000 - 00000000000000000000000000000000000000140014001483142010001C0014 - 8314001C83148314001400000014001400000000000000000000000000000008 - 2010001C00140014001C00140014001400000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000014831483140014001483148314001400148314 - 8314001400000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000010001400000000001400140014000000140014001400000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000002142214221422142013E0000 - 00000000000000000000000000000000000000000000E07FE07FF75E00002142 - 2142013E00000000000000000000000000000000000000000000000021422142 - 21422142013E0000000000000000000000000000000000000000000000000000 - 00002142214221422142013E0000000000000000000000000000000000000000 - 0000000000000000614A824E000000000000000000002142E139000000000000 - 00000000000000000000426342630000E07FE07FF75E0000414621422142E139 - 00000000000000000000000000000000824E614A824E614A824E414621422142 - E1390000000000000000000000000000000000000000824E614A824E614A824E - 414621422142E13900000000000000000000000000000000000000000000824E - A25200000000FF7FFF7FBF6B000000002142E139000000000000000000000000 - 0000426342630000E07FE07FE07F0000000000004146013EE139000000000000 - 000000000000824EA252A252A252A252A252A25241464146013EE13900000000 - 000000000000000000000000824EA252A252A252A252A252A25241464146013E - E139000000000000000000000000000000000000000000000000BF6B0000FF7F - FF7FBF6B0000FF7F0000214200000000000000000000F75E0000426300000000 - E07FE07F0000C256C256824E000041462142000000000000000000000000C256 - C256E25AE25AE25AC25600000000000000000000000000000000000000000000 - 0000000000000000000000000000C256A252A252A25221422142000000000000 - 00000000FF7FFF7FFF7FFF7FFF7FBF6B0000BF6B0000FF7FFF7FBF6B0000FF7F - BF6B0000013E000000000000F75EE07FE07F00000000836B0000000042634263 - E25AC256A252614A2142013E0000000000000000C256E25AE25A426342634263 - 0000E25AC256A252824E2142013E000000000000000000000000C256E25AE25A - 4263426342630000E25AC256A252824E2142013E0000000000000000FF7FFF7F - FF7FFF7FFF7FBF6B000000000000FF7FFF7FBF6B0000FF7FBF6B000021420000 - 0000F75EE07FE07FFF7F00004263836B00000000836B836B426300000000824E - 414621420000000000000000E25A4263836B836B836B0000836B4263E25AC256 - 824E41462142000000000000000000000000E25A4263836B836B836B876F836B - 0000E25AC256824E414621420000000000000000FF7FFF7FFF7FFF7FFF7FBF6B - 0000426342630000FF7FBF6B0000FF7FBF6B000021420000E03DE07FE07FFF7F - 00004263836B0000BF6BBF6B0000856F0000BF6BBF6B0000614A214200000000 - 000000004263836B856F856F856F0000856F42634263C256A252824E21420000 - 000000000000000000004263836B856F856F856F876F856F00004263C256A252 - 824E214200000000000000000000000000000000000000000000426342630000 - 00000000000000000000000021420000E03DFF7FE07FFF7F000042630000BF6B - FF7FFF7FBF6B0000BF6BFF7FFF7FBF6B0000214200000000000000004263836B - 856F876F876F876F856F836B4263E25AA252614A214200000000000000000000 - 00004263836B856F876F876F876F856F836B4263E25AA252614A214200000000 - 000000000000000000000000836B836B000000000000876F856F836B4263E25A - A252614A21420000E03DFF7FE07FE07FFF7F00000000BF6B00000000BF6B0000 - BF6B00000000BF6B0000214200000000000000004263836B876F856F856F876F - 856F836B00000000A252824E21420000000000000000000000004263836B876F - 00000000876F856F836B4263C256A252824E21420000000000000000EF3D0000 - 000000000000836B0000836B836B0000856F00004263E25A0000824E00000000 - 0000E03DFF7FE07FE07F0000836B0000000000000000856F0000000000000000 - 824E000000000000000000000000836B856F856F856F876F856F836B00000000 - A252824E00000000000000000000000000000000836B856F00000000876F856F - 836B4263C256A252824E000000000000000000000000EF3D000000000000836B - 836B00000000856F856F836B00000000A252614A0000000000000000E03DE03D - 00000000836B856F00002925856F856F836B00002925A252614A000000000000 - 000000000000836B856F856F856F856F856F836B4263C256A252614A00000000 - 000000000000000000000000836B856F856F856F856F856F836B4263C256A252 - 614A000000000000000000000000EF3D0000000000000000836B836B836B836B - 836B4263E25AC256824E0000000000000000000000000000000000000000836B - 836B856F836B836B4263E25AC256824E00000000000000000000000000000000 - 836B836B856F836B836B4263E25AC256824E0000000000000000000000000000 - 000000000000836B836B856F836B836B4263E25AC256824E0000000000000000 - 000000000000EF3D0000EF3D0000000000000000426342634263E25AC2560000 - 0000000000000000000000000000000000000000000000000000426342634263 - E25AC25600000000000000000000000000000000000000000000000042634263 - 4263E25AC2560000000000000000000000000000000000000000000000000000 - 0000426342634263E25AC25600000000000000000000000000000000EF3D0000 - 0000EF3D00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000EF3D0000EF3D000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000EF3D0000EF3D0000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000EF3D000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000EF3D0000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000002142214221422142 - 013E000000000000000000000000000000000000000000000000000000002142 - 214221422142013E000000000000000000000000000000000000000000000000 - 00000000000000002142214221422142013E0000000000000000000000000000 - 0000000000002142214221422142013E00000000000000000000000000000000 - 000000000000000000000000614A824E000000000000000000002142E1390000 - 000000000000000000000000000000000000824E614A824E614A824E41462142 - 2142E139000000000000000000000000000000000000000000000000614A824E - 614A824E614A414621422142E139000000000000000000000000824E614A824E - 614A824E414621422142E1390000000000000000000000000000000000000000 - 0000824EA25200000000FF7FFF7FBF6B000000002142E1390000000000000000 - 0000000000000000824EA252A252A252A252A252A25241464146013EE1390000 - 000000000000000000000000000000000000614AA252824E0000000000000000 - 00004146013EE1390000000000000000824EA252A25200000000000000000000 - 4146013EE1390000000000000000000000000000000000000000C2560000BF6B - 0000FF7FFF7FBF6B0000FF7F0000214200000000000000000000000000000000 - E25AC25600000000000000000000000000002142214200000000000000000000 - 426342630000F75EF75EF75EF75EF75EF75EF75EF75EF75EA252000041462142 - 0000000000000000C256C2560000E25AE25AC256C256A2520000414621420000 - 00000000000000000000000000000000C2560000FF7FBF6B0000FF7FFF7FBF6B - 0000FF7FBF6B0000013E000000000000000000000000C256E25AE25A42634263 - 42634263E25AC256A252824E2142013E00000000000000004263426300000000 - 00000000000000000000000000000000C256A252614A2142013E00000000C256 - E25A00004263426342634263E25AC256A25200002142013E0000000000000000 - 0000000000000000E25A0000FF7FBF6B0000FF7FFF7FBF6B0000FF7FBF6B0000 - 2142000000000000000000000000E25A4263836B836B836B836B836B4263E25A - C256824E4146214200000000000000004263000000000000000000000000FF7F - FF7F000000000000E25AC256824E4146214200000000E25A4263836B836B836B - 836B836B4263E25AC256824E41462142000000000000000000000000836B836B - 00000000FF7FBF6B0000FF7FFF7FBF6B0000FF7FBF6B00000000836B836B0000 - 0000000000004263836B856F856F856F856F856F42634263C256A252824E2142 - 0000000000000000426300000000000000000000FF7F1F001F00FF7F00000000 - 4263C256A252824E2142000000004263836B856F856F856F856F856F42634263 - C256A252824E2142000000000000000000000000836B836B0000000000000000 - 000000000000000000000000000000000000836B836B00000000000000004263 - 836B856F876F876FA873856F876F4263E25AA252614A21420000000000000000 - 0000FF03000000000000FF7FEF3DEF3D1F001F00FF7F00004263E25AA252614A - 2142000000004263836B856F876F876F876F856F836B4263E25AA252824E2142 - 000000000000000000000000836B00004263836B856F876FA873876F856F836B - 4263E25AA252614A21420000836B00000000876F876F0000836B876F00000000 - 876F856F836B00000000A252824E214200000000000000000000FF0300000000 - 0000FF7FEF3DEF3DEF3D1F00FF7F000000000000A252824E2142000000004263 - 836B876F00000000876F856F836B00000000A252614A21420000000000000000 - 00000000000000000000836B0000876F876F0000856F00004263E25A0000824E - 00000000000000000000876F876F876F0000856F00000000876F856F836BA514 - A514A514A514A514A514A514A5140000000000000000000000000000FF7FEF3D - EF3DFF7F000000004263E25AA252824E0000000000000000836B856F00000000 - 876F856F836B00000000A252824E000000000000000000000000000000000000 - 0000836B856F00000000856F856F836B00000000A252614A0000000000000000 - 0000000000000000A514A514A514A514A514A514A514A514A514C22CC22CC22C - C22CA514000000000000000000000000000000000000FF7FFF7F000000000000 - 4263C256A252614A0000000000000000836B856F856F856F856F856F836B4263 - C256A252614A00000000000000000000000000000000000000000000836B836B - 856F836B836B4263E25AC256824E000000000000000000000000A514A514A514 - A121A121A121A121A121A121432A432A432A432A432AC22CC22CA51400000000 - 000000000000000000000000000000000000E07F0000E07FE25AC256824E0000 - 00000000000000000000836B836B856F836B836B4263E25AC256824E00000000 - 000000000000000000000000000000000000000000000000426342634263E25A - C256000000000000000000000000000000000000A514432A432A432A432AA121 - A121A121A121A121432A432AA121C22CC22CA514000000000000F75EF75EEF3D - EF3DF75EF75EF75EE07FE07FE07FE07FC2560000000000000000000000000000 - 000000000000426342634263E25AC256000000000000EF3DC618000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000A514432A432AC22CC22CC22CC22CA121A121 - A121A121A121A121A5140000000000000000E07FE07FEF3DEF3D000000000000 - E07FE07FE07FE07F000000000000000000000000000000000000000000000000 - 0000000000000000E03D00000000EF3DC61800000000E03D0000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000A514C22CC22CC22CC22CA121A121432AC22CC22CA121A514 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000E03DE07FFF7FE03D0000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000A514A514C22CA121A121A121432AC22CA514A51400000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000E03D0000E03DE07FFF7F - FF7FFF7FE03D0000E03D00000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000A514 - A514A514A514A514A51400000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000E03DE07FFF7FE03D00000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000E03D00000000E03DE03D00000000E03D0000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000002142214221422142013E000000000000000000000000000000000000 - 000000000000000000002142214221422142013E000000000000000000000000 - 00000000000000000000000000002142214221422142013E0000000000000000 - 0000000000000000000000000000000000002142214221422142013E00000000 - 000000000000000000000000000000000000000000000000824E614A824E614A - 824E414621422142E1390000000000000000000000000000000000000000824E - 614A824E614A824E414621422142E13900000000000000000000000000000000 - 00000000614A824E614A824E414621422142E139000000000000000000000000 - 000000000000824E614A824E005C005C005C21422142E1390000000000000000 - 0000000000000000000000000000824EA252A252000000000000000000004146 - 013EE13900000000000000000000000000000000824EA252A252A252A252A252 - 824E824E21422142E13900000000000000000000836B836B836B836B00000000 - 00000000000000004146013EE1390000000000000000000000000000824EA252 - A252005C005C005C005C005C4146013EE1390000000000000000000000000000 - 0000E25A00000000C2560000E25AE25AC256C256A25200004146214200000000 - 0000000000000000E25A00000000C2560000E25AE25AC256C256824E00004146 - 214200000000000000000000836B836B836B0000E25AE25AE25AC256C256A252 - 0000414621420000000000000000000000000000C256C256005C005C00000000 - 0000005C005C4146214200000000000000000000000000000000E25AE25A0000 - 00004263426342634263E25AC256A25200002142013E00000000000000000000 - E25AE25A00004263426300000000000000000000A252614A2142013E00000000 - 0000000000000000000042634263426342634263E25AC256A252614A2142013E - 00000000000000000000C256E25AE25A4263005C005C4263005C005CA2524146 - 2142013E0000000000000000E001E0010000E25AE25A0000836B836B836B836B - 836B4263E25AC256824E4146214200000000E001E0010000E25AE25A0000836B - 836B836B836B836B4263E25AC256824E4146214200000000000000000000E25A - 4263836B00000000836B836B426300000000824E414621420000000000000000 - 0000E25A4263836B836B836B836B836B4263E25AC256824E4146214200000000 - 00000000E001E0010000E25A0000E001E001856F856F856F856F42634263C256 - A252824E214200000000E001E0010000E25A0000E001E001856F856F856F856F - 42634263C256A252824E2142000000000000000000004263836B00000000BF6B - 0000856F00000000BF6B0000614A2142000000000000000000004263836B856F - 856F856F856F856F42634263C256A252824E2142000000000000E001E0010000 - 000000000000E001E001876F876F876F856F836B4263E25AA252614A21420000 - E001E0010000000000000000E001E00100000000876F856F856F00000000A252 - 824E2142000000000000000000004263000000000000FF7FBF6B000000000000 - FF7FBF6B00002142000000000000000000004263836B856F876F876F876F856F - 836B4263E25AA252614A21420000000000000000000000000000EF010000836B - E001E0010000876F856F836B00000000A252824E214200000000000000000000 - EF010000836BE001E0010000876F856F836B00000000A252614A214200000000 - 00000000000042630000BF6BFF7FFF7FBF6B0000BF6BFF7FFF7FBF6B00002142 - 000000000000000000004263836B0000876F876F0000856F0000856FE25A0000 - 824E2142000000000000000000000000003CEF01003C836B856F00000000876F - 856F836B00000000A252824E00000000000000000000003CEF01003C836B0000 - 876F876F876F856F836B4263E25A0000824E0000000000000000000000000000 - 836B0000BF6BBF6B0000856F0000BF6BBF6B0000824E00000000000000000000 - 00000000836B856F00000000876F856F836B00000000A252824E000000000000 - 000000000000007C007C007C007C007C856F856F856F856F856F836B4263C256 - A252614A0000000000000000007C007C007C007C007C856F0000856F856F856F - 836B42630000A252614A0000000000000000000000000000836B856F00000000 - 856F856F836B00000000A252614A0000000000000000000000000000836B856F - 856F856F856F856F836B4263C256A252614A000000000000000000000000003C - 007C007C007C003C836B836B856F836B836B4263E25AC256824E000000000000 - 00000000003C007C007C007C003C836B836B0000856F836B42630000C256824E - 000000000000000000000000000000000000836B836B856F836B836B4263E25A - C256824E000000000000000000000000000000000000836B836B856F836B836B - 4263E25AC256824E000000000000000000000000003C007C007C007C007C007C - 003C0000426342634263E25AC256000000000000000000000000003C007C007C - 007C007C007C003C0000426342634263E25AC256000000000000000000000000 - 0000000000000000000000000000426342634263E25AC2560000000000000000 - 000000000000000000000000000000000000426342634263E25AC25600000000 - 000000000000000000000000003C007C007C007C007C007C003C000000000000 - 000000000000000000000000000000000000003C007C007C007C007C007C003C - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000007C007C007C007C007C00000000000000000000000000000000 - 000000000000000000000000007C007C007C007C007C00000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000002142214221422142013E0000000000000000000000000000 - 00000000000000000000000000002142214221422142013E0000000000000000 - 0000000000000000000000000000000000000000000000002142214221422142 - 013E00000000000000000000000000000000000000002142214221422142013E - 00000000000000000000000000000000000000000000000000000000824E614A - 824E614A824E414621422142E139000000000000000000000000000000000000 - 0000824E614A824E614A824E414621422142E139000000000000000000000000 - 000000000000000000000000614A824E000000000000000000002142E1390000 - 00000000000000000000824E614A824E614A824E414621422142E13900000000 - 000000000000000000000000000000000000824EA252A2520000000000000000 - 00004146013EE13900000000000000000000000000000000824EA25200000000 - 614A824E824E000000002142E139000000000000000000000000000000000000 - 0000824EA25200000000FF7FFF7FBF6B000000002142E1390000000000000000 - 824EA252A2520000000000000000000041462142E13900000000000000000000 - 00000000000000000000C256C256E25AE25AE25AC256C256A252A25241462142 - 00000000000000000000000000000000C2560000C256E25A0000C2560000A252 - A2520000013E0000000000000000000000000000000000000000C2560000BF6B - 0000FF7FFF7FBF6B0000FF7F000021420000000000000000C256C2560000E25A - E25AC256C256A25200004146013E000000000000000000000000000000000000 - C256E25A42634263426342634263E25AC256A252614A2142013E000000000000 - 000000000000C256E25A42634263426342634263E25AC256A252614A2142013E - 00000000000000000000000000000000C2560000FF7FBF6B0000FF7FFF7FBF6B - 0000FF7FBF6B0000013E00000000C256E25A42634263426342634263E25AC256 - A252614A2142013E00000000000000000000000000000000E25A4263836B856F - 856F836B836B4263C256C256824E41462142000000000000000000000000E25A - 0000000000000000000000000000000000000000000021420000000000000000 - 000000004263426300000000000000000000FF7FFF7FBF6B0000FF7FBF6B0000 - 214200000000E25A4263836B836B836B836B836B4263E25AC256824E41462142 - 000000000000000000000000000000004263836B856F856F00000000856F856F - 4263E25A00000000214200000000000000000000000042630000FF7FBF6B0000 - FF7FFF7FBF6B0000FF7FBF6B000021420000000000000000FF7F000042634263 - 0000F27F116300000000FF7FFF7FBF6B0000FF7FBF6B00002142000000004263 - 836B856F856F856F856F856F42634263C256A252824E21420000000000000000 - 0000000000000000426300000000000000000000856F00000000000000000000 - 214200000000000000000000000042630000FF7FBF6B0000FF7FFF7FBF6B0000 - FF7FBF6B000021420000000000000000FF7F721500000000FF7FFF7F11630000 - 000000000000000000000000000000002142000000004263836B856F876F876F - 876F856F836B4263E25AA252614A214200000000000000000000000000000000 - 4263856F856F856F856F856F856F856F4263E25A824E824E2142000000000000 - 00000000000042630000FF7FBF6B0000FF7FFF7FBF6B0000FF7FBF6B00002142 - 0000000000000000FF7F7215FF7FFF7FFF7FF27F11630000A873876F856F836B - 4263E25AA252614A2142000000004263836B876F00000000876F856F836B0000 - 0000A252824E2142000000000000000000000000000000000000856F856F856F - 856F856F856F856F4263E25A824E824E00000000000000000000000000000000 - 836B0000BF6B0000FF7FFF7FBF6B0000FF7F0000824E00000000000000000000 - FF7FF75EFF7F7215F27F721511630000876F0000856F00004263E25A0000824E - 0000000000000000836B856F00000000876F856F836B00000000A252824E0000 - 000000000000000000000000000000000000836B856F856F856F856F856F836B - 4263E25AA252614A00000000000000000000000000000000836B856F00000000 - FF7FFF7FBF6B00000000A252614A00000000000000000000FF7FFF7FFF7F7215 - FF7F7215116300000000856F856F836B00000000A252614A0000000000000000 - 836B856F856F856F856F856F836B4263C256A252614A00000000000000000000 - 000000000000000000000000836B836B856F836B836B4263E25AC256824E0000 - 000000000000000000000000000000000000836B836B00000000000000000000 - C256824E000000000000000000000000FF7FFF7FF27F7215F27F721511630000 - 856F836B836B4263E25AC256824E000000000000000000000000836B836B856F - 836B836B4263E25AC256824E0000000000000000000000000000000000000000 - 0000000000000000426342634263E25AC2560000000000000000000000000000 - 0000000000000000000000000000426342634263E25AC2560000000000000000 - 0000000000000000FF7FFF7FFF7F7215FF7F721511630000426342634263E25A - C2560000000000000000000000000000000000000000426342634263E25AC256 - 0000000000000000AD352104A514155B00000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - FF7FFF7FF27F7215F27F72151163000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 6B2D0000630C9452000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000FF7F087DA548F27F - FF7FF27F11630000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000F75E9452 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000F27FA548A548FF7FF27FFF7F11630000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000F75E94520000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000116311631163116311631163116300000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000F75EAD3529250000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000F75EA514F75E2725E51CB3560521D15A000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000724E155BB3569256D25A00000000000000002142214221422142013E0000 - 000000000000000000000000000000000000EE3DEE3DEE3DEE3DEE3DEE3DEE3D - EE3D000000000000000000000000000000000000000000000000000021422142 - 21422142013E0000000000000000000000000000000000000000000000002142 - 214221422142013E000000000000000000000000000000000000E51CE51CE51C - 0521905600000000824E614A824E614A824E414621422142E139000000000000 - 00000000000000000000EE3DEE3DEE3DEE3DEE3DEE3DEE3DEE3D000000000000 - 00000000000000000000000000000000824E614A824E614A824E414621422142 - E13900000000000000000000000000000000824E614A824E614A824E41462142 - 2142E1390000000000000000000000000000672D6725E41C652DAD5A0000824E - A252A252A252A252A252824E824E21422142E139000000000000000000000000 - EE3DEE3DEE3DEE3DEE3DEE3DEE3DEE3DEE3DEE3D000000000000000000000000 - 000000000000824EA252A252A252004800480048614A4146013EE13900000000 - 0000000000000000824EA252A2520000000000000000000041462142E1390000 - 00000000000000000000714EB152B2566E4EAD5A0000000000000000E25AE25A - C256C256824E824E21422142000000000000000000000000EE3DEE3D0000EE3D - EE3DEE3DEE3D0000EE3DEE3D000000000000000000000000000000000000C256 - C256E25A0048004C005C004C0048614A41462142000000000000000000000000 - C256C2560000E25AE25AC256C256A25200004146013E00000000000000000000 - 00002721051DB1560325116B0000E25A42634263000000004263E25AC256A252 - 614A2142013E0000000000000000000000000000EE3DEE3DEE3DEE3DEE3DEE3D - 0000000000000000000000000000000000000000C256E25A0000000000000000 - 000000000000000000002142013E0000000000000000C256E25A426342634263 - 42634263E25AC256A252614A2142013E000000000000000000002725051DB156 - 03258F5A00004263836B836B836B836B836B4263E25AC256824E414621420000 - 0000000000000000FF7FFF7F000000000000000000000000FF7FFF7F00000000 - 000000000000000000000000E25A0000836B836B836B856F42634263E25AC256 - 824E000021420000000000000000E25A4263836B836B836B836B42634263E25A - C256824E41462142000000000000000000004F4AB15213636E4EAD620000836B - 856F856F856F856F836B836B4263C256A252824E214200000000000000000000 - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000000000000000 - 000000004263836B856F856F856F856F836B836B4263C256A252824E21420000 - 0000000000004263836B856F856F856F856F836B836B4263C256A252824E2142 - 00000000000000000000E51C2525E31C0325AD5A0000856F856F876F876F876F - 876F836B4263E25AA252824E2142000000000000000000000000FF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7F0000000000000000000000000000000000004263836B - 876F876F876F876F876F836B4263E25AA252824E214200000000000000004263 - 856F856F876F876F876F876F836B4263E25AA252614A21420000000000000000 - 0000E41C0521E31C0325AD5A0000836B00000000A873876F856F836B4263E25A - A252614A21420000000000000000CC35CC35FF7FFF7F8D31B556B5568D31FF7F - FF7FCC35CC3500000000000000000000000000004263836B856F00000000876F - 856F836B00000000A252614A214200000000000000004263836B856F00000000 - 876F856F836B00000000A252824E214200000000000000000000D25AB156D05A - D05AAD5A0000836B856F00000000876F856F836B4263E25AA252824E00000000 - 000000000000CC3500000000FF7FFF7FFF7FFF7FFF7FFF7F00000000CC350000 - 0000000000000000000000000000836B856F00000000876F856F836B00000000 - A252824E000000000000000000000000836B856F876F876F876F856F836B4263 - E25AA252824E000000000000000000000000E41CE31CB156E21C11630000836B - 856F856F856F856F856F836B4263C256A252614A000000000000000000000000 - 00000000FF7FFF7FFF7FFF7FFF7FFF7F00000000000000000000000000000000 - 000000000000836B856F856F856F856F856F856F4263E25AA252614A00000000 - 0000000000000000836B856F856F856F856F856F836B4263C256A252614A0000 - 00000000000000000000051D2521B152E31C6E4E00000000836B836B856F836B - 836B4263E25AC256824E0000000000000000000000000000000000000000FF7F - FF7FFF7FFF7F0000000000000000000000000000000000000000000000000000 - 836B836B856F836B836B4263E25AC256824E0000000000000000000000000000 - 0000836B836B856F836B836B4263E25AC256824E000000000000000000000000 - 00009252714EB152D35A92560000000000000000426342634263E25AC2560000 - 000000000000000000000000000000000000000000000000FF7FFF7F00000000 - 00000000000000000000000000000000000000000000A9410000000042634263 - 4263E25AC25600000000A9410000000000000000000000000000000000004263 - 42634263E25AC25600000000000000000000000000000000000029250721E51C - 2721D45A00000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000A9410000000000000000000000000000 - A941000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000008144814481448140 - 814000000000000000000000000000000000000000000000000000000000DE7B - 013E21422142013E000000000000000000000000000000000000000000000000 - 00002142214221422142013E0000000000000000000000000000000000000000 - 00000000000000002142214221422142013E0000000000000000000000000000 - 000000000000000000000000A250A14C00000000000000000000814081400000 - 000000000000000000000000000000000000614A536BDE7B536B4146614A2142 - 2142E139000000000000000000000000000000000000824E614A824E614A824E - 414621422142E1390000000000000000000000000000000000000000824E614A - 824E614A824E414621422142E139000000000000000000000000000000000000 - 0000A250A2540000DE7BDE7BFF7FDE7BDE7B00008140813C0000000000000000 - 0000000000000000824E536B5A73DE7B5A73536B000000004146013EE1390000 - 000000000000000000000000824EA252A252000000000000000000004146013E - E13900000000000000000000000000000000824EA252A252A252A252A252824E - 824E21422142E139000000000000000000000000000000000000A25800005A6B - 5A6BDE7BDE7BDE7B5A6B5A6B0000814000000000000000000000000000000000 - DE7BDE7BDE7BDE7BDE7BDE7BDE7BDE7B00004146214200000000000000000000 - 00000000C256C2560000E25AE25AC256C256A252000041462142000000000000 - 00000000000000000000C256C2560000E25AE25AC256C256824E00004146013E - 00000000000000000000000000000000A2600000B55600000000000000000000 - 00000000B55600008140000000000000000000000000C256E25A536B5A73DE7B - 5A73536B00000000000000002142013E00000000000000000000C256E25A0000 - 4263426342634263E25AC256A25200002142013E000000000000000000000000 - C256E25A4263426300000000000000000000A252614A2142013E000000000000 - 0000000000000000000000000000E370E370E370E268E268A260A25800000000 - 0000000000000000000000000000E25A42630000536BDE7B536B42634263E25A - C25600004146214200000000000000000000E25A4263836B836B836B836B836B - 4263E25AC256824E41462142000000000000000000000000E25A4263836B836B - 836B836B836B4263E25AC256824E414621420000000000000000000000000000 - E2680000E3700571057105710571E370A260A260A25400008144000000000000 - 0000000000004263836B856F856FDE7B856F836B836B4263C256A252824E2142 - 000000000000000000004263836B856F856F856F856F856F42634263C256A252 - 824E21420000000000000000000000004263836B856F856F856F856F856F4263 - 4263C256A252824E21420000000000000000000000000000E268E37005710000 - 000000000571000000000000A258A14C81440000000000000000000000004263 - 836B856F876FDE7B876F856F836B4263E25AA252614A21420000000000000000 - 00004263836B856F876F876F876F856F836B4263E25AA252614A214200000000 - 00000000000000004263836B876F00000000876F856F856F00000000A252824E - 21420000000000000000000000000000E268E37005710000000067710571E370 - 00000000A254A25081440000000000000000000000004263836B876F0000DE7B - 876F856F836B00000000A252824E2142000000000000000000004263836B876F - 00000000876F856F836B00000000A252824E2142000000000000000000000000 - 4263836B856F00000000876F856F836B00000000A252614A2142000000000000 - 00000000000000000000E37000000000677167710571E370E26800000000A14C - 00000000000000000000000000000000836B856F00000000876F856F836B0000 - 0000A252824E0000000000000000000000000000836B856F00000000876F856F - 836B00000000A252824E00000000000000000000000000000000836B0000876F - 876F876F856F836B4263E25A0000824E00000000000000000000000000000000 - 0000E370E3700571057105710571E370A260A260A254A2500000000000000000 - 0000000000000000836B856F856F856F856F856F836B4263C256A252614A0000 - 000000000000000000000000836B856F856F856F856F856F836B4263C256A252 - 614A00000000000000000000000000000000836B856F0000856F856F856F836B - 42630000A252614A0000000000000000000000000000000025670000E370E370 - E370E370E370E268A260A258A250000025670000000000000000000000000000 - 0000836B836B856F836B836B4263E25AC256824E000000000000000000000000 - 000000000000836B836B856F836B836B4263E25AC256824E0000000000000000 - 000000000000000000000000836B836B0000856F836B42630000C256824E0000 - 000000000000000000000000000002638E73604E00000000E268E268A268A260 - A25800000000604E8E7302630000000000000000000000000000000000004263 - 42634263E25AC256000000000000000000000000000000000000000000000000 - 0000426342634263E25AC2560000000000000000000000000000000000000000 - 0000000000000000426342634263E25AC2560000000000000000000000000000 - 0000000000008E73000000000000000000000000000000000000000000000000 - 00008E7300000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000005C000000000000000000000000000000000000 - 000000000000000000000000000000000000005C000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000005C005C005C000000000000000000000000000000000000000000000000 - 0000000000000000005C0000005C000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000005C005C005C005C - 005C00000000000000000000000000000000000000000000000000000000005C - 005C0000005C005C000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000005C005C005C005C005C000000000000 - 00000000000000000000000000000000000000000000005C005C0000005C005C - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000005C0000005C00000000000000000000000000000000 - 00000000000000000000000000000000005C0000005C00000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 2142214221422142013E00000000000000000000000000000000000000000000 - 0000000000002142214221422142013E00000000000000000000000000000000 - 0000000000000000000000002142214221422142013E00000000000000000000 - 0000000000000000000000000000000000002142214221422142013E00000000 - 0000000000000000000000000000000000000000824E614A824E614A824E4146 - 21422142E1390000000000000000000000000000000000000000824E614A824E - 614A824E414621422142E1390000000000000000000000000000000000000000 - 824E614A824E614A824E414621422142E1390000000000000000000000000000 - 000000000000824E614A824E614A824E414621422142E1390000000000000000 - 00000000000000000000824EA252A252A252A252A2520000000041462142E139 - 00000000000000000000000000000000824EA252A252A252A252A252824E824E - 21422142E13900000000000000000000000000000000824EA252A252A252A252 - A252824E824E21422142E13900000000000000000000000000000000824EA252 - A252000000000000000000004146013EE1390000000000000000000000000000 - 0000C256C2560000E25AE25A0000C256824E00004146013E0000000000000000 - 0000000000000000C256C2560000E25AE25AC256C256824E00004146013E0000 - 0000000000000000000000000000C256C2560000E25AE25AC256C256824E0000 - 4146013E00000000000000000000000000000000C256C256E25AE25AE25AC256 - C256A2520000414621420000000000000000000000000000C256E25A42634263 - 000000004263E25AC256A252614A2142013E000000000000000000000000C256 - E25A4263426300000000000000000000A252614A2142013E0000000000000000 - 00000000C256E25A4263426300000000000000000000A252614A2142013E0000 - 00000000000000000000C256E25A42634263426342634263E25AC256A252614A - 2142013E000000000000000000000000E25A4263836B836B836B836B836B4263 - E25AC256824E41462142000000000000000000000000E25A4263836B836B836B - 836B836B4263E25AC256824E41462142000000000000000000000000E25A4263 - 836B836B836B836B836B4263E25AC256824E4146214200000000000000000000 - 0000E25A4263836B00000000836B836B426300000000824E4146214200000000 - 00000000000000004263836B856F856F856F856F856F42634263C256A252824E - 21420000000000000000000000004263836B856F856F856F856F856F42634263 - C256A252824E21420000000000000000000000004263836BDF18856F856F856F - 856F42634263C256A252824E21420000000000000000000000004263836B0000 - BF6BBF6B0000856F0000BF6BBF6B0000614A2142000000000000000000000000 - 4263836B856F876F876F876F856F836B4263E25AA252614A2142000000000000 - 0000000000004263836B876F00000000876F856F856F00000000A252824E2142 - 0000000000000000000000004263836B876F00000000876F856F856F00000000 - A252824E214200000000000000000000000042630000BF6BFF7FFF7FBF6B0000 - BF6BFF7FFF7FBF6B000021420000000000000000000000004263836B876F0000 - 0000876F856F836B00000000A252824E21420000000000000000000000004263 - 836B856F00000000876F856F836B00000000A252614A21420000000000000000 - 000000004263836B856F00000000876F856F836B00000000A252614A21420000 - 0000000000000000000042630000BF6B00000000BF6B0000BF6B00000000BF6B - 000021420000000000000000000000000000836B856F00000000876F856F836B - 00000000A252824E00000000000000000000000000000000836B0000876F876F - 876F856F836B4263E25A0000824E00000000000000000000000000000000836B - 0000876F876F876F856F836B4263E25A0000824E000000000000000000000000 - 00000000836B0000000000000000856F0000000000000000824E000000000000 - 00000000000000000000836B856F856F856F856F856F836B4263C256A252614A - 00000000000000000000000000000000836B856F0000856F856F856F836B4263 - 0000A252614A00000000000000000000000000000000836B856F0000856F856F - 856F836B42630000A252614A00000000000000000000000000000000836B856F - 00002925856F856F836B00002925A252614A0000000000000000000000000000 - 00000000836B836B856F836B836B4263E25AC256824E00000000000000000000 - 00000000000000000000836B836B0000856F836B42630000C256824E00000000 - 00000000000000000000000000000000836B836B0000856F836B42630000C256 - 824E0000000000000000000000000000000000000000836B836B856F836B836B - 4263E25AC256824E000000000000000000000000000000000000000000000000 - 426342634263E25AC25600000000000000000000000000000000000000000000 - 000000000000426342634263E25AC25600000000000000000000000000000000 - 000000000000000000000000426342634263E25AC25600000000000000000000 - 000000000000000000000000000000000000426342634263E25AC25600000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000002142214221422142013E0000000000000000000000000000 - 00000000000000000000000000002142214221422142013E0000000000000000 - 0000000000000000000000000000000000000000814481448144814081400000 - 0000000000000000000000000000000000000000000000000000214221422142 - 2142013E000000000000000000000000000000000000000000000000824E614A - 824E614A824E414621422142E139000000000000000000000000000000000000 - 0000824E614A824E614A824E414621422142E139000000000000000000000000 - 0000000000000000A250A14CA250A14CA250814881448140813C000000000000 - 0000000000000000000000000000824E614A824E614A824E414621420246C23D - 000400000000000000000000000000000000824EA252A252A252004800480048 - 614A4146013EE13900000000000000000000000000000000824EA252A2520000 - 00000000000000004146013EE13900000000000000000000000000000000A250 - A254A258A254A258A254A250A25081448144813C000000000000000000000000 - 00000000824E8256825600040000000000000000024EC245A241000000000000 - 00000000000000000000C256C256E25A0048004C005C004C0048614A41462142 - 00000000000000000000000000000000C256C2560000E25AE25AC256C256A252 - 00004146214200000000000000000000000000000000A2580000A260A260A260 - A260A258A250A2500000814000000000000000000000000000000000635AE561 - 63304462E25AC256C25623564224A455E2490000000000000000000000000000 - C256E25A0000000000000000000000000000000000002142013E000000000000 - 000000000000C256E25A42634263426342634263E25AC256A252614A2142013E - 000000000000000000000000A260A260A2600000E268E268A268A260A2580000 - A250814081400000000000000000000000008256E561A54CA66D256642634263 - E25A635AE561843CA455C349000000000000000000000000E25A0000836B836B - 836B856F42634263E25AC256824E00002142000000000000000000000000E25A - 4263836B836B836B856F42634263E25AC256824E414621420000000000000000 - 00000000A260E268E370E37000000000000000000000A258A250A14C81400000 - 00000000000000000000C25E2566866D866D056A836B836B4263635EA5656561 - 6561E34D0000000000000000000000004263836B856F856F856F856F836B836B - 4263C256A252824E21420000000000000000000000004263836B856F00000000 - 856F856F836B00000000A252824E2142000000000000000000000000E268E370 - 05710571057105710571E268E268A258A258A14C814400000000000000000000 - 0000C362656EA66DE66D656E856F856F42634263E561A5656561E34D00000000 - 00000000000000004263836B876F876F876F876F876F836B4263E25AA252824E - 21420000000000000000000000004263836BA5142925000000000000A5142925 - 00000000614A2142000000000000000000000000E268E3700571677167716771 - 0571E370E268A260A254A25081440000000000000000000000000267046B656E - A76EE76E876F856F836B42634462E45DA4550246000000000000000000000000 - 4263836B856F876FA873876F856F836B4263E25AA252614A2142000000000000 - 000000000000000000000000A51429250000856F0000A5142925000000000000 - 000000000000000000000000E268E37005710000000067710571E37000000000 - A254A25081440000000000000000000000000267046BE76E00040000876F856F - 836B0000000423562356E2490000000000000000000000000000836B0000876F - 876F876F856F836B4263E25A0000824E00000000000000000000000000000000 - 836B856F0000A514876F856F836B0000A514A252824E00000000000000000000 - 000000000000E37005710000000067710000E37000000000A258A14C00000000 - 000000000000000000000000836B856F00000000876F856F836B00000000635A - 235621100000000000000000000000000000836B856F000000000000856F0000 - 00000000A252614A00000000000000000000000000000000836B856F856F856F - 856F856F836B4263C256A252614A00000000000000000000000000000000E370 - E370057105710000E3700000E268A258A254A250000000000000000000000000 - 00000000836B856F856F856F856F856F836B4263C2568256424E000400000000 - 000000000000000000000000836B836B856F836B836B4263E25AC256824E0000 - 000000000000000000000000000000000000836B836B856F836B836B4263E25A - C256824E0000000000000000000000000000000000000000E370E3700000E370 - E370E2680000A258A2500000000000000000000000000000000000000000836B - 836B856F836B836B4263E25AC256824E00000000000000000000000000000000 - 0000000000000000426342634263E25AC2560000000000000000000000000000 - 0000000000000000000000000000426342634263E25AC2560000000000000000 - 0000000000000000000000000000000000000000E268E268A268A260A2580000 - 0000000000000000000000000000000000000000000000000000426342634263 - E25AC25600000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000002142214221422142013E000000000000 - 000000000000000000000000000000000000000000002142214221422142013E - 0000000000000000000000000000000000000000000000000000000021422142 - 21422142013E0000000000000000000000000000000000000000000000000000 - 0000110511053205100510050000000000000000000000000000000000000000 - 00000000824E614A824E614A824E414621422142E13900000000000000000000 - 00000000000000000000614A824E000000000000000000002142E13900000000 - 00000000000000000000000000000000824E614A824E614A824E414621422142 - E139000000000000000000000000000000000000000074097409730500000000 - 000011051005EF04000000000000000000000000000000000000824EA252A252 - 000000000000000000004146013EE13900000000000000000000000000000000 - 824EA25200000000FF7FFF7FBF6B000000002142E13900000000000000000000 - 000000000000824EA252A252000000000000000000004146013EE13900000000 - 0000000000000000000000007409950995099509000000480000740932051005 - 100500000000000000000000000000000000C256C2560000E25AE25AC256C256 - A25200004146214200000000000000000000000000000000C2560000BF6B0000 - FF7FFF7FBF6B0000FF7F0000214200000000000000000000000000000000C256 - C2560000E25AE25AC256C256A252000041462142000000000000000000000000 - 000000009609B809B809B8090000000000009509740911051005000000000000 - 0000000000000000C256E25A00004263426342634263E25AC256A25200002142 - 013E000000000000000000000000C2560000FF7FBF6B0000FF7FFF7FBF6B0000 - FF7FBF6B0000013E000000000000000000000000C256E25A0000426342634263 - 4263E25AC256A25200002142013E000000000000000000000000B809B809B809 - DA09DA09000000000000B8097409740911051005000000000000000000000000 - E25A4263836B836B836B836B836B4263E25AC256824E41462142000000000000 - 000000000000E25A0000FF7FBF6B0000FF7FFF7FBF6B0000FF7FBF6B00002142 - 000000000000000000000000E25A4263836B836B836B836B42634263E25AC256 - 824E4146013E000000000000000000000000B809DA09FC0DFC0DFC0DFC0DDA09 - DA09B80995097409320511050000000000000000000000004263836B856F856F - 856F856F856F42634263C256A252824E21420000000000000000000000004263 - 0000FF7FBF6B0000FF7FFF7FBF6B0000FF7FBF6B000021420000000000000000 - 000000004263836B856F856F856F856F856F836BE25AE25AA252824E21420000 - 00000000000000000000DA09FC0D9D2E9D2E9D2EFC0DFC0DDA099D2E9D2E9D2E - 320511050000000000000000000000004263836B856F876F876F876F856F836B - 4263E25AA252614A214200000000000000000000000042630000000000000000 - 000000000000000000000000000021420000000000000000000000004263856F - 856F876F876F876F856F836B4263E25AA252614A214200000000000000000000 - 0000DA099D2EFF7FFF7FFF7F9D2E3C169D2EFF7FFF7FFF7F9D2E110500000000 - 00000000000000004263836B876F00000000876F856F836B00000000A252824E - 21420000000000000000000000004263836B856F876FA873876F856F836B4263 - E25AA252614A21420000000000000000000000004263836B856F000000000000 - 856F836B00000000A252824E2142000000000000000000000000DA099D2EFF7F - 0000FF7F9D2E3C169D2EFF7F0000FF7F9D2E1005000000000000000000000000 - 0000836B856F00000000876F856F836B00000000A252824E0000000000000000 - 0000000000000000836B0000876F876F0000856F00004263E25A0000824E0000 - 0000000000000000000000000000836B0000876F876F876F0000836B00000000 - A252824E000000000000000000000000000000009D2EFF7FFF7FFF7F9D2E3C16 - 9D2EFF7FFF7FFF7F9D2E00000000000000000000000000000000836B856F856F - 856F856F856F836B4263C256A252614A00000000000000000000000000000000 - 836B856F00000000856F856F836B00000000A252614A00000000000000000000 - 000000000000836B856F856F856F856F856F836B4263C256A252614A00000000 - 000000000000000000000000FC0D9D2E9D2E9D2E3C16FC0DFC0D9D2E9D2E9D2E - 3305000000000000000000000000000000000000836B836B856F836B836B4263 - E25AC256824E0000000000000000000000000000000000000000836B836B856F - 836B836B4263E25AC256824E0000000000000000000000000000000000000000 - 836B836B856F836B836B4263E25AC256824E0000000000000000000000000000 - 000000000000FC0DFC0DFC0DFC0DFC0DDA09B809950974090000000000000000 - 00000000000000000000000000000000426342634263E25AC256000000000000 - 00000000000000000000000000000000000000000000426342634263E25AC256 - 0000000000000000000000000000000000000000000000000000000042634263 - 4263E25AC2560000000000000000000000000000000000000000000000000000 - 0000DA09DA09DA09B809B8090000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000424D3E000000000000003E000000 - 280000004C000000E40000000100010000000000B00A00000000000000000000 - 000000000000000000000000FFFFFF00FE207FC1FFF83F8000000000F830FF00 - 7FE00F8000000000F071FE003FC0078000000000E063FC001F80038000000000 - E03FFC001F80038000000000C01FF8000F00018000000000C00078000F000180 - 00000000C00078000F00018000000000C00078000F00018000000000C0007800 - 0F00018000000000E000FC001F80038000000000E000FC001F80038000000000 - F001FE003FC0078000000000F803FF007FE00F8000000000FE0FFFC1FFF83F80 - 00000000FFFFFFFFFFFFFF8000000000FFFFFFFFFFFFFF8000000000FFFFFFFF - FFFFFF8000000000FFFFFFFFFFFFFF8000000000FC03FFFC7FFE0FFC1FF00000 - F001FFF83FF803F007F00000C001FFF83FF001E003F00000C000FFF83E0000C0 - 01F00000C000FFFC3C0000C001F00000C0007C001C00000000F00000C0007800 - 0C00000000F00000C00078000C00000000F00000C00078000C00000000F00000 - E000F8000C00000000F00000F0FFFC000E0000C001F00000F07FFC000F0000C0 - 01F00000F07FFE000F0001E003F00000F07FFE003F0803F007700000F8FFFF00 - FF9E0FFC1FF00000FFFFFFFFFFFFFFFFFF700000FFFFFFFFFFFFFFFFFFB00000 - FFFFFFFFFFFFFFFFFEB00000FFFFFFFFFFFFFFFFFF700000FF83FFF07FF83F87 - 07000000FE00FFC01FE00F8000000000FC007F800FC0078000000000F8003F00 - 078003C00010000080003F00078003C00010000000001C00030001C000100000 - 00001E00030001C00010000000001E00030001C00010000000001E00020000C0 - 0010000000001E00020000C00010000000003E00060000C00010000000003C00 - 060000C000100000000078000E0000C0001000000000F0001E0000C000100000 - 0083E0007E0000E00030000000FFFFDFFE0000F000700000FFFFFFEFFF0009FC - 01F00000FFFFFFFFFF8007FFFFF00000FFFFFFFFFFCC47FFFFF00000FF83FF80 - 7FF83FFF07F00000FE00FF001FE00FFC01F00000FC007E000FC007F800F00000 - F8003C00078003F00070000080003800078003F00070000000001000030001E0 - 0030000000000000030001E00030000000000000030001E00030000000000000 - 030001E000300000F0000000030001E000300000B8003000078003F000700000 - D8003800078003F000700000DC007F800FC007F800F00000D600FFC01FE00FFC - 01F00000B783FFF07FF83FFF07F00000AFFFFFFFFFFFFFFFFFF00000AFFFFFFF - FFFFFFFFFFF00000FBFFFFFFFFFFFFFFFFF00000FBFFFFFFFFFFFFFFFFF00000 - FE0FFFC1FFFE0FFC1FF00000F803FF007FF803F007F00000F001FE003FF001E0 - 03F00000E000FC001C6000C001F00000E000FC001C0000C001F00000C0007800 - 0C00000000F00000800038000C00000000F00000000018000C00000000F00000 - 000010000E00000000F00000000000000E00000000F00000A000A000020000C0 - 01F00000E000F000060000C001F00000F001F000060001E003F00000F803F800 - 070003F004F00000FE0FFC000F0E0FFC0CD00000FFFFFE001FFFFFFFF8700000 - FFFFFF003FFFFFFFD0200000FFFFFFC0FFFFFFFFF8700000FFFFFFFFFFFFFFFF - ECD00000FF83FFF07FFC1FFF07F00000FE00FFC01FF007FC01F00000FC007F80 - 0F8003F800F00000F0003E00070001F000700000E0003C00070001F000700000 - E0001C00030000E00030000080001000038000E00030000080001000038000E0 - 0030000030000600038000E000300000F0001E00038000E000300000E0003C00 - 07C001F000700000C000380007C001F000700000C00078000FE003F800F00000 - 8000F0001FF007FC01F000008083F0107FFC1FFF07F00000C1FFF83FFFFFFFFF - FFF00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFF - FFFFFFFFFFF00000FE0FFFC1FFFE0FFC1FF00000F803FF007FF803F007F00000 - F001FE003FF001E003F00000E000FC001FE000C001F00000E000FC001FE000C0 - 01F00000C00078000F80000000F00000C00078000C00000000F00000C0007800 - 0C00000000F00000C00078000C00000000F00000C00078000C00000000F00000 - E000FC001C0000C001F00000E000FC001C0000C001F00000F001FE003C0001E0 - 03F00000F803FF007C0003F006100000FE0FFFC1FC000FFC1E100000FFFFFFFF - FC01FFFFFF900000FFFFFFFFFC01FFFFFF900000FFFFFFFFFC01FFFFFF800000 - FFFFFFFFFC01FFFFFF8000000783FF00FFF83FFC1FF000000600FE007FE00FF0 - 07F0000004007C003FC007E003F0000000003C003F8003C001F0000000003C00 - 3F8003C001F0000000001C003F00018000F0000000001C003F00018000F00000 - 00001C003F00018000F00000000000000700018000F0000000000C0037000180 - 00F0000000002C00378003C001F0000000003E007F8003C001F0000004007800 - 1E0000E0020000000600F0000C000070077000000783F1E78C00007C1FB00000 - FFFFF3FFCC07C07FFFD00000FFFFF9FF9E0FE0FFFE000000FFFFFDFFBF1FF1FF - FFF00000FFFFFFFFFFFFFFFFFFF00000FE0FFFC1FFF07FFE0FF00000F803FF00 - 7FC01FF803F00000F001FE003F800FF001F00000E000FC001F0007E000F00000 - E000FC001F0007E000F00000C00078000E0003C000700000C00078000E0003C0 - 00700000C00078000E0003C000700000C00078000E0003C000700000C0007800 - 0E0003C000700000E000FC001F0007E000F00000E000FC001F0007E000F00000 - E000FE003F800FF001F00000C0007F007FC01FF803F00000DE0F7FC1FFF07BFE - 0F700000FFFFFFFFFFFFF1FFFEB00000FFFFFFFFFFFFE0FFFC900000FFFFFFFF - FFFFE0FFFC900000FFFFFFFFFFFFF5FFFEB00000FE0FFFC1FFF83FFF07F00000 - F803FF007FE00FFC01F00000F001FE003FC007F800F00000E000FC001F8003F0 - 00700000E000FC001F8003F000700000C00078000F0001E000300000C0007800 - 0F0001E000300000C00078000F0001E000300000C00078000F0001E000300000 - C00078000F0001E000300000E000FC001F8003F000700000E000FC001F8003F0 - 00700000F001FE003FC007F800F00000F803FF007FE00FFC01F00000FE0FFFC1 - FFF83FFF07F00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000 - FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000FE0FFFC1FFF83FFF - 07F00000F803FF007FE00FFC01F00000F001FE003FC007F800F00000E000FC00 - 1F8003F000700000E000FC001F8003F000700000C00078000F0001E000300000 - C00078000F0001E000300000C00078000F0001E000300000C00078000F0001E0 - 00300000C00078000F0001E000300000E000FC001F8003F000700000E000FC00 - 1F8003F000700000F001FE003FC007F800F00000F803FF007FE00FFC01F00000 - FE0FFFC1FFF83FFF07F00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFF - FFF00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000FE0FFFC1 - FFF83FFF07F00000F803FF007FE00FFC01F00000F001FE003FC007F800F00000 - E000FC001F8003F000700000E000FC001F8003F000700000C00078000F0001E0 - 00300000C00078000F0001E000300000C00078000F0001E000300000C0007800 - 0F0001E000300000C00078000F0001E000300000E000FC001F8003F000700000 - E000FC001F8003F000700000F001FE003FC007F800F00000F803FF007FE00FFC - 01F00000FE0FFFC1FFF83FFF07F00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFF - FFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000 - 00000000000000000000000000000000000000000000} - end - object OpenPictureDialog1: TOpenPictureDialog - Left = 176 - Top = 208 - end - object OpenDialog1: TOpenDialog - Left = 176 - Top = 240 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Mega Demo/Demo.pas b/windows/src/ext/embeddedwb/Demos/Mega Demo/Demo.pas deleted file mode 100644 index 54f8acc467..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Mega Demo/Demo.pas +++ /dev/null @@ -1,2157 +0,0 @@ -//*************************************************************** -// EmbeddedWB Mega Demo * -// * -// Freeware Demo * -// by * -// Eran Bodankin (bsalsa) -(bsalsa@bsalsa.com) * -// Thanks to smot for the demo contribution * -// * -//*************************************************************** -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit Demo; - -{$I EWB_jedi.inc} - -interface - -uses - Buttons, Classes, Controls, ComCtrls, Dialogs, Forms, Graphics, Grids, Menus, - ImgList, StdCtrls, ToolWin, ExtCtrls, OleCtrls, {$IFDEF DELPHI_7_UP}XPMan, {$ENDIF} - sysUtils, Windows, FavMenu, ImportFavorites, ExportFavorites, Clipbrd, - HistoryMenu, HistoryListView, FavoritesTree, FavoritesListView, EmbeddedWB, - IEAddress, LinksBar, IEDownload, RichEditBrowser, ExtDlgs, SHDocVw_EWB, - EwbCore, IEDownloadTools, WinSock; - -type - TfrmMain = class(TForm) - AddCurrentSiteToTheLinksList1: TMenuItem; - AddTheSiteToTheList1: TMenuItem; - AddToFavorites1: TMenuItem; - ArabicWindows1: TMenuItem; - BalticWindows1: TMenuItem; - btnGo: TSpeedButton; - CacheTools1: TMenuItem; - CentralEuropeanISO1: TMenuItem; - CharacterSet1: TMenuItem; - CharSetAutomatic1: TMenuItem; - checkOnlineStatus2: TMenuItem; - ChineseSimplifiedGB1: TMenuItem; - ChineseTraditionalBIG1: TMenuItem; - ClearAddressBarTypedURLs1: TMenuItem; - ClearCache1: TMenuItem; - ClearTheLinkList1: TMenuItem; - ClearTheLinksList1: TMenuItem; - Cookies1: TMenuItem; - CookiesCheck1: TMenuItem; - Copy: TMenuItem; - CreateAShortCutOnYourDeskTop1: TMenuItem; - CreateNewMail1: TMenuItem; - Cut1: TMenuItem; - DeleteHistory1: TMenuItem; - MMEdit: TMenuItem; - edtSearch: TEdit; - EmbeddedWB1: TEmbeddedWB; - EmbeddedWBOptions1: TMenuItem; - Exit1: TMenuItem; - ExportFavorite1: TExportFavorite; - ExportFavorites1: TMenuItem; - FavoritesListView1: TFavoritesListView; - FavoritesMenu1: TFavoritesMenu; - FavoritesTools1: TMenuItem; - MMFile: TMenuItem; - FillFormWithPersonalDetails1: TMenuItem; - FindDialog: TMenuItem; - GetAScreanCapture1: TMenuItem; - GetCachedPath: TMenuItem; - GetCookiesPath1: TMenuItem; - GetDefaultWebBrowserFromResistry1: TMenuItem; - GetFavoritesPath1: TMenuItem; - GetHistoryPath1: TMenuItem; - GetHostAndIP1: TMenuItem; - GetIEHomePage: TMenuItem; - GetJpegPageCapture1: TMenuItem; - GetSpecialFolderPath1: TMenuItem; - GetThumbnail: TMenuItem; - GoAboutBlank1: TMenuItem; - GoBack1: TMenuItem; - GoDowloadMasked1: TMenuItem; - Godownloadafile1: TMenuItem; - GoForward1: TMenuItem; - GoHome1: TMenuItem; - GoSearch1: TMenuItem; - GoWithQueryDetails1: TMenuItem; - GreekWindows1: TMenuItem; - GroupBox1: TGroupBox; - haiWindows1: TMenuItem; - HistoryMenu: THistoryMenu; - HistoryTools1: TMenuItem; - HomePage1: TMenuItem; - ilFavoritesTree: TImageList; - ilToolBar: TImageList; - Images1: TMenuItem; - ImageViewer: TImage; - ImgSSL: TImage; - imgUn: TImage; - imgZone: TImage; - ImportExportWizard1: TMenuItem; - ImportFavorite1: TImportFavorite; - ImportFavorites1: TMenuItem; - InternetOptions1: TMenuItem; - Korean1: TMenuItem; - Large1: TMenuItem; - Largest1: TMenuItem; - lblLevel: TLabel; - lblSSL: TLabel; - lblZone: TLabel; - LinksBar1: TLinksBar; - LinksList1: TMenuItem; - LoadFromStream: TMenuItem; - LoadFromStrings: TMenuItem; - lvEventLog: TListBox; - MailTools1: TMenuItem; - MainMenu1: TMainMenu; - MainToolBar: TToolBar; - Medium1: TMenuItem; - N1: TMenuItem; - N10: TMenuItem; - N11: TMenuItem; - N12: TMenuItem; - N13: TMenuItem; - N14: TMenuItem; - N15: TMenuItem; - N16: TMenuItem; - N17: TMenuItem; - N2: TMenuItem; - N3: TMenuItem; - N4: TMenuItem; - N5: TMenuItem; - N6: TMenuItem; - N7: TMenuItem; - N8: TMenuItem; - N9: TMenuItem; - NavigateToLinkItem1: TMenuItem; - NavigateToLinkListItem1: TMenuItem; - MMNavigation: TMenuItem; - OfflineMode1: TMenuItem; - Open: TMenuItem; - Open1: TMenuItem; - OpenAddressBook1: TMenuItem; - OpenCalender1: TMenuItem; - OpenFoldersExplore1: TMenuItem; - OpenGoogleMail1: TMenuItem; - OpenHotmailMail1: TMenuItem; - OpenNetMeeting: TMenuItem; - OpenNewsClient1: TMenuItem; - OpenOtherBrowsersFavorites1: TMenuItem; - OpenOutlook1: TMenuItem; - OpenOutlookExpress1: TMenuItem; - OpenRegistryEditor1: TMenuItem; - OpenYahooMail1: TMenuItem; - PageCtrl: TPageControl; - PageSetup1: TMenuItem; - PageSourceHtmlasstrings1: TMenuItem; - PageSourceText: TMenuItem; - PageSourceTextasstrings1: TMenuItem; - PaneAddress: TPanel; - PanelAcc: TPanel; - PanelMiddle: TPanel; - PanelSearch: TPanel; - PanelSecurity: TPanel; - PanelTop: TPanel; - PanelWEB: TPanel; - Pastefromclipboard1: TMenuItem; - pctrlWB: TPageControl; - pnlFav: TPanel; - PopupMenu1: TPopupMenu; - Print: TMenuItem; - PrintPreview1: TMenuItem; - PrintWithOptions: TMenuItem; - ProgressBar1: TProgressBar; - Properties: TMenuItem; - Refresh1: TMenuItem; - RemoveTheCurrentSiteFromTheLinksList1: TMenuItem; - RemoveTheSiteFromTheList1: TMenuItem; - SaveAllImages: TMenuItem; - SaveAs1: TMenuItem; - Savepagetext: TMenuItem; - SavePageToEmail2: TMenuItem; - SavePageToStream: TMenuItem; - SavePageToStrings1: TMenuItem; - SaveThePageTofile1: TMenuItem; - sbRebuildView: TSpeedButton; - Scrolltothebottom1: TMenuItem; - ScrollToTheTop1: TMenuItem; - ScrolToPosition1: TMenuItem; - SearchImMsn1: TMenuItem; - SearchInGoogle1: TMenuItem; - SearchInYahoo1: TMenuItem; - SelectAll: TMenuItem; - SendThePageInMail1: TMenuItem; - SendTheURL: TMenuItem; - SetIENewHomePage: TMenuItem; - ShowHideTheLinksToolbar1: TMenuItem; - ShowInternetExplorerVersion1: TMenuItem; - ShowOrganizeFavorites1: TMenuItem; - ShowTheList1: TMenuItem; - ShowTheList2: TMenuItem; - Small1: TMenuItem; - Smallest1: TMenuItem; - Spacer: TToolButton; - spdBtnGoogleSearch: TSpeedButton; - Splitter2: TSplitter; - SplitterACC: TSplitter; - Stop1: TMenuItem; - TabBrowser: TTabSheet; - TabEditor: TTabSheet; - TabEvents: TTabSheet; - TabFavoritesLV: TTabSheet; - TabFavoritesTV: TTabSheet; - TabHistoryLV: TTabSheet; - TabImage: TTabSheet; - tbBlock: TToolButton; - ToolBtnAccesories: TToolButton; - ToolbtnBack: TToolButton; - ToolBtnForward: TToolButton; - ToolBtnHome: TToolButton; - ToolBtnRefresh: TToolButton; - ToolBtnSearch: TToolButton; - ToolBtnStop: TToolButton; - ToolButton10: TToolButton; - ToolButton11: TToolButton; - MMTools: TMenuItem; - UnicodeUTF1: TMenuItem; - urkishWindows1: TMenuItem; - MMView: TMenuItem; - ViewHidethelinksbar1: TMenuItem; - ViewHideTheLinksToolbar1: TMenuItem; - ViewPageImagesAsAList1: TMenuItem; - ViewSourceHtml: TMenuItem; - WesternEuropeanISO1: TMenuItem; - Zoom1: TMenuItem; - Security1: TMenuItem; - AddToRestrictedZoneList: TMenuItem; - CheckIfInResrictedZoneList1: TMenuItem; - N18: TMenuItem; - AddToTrustedListZoneList1: TMenuItem; - CheckIfInTrustedZoneList1: TMenuItem; - N19: TMenuItem; - CheckSiteSecurityLevel1: TMenuItem; - CheckSiteSecurityZone1: TMenuItem; - FavoritesTree1: TFavoritesTree; - HistoryListView1: THistoryListView; - TabLinks: TTabSheet; - IEDownload1: TIEDownload; - PanelLinksTop: TPanel; - StringGrid1: TStringGrid; - PanelLinksBottum: TPanel; - Button1: TButton; - RadioButton1: TRadioButton; - RadioButton2: TRadioButton; - CheckTheLinks: TMenuItem; - N20: TMenuItem; - IEDownload: TMenuItem; - CheckURLsFromALinkList1: TMenuItem; - TabFTP: TTabSheet; - EmbeddedWB2: TEmbeddedWB; - Panel1: TPanel; - sbRefresh: TSpeedButton; - edtUser: TEdit; - edtPassword: TEdit; - sbConnect: TSpeedButton; - sbUp: TSpeedButton; - Label1: TLabel; - Label2: TLabel; - SetDesignMode: TMenuItem; - IEAddress1: TIEAddress; - RichViewWBDemo1: TMenuItem; - HighlighHTML1: TMenuItem; - HighLightXML1: TMenuItem; - HighLightURL1: TMenuItem; - InsertFromImageList: TMenuItem; - SetSelectionAsAHyperLink1: TMenuItem; - SetWordAsAHyperLink1: TMenuItem; - AddBullets1: TMenuItem; - AddLineNumbers1: TMenuItem; - AddRomanNumbers1: TMenuItem; - SetFontColor: TMenuItem; - New1: TMenuItem; - Open2: TMenuItem; - Save1: TMenuItem; - SaveAs2: TMenuItem; - AddBackroundColor1: TMenuItem; - SelectFonts1: TMenuItem; - SetSize1: TMenuItem; - SetBold1: TMenuItem; - SetItalic1: TMenuItem; - SetUnderLine1: TMenuItem; - AddDateAndTime1: TMenuItem; - PreviewRichEditLinesInTheBrowser1: TMenuItem; - LoadCodeFromBrowserStream1: TMenuItem; - SetColor1: TMenuItem; - Print1: TMenuItem; - Find1: TMenuItem; - Replace1: TMenuItem; - CreateASnapshot1: TMenuItem; - AddACheckBox1: TMenuItem; - N27: TMenuItem; - AddTEditBox1: TMenuItem; - AddAButton1: TMenuItem; - AddARadioButton1: TMenuItem; - GoToLineNumber1: TMenuItem; - WrapLongLines1: TMenuItem; - MailSelectedText1: TMenuItem; - Mail1: TMenuItem; - ProgressBar2: TProgressBar; - ProgressBar3: TProgressBar; - ilsSmilies: TImageList; - InsertFile: TMenuItem; - OpenPictureDialog1: TOpenPictureDialog; - OpenDialog1: TOpenDialog; - hemes1: TMenuItem; - ToolBar1: TToolBar; - ToolButton1: TToolButton; - File1: TMenuItem; - Edit: TMenuItem; - Tools: TMenuItem; - N22: TMenuItem; - N23: TMenuItem; - N24: TMenuItem; - N25: TMenuItem; - ToolButton2: TToolButton; - ToolButton3: TToolButton; - ShowTheEditor2: TMenuItem; - Fonts: TMenuItem; - Add: TMenuItem; - N26: TMenuItem; - N21: TMenuItem; - InsertBitmap: TMenuItem; - N28: TMenuItem; - ToolButton4: TToolButton; - ToolButton5: TToolButton; - ResetFontsFormat1: TMenuItem; - ShowTheImageEditor1: TMenuItem; - stBar: TStatusBar; - miSave: TMenuItem; - Label3: TLabel; - RichEditWB1: TRichEditWB; - procedure EmbeddedWB1Refresh(Sender: TCustomEmbeddedWB; CmdID: Integer; - var Cancel: Boolean); - procedure EmbeddedWB1ScriptError(Sender: TObject; ErrorLine, ErrorCharacter, - ErrorCode, ErrorMessage, ErrorUrl: string; - var ScriptErrorAction: TScriptErrorAction); - procedure FavoritesMenu1AddFavorites(const EmbeddedWB: TEmbeddedWB; Title, - URL: WideString; Success: Integer); - procedure miSaveClick(Sender: TObject); - procedure IEDownload1Progress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode: Cardinal; szStatusText: PWideChar; Downloaded, ElapsedTime, - Speed, RemainingTime, Status: string); - procedure ShowTheImageEditor1Click(Sender: TObject); - procedure ResetFontsFormat1Click(Sender: TObject); - procedure InsertBitmapClick(Sender: TObject); - procedure ShowTheEditor2Click(Sender: TObject); - procedure hemes1Click(Sender: TObject); - procedure InsertFileClick(Sender: TObject); - procedure RichEditWB1KeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); - procedure RichEditWB1MouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure Mail1Click(Sender: TObject); - procedure MailSelectedText1Click(Sender: TObject); - procedure WrapLongLines1Click(Sender: TObject); - procedure GoToLineNumber1Click(Sender: TObject); - procedure AddAButton1Click(Sender: TObject); - procedure AddARadioButton1Click(Sender: TObject); - procedure AddTEditBox1Click(Sender: TObject); - procedure AddACheckBox1Click(Sender: TObject); - procedure CreateASnapshot1Click(Sender: TObject); - procedure Replace1Click(Sender: TObject); - procedure Find1Click(Sender: TObject); - procedure Print1Click(Sender: TObject); - procedure SetColor1Click(Sender: TObject); - procedure LoadCodeFromBrowserStream1Click(Sender: TObject); - procedure PreviewRichEditLinesInTheBrowser1Click(Sender: TObject); - procedure AddDateAndTime1Click(Sender: TObject); - procedure SetUnderLine1Click(Sender: TObject); - procedure SetItalic1Click(Sender: TObject); - procedure SetSize2Click(Sender: TObject); - procedure SetBold1Click(Sender: TObject); - procedure SetSize1Click(Sender: TObject); - procedure SelectFonts1Click(Sender: TObject); - procedure AddBackroundColor1Click(Sender: TObject); - procedure SetFontColorClick(Sender: TObject); - procedure SaveAs2Click(Sender: TObject); - procedure Save1Click(Sender: TObject); - procedure Open2Click(Sender: TObject); - procedure New1Click(Sender: TObject); - procedure AddRomanNumbers1Click(Sender: TObject); - procedure AddLineNumbers1Click(Sender: TObject); - procedure AddBullets1Click(Sender: TObject); - procedure SetWordAsAHyperLink1Click(Sender: TObject); - procedure SetSelectionAsAHyperLink1Click(Sender: TObject); - procedure InsertFromImageListClick(Sender: TObject); - procedure HighLightXML1Click(Sender: TObject); - procedure HighLightURL1Click(Sender: TObject); - procedure HighlighHTML1Click(Sender: TObject); - procedure SetDesignModeClick(Sender: TObject); - procedure EmbeddedWB2CommandStateChange(ASender: TObject; Command: Integer; - Enable: WordBool); - procedure sbConnectClick(Sender: TObject); - procedure sbUpClick(Sender: TObject); - procedure sbRefreshClick(Sender: TObject); - procedure EmbeddedWB1SetSecureLockIcon(ASender: TObject; - SecureLockIcon: Integer); - procedure CheckURLsFromALinkList1Click(Sender: TObject); - procedure CheckTheLinksClick(Sender: TObject); - procedure RadioButton2Click(Sender: TObject); - procedure RadioButton1Click(Sender: TObject); - function IEDownload1Response(Sender: TBSCB; dwResponseCode: Cardinal; - szResponseHeaders, szRequestHeaders: PWideChar; - out szAdditionalRequestHeaders: PWideChar): HRESULT; - procedure Button1Click(Sender: TObject); - procedure FavoritesTree1NodeAdded(Sender: TObject; const aNode: TTreeNode; - aNodeType: TNodeType); - procedure FavoritesTree1Expanded(Sender: TObject; Node: TTreeNode); - procedure CheckPageSecurityEncryption1Click(Sender: TObject); - procedure CheckSiteSecurityZone1Click(Sender: TObject); - procedure CheckSiteSecurityLevel1Click(Sender: TObject); - procedure CheckIfInTrustedZoneList1Click(Sender: TObject); - procedure AddToTrustedListZoneList1Click(Sender: TObject); - procedure CheckIfInResrictedZoneList1Click(Sender: TObject); - procedure AddToRestrictedZoneListClick(Sender: TObject); - procedure AddTheSiteToTheList1Click(Sender: TObject); - procedure AddToFavorites1Click(Sender: TObject); - procedure btnGoClick(Sender: TObject); - procedure CharSetAutomatic1Click(Sender: TObject); - procedure checkOnlineStatus2Click(Sender: TObject); - procedure ClearAddressBarTypedURLs1Click(Sender: TObject); - procedure ClearCache1Click(Sender: TObject); - procedure ClearTheLinkList1Click(Sender: TObject); - procedure CookiesCheck1Click(Sender: TObject); - procedure CopyClick(Sender: TObject); - procedure CreateAShortCutOnYourDeskTop1Click(Sender: TObject); - procedure CreateNewMail1Click(Sender: TObject); - procedure Cut1Click(Sender: TObject); - procedure DeleteHistory1Click(Sender: TObject); - procedure EmbeddedWB1BeforeNavigate2(ASender: TObject; const pDisp: IDispatch; - var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); - procedure EmbeddedWB1CommandStateChange(ASender: TObject; Command: Integer; - Enable: WordBool); - procedure EmbeddedWB1DocumentComplete(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant); - procedure EmbeddedWB1DownloadBegin(Sender: TObject); - procedure EmbeddedWB1DownloadComplete(Sender: TObject); - procedure EmbeddedWB1FullScreen(ASender: TObject; FullScreen: WordBool); - procedure EmbeddedWB1NavigateComplete2(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant); - procedure EmbeddedWB1NewWindow2(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool); - procedure EmbeddedWB1ProgressChange(ASender: TObject; Progress, ProgressMax: Integer); - procedure EmbeddedWB1PropertyChange(ASender: TObject; const szProperty: WideString); - procedure EmbeddedWB1StatusTextChange(ASender: TObject; const Text: WideString); - procedure EmbeddedWB1TitleChange(ASender: TObject; const Text: WideString); - procedure EmbeddedWB1Visible(ASender: TObject; Visible: WordBool); - procedure Exit1Click(Sender: TObject); - procedure ExportFavorites1Click(Sender: TObject); - procedure FillFormWithPersonalDetails1Click(Sender: TObject); - procedure FindDialogClick(Sender: TObject); - procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); - procedure FormCreate(Sender: TObject); - procedure FormDestroy(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure GetAScreanCapture1Click(Sender: TObject); - procedure GetCachedPathClick(Sender: TObject); - procedure GetCookiesPath1Click(Sender: TObject); - procedure GetDefaultWebBrowserFromResistry1Click(Sender: TObject); - procedure GetFavoritesPath1Click(Sender: TObject); - procedure GetHistoryPath1Click(Sender: TObject); - procedure GetHostAndIP1Click(Sender: TObject); - procedure GetIEHomePageClick(Sender: TObject); - procedure GetJpegPageCapture1Click(Sender: TObject); - procedure GetSpecialFolderPath1Click(Sender: TObject); - procedure GetThumbnailClick(Sender: TObject); - procedure GoAboutBlank1Click(Sender: TObject); - procedure GoDowloadMasked1Click(Sender: TObject); - procedure Godownloadafile1Click(Sender: TObject); - procedure GoWithQueryDetails1Click(Sender: TObject); - procedure IEAddress1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure ImportExportWizard1Click(Sender: TObject); - procedure ImportFavorites1Click(Sender: TObject); - procedure InternetOptions1Click(Sender: TObject); - procedure LoadFromStreamClick(Sender: TObject); - procedure LoadFromStringsClick(Sender: TObject); - procedure NavigateToLinkItem1Click(Sender: TObject); - procedure OfflineMode1Click(Sender: TObject); - procedure OpenAddressBook1Click(Sender: TObject); - procedure OpenCalender1Click(Sender: TObject); - procedure OpenClick(Sender: TObject); - procedure OpenFoldersExplore1Click(Sender: TObject); - procedure OpenGoogleMail1Click(Sender: TObject); - procedure OpenHotmailMail1Click(Sender: TObject); - procedure OpenMailClient1Click(Sender: TObject); - procedure OpenNetMeetingClick(Sender: TObject); - procedure OpenNewsClient1Click(Sender: TObject); - procedure OpenOutlook1Click(Sender: TObject); - procedure OpenOutlookExpress1Click(Sender: TObject); - procedure OpenRegistryEditor1Click(Sender: TObject); - procedure OpenYahooMail1Click(Sender: TObject); - procedure PageCtrlChange(Sender: TObject); - procedure PageSetup1Click(Sender: TObject); - procedure PageSourceHtmlasstrings1Click(Sender: TObject); - procedure PageSourceTextasstrings1Click(Sender: TObject); - procedure PageSourceTextClick(Sender: TObject); - procedure Pastefromclipboard1Click(Sender: TObject); - procedure PrintClick(Sender: TObject); - procedure PrintPreview1Click(Sender: TObject); - procedure PrintWithOptionsClick(Sender: TObject); - procedure PropertiesClick(Sender: TObject); - procedure RemoveTheSiteFromTheList1Click(Sender: TObject); - procedure SaveAllImagesClick(Sender: TObject); - procedure SaveAs1Click(Sender: TObject); - procedure SavepagetextClick(Sender: TObject); - procedure SavePageToStreamClick(Sender: TObject); - procedure SavePageToStrings1Click(Sender: TObject); - procedure SaveThePageTofile1Click(Sender: TObject); - procedure sbRebuildViewClick(Sender: TObject); - procedure Scrolltothebottom1Click(Sender: TObject); - procedure ScrollToTheTop1Click(Sender: TObject); - procedure ScrolToPosition1Click(Sender: TObject); - procedure SearchImMsn1Click(Sender: TObject); - procedure SearchInGoogle1Click(Sender: TObject); - procedure SearchInYahoo1Click(Sender: TObject); - procedure SelectAllClick(Sender: TObject); - procedure SendThePageInMail1Click(Sender: TObject); - procedure SendTheURLClick(Sender: TObject); - procedure SetIENewHomePageClick(Sender: TObject); - procedure ShowInternetExplorerVersion1Click(Sender: TObject); - procedure ShowOrganizeFavorites1Click(Sender: TObject); - procedure ShowTheList1Click(Sender: TObject); - procedure Smallest1Click(Sender: TObject); - procedure spdBtnGoogleSearchClick(Sender: TObject); - procedure ToolBtnAccesoriesClick(Sender: TObject); - procedure ToolbtnBackClick(Sender: TObject); - procedure ToolBtnForwardClick(Sender: TObject); - procedure ToolBtnHomeClick(Sender: TObject); - procedure ToolBtnRefreshClick(Sender: TObject); - procedure ToolBtnSearchClick(Sender: TObject); - procedure ToolBtnStopClick(Sender: TObject); - procedure ViewHidethelinksbar1Click(Sender: TObject); - procedure ViewHideTheLinksToolbar1Click(Sender: TObject); - procedure ViewPageLinksAsAList1Click(Sender: TObject); - procedure ViewSourceHtmlClick(Sender: TObject); - procedure Zoom1Click(Sender: TObject); - procedure edtSearchDblClick(Sender: TObject); - procedure EmbeddedWB1ShowDialog(Sender: TObject; h: Cardinal; - StyleEx: Integer; OldCaption: string; var NewCaption: WideString; - var Cancel: Boolean); - private - Links: TStringlist; - EncryptionSt: string; - InitialURL: WideString; - procedure AddEventLog(s: string); - procedure UpdateSecurityZone; - procedure UpdateSSLStatus; - procedure UpdateStopButton; - procedure UpdateControls; - procedure UpdateEditor; - procedure UpdateImage; - procedure UpdateView; - procedure ClearResultsGrid; - procedure ClearAllGrid; - procedure UpdateLinksChecker; - procedure UpdateProgressBars; - end; - -var - frmMain: TfrmMain; - -implementation - -{$R *.dfm} - -uses - EWBTools; - -//////////////////{ Private Section } ////////////////// - -procedure TfrmMain.UpdateProgressBars; -begin - ProgressBar2.Max := RichEditWB1.GetLineCount; - ProgressBar2.Position := RichEditWB1.CursorPositionY; - ProgressBar3.Max := RichEditWB1.GetLineLength(RichEditWB1.CursorPositionY); - ProgressBar3.Position := RichEditWB1.CursorPositionX; -end; - -procedure TfrmMain.UpdateSecurityZone; -var - Name, Description: string; - Icon: TIcon; -begin - Icon := TIcon.Create; - try - EmbeddedWB1.GetURLSecurityZone(Name, Description, Icon); - imgZone.Picture.Icon := Icon; - Forms.Application.Icon := Icon; - finally - Icon.Free; - end; - stBar.Panels[1].Text := Name; - stBar.Hint := Description; - lblZone.Caption := Name; - lblZone.Hint := Description; - imgZone.Hint := 'The Web Site Security Zone Is ' + Name; -end; - -procedure TfrmMain.UpdateSSLStatus; -var - SSLName, SSLDescription: string; -begin - if EmbeddedWB1.GetSSLStatus(SSLName, SSLDescription) then - begin - ImgUn.Visible := False; - imgSSl.Visible := True; - stBar.Panels[2].Text := SSLName; - stBar.Hint := SSLDescription; - lblSSL.Caption := SSLName; - lblSSL.Hint := SSLDescription; - imgSSL.Hint := 'The Page SSL Security Status Is ' + SSLName; - end - else - begin - ImgUn.Visible := True; - stBar.Panels[2].Text := ''; - stBar.Hint := ''; - lblSSL.Caption := ''; - lblSSL.Hint := ''; - imgSSl.Visible := False; - imgSSL.Hint := ''; - end; -end; - -procedure TfrmMain.AddEventLog(s: string); -begin - lvEventLog.ItemIndex := lvEventLog.Items.Add(s); -end; - -procedure TfrmMain.UpdateView; -begin - case pagectrl.ActivePageIndex of - 0: FavoritesListView1.Loaded; - 1: FavoritesTree1.Refresh; - 2: HistoryListView1.Loaded; - 4: EmbeddedWB2.Navigate('c:\'); - end -end; - -procedure TfrmMain.UpdateEditor; -begin - pctrlWB.Pages[1].TabVisible := True; - pctrlWB.ActivePage := TabEditor; -end; - -procedure TfrmMain.UpdateLinksChecker; -begin - pctrlWB.Pages[3].TabVisible := True; - pctrlWB.ActivePage := TabLinks; -end; - -procedure TfrmMain.UpdateImage; -begin - pctrlWB.Pages[2].TabVisible := True; - pctrlWB.ActivePage := TabImage; -end; - -procedure TfrmMain.UpdateStopButton; -begin - if EmbeddedWB1.Busy then - begin - ToolBtnStop.Enabled := True; - Stop1.Enabled := True; - end - else - begin - ToolBtnStop.Enabled := False; - Stop1.Enabled := False; - end; -end; - -procedure TfrmMain.UpdateControls; -begin - if Assigned(EmbeddedWB1) then - if EmbeddedWB1.Busy then - EmbeddedWB1.Stop; -end; - -procedure TfrmMain.ClearResultsGrid; -var - X, y: Integer; -begin - for x := 1 to Links.Count do - for y := 1 to 2 do - Stringgrid1.Cells[y, x] := ''; -end; - -procedure TfrmMain.ClearAllGrid; -var - X, y: Integer; -begin - for x := 1 to Links.Count do - for y := 0 to 2 do - Stringgrid1.Cells[y, x] := ''; -end; - -////////////{ End of private section } /////////// - -//////////////////{ Form procedures section} ////////////////// - -procedure TfrmMain.FormDestroy(Sender: TObject); -begin - Links.Free; - HistoryMenu.Free; -end; - -procedure TfrmMain.FormCreate(Sender: TObject); -var - UrlList: TStringList; -begin -// RichEditWB1.RTFText := '{\rtf1\ansi\deff0{\fonttbl{\f0\fnil Tahoma;}}{\colortbl ;\red0\green0\blue0;}\viewkind4\uc1\pard\cf1\lang2055\f0\fs16\par}'; - -{$IFDEF DELPHI_7_UP} - TxpManifest.Create(FrmMain); -{$ENDIF} - HistoryMenu.CreateMenu; - FavoritesMenu1.CreateMenu; - UrlList := TStringList.Create; - try - Links := TStringlist.create; - try - if FileExists('links.txt') then - Links.LoadFromFile('links.txt'); - LinksBar1.GetTheLinksURLs(UrlList); - Links.Add(''); - Links.AddStrings(UrlList); - finally - end; - finally - UrlList.Free; - end; -end; - -procedure TfrmMain.FormShow(Sender: TObject); -var - LastVisitedPage: string; - i: Integer; -begin -{$IFDEF DELPHI_9_UP} - EmbeddedWB1.OnSetSecureLockIcon := EmbeddedWB1SetSecureLockIcon; -{$ENDIF} - EmbeddedWB2.Go('c:\'); - Stringgrid1.Cells[0, 0] := 'Url'; - Stringgrid1.Cells[1, 0] := 'Status'; - Stringgrid1.Cells[2, 0] := 'Result'; - for i := 0 to links.count - 1 do - begin - Stringgrid1.RowCount := i + 2; - Stringgrid1.Cells[0, i + 1] := links[i]; - end; - pctrlWB.ActivePage := TabBrowser; - EmbeddedWB1.RestoreApplicationFormSize; - if EmbeddedWB1.GetLastVisitedPage(LastVisitedPage) and - (Pos('http', LastVisitedPage) > 0) then - EmbeddedWB1.Navigate(LastVisitedPage) - else - EmbeddedWB1.GoHome; -end; - -procedure TfrmMain.FormCloseQuery(Sender: TObject; var CanClose: Boolean); -begin - EmbeddedWB1.SaveLastVisitedPage; - EmbeddedWB1.SaveApplicationFormSize; - UpdateControls; - if FileExists(ExtractFilePath(ParamStr(0)) + 'Site.html') then - DeleteFile('Site.html'); - CanClose := Assigned(EmbeddedWB1) and not EmbeddedWB1.Busy -// if canclose then asm int 3; end; -end; -//////////////////{End of Form procedures section } ////////////////// - -procedure TfrmMain.sbRebuildViewClick(Sender: TObject); -begin - UpdateView(); -end; - -procedure TfrmMain.OpenClick(Sender: TObject); -begin - EmbeddedWB1.OpenDialog; -end; - -procedure TfrmMain.PrintClick(Sender: TObject); -begin - EmbeddedWB1.Print; -end; - -procedure TfrmMain.PrintPreview1Click(Sender: TObject); -begin - EmbeddedWB1.PrintPreView; -end; - -procedure TfrmMain.PageSetup1Click(Sender: TObject); -begin - EmbeddedWB1.PrintSetup; -end; - -procedure TfrmMain.PropertiesClick(Sender: TObject); -begin - EmbeddedWB1.ShowPageProperties; -end; - -procedure TfrmMain.OfflineMode1Click(Sender: TObject); -begin - if OfflineMode1.Checked then - EmbeddedWB1.WorkOffline - else - EmbeddedWB1.WorkOnline; -end; - -procedure TfrmMain.Exit1Click(Sender: TObject); -begin - Close; -end; - -procedure TfrmMain.SaveAs1Click(Sender: TObject); -begin - EmbeddedWB1.SaveDialog; -end; - -procedure TfrmMain.SavepagetextClick(Sender: TObject); -begin - EmbeddedWB1.SavePageTextDialog; -end; - -procedure TfrmMain.ViewSourceHtmlClick(Sender: TObject); -begin - EmbeddedWB1.ViewPageSourceHtml; -end; - -procedure TfrmMain.PageSourceTextClick(Sender: TObject); -begin - EmbeddedWB1.ViewPageSourceText; -end; - -procedure TfrmMain.InternetOptions1Click(Sender: TObject); -begin - EmbeddedWB1.ShowInternetOptions; -end; - -procedure TfrmMain.CopyClick(Sender: TObject); -begin - EmbeddedWB1.Copy; -end; - -procedure TfrmMain.SelectAllClick(Sender: TObject); -begin - EmbeddedWB1.SelectAll; -end; - -procedure TfrmMain.FindDialogClick(Sender: TObject); -begin - EmbeddedWB1.ShowFindDialog; -end; - -procedure TfrmMain.SaveAllImagesClick(Sender: TObject); -begin - EmbeddedWB1.SaveImagesDialog; -end; - -procedure TfrmMain.GetIEHomePageClick(Sender: TObject); -begin - ShowMessage(EmbeddedWB1.GetIEHomePage); -end; - -procedure TfrmMain.SetIENewHomePageClick(Sender: TObject); -begin - EmbeddedWB1.SetNewHomePage('http://groups.yahoo.com/group/delphi-webbrowser/'); -end; - -procedure TfrmMain.SendTheURLClick(Sender: TObject); -begin - EmbeddedWB1.SendURLInMail; -end; - -procedure TfrmMain.EmbeddedWB1DownloadComplete(Sender: TObject); -begin - AddEventLog('OnDocumentComplete ' + EmbeddedWB1.LocationName); - ProgressBar1.Visible := False; - EmbeddedWB1.SetFocusToDoc; -end; - -procedure TfrmMain.EmbeddedWB1TitleChange(ASender: TObject; - const Text: WideString); -begin - frmMain.Caption := ('Web Site Name: ' + EmbeddedWB1.LocationName); - stBar.Panels[0].Text := Text; -end; - -procedure TfrmMain.EmbeddedWB1StatusTextChange(ASender: TObject; - const Text: WideString); -begin - stBar.Panels[0].Text := Text; -end; - -procedure TfrmMain.ToolBtnRefreshClick(Sender: TObject); -begin - UpdateControls; - EmbeddedWB1.Refresh; -end; - -procedure TfrmMain.ToolBtnHomeClick(Sender: TObject); -begin - UpdateControls; - EmbeddedWB1.GoHome; -end; - -procedure TfrmMain.ToolBtnSearchClick(Sender: TObject); -begin - EmbeddedWB1.ShowFindDialog; -end; - -procedure TfrmMain.ToolBtnAccesoriesClick(Sender: TObject); -begin - PanelACC.Visible := ToolBtnAccesories.Down; -end; - -procedure TfrmMain.ToolBtnStopClick(Sender: TObject); -begin - UpdateControls; -end; - -procedure TfrmMain.ToolBtnForwardClick(Sender: TObject); -begin - UpdateControls; - EmbeddedWB1.GoForward; -end; - -procedure TfrmMain.ToolbtnBackClick(Sender: TObject); -begin - UpdateControls; - EmbeddedWB1.GoBack; -end; - -procedure TfrmMain.btnGoClick(Sender: TObject); -begin - UpdateControls; - EmbeddedWB1.Go(Trim(IEAddress1.Text)); -end; - -procedure TfrmMain.EmbeddedWB1CommandStateChange(ASender: TObject; - Command: Integer; Enable: WordBool); -const - CSC_UPDATECOMMANDS = -1; -begin - case Command of - CSC_NAVIGATEBACK: - begin - ToolbtnBack.Enabled := Enable; - GoBack1.Enabled := Enable; - end; - CSC_NAVIGATEFORWARD: - begin - ToolbtnForward.Enabled := Enable; - GoForward1.Enabled := Enable; - end; - CSC_UPDATECOMMANDS: - begin - ToolbtnStop.Enabled := EmbeddedWB1.Busy; - Stop1.Enabled := EmbeddedWB1.Busy; - end; - end; -end; - -procedure TfrmMain.EmbeddedWB1DownloadBegin(Sender: TObject); -begin - AddEventLog('OnDownloadBegin'); - UpdateStopButton; -end; - -procedure TfrmMain.EmbeddedWB1PropertyChange(ASender: TObject; - const szProperty: WideString); -begin - UpdateStopButton; -end; - -procedure TfrmMain.EmbeddedWB1Refresh(Sender: TCustomEmbeddedWB; CmdID: Integer; - var Cancel: Boolean); -begin - AddEventLog('OnRefresh. CmdID: ' + IntToStr(CmdID)); -end; - -procedure TfrmMain.EmbeddedWB1ProgressChange(ASender: TObject; Progress, - ProgressMax: Integer); -begin - UpdateStopButton; - if (Progress >= 1) and (ProgressMax > 1) then - begin - ProgressBar1.Position := Round((Progress * 100) div ProgressMax); - ProgressBar1.Visible := True; - // Stbar.Panels[3].Text := 'Download Progress: '+ Format('%d %', [Progress Div 100]); - end else - begin - ProgressBar1.Position := 1; - // stBar.Panels[3].Text:=''; - ProgressBar1.Visible := False; - end; -end; - -procedure TfrmMain.Smallest1Click(Sender: TObject); -var - k: Integer; -begin - if not EmbeddedWB1.Busy then - begin - for k := 0 to Zoom1.Count - 1 do - Zoom1.Items[k].Checked := False; - - TMenuItem(Sender).Checked := True; - EmbeddedWb1.Zoom := ((Sender as TMenuitem).Tag); - end; -end; - -procedure TfrmMain.Zoom1Click(Sender: TObject); -var - ZoomIndex: integer; -begin - ZoomIndex := EmbeddedWB1.Zoom; - case ZoomIndex of - 4: Largest1.Checked := True; - 3: Large1.Checked := True; - 2: Medium1.Checked := True; - 1: Small1.Checked := True; - 0: Smallest1.Checked := True; - end; -end; - -procedure TfrmMain.Cut1Click(Sender: TObject); -begin - EmbeddedWB1.Cut; -end; - -procedure TfrmMain.Pastefromclipboard1Click(Sender: TObject); -begin - EmbeddedWB1.Paste; -end; - -procedure TfrmMain.ScrollToTheTop1Click(Sender: TObject); -begin - EmbeddedWB1.ScrollToTop; -end; - -procedure TfrmMain.Scrolltothebottom1Click(Sender: TObject); -begin - EmbeddedWB1.ScrollToBottom; -end; - -procedure TfrmMain.ScrolToPosition1Click(Sender: TObject); -begin - EmbeddedWB1.ScrollToPosition(200, 200); -end; - -procedure TfrmMain.GetCachedPathClick(Sender: TObject); -begin - ShowMessage(EmbeddedWB1.GetCachedFileFromURL(IEAddress1.Text)); -end; - -procedure TfrmMain.CharSetAutomatic1Click(Sender: TObject); -begin - if EmbeddedWB1.SetCharartersSet(TMenuItem(Sender).Hint) then - TMenuItem(Sender).Checked := True; -end; - -procedure TfrmMain.CookiesCheck1Click(Sender: TObject); -var - st: string; -begin - st := EmbeddedWB1.GetCookie; - SetLength(st, 180); - if st <> '' then - ShowMessage('The web site has just added a cookie:' - + #10 + #13 + st) - else - ShowMessage('No cookies were found.'); -end; - -procedure TfrmMain.spdBtnGoogleSearchClick(Sender: TObject); -begin - EmbeddedWB1.GoSearchInGoogle(edtSearch.Text); -end; - -procedure TfrmMain.edtSearchDblClick(Sender: TObject); -begin - edtSearch.SelectAll; -end; - -procedure TfrmMain.GetCookiesPath1Click(Sender: TObject); -var - st: string; -begin - st := EmbeddedWB1.GetCookiesPath; - ShowMessage(st); -end; - -procedure TfrmMain.GetHistoryPath1Click(Sender: TObject); -var - st: string; -begin - st := EmbeddedWB1.GetHistoryPath; - ShowMessage(st); -end; - -procedure TfrmMain.GetFavoritesPath1Click(Sender: TObject); -var - st: string; -begin - st := EmbeddedWB1.GetHistoryPath; - ShowMessage(st); -end; - -procedure TfrmMain.ShowOrganizeFavorites1Click(Sender: TObject); -begin - EmbeddedWB1.ShowOrganizeFavorites; -end; - -procedure TfrmMain.IEAddress1KeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); -begin - if (Key = 13) then - begin - UpdateControls; - EmbeddedWB1.Go(trim(IEAddress1.Text)); - end; -end; - -procedure TfrmMain.EmbeddedWB1NewWindow2(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool); -begin - AddEventLog('OnNewWindow'); - if tbBlock.Down then - Cancel := True - else - EmbeddedWB1.Navigate(InitialURL); -end; - -procedure TfrmMain.OpenAddressBook1Click(Sender: TObject); -begin - EWBTools.OpenAddressBook; -end; - -procedure TfrmMain.OpenMailClient1Click(Sender: TObject); -begin - EWBTools.OpenOutlookMail; -end; - -procedure TfrmMain.OpenNewsClient1Click(Sender: TObject); -begin - EWBTools.OpenNewsClient; -end; - -procedure TfrmMain.OpenCalender1Click(Sender: TObject); -begin - EWBTools.OpenCalendar; -end; - -procedure TfrmMain.OpenNetMeetingClick(Sender: TObject); -begin - EWBTools.OpenNetMeeting; -end; - -procedure TfrmMain.OpenYahooMail1Click(Sender: TObject); -begin - EWBTools.OpenYahooMail(EmbeddedWB1); -end; - -procedure TfrmMain.OpenOutlookExpress1Click(Sender: TObject); -begin - EWBTools.OpenOutlookExpressMail; -end; - -procedure TfrmMain.OpenOutlook1Click(Sender: TObject); -begin - EWBTools.OpenOutlookMail; -end; - -procedure TfrmMain.OpenGoogleMail1Click(Sender: TObject); -begin - EWBTools.OpenGoogleMail(EmbeddedWB1); -end; - -procedure TfrmMain.OpenHotmailMail1Click(Sender: TObject); -begin - EWBTools.OpenHotmailMail(EmbeddedWB1); -end; - -procedure TfrmMain.EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - lvEventLog.Clear; - AddEventLog('OnBeforeNavigate2 ' + URL); - Cancel := tbBlock.Marked; -end; - -procedure TfrmMain.EmbeddedWB1NavigateComplete2(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); -begin - AddEventLog('OnNavigateComplete2 ' + URL); - IEAddress1.Text := EmbeddedWB1.LocationURL; - UpdateSecurityZone; - UpdateSSLStatus; -end; - -procedure TfrmMain.EmbeddedWB1DocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); -begin - AddEventLog('OnDocumentComplete: ' + URL); -end; - -procedure TfrmMain.EmbeddedWB1FullScreen(ASender: TObject; - FullScreen: WordBool); -begin - if FullScreen then - AddEventLog('OnFullScreen: ' + 'FullScreen'); -end; - -procedure TfrmMain.EmbeddedWB1Visible(ASender: TObject; Visible: WordBool); -begin - if Visible then - AddEventLog('OnVisible: ' + 'Visible'); -end; - -procedure TfrmMain.GoAboutBlank1Click(Sender: TObject); -begin - EmbeddedWB1.GoAboutBlank; -end; - -procedure TfrmMain.Godownloadafile1Click(Sender: TObject); -var - URL: string; -begin - UpdateControls; - InputQuery('Download a file', 'Please Enter a valid path + file name', URL); - EmbeddedWB1.GoDownloadFile(URL); -end; - -procedure TfrmMain.GoDowloadMasked1Click(Sender: TObject); -const - CSIDL_DESKTOPDIRECTORY = $0010; -begin - UpdateControls; - EmbeddedWB1.GoDownloadMaskedFile('http://www.google.com/intl/de/images/home_title.gif', - (EmbeddedWB1.GetSpecialFolderPath(Handle, CSIDL_DESKTOPDIRECTORY)) + '\google-image.gif', True); -end; - -procedure TfrmMain.checkOnlineStatus2Click(Sender: TObject); -begin - if not EmbeddedWB1.CheckOnlineStatus then - MessageDlg('It looks like if you are not connected to the internet!', mtWarning, mbOKCancel, 0) - else - MessageDlg('Connected to the internet!', mtInformation, [mbOK], 0) -end; - -procedure TfrmMain.SaveThePageTofile1Click(Sender: TObject); -begin - EmbeddedWB1.SaveToFile('Site.html'); - EmbeddedWB1.ExploreFolder(ExtractFilePath(Application.ExeName)); -end; - -procedure TfrmMain.SendThePageInMail1Click(Sender: TObject); -begin - EmbeddedWB1.SendPageInMailAsAttachment(FrmMain, 'Site.html', 'Check this site', 'With regards'); -end; - -procedure TfrmMain.CreateNewMail1Click(Sender: TObject); -begin - EmbeddedWB1.CreateNewMail; -end; - -procedure TfrmMain.GetSpecialFolderPath1Click(Sender: TObject); -const - CSIDL_DESKTOPDIRECTORY = $0010; - {MoreUses: (shlobj.pas)} - {CSIDL_DESKTOP = $0000; CSIDL_DRIVES = $0011; - CSIDL_PROGRAMS = $0002; CSIDL_NETWORK = $0012; - CSIDL_CONTROLS = $0003; CSIDL_NETHOOD = $0013; - CSIDL_PRINTERS = $0004; CSIDL_FONTS = $0014; - CSIDL_PERSONAL = $0005; CSIDL_TEMPLATES = $0015; - CSIDL_FAVORITES = $0006; CSIDL_TEMPLATES = $0015; - CSIDL_STARTUP = $0007; CSIDL_COMMON_STARTMENU = $0016; - CSIDL_RECENT = $0008; CSIDL_COMMON_PROGRAMS = $0017; - CSIDL_SENDTO = $0009; CSIDL_COMMON_STARTUP = $0018; - CSIDL_BITBUCKET = $000a; CSIDL_COMMON_DESKTOPDIRECTORY = $0019; - CSIDL_STARTMENU = $000b; CSIDL_APPDATA = $001A; - CSIDL_DESKTOPDIRECTORY = $0010; CSIDL_PRINTHOOD = $001B;} -begin - ShowMessage('Your Desktop Path is: ' + EmbeddedWB1.GetSpecialFolderPath(Handle, CSIDL_DESKTOPDIRECTORY)); -end; - -procedure TfrmMain.CreateAShortCutOnYourDeskTop1Click(Sender: TObject); -begin - EmbeddedWB1.CreateDesktopShortcut; -end; - -procedure TfrmMain.ExportFavorites1Click(Sender: TObject); -begin - ExportFavorite1.ExportFavorites; - if ExportFavorite1.SuccessFlag then - EmbeddedWB1.Navigate(ExportFavorite1.NavigatePath); -end; - -procedure TfrmMain.ImportFavorites1Click(Sender: TObject); -begin - ImportFavorite1.ImportFavorites; - UpdateView(); - if ImportFavorite1.SuccessFlag then - EmbeddedWB1.ShowOrganizeFavorites; -end; - -procedure TfrmMain.AddToFavorites1Click(Sender: TObject); -begin - EmbeddedWB1.AddToFavorites(EmbeddedWB1.LocationURL, EmbeddedWB1.LocationName); - UpdateView(); -end; - -procedure TfrmMain.FavoritesMenu1AddFavorites(const EmbeddedWB: TEmbeddedWB; - Title, URL: WideString; Success: Integer); -begin - ShowMessage(EmbeddedWB.GetNamePath + '' + Title + '' + URL); -end; - -procedure TfrmMain.FavoritesTree1Expanded(Sender: TObject; Node: TTreeNode); -begin - if (pos('Links', Node.Text) > 0) or (pos('Imported', Node.Text) > 0) - then - with node do - begin - HasChildren := True; - if not Expanded then - ImageIndex := 6 - else - ImageIndex := 7; - end -end; - -procedure TfrmMain.GoWithQueryDetails1Click(Sender: TObject); -var - Url, Query: string; -begin - InputQuery('Browser Demo', 'Please enter the url', Url); - InputQuery('Browser Demo', 'Please enter the Query', Query); - EmbeddedWB1.GoWithQueryDetails(Url, Query); -end; - -procedure TfrmMain.LoadFromStringsClick(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.Lines.Add('

This HTML is a test of: Browser - Load From Strings.

'); - pctrlWB.Pages[1].Caption := 'Browser - Load From Strings'; - EmbeddedWB1.LoadFromStrings(RichEditWB1.Lines); - RichEditWB1.DoHighlightHtml; -end; - -procedure TfrmMain.SavePageToStrings1Click(Sender: TObject); -begin - UpdateEditor; - pctrlWB.Pages[1].Caption := 'Browser - Save To Strings'; - EmbeddedWB1.SaveToStrings(RichEditWB1.Lines); -end; - -procedure TfrmMain.SavePageToStreamClick(Sender: TObject); -var - Stm: TMemoryStream; -begin - Stm := TMemoryStream.Create; - try - UpdateEditor; - pctrlWB.Pages[1].Caption := 'Browser - Save To Stream'; - EmbeddedWB1.SaveToStream(Stm); - Stm.Position := 0; - RichEditWB1.Lines.LoadFromStream(Stm); - RichEditWB1.DoHighlightHTML; - finally - Stm.Free; - end; -end; - -procedure TfrmMain.LoadFromStreamClick(Sender: TObject); -var - Stm: TMemoryStream; -begin - Stm := TMemoryStream.Create; - try - UpdateEditor; - RichEditWB1.Lines.Add('

This HTML is a test of: Browser - Load From Stream.

'); - RichEditWB1.DoHighlightHTML; - pctrlWB.Pages[1].Caption := 'Browser - Load From Stream'; - RichEditWB1.Lines.SaveToStream(Stm); - Stm.Position := 0; - EmbeddedWB1.LoadFromStream(Stm); - finally - Stm.Free; - end; -end; - -procedure TfrmMain.ImportExportWizard1Click(Sender: TObject); -begin - EmbeddedWB1.ShowImportExportFavoritesAndCookies; -end; - -procedure TfrmMain.ShowInternetExplorerVersion1Click(Sender: TObject); -begin - EmbeddedWB1.ShowIEVersionInfo; -end; - -procedure TfrmMain.GetHostAndIP1Click(Sender: TObject); -var - HostN, HostIP, Err: string; -begin - if EmbeddedWB1.GetIPAndHostName(HostN, HostIP, Err) then - MessageDlg('PC Host Name: ' + HostN + #10 + #13 + 'Your Internal IP: ' + HostIP, mtInformation, [mbOk], 0) - else - MessageDlg(Err, mtError, [mbOk], 0); -end; - -procedure TfrmMain.GetDefaultWebBrowserFromResistry1Click(Sender: TObject); -begin - MessageDlg('Current Default Web Browser is: ' + EmbeddedWB1.GetDefaultBrowserFromRegistry, mtInformation, [mbOk], 0) -end; - -procedure TfrmMain.ClearCache1Click(Sender: TObject); -begin - EmbeddedWB1.ClearCache; -end; - -procedure TfrmMain.DeleteHistory1Click(Sender: TObject); -begin - EmbeddedWB1.ClearHistory; -end; - -procedure TfrmMain.ClearAddressBarTypedURLs1Click(Sender: TObject); -begin - EmbeddedWB1.ClearTypedURLs; -end; - -procedure TfrmMain.PageSourceHtmlAsStrings1Click(Sender: TObject); -begin - UpdateEditor; - EmbeddedWB1.ViewPageSourceHtmlToStrings(RichEditWB1.Lines); - if RichEditWB1.HighlightHTML then - RichEditWB1.DoHighlightHTML; -end; - -procedure TfrmMain.PageSourceTextAsStrings1Click(Sender: TObject); -begin - UpdateEditor; - EmbeddedWB1.ViewPageSourceTextToStrings(RichEditWB1.Lines); -end; - -procedure TfrmMain.ViewPageLinksAsAList1Click(Sender: TObject); -begin - UpdateEditor; - EmbeddedWB1.ViewPageLinksToStrings(RichEditWB1.Lines); -end; - -procedure TfrmMain.PageCtrlChange(Sender: TObject); -begin - UpdateView(); -end; - -procedure TfrmMain.SearchImMsn1Click(Sender: TObject); -begin - EmbeddedWB1.GoSearchInMSN('EmbeddedWB'); -end; - -procedure TfrmMain.SearchInGoogle1Click(Sender: TObject); -begin - EmbeddedWB1.GoSearchInGoogle('EmbeddedWB'); -end; - -procedure TfrmMain.SearchInYahoo1Click(Sender: TObject); -begin - EmbeddedWB1.GoSearchInYahoo('EmbeddedWB'); -end; - -procedure TfrmMain.FillFormWithPersonalDetails1Click(Sender: TObject); -begin - EmbeddedWB1.Navigate('http://edit.yahoo.com/config/eval_register?.done=http://groups.yahoo.com%2fgroup%2fdelphi-webbrowser%2f&.src=ygrp&.intl=us'); - EmbeddedWB1.Wait; - with EmbeddedWB1 do - begin - FillForm('firstname', 'Mozart'); - FillForm('secondname', 'Bethoven'); - FillForm('yahooid', 'lolypop'); - // ... - end; -end; -///------------------Images------------------------------------- - -procedure TfrmMain.ShowTheImageEditor1Click(Sender: TObject); -begin - UpdateImage; -end; - -procedure TfrmMain.getAScreanCapture1Click(Sender: TObject); -begin - if EmbeddedWB1.GetBmpFromBrowser('site.bmp') then - begin - UpdateImage; - ImageViewer.Picture.LoadFromFile('.\site.bmp'); - ShowMessage('The page screen capture is in your application folder.'); - end; -end; - -procedure TfrmMain.GetThumbnailClick(Sender: TObject); -begin - UpdateImage; - EmbeddedWB1.GetThumbnail(ImageViewer); -end; - -procedure TfrmMain.GetJpegPageCapture1Click(Sender: TObject); -begin - if EmbeddedWB1.GetJpegFromBrowser('.\Site.jpg', Height, Width, Height, Width) then - begin - UpdateImage; - ImageViewer.Picture.LoadFromFile('.\Site.jpg'); - ShowMessage('The page screen capture is in your application folder.') - end; -end; - -///------------------End of Images------------------------------------- - -procedure TfrmMain.OpenFoldersExplore1Click(Sender: TObject); -begin - EmbeddedWB1.ExploreFolder(ExtractFilePath(application.ExeName)); -end; - -procedure TfrmMain.OpenRegistryEditor1Click(Sender: TObject); -begin - EWBTools.OpenRegistryEditor; -end; - -procedure TfrmMain.PrintWithOptionsClick(Sender: TObject); -begin - EmbeddedWB1.PrintWithOptions; -end; - -procedure TfrmMain.AddToRestrictedZoneListClick(Sender: TObject); -begin - EmbeddedWB1.AddToRestrictedSiteList(EmbeddedWB1.LocationURL); -end; - -procedure TfrmMain.CheckIfInResrictedZoneList1Click(Sender: TObject); -begin - if EmbeddedWB1.CheckIfInRestricredList(EmbeddedWB1.LocationURL, False) then - MessageDlg('The page is in your Resricted sites list zone.', mtInformation, [mbOK], 0) - else - MessageDlg('The page is not in your Resricted sites list zone!', mtInformation, [mbOK], 0) -end; - -procedure TfrmMain.AddToTrustedListZoneList1Click(Sender: TObject); -begin - EmbeddedWB1.AddToTrustedSiteList(EmbeddedWB1.LocationURL); -end; - -procedure TfrmMain.CheckIfInTrustedZoneList1Click(Sender: TObject); -begin - if EmbeddedWB1.CheckIfInTrustedList(EmbeddedWB1.LocationURL, False) then - MessageDlg('The page is in your truested sites list zone.', mtInformation, [mbOK], 0) - else - MessageDlg('The page is not in your truested sites list zone!', mtInformation, [mbOK], 0) -end; - -procedure TfrmMain.CheckSiteSecurityLevel1Click(Sender: TObject); -var - Name, Description: string; -begin - if EmbeddedWB1.GetSSLStatus(Name, Description) then - ShowMessage('Secure Type: ' + Name + #10 + #13 + 'Description: ' + Description) - else - ShowMessage('The site is not secured.'); -end; - -procedure TfrmMain.CheckSiteSecurityZone1Click(Sender: TObject); -var - Name, Description: string; - Icon: TIcon; -begin - EmbeddedWB1.GetURLSecurityZone(Name, Description, Icon); - ShowMessage('The Web Site Security Zone Is: ' + Name); -end; - -procedure TfrmMain.CheckPageSecurityEncryption1Click(Sender: TObject); -begin - ShowMessage(EncryptionSt); -end; - -procedure TfrmMain.FavoritesTree1NodeAdded(Sender: TObject; - const aNode: TTreeNode; aNodeType: TNodeType); -begin - with aNode do - begin - if Text = 'Tools' then - ImageIndex := 0 - else - if Text = 'Organize favorites' then - ImageIndex := 1 - else - if Text = 'Add To favorites' then - ImageIndex := 2 - else - if Text = 'Import favorites' then - ImageIndex := 3 - else - if Text = 'Export favorites' then - ImageIndex := 4 - else - if Text = 'Favorites' then - ImageIndex := 5 - else - if (pos('Links', Text) > 0) or (pos('Imported', Text) > 0) - then - begin - HasChildren := True; - ImageIndex := 6 - end - else - ImageIndex := 8 - end; -end; - -procedure TfrmMain.EmbeddedWB1ScriptError(Sender: TObject; ErrorLine, - ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; - var ScriptErrorAction: TScriptErrorAction); -begin - AddEventLog('OnNavigateError ' + ErrorMessage + ' ' + ErrorCode); -end; - -procedure TfrmMain.EmbeddedWB1SetSecureLockIcon(ASender: TObject; - SecureLockIcon: Integer); -begin - case SecureLockIcon of - 0: EncryptionSt := 'UnSecure'; - 1: EncryptionSt := 'Mixed'; - 2: EncryptionSt := 'Unknown Bits'; - 3: EncryptionSt := '40 Bit'; - 4: EncryptionSt := '56 Bit'; - 5: EncryptionSt := 'Fortezza'; - 6: EncryptionSt := '128 Bit'; - end; - EncryptionSt := 'Secure Level: ' + EncryptionSt; - lblLevel.Caption := EncryptionSt; -end; - -procedure TfrmMain.EmbeddedWB1ShowDialog(Sender: TObject; h: Cardinal; - StyleEx: Integer; OldCaption: string; var NewCaption: WideString; - var Cancel: Boolean); -begin - AddEventLog('OnShowDialog'); -end; - -procedure TfrmMain.SetDesignModeClick(Sender: TObject); -begin - EmbeddedWB1.DesignMode := not EmbeddedWB1.DesignMode; - if EmbeddedWB1.DesignMode then - Stbar.Panels[4].Text := 'Design Mode ' - else - Stbar.Panels[4].Text := '' -end; - -//********* LinksBar & IEDownload********************************************* - -procedure TfrmMain.AddTheSiteToTheList1Click(Sender: TObject); -begin - LinksBar1.AddToLinksList(EmbeddedWB1.LocationName, EmbeddedWB1.LocationURL); -end; - -procedure TfrmMain.RemoveTheSiteFromTheList1Click(Sender: TObject); -begin //remmmber to add links to the list before using this feature - LinksBar1.RemoveFromLinksList(EmbeddedWB1.LocationName); -end; - -procedure TfrmMain.ShowTheList1Click(Sender: TObject); -var - lst: TstringList; - Count: integer; -begin - Lst := TStringList.Create; - try - Count := 0; - UpdateEditor; - LinksBar1.GetTheLinksList(lst); - RichEditWB1.Lines.AddStrings(lst); - RichEditWB1.Lines.Add('**** You have a total of ' + IntToStr(Count) + ' links in your list****'); - finally - Lst.Free; - end; -end; - -procedure TfrmMain.NavigateToLinkItem1Click(Sender: TObject); -var - st: string; -begin //remmmber to add links to the list before using this feature - st := ('delphi-webbrowser : Delphi: Using IE''s WebBrowser'); - LinksBar1.NavigateToItem(st); -end; - -procedure TfrmMain.ViewHidethelinksbar1Click(Sender: TObject); -begin - Linksbar1.Shown := not ViewHidethelinksbar1.Checked; -end; - -procedure TfrmMain.ViewHideTheLinksToolbar1Click(Sender: TObject); -begin - ViewHidethelinksbar1.Click; -end; - -procedure TfrmMain.ClearTheLinkList1Click(Sender: TObject); -begin - LinksBar1.ClearTheLinksList; -end; - -procedure TfrmMain.Button1Click(Sender: TObject); -var - i: Integer; -begin - ClearResultsGrid; - for i := 0 to links.count - 1 do - IEDownload1.Go(Links[i]); -end; - -function TfrmMain.IEDownload1Response(Sender: TBSCB; dwResponseCode: Cardinal; - szResponseHeaders, szRequestHeaders: PWideChar; - out szAdditionalRequestHeaders: PWideChar): HRESULT; -begin - Result := S_OK; - if dwResponseCode = 200 then - StringGrid1.Cells[1, Links.IndexOf(IEDownload1.Url) + 1] := 'Finished...' - else - if dwResponseCode > 400 then - StringGrid1.Cells[1, Links.IndexOf(IEDownload1.Url) + 1] := ResponseCodeToStr(dwResponseCode) - else - StringGrid1.Cells[1, Links.IndexOf(IEDownload1.Url) + 1] := ResponseCodeToStr(Result); - StringGrid1.Cells[2, Links.IndexOf(IEDownload1.Url) + 1] := ResponseCodeToStr(dwResponseCode); - StringGrid1.Repaint; // For Synchronous download only -end; - -procedure TfrmMain.IEDownload1Progress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode: Cardinal; szStatusText: PWideChar; Downloaded, ElapsedTime, - Speed, RemainingTime, Status: string); -begin - - StringGrid1.Cells[1, Links.IndexOf(IEDownload1.Url) + 1] := ResponseCodeToStr(ulStatusCode); - StringGrid1.Repaint; // For Synchronous download only -end; - -procedure TfrmMain.RadioButton1Click(Sender: TObject); -begin - IEDownload1.BindF := [GetNewestVersion, NoWriteCache, PullData]; -end; - -procedure TfrmMain.RadioButton2Click(Sender: TObject); -begin - IEDownload1.BindF := [Asynchronous, AsyncStorage, GetNewestVersion, NoWriteCache, PullData]; -end; - -procedure TfrmMain.CheckTheLinksClick(Sender: TObject); -var - i: Integer; - UrlList: TStringList; -begin - UpdateLinksChecker; - UrlList := TStringList.Create; - try - ClearAllGrid; - LinksBar1.GetTheLinksURLs(UrlList); - Links.Clear; - Links.AddStrings(UrlList); - for i := 0 to links.count - 1 do - begin - Stringgrid1.RowCount := i + 2; - Stringgrid1.Cells[0, i + 1] := links[i]; - end; - for i := 0 to links.count - 1 do - IEDownload1.Go(Links[i]); - finally - UrlList.Free; - end; -end; - -procedure TfrmMain.CheckURLsFromALinkList1Click(Sender: TObject); -begin - UpdateLinksChecker; -end; - -//********* local embeddedWB********************************************* - -procedure TfrmMain.sbRefreshClick(Sender: TObject); -begin - EmbeddedWB2.Refresh; -end; - -procedure TfrmMain.sbUpClick(Sender: TObject); -begin - EmbeddedWB2.GoBack; -end; - -procedure TfrmMain.sbConnectClick(Sender: TObject); -begin - if (AnsiPos('ftp', IEAddress1.Text) > 0) then - begin - EmbeddedWB1.Navigate('ftp://' + edtUser.text + ':' + edtPassword.text + '@' + IEAddress1.text); - repeat - Application.ProcessMessages; - until not EmbeddedWB1.Busy; - end - else - begin - ShowMessage('Check your address, Its not an ftp site.' + #10 + #13 - + 'You are being redirected to Microsoft FTP just for the test.'); - EmbeddedWB1.Navigate('ftp://ftp.microsoft.com/'); - end; -end; - -procedure TfrmMain.EmbeddedWB2CommandStateChange(ASender: TObject; - Command: Integer; Enable: WordBool); -begin - case Command of - CSC_NAVIGATEBACK: sbUp.Enabled := Enable; - end; -end; -//************ Editor ******************************************* - -procedure TfrmMain.HighlighHTML1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.LoadHTMLFromBrowser; - if RichEditWB1.HighlightHTML then - RichEditWB1.DoHighlightHTML; - RichEditWB1.ScrollToTop; -end; - -procedure TfrmMain.HighLightURL1Click(Sender: TObject); -begin - RichEditWB1.HighLightURL := True; - UpdateEditor; - EmbeddedWB1.ViewPageLinksToStrings(RichEditWB1.Lines); - RichEditWB1.AddLineNumbering; -end; - -procedure TfrmMain.SetSelectionAsAHyperLink1Click(Sender: TObject); -begin - RichEditWB1.SetSelectionHyperlink(True); -end; - -procedure TfrmMain.SetWordAsAHyperLink1Click(Sender: TObject); -begin - RichEditWB1.SetWordHyperlink(True); -end; - -procedure TfrmMain.AddBullets1Click(Sender: TObject); -begin - RichEditWB1.AddBullets; -end; - -procedure TfrmMain.AddLineNumbers1Click(Sender: TObject); -begin - RichEditWB1.AddLineNumbering; -end; - -procedure TfrmMain.AddRomanNumbers1Click(Sender: TObject); -begin - RichEditWB1.AddRomanNumbering; -end; - -procedure TfrmMain.New1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.New; -end; - -procedure TfrmMain.Open2Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.Open; -end; - -procedure TfrmMain.Save1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.Save; -end; - -procedure TfrmMain.SaveAs2Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SaveAs; -end; - -procedure TfrmMain.SetFontColorClick(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SetFontColor; -end; - -procedure TfrmMain.AddBackroundColor1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SetSelectedBgColor; -end; - -procedure TfrmMain.SelectFonts1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SelectFont; -end; - -procedure TfrmMain.SetSize1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SelectFont; -end; - -procedure TfrmMain.SetBold1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SetFontBold; -end; - -procedure TfrmMain.SetSize2Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SetFontSize; -end; - -procedure TfrmMain.SetItalic1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SetFontItalic; -end; - -procedure TfrmMain.SetUnderLine1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SetFontUnderLine; -end; - -procedure TfrmMain.AddDateAndTime1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.AddDateAndTime; -end; - -procedure TfrmMain.PreviewRichEditLinesInTheBrowser1Click(Sender: TObject); -begin - RichEditWB1.PreviewInBrowser; -end; - -procedure TfrmMain.LoadCodeFromBrowserStream1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.LoadStreamFromBrowser; -end; - -procedure TfrmMain.SetColor1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SetColor; -end; - -procedure TfrmMain.Print1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.PrintAll; -end; - -procedure TfrmMain.Find1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.Find; -end; - -procedure TfrmMain.Replace1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.Replace; -end; - -procedure TfrmMain.CreateASnapshot1Click(Sender: TObject); -begin - UpdateImage; - RichEditWB1.CreateSnapShot(ImageViewer.Picture.Bitmap); -end; - -procedure TfrmMain.AddACheckBox1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.AddCheckBox(' bsalsa', 'cb', 20, 30, 170, True); -end; - -procedure TfrmMain.AddTEditBox1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.AddEditBox('bsalsa', 'edt', 20, 30, 80); -end; - -procedure TfrmMain.AddARadioButton1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.AddRadioButton('bsalsa', 'rb', 20, 30, 40, True); -end; - -procedure TfrmMain.AddAButton1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.AddButton('bsalsa', 'btn', 20, 30, 130); -end; - -procedure TfrmMain.GoToLineNumber1Click(Sender: TObject); -var - Value: string; -begin - UpdateEditor; - InputQuery('Select A Line', 'Please Enter a line number to select..', Value); - if Value <> '' then - try - RichEditWB1.SelectLine(StrToInt(Trim(Value))); - except - end; -end; - -procedure TfrmMain.WrapLongLines1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.WordWrap := WrapLongLines1.Checked; -end; - -procedure TfrmMain.MailSelectedText1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.MailSelected; -end; - -procedure TfrmMain.miSaveClick(Sender: TObject); -begin - EmbeddedWB1.SaveDialogEx; -end; - -procedure TfrmMain.Mail1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.MailContext; -end; - -procedure TfrmMain.RichEditWB1MouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); -begin - UpdateProgressBars; -end; - -procedure TfrmMain.RichEditWB1KeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); -begin - UpdateProgressBars; -end; - -procedure TfrmMain.hemes1Click(Sender: TObject); -begin - UpdateEditor; - RichEditWB1.SetThemes(tBlack); -end; - -procedure TfrmMain.ShowTheEditor2Click(Sender: TObject); -begin - UpdateEditor; -end; - -procedure TfrmMain.ResetFontsFormat1Click(Sender: TObject); -begin - RichEditWB1.RemoveTextFormats; -end; - -procedure TfrmMain.HighLightXML1Click(Sender: TObject); -begin - UpdateEditor; - with RichEditWB1 do - begin - HighLightURL := False; - EmbeddedWB1.Navigate('http://rss.groups.yahoo.com/group/delphi-webbrowser/rss'); - LoadAsCopyFromBrowser; - if HighlightXML then - DoHighlightXML; - end; -end; - -procedure TfrmMain.InsertFromImageListClick(Sender: TObject); -begin - UpdateEditor; - with RichEditWB1 do - begin - AddBitmapFromImagelist(ilsSmilies, 0); - AddEmptyLine; - SelAttributes.Color := clYellow; - AddEmptyLine; - SelText := ' Beatles '; - AddEmptyLine; - AddBitmapFromImagelist(ilsSmilies, 15); - AddEmptyLine; - SelAttributes.Color := clPurple; - AddEmptyLine; - SelText := ' Deep Purple '; - AddEmptyLine; - AddBitmapFromImagelist(ilsSmilies, 5); - AddEmptyLine; - AddFormatedText('Led Zepelin', True, True, True, True, clred); - AddEmptyLine; - AddEmptyLine; - AddFormatedText('C U L8r', True, False, False, False, clGreen); - AddEmptyLine; - RemoveTextFormats; - end; -end; - -procedure TfrmMain.InsertFileClick(Sender: TObject); -begin - UpdateEditor; - if OpenDialog1.Execute then - RichEditWB1.AddFile(OpenDialog1.FileName, True, True); -end; - -procedure TfrmMain.InsertBitmapClick(Sender: TObject); -begin - UpdateImage; - UpdateEditor; - if OpenDialog1.Execute then - ImageViewer.Picture.LoadFromFile(OpenDialog1.FileName); - RichEditWB1.AddFile(OpenDialog1.FileName, False, False); -end; - - -end. //************ E O F ******************************************* - diff --git a/windows/src/ext/embeddedwb/Demos/Mega Demo/prjEmbeddedWBDemo.dpr b/windows/src/ext/embeddedwb/Demos/Mega Demo/prjEmbeddedWBDemo.dpr deleted file mode 100644 index d6d503995d..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Mega Demo/prjEmbeddedWBDemo.dpr +++ /dev/null @@ -1,45 +0,0 @@ -//*************************************************************** -// EmbeddedWB Mega Demo * -// * -// Freeware Demo * -// by * -// Eran Bodankin (bsalsa) -(bsalsa@bsalsa.com) * -// Thanks to smot for the demo contribution * -// * -//*************************************************************** -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjEmbeddedWBDemo; - -uses - Forms, - Demo in 'Demo.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TfrmMain, frmMain); - Application.Run; -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/Demo.html b/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/Demo.html deleted file mode 100644 index 0e790c7985..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/Demo.html +++ /dev/null @@ -1,98 +0,0 @@ - -Die Webseite kann nicht angezeigt werden - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Infosymbol -

Dieses Programm kann die Webseite nicht - anzeigen.

  -
  -

Wahrscheinlichste Ursachen:

-
    -
  • Sie haben keine Verbindung mit dem Internet - hergestellt. -
  • Es ist ein Problem mit der Website aufgetreten. -
  • Die Adresse enthält eventuell einen - Tippfehler.
  -

Mögliche Vorgehensweise:

  -

- - - - -
Überprüfen Sie die - Internetverbindung. Besuchen Sie eine andere Website, um - sicherzustellen, dass eine Verbindung besteht. -

  -

- - - - -
Geben Sie die Adresse erneut - ein.

  -

- - - - -
-

  -

- - - - -
Weitere Informationen -

-
diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/prjEditDDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/prjEditDDemo.dpr deleted file mode 100644 index 37e3ef9f56..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/prjEditDDemo.dpr +++ /dev/null @@ -1,43 +0,0 @@ -{*******************************************************} -{ EditDesigner Demo } -{ By: } -{ Eran Bodankin (bsalsa) bsalsa@bsalsa.com } -{ Enjoy! } -{ Documentation and updated versions: } -{ http://www.bsalsa.com } -{*******************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjEditDDemo; - -uses - Forms, - utEditDesigner in 'utEditDesigner.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/utEditDesigner.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/utEditDesigner.dfm deleted file mode 100644 index 6aaeed17ca..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/utEditDesigner.dfm +++ /dev/null @@ -1,288 +0,0 @@ -object Form1: TForm1 - Left = 319 - Top = 345 - Width = 677 - Height = 488 - Caption = 'TEditDesigner Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - Menu = MainMenu1 - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 246 - Width = 669 - Height = 150 - Align = alBottom - TabOrder = 0 - object Label1: TLabel - Left = 7 - Top = 6 - Width = 71 - Height = 13 - Caption = 'Document Info' - Transparent = True - end - object Label2: TLabel - Left = 216 - Top = 6 - Width = 51 - Height = 13 - Caption = 'Inner Text' - Transparent = True - end - object Label3: TLabel - Left = 423 - Top = 6 - Width = 50 - Height = 13 - Caption = 'Inner Html' - Transparent = True - end - object MemoDocumentInfo: TMemo - Left = 0 - Top = 22 - Width = 210 - Height = 122 - ScrollBars = ssBoth - TabOrder = 0 - end - object MemoInnerText: TMemo - Left = 216 - Top = 22 - Width = 201 - Height = 122 - ScrollBars = ssBoth - TabOrder = 1 - end - object MemoInnerHTML: TMemo - Left = 423 - Top = 22 - Width = 221 - Height = 123 - ScrollBars = ssBoth - TabOrder = 2 - end - end - object Panel2: TPanel - Left = 0 - Top = 0 - Width = 669 - Height = 33 - Align = alTop - TabOrder = 1 - object btnGo: TButton - Left = 351 - Top = 8 - Width = 43 - Height = 22 - Caption = 'Go' - TabOrder = 0 - OnClick = btnGoClick - end - object IEAddress1: TIEAddress - Left = 7 - Top = 8 - Width = 338 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - EmbeddedWB = EmbeddedWB1 - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 1 - end - object btnRemoveDesigner: TButton - Left = 536 - Top = 8 - Width = 108 - Height = 22 - Caption = 'Disconnect Designer' - Enabled = False - TabOrder = 2 - OnClick = btnRemoveDesignerClick - end - object btnConnectDesigner: TButton - Left = 432 - Top = 8 - Width = 98 - Height = 22 - Caption = 'Connect Designer' - TabOrder = 3 - OnClick = btnConnectDesignerClick - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 396 - Width = 669 - Height = 19 - Panels = < - item - Width = 50 - end - item - Width = 50 - end - item - Width = 70 - end - item - Width = 100 - end - item - Width = 50 - end - item - Width = 50 - end - item - Width = 90 - end - item - Width = 90 - end - item - Width = 70 - end - item - Width = 70 - end> - end - object StatusBar2: TStatusBar - Left = 0 - Top = 415 - Width = 669 - Height = 19 - Panels = < - item - Width = 50 - end - item - Width = 50 - end - item - Width = 70 - end - item - Width = 70 - end - item - Width = 70 - end - item - Width = 70 - end - item - Width = 250 - end - item - Width = 70 - end> - end - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 33 - Width = 669 - Height = 213 - Align = alClient - TabOrder = 4 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - HTMLCode.Strings = ( - 'www.google.com') - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C0000008F420000651500000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object EditDesigner1: TEditDesigner - About = 'TEditDesigner - from http://www.bsalsa.com/' - EmbeddedWB = EmbeddedWB1 - OnPreDrag = EditDesigner1PreDrag - OnPreHandle = EditDesigner1PreHandleEvent - OnPostHandle = EditDesigner1PostHandleEvent - OnPostEditorNotify = EditDesigner1PostEditorEventNotify - OnError = EditDesigner1Error - OnInnerText = EditDesigner1InnerText - OnInnerHtml = EditDesigner1InnerHtml - OnKeyPress = EditDesigner1KeyPress - OnKeyState = EditDesigner1KeyState - OnTranslateAccelerator = EditDesigner1TranslateAccelerator - OnMousePosition = EditDesigner1MousePosition - OnMouseButton = EditDesigner1MouseButton - OnEvtDispId = EditDesigner1EvtDispId - OnSnapRect = EditDesigner1SnapRect - OnType_ = EditDesigner1Type_ - OnToString = EditDesigner1ToString - OnTagName = EditDesigner1TagName - Left = 50 - Top = 145 - end - object MainMenu1: TMainMenu - Left = 48 - Top = 88 - object File1: TMenuItem - Caption = 'File' - object SaveToFile1: TMenuItem - Caption = 'Save To Demo.html' - OnClick = SaveToFile1Click - end - object Exit1: TMenuItem - Caption = 'Exit' - OnClick = Exit1Click - end - end - object Add1: TMenuItem - Caption = 'Insert' - object HyperLink1: TMenuItem - Caption = 'HyperLink...' - OnClick = HyperLink1Click - end - object Image1: TMenuItem - Caption = 'Image...' - OnClick = Image1Click - end - object RadioButton1: TMenuItem - Caption = 'Radio Button' - OnClick = RadioButton1Click - end - end - object Fonts1: TMenuItem - Caption = 'Fonts' - object Bold1: TMenuItem - Caption = 'Set Selected Text As Bold' - OnClick = Bold1Click - end - object SetSelTextAsUndelline1: TMenuItem - Caption = 'Set Selected Text As Undelline' - OnClick = SetSelTextAsUndelline1Click - end - object Italic1: TMenuItem - Caption = 'Set Selected Text Italic' - OnClick = Italic1Click - end - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/utEditDesigner.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/utEditDesigner.pas deleted file mode 100644 index 06e0d0ea63..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/01 - EditDesigner_Demo/utEditDesigner.pas +++ /dev/null @@ -1,326 +0,0 @@ -{*******************************************************} -{ EditDesigner Demo } -{ By: } -{ Eran Bodankin (bsalsa) bsalsa@bsalsa.com } -{ Enjoy! } -{ Documentation and updated versions: } -{ http://www.bsalsa.com } -{*******************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit utEditDesigner; - -interface - -uses - EwbAcc, Windows, Classes, Dialogs, ShellAPI, SHDocVw_EWB, EmbeddedWB, MSHTML_Ewb, EditDesigner, Forms, - Controls, ExtCtrls, StdCtrls, IEAddress, ComCtrls, SysUtils, OleCtrls, Menus, - EwbCore; - -type - TForm1 = class(TForm) - Panel1: TPanel; - EditDesigner1: TEditDesigner; - Panel2: TPanel; - btnGo: TButton; - IEAddress1: TIEAddress; - StatusBar1: TStatusBar; - MemoDocumentInfo: TMemo; - StatusBar2: TStatusBar; - EmbeddedWB1: TEmbeddedWB; - MemoInnerText: TMemo; - MemoInnerHTML: TMemo; - btnRemoveDesigner: TButton; - btnConnectDesigner: TButton; - Label1: TLabel; - Label2: TLabel; - Label3: TLabel; - MainMenu1: TMainMenu; - Add1: TMenuItem; - HyperLink1: TMenuItem; - Image1: TMenuItem; - File1: TMenuItem; - SaveToFile1: TMenuItem; - Fonts1: TMenuItem; - Bold1: TMenuItem; - SetSelTextAsUndelline1: TMenuItem; - Italic1: TMenuItem; - RadioButton1: TMenuItem; - Exit1: TMenuItem; - procedure Italic1Click(Sender: TObject); - procedure RadioButton1Click(Sender: TObject); - procedure SetSelTextAsUndelline1Click(Sender: TObject); - procedure Bold1Click(Sender: TObject); - procedure SaveToFile1Click(Sender: TObject); - procedure Image1Click(Sender: TObject); - procedure HyperLink1Click(Sender: TObject); - function EditDesigner1PreDrag: HRESULT; - function EditDesigner1SnapRect(const pIElement: IHTMLElement; - var prcNew: TRect; eHandle: TOleEnum): HRESULT; - procedure EditDesigner1InnerText(const innerText: string); - procedure EditDesigner1InnerHtml(const innerHtml: string); - procedure EditDesigner1ToString(const toString: string); - procedure EditDesigner1KeyState(const CapsLock, NumLock, InsertKey, altKey, - ctrlKey, shiftKey: Boolean); - procedure EditDesigner1EvtDispId(const inEvtDispId: Integer); - procedure EditDesigner1Type_(const type_: string); - procedure EditDesigner1TagName(const tagName: string); - procedure EditDesigner1MouseButton(const Button: Integer); - procedure EditDesigner1KeyPress(const Key: Integer); - procedure EditDesigner1Error(const ErrorCode: Integer; ErrMessage: string); - procedure EditDesigner1MousePosition(X, Y: Integer); - procedure btnRemoveDesignerClick(Sender: TObject); - procedure btnGoClick(Sender: TObject); - function EditDesigner1PostEditorEventNotify(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; - function EditDesigner1PostHandleEvent(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; - function EditDesigner1PreHandleEvent(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; - function EditDesigner1TranslateAccelerator(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; - procedure btnConnectDesignerClick(Sender: TObject); - procedure Exit1Click(Sender: TObject); - private - procedure UpdatePageProperties; - procedure UpdateDesigner; - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -//EditDesigner Procedures------------------------------------------------------- - -procedure TForm1.EditDesigner1MousePosition(X, Y: Integer); -begin - StatusBar1.Panels[0].Text := 'X: ' + IntToStr(X); - StatusBar1.Panels[1].Text := 'Y: ' + IntToStr(Y); -end; - -procedure TForm1.EditDesigner1TagName(const tagName: string); -begin - StatusBar1.Panels[2].Text := 'Tag: ' + tagName; -end; - -procedure TForm1.EditDesigner1Type_(const type_: string); -begin - StatusBar1.Panels[3].Text := 'Type: ' + type_; -end; - -procedure TForm1.HyperLink1Click(Sender: TObject); -begin - EditDesigner1.InsertHyperlink; -end; - -procedure TForm1.Image1Click(Sender: TObject); -begin - EditDesigner1.InsertImage; -end; - -procedure TForm1.RadioButton1Click(Sender: TObject); -begin - EditDesigner1.InsertRadioButton; -end; - -procedure TForm1.SaveToFile1Click(Sender: TObject); -var - sFileName: string; -begin - try - sFileName := ExtractFilePath(Paramstr(0)) + 'Demo.html'; - if EditDesigner1.SaveToFile(SFileName) = S_OK then - ShellExecute(Forms.Application.Handle, 'explore', PChar(SFileName), nil, - nil, SW_SHOWNORMAL); - except - ShowMessage('Error while Saving.') - end; -end; - -procedure TForm1.EditDesigner1KeyPress(const Key: Integer); -begin - StatusBar1.Panels[4].Text := 'Key: ' + IntToStr(Key); -end; - -procedure TForm1.EditDesigner1MouseButton(const Button: Integer); -begin - StatusBar1.Panels[5].Text := 'Button: ' + IntToStr(Button); -end; - -procedure TForm1.EditDesigner1EvtDispId(const inEvtDispId: Integer); -begin - StatusBar1.Panels[6].Text := 'DispId: ' + IntToStr(inEvtDispId); -end; - -procedure TForm1.EditDesigner1InnerHtml(const innerHtml: string); -begin - MemoInnerHTML.Lines.Text := innerHtml; -end; - -procedure TForm1.EditDesigner1InnerText(const innerText: string); -begin - MemoInnerText.Lines.Text := innerText; -end; - -procedure TForm1.EditDesigner1Error(const ErrorCode: Integer; - ErrMessage: string); -begin - StatusBar1.Panels[7].Text := ErrMessage; -end; - -procedure TForm1.EditDesigner1ToString(const toString: string); -begin - StatusBar2.Panels[6].Text := toString; -end; - -function TForm1.EditDesigner1PostEditorEventNotify(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; -begin - Result := S_FALSE; -end; - -function TForm1.EditDesigner1PostHandleEvent(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; -begin - Result := S_FALSE; -end; - -function TForm1.EditDesigner1PreDrag: HRESULT; -begin - Result := S_FALSE; -end; - -function TForm1.EditDesigner1PreHandleEvent(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; -begin - Result := S_FALSE; -end; - -function TForm1.EditDesigner1TranslateAccelerator(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; -begin - Result := S_FALSE; -end; - -function TForm1.EditDesigner1SnapRect(const pIElement: IHTMLElement; - var prcNew: TRect; eHandle: TOleEnum): HRESULT; -begin - case eHandle of - ELEMENT_CORNER_NONE: ; // Code for moving the element - ELEMENT_CORNER_TOP: ; // Code for resizing the element - ELEMENT_CORNER_LEFT: ; // Code for resizing the element - ELEMENT_CORNER_BOTTOM: ; // Code for resizing the element - ELEMENT_CORNER_RIGHT: ; // Code for resizing the element - ELEMENT_CORNER_TOPLEFT: ; // Code for resizing the element - ELEMENT_CORNER_TOPRIGHT: ; // Code for resizing the element - ELEMENT_CORNER_BOTTOMLEFT: ; // Code for resizing the element - ELEMENT_CORNER_BOTTOMRIGHT: ; // Code for resizing the element - end; - Result := S_OK; -end; - -procedure TForm1.EditDesigner1KeyState(const CapsLock, NumLock, InsertKey, - altKey, ctrlKey, shiftKey: Boolean); -const - OnOff: array[Boolean] of string = ('Off', 'On'); -begin - StatusBar2.Panels[0].Text := 'Alt: ' + OnOff[altKey]; - StatusBar2.Panels[1].Text := 'Ctrl: ' + OnOff[ctrlKey]; - StatusBar2.Panels[2].Text := 'Shift: ' + OnOff[shiftKey]; - StatusBar2.Panels[3].Text := 'CapsLock: ' + OnOff[CapsLock]; - StatusBar2.Panels[4].Text := 'NumLock: ' + OnOff[NumLock]; - StatusBar2.Panels[5].Text := 'Insert: ' + OnOff[InsertKey]; -end; - -//Button Procedures------------------------------------------------------------- - -procedure TForm1.Bold1Click(Sender: TObject); -begin - EditDesigner1.SetFontBold; -end; - -procedure TForm1.SetSelTextAsUndelline1Click(Sender: TObject); -begin - EditDesigner1.SetFontUnderline; -end; - -procedure TForm1.Italic1Click(Sender: TObject); -begin - EditDesigner1.SetFontItalic; -end; - -procedure TForm1.btnConnectDesignerClick(Sender: TObject); -begin - UpdateDesigner; -end; - -procedure TForm1.btnRemoveDesignerClick(Sender: TObject); -var - I: Integer; -begin - if EditDesigner1.RemoveDesigner = S_OK then - begin - btnRemoveDesigner.Enabled := False; - btnConnectDesigner.Enabled := not btnRemoveDesigner.Enabled; - for I := 0 to Pred(StatusBar1.Panels.Count) do - StatusBar1.Panels[I].Text := ''; - end; -end; - -procedure TForm1.btnGoClick(Sender: TObject); -begin - EmbeddedWB1.Go(IEAddress1.Text); - UpdateDesigner; -end; - -//Private Procedures------------------------------------------------------------ - -procedure TForm1.UpdatePageProperties; -begin - MemoDocumentInfo.Clear; - MemoDocumentInfo.Lines.AddStrings(EditDesigner1.GetPageProperties); -end; - -procedure TForm1.UpdateDesigner; -begin - if EditDesigner1.ConnectDesigner = S_OK then - begin - btnConnectDesigner.Enabled := False; - btnRemoveDesigner.Enabled := not btnConnectDesigner.Enabled; - UpdatePageProperties; - end; -end; - -procedure TForm1.Exit1Click(Sender: TObject); -begin - Close; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/Unit1.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/Unit1.dfm deleted file mode 100644 index f83d7cc74c..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/Unit1.dfm +++ /dev/null @@ -1,234 +0,0 @@ -object Form2: TForm2 - Left = 376 - Top = 366 - BorderStyle = bsSingle - Caption = 'Export IE Favorites' - ClientHeight = 511 - ClientWidth = 569 - 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 Panel1: TPanel - Left = 0 - Top = 451 - Width = 569 - Height = 41 - Align = alBottom - TabOrder = 0 - object Button1: TButton - Left = 6 - Top = 8 - Width = 121 - Height = 25 - Caption = 'Export Favorites!' - TabOrder = 0 - OnClick = Button1Click - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 492 - Width = 569 - Height = 19 - Panels = <> - end - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 108 - Width = 569 - Height = 223 - Align = alClient - TabOrder = 2 - Silent = False - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.55 from: http://www.bsalsa.com/' - ControlData = { - 4C000000D1310000112A00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel2: TPanel - Left = 0 - Top = 0 - Width = 569 - Height = 108 - Align = alTop - TabOrder = 3 - object Label1: TLabel - Left = 13 - Top = 12 - Width = 58 - Height = 13 - Caption = 'TargetPath:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - end - object Label2: TLabel - Left = 13 - Top = 43 - Width = 79 - Height = 13 - Caption = 'TargetFileName:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - end - object Label3: TLabel - Left = 13 - Top = 75 - Width = 53 - Height = 13 - Caption = 'HTML Title:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - end - object ChkNavigateOnComplete: TCheckBox - Left = 323 - Top = 8 - Width = 153 - Height = 17 - Caption = 'NavigateOnComplete' - Checked = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - State = cbChecked - TabOrder = 0 - end - object edTargetPath: TEdit - Left = 104 - Top = 8 - Width = 170 - Height = 21 - TabOrder = 1 - Text = 'C:\' - end - object edHTMLTitle: TEdit - Left = 104 - Top = 72 - Width = 170 - Height = 21 - TabOrder = 2 - Text = '* Exported Favorites *' - end - end - object ChkExploreFavFileOnComplete: TCheckBox - Left = 323 - Top = 32 - Width = 185 - Height = 17 - Caption = 'ExploreFavFileOnComplete' - Checked = True - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - State = cbChecked - TabOrder = 4 - end - object edTargetFileName: TEdit - Left = 104 - Top = 40 - Width = 170 - Height = 21 - TabOrder = 5 - Text = 'newbook.htm' - end - object Log: TListBox - Left = 0 - Top = 354 - Width = 569 - Height = 97 - Align = alBottom - Font.Charset = DEFAULT_CHARSET - Font.Color = clRed - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ItemHeight = 13 - ParentFont = False - TabOrder = 6 - end - object Panel3: TPanel - Left = 0 - Top = 331 - Width = 569 - Height = 23 - Align = alBottom - TabOrder = 7 - object Label4: TLabel - Left = 13 - Top = 5 - Width = 48 - Height = 13 - Caption = 'Error Log:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - end - end - object ExportFavorite1: TExportFavorite - About = - 'TExportFavorites by bsalsa. Help & Support: http://www.bsalsa.co' + - 'm/' - ExploreFavFileOnComplete = True - FavoritesPath = 'Auto' - NavigateOnComplete = True - StatusBar = StatusBar1 - SuccessMessage.Strings = ( - #39'Your favorites have been successfully exported to %s'#39) - TargetFileName = 'newbook.htm' - TargetPath = 'f:' - EmbeddedWB = EmbeddedWB1 - Localization.TargetPathInvalid = 'The target path is invalid.' - Localization.TargetFileNameInvalid = 'The target file name is invalid.' - Localization.TargetFileNameExtInvalid = 'The target file name extension is invalid. It must be "*.htm".' - Localization.FavoritesPathInvalid = 'The Favorites Path is invalid.' - Localization.NoSuccessMessage = 'You must enter a SuccessMessage or turn off messages.' - Localization.ChangeItMessage = 'Please change it.' - Localization.HTMLTitle = 'Exported Favorites' - OnError = ExportFavorite1Error - OnSuccess = ExportFavorite1Success - Left = 32 - Top = 120 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/Unit1.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/Unit1.pas deleted file mode 100644 index 88154da89a..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/Unit1.pas +++ /dev/null @@ -1,78 +0,0 @@ -unit Unit1; - -interface - -{$I EWB.inc} - -uses - ExportFavorites, StdCtrls, Dialogs, Controls, OleCtrls, SHDocVw_EWB, EwbCore, - EmbeddedWB, ComCtrls, Forms, Classes, ExtCtrls{$IFDEF DELPHI7_UP}, XPMan{$ENDIF}; - -type - TForm2 = class(TForm) - Panel1: TPanel; - Button1: TButton; - StatusBar1: TStatusBar; - ExportFavorite1: TExportFavorite; - EmbeddedWB1: TEmbeddedWB; - Panel2: TPanel; - ChkExploreFavFileOnComplete: TCheckBox; - ChkNavigateOnComplete: TCheckBox; - edTargetFileName: TEdit; - Label1: TLabel; - edTargetPath: TEdit; - Label2: TLabel; - Log: TListBox; - edHTMLTitle: TEdit; - Label3: TLabel; - Panel3: TPanel; - Label4: TLabel; - procedure Button1Click(Sender: TObject); - procedure ExportFavorite1Success(Sender: TObject; const Msg: string); - procedure ExportFavorite1Error(Sender: TObject; const ErrorMsg: String; - const ErrorCode: Byte); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form2: TForm2; - -implementation - -{$R *.dfm} - -procedure TForm2.Button1Click(Sender: TObject); -begin - Log.Clear; - with ExportFavorite1 do - begin - ExploreFavFileOnComplete := ChkExploreFavFileOnComplete.Checked; - NavigateOnComplete := ChkNavigateOnComplete.Checked; - TargetFileName := edTargetFileName.Text; - TargetPath := edTargetPath.Text; - ExportFavorite1.Localization.HTMLTitle := edHTMLTitle.Text; - ExportFavorites; - end; -end; - -procedure TForm2.ExportFavorite1Success(Sender: TObject; - const Msg: string); -begin - MessageDlg(Msg, mtInformation, [MbOk], 0); -end; - -procedure TForm2.ExportFavorite1Error(Sender: TObject; - const ErrorMsg: String; const ErrorCode: Byte); -begin - Log.Items.add(ErrorMsg + ' - ' + ExportFavorite1.Localization.ChangeItMessage); - case ErrorCode of - ERROR_FAV_TARGET_PATH_INVALID: edTargetPath.SetFocus; - ERROR_FAV_TARGET_FILENAME_INVALID: edTargetFileName.SetFocus; - end; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/prjExportFavoritesDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/prjExportFavoritesDemo.dpr deleted file mode 100644 index da7631c83c..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/02 - ExportFavorites_Demo/prjExportFavoritesDemo.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program prjExportFavoritesDemo; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form2}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm2, Form2); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/frmMain.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/frmMain.dfm deleted file mode 100644 index 3eb30557d9..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/frmMain.dfm +++ /dev/null @@ -1,367 +0,0 @@ -object Form1: TForm1 - Left = 261 - Top = 168 - BorderStyle = bsSingle - Caption = 'File Association Demo' - ClientHeight = 359 - ClientWidth = 403 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object StatusBar1: TStatusBar - Left = 0 - Top = 341 - Width = 403 - Height = 18 - Panels = < - item - Width = 170 - end - item - Width = 50 - end> - SimplePanel = False - end - object Panel2: TPanel - Left = 0 - Top = 288 - Width = 403 - Height = 53 - Align = alBottom - TabOrder = 1 - object Image1: TImage - Left = 348 - Top = 10 - Width = 41 - Height = 37 - end - object Label5: TLabel - Left = 149 - Top = 18 - Width = 51 - Height = 13 - Caption = 'Extension:' - end - object bttGetIcon: TButton - Left = 6 - Top = 13 - Width = 121 - Height = 21 - Caption = 'Icon of extension' - TabOrder = 0 - OnClick = bttGetIconClick - end - object edtIcon: TEdit - Left = 206 - Top = 13 - Width = 121 - Height = 21 - TabOrder = 1 - Text = 'html' - end - end - object Panel3: TPanel - Left = 0 - Top = 0 - Width = 403 - Height = 137 - Align = alTop - TabOrder = 2 - object Label1: TLabel - Left = 151 - Top = 16 - Width = 51 - Height = 13 - Caption = 'Extension:' - end - object Label2: TLabel - Left = 151 - Top = 40 - Width = 51 - Height = 13 - Caption = 'Extension:' - end - object Label3: TLabel - Left = 151 - Top = 67 - Width = 51 - Height = 13 - Caption = 'Extension:' - end - object btnExecute: TButton - Left = 11 - Top = 13 - Width = 105 - Height = 21 - Caption = 'Execute Extension' - TabOrder = 0 - OnClick = btnExecuteClick - end - object btnRemove: TButton - Left = 11 - Top = 40 - Width = 105 - Height = 21 - Caption = 'Remove Extension' - TabOrder = 1 - OnClick = btnRemoveClick - end - object edtExt: TEdit - Left = 208 - Top = 13 - Width = 177 - Height = 21 - TabOrder = 2 - Text = 'bsalsa' - end - object edtRemove: TEdit - Left = 208 - Top = 40 - Width = 177 - Height = 21 - TabOrder = 3 - end - object btnCheck: TButton - Left = 11 - Top = 67 - Width = 105 - Height = 21 - Caption = 'Check Extensions' - TabOrder = 4 - OnClick = btnCheckClick - end - object edtCheck: TEdit - Left = 208 - Top = 67 - Width = 177 - Height = 21 - TabOrder = 5 - end - object edtPath: TEdit - Left = 6 - Top = 98 - Width = 379 - Height = 21 - TabOrder = 6 - end - end - object Panel1: TPanel - Left = 0 - Top = 137 - Width = 403 - Height = 151 - Align = alClient - TabOrder = 3 - object Image2: TImage - Left = 332 - Top = 52 - Width = 41 - Height = 37 - end - object Label4: TLabel - Left = 317 - Top = 95 - Width = 68 - Height = 13 - Caption = 'Image Numer:' - end - object Label7: TLabel - Left = 332 - Top = 33 - Width = 21 - Height = 13 - Caption = 'Icon' - end - object lbNum: TLabel - Left = 352 - Top = 107 - Width = 29 - Height = 13 - Caption = 'lbNum' - end - object MemoFileInfo: TMemo - Left = 11 - Top = 34 - Width = 300 - Height = 85 - TabOrder = 0 - end - object edtPath2: TEdit - Left = 133 - Top = 6 - Width = 252 - Height = 21 - TabOrder = 1 - end - object btnFileType: TButton - Left = 8 - Top = 7 - Width = 119 - Height = 21 - Caption = 'File Info By Path' - TabOrder = 2 - OnClick = btnFileTypeClick - end - end - object FileExtAssociate1: TFileExtAssociate - About = - 'File Extension Associate component by bsalsa. Help & Support: ht' + - 'tp://www.bsalsa.com/' - ExtensionAssociate.Extensions.Strings = ( - 'bsalsa' - 'bsalsa1') - ApplicationDetails.Title = 'File Extension Demo' - ApplicationDetails.Icon.Data = { - 0000010001002020200000000000A81000001600000028000000200000004000 - 0000010020000000000000100000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000AA9FAA00555F5500553F5500555F5500003F5500555F5500553F5500555F - 2A00553F5500555F5500553F5500553F5500555F5500553F5500555F55000000 - 00000000000000000000005FAA00001F55000000000000000000000000000000 - 00000000000000000000000000000000000000000000005F5500553F5500557F - AA00555F550080808000FF7F5500AA5F5500AA5F5500AA5F5500AA5F5500555F - 550055BFD400559FAA0055BFD40000BFFF0055BFD400559FAA00553F55000000 - 00000000000000000000559FD400557FAA00005F5500001F5500001F2A00001F - 550000002A00001F5500001F5500555F5500005F5500555FAA00557FAA0055BF - D400555F5500FF7F5500A4A0A000AA7F5500AA5F5500AA5F2A00AA7F5500553F - 5500559FAA00557FAA0000BFFF0055DFD40000BFFF0055BFD400553F55000000 - 0000000000000000000000000000005F7F00555FAA00557F7F00005FAA00005F - 7F00557FAA0000808000555FAA00005FAA00557FAA00559FAA00007FAA00AA9F - D400555F7F00AA9F7F00FF9FAA00AA5F5500AA5F5500AA5F5500AA3F5500555F - 550055BFAA00559FD40055BFD40000BFFF0055DFD400009FFF00555F2A000000 - 0000000000000000000000000000559FD400555F7F00005FAA00557FAA00557F - D400559FAA00557FD400559FAA00557FAA00007FAA00007FAA00555FAA00559F - D400557F5500FF7F7F00AA9F7F00AA7F5500AA5F2A00AA5F5500AA7F5500553F - 5500559FAA00007FAA0055DFD40055BFFF0000DFFF0055BFD400555F55000000 - 000000000000000000000000000000000000005F7F00007FAA00005FAA000080 - 8000555FAA00007FAA00005FAA00007FAA00555FAA00005FAA00007FAA00AA9F - AA00555F7F00AA9F5500FF9FAA00AA5F5500AA5F5500AA5F5500AA5F5500555F - 2A00559FD40055BFD40055BFFF0055DFD40055BFFF0000BFD400553F55000000 - 000000000000000000000000000000000000003F5500555FAA00005FAA00557F - AA00005FAA00557FAA00005FAA00555FAA00005FAA00007FAA00005FAA00AABF - D400555F5500553F5500553F5500555F5500553F5500555F2A00553F5500555F - 5500555F5500553F5500555F2A00553F5500555F5500553F5500555F55000000 - 000000000000000000000000000000000000553F5500007FAA00557FAA00005F - AA00005FAA00005FAA00557FAA00005FAA00557FAA00005FAA00557FAA00559F - D400555F5500559FFF00559FD400551FD400003FD400553FD400003FAA00553F - 550055BFAA00557F5500559F7F0055BF7F0055BF7F0055BF7F00553F55000000 - 000000000000000000000000000000000000005F5500005FAA00001F5500555F - 7F00005FAA00557FAA00005FAA00557FAA00005FAA00557FAA00007FAA00AA9F - D40080808000007FD400557FD400005FD400553FAA00003FD400553FAA00553F - 5500559F5500559F7F0055BF550055BFAA0055BF7F00557F5500555F55000000 - 0000000000000000000000000000005FAA00555F7F00AABFAA00C0DCC000559F - AA00553F5500005FAA00557FAA00007FAA00557FAA00007FD400557FAA0055BF - D400555F5500557FD400559FFF00551FAA00003FD400555FD400001FAA00555F - 5500AABFAA00007F550055BFAA0055BFAA0055BF7F0055BF7F00553F55000000 - 0000000000000000000000000000559FAA00557FAA00FFFFFF00FFFFFF00FFFF - FF00555FAA00005F5500005FAA00557FD400007FAA00557FAA00007FAA00AA9F - D40080808000559FD400007FD400005FD400553FAA00003FD400557FD400553F - 5500559F7F00559F5500559F550055BF7F0055BFAA00559F5500555F55000000 - 000000000000000000000000000000000000557FAA0000808000FFFFFF00557F - D400005F5500557FD400559FAA00559FD400557FD400559FD400559FD40055BF - D400555F5500559FFF00557FD400551FD400003FD400553FD400553FAA00555F - 5500559F7F00557F550055BF7F0055BF7F0055BFAA0055BF7F00553F55000000 - 00000000000000000000000000000000000000000000557FAA00557FAA00003F - 5500559FD400559FD400559FD400559FD400559FD400559FD400559FD400AABF - D400AA9FAA00555F5500555F5500557F5500555F7F00555F5500555F7F00555F - 5500557F7F00555F7F00555F5500555F5500555F5500555F5500AA9FAA000000 - 00000000000000000000000000000000000000000000557FAA00557FAA00559F - D40055BFD40055BFD40055BFFF0055BFD40055BFFF0055BFD40055BFD40055BF - D400AADFFF00AABFFF00AADFFF00AABFD400AABFD40055DFD400AABFD400AABF - FF00A4A0A000AADFD400AA7FAA00555FAA00555FAA0080808000555F7F000000 - 0000000000000000000000000000000000000000000000000000559FAA0055BF - D40055BFD400AADFFF0055DFD40055DFFF00AADFD40055DFFF0055DFD400AADF - FF0055BFD400AADFFF0055BFD400559FFF00559FD400557FD400559FD400559F - AA00007FAA00AA9FD400003F7F00000055000000550000005500000055000000 - 000000000000000000000000000000000000000000000000000000000000559F - D40055DFD40055DFFF00AADFFF0055FFFF0055FFFF00AADFFF0055FFFF0055DF - FF00AAFFFF0055BFD400AADFFF0055BFD400559FD400559FD400559FD400557F - D400559FAA00559FAA00551F550000007F00000055000000550000002A000000 - 000000000000000000000000000000000000000000000000000000000000557F - AA0055BFD40055BFD40055DFFF0055FFFF00AADFFF0055DFFF00AAFFFF00AADF - FF0055DFFF00AADFFF0055BFFF00559FD400009FD400559FD400559FD4000080 - 8000559FD400AA9FD4000000550000005500000055000000550000002A000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000555FAA00559FD400559FD40055BFD40055DFD40055DFFF0055DFD40055DF - FF0055BFD40055BFD400559FD400559FD400559FD400559FD400557FAA00559F - D400559FD400555F550000007F0000007F0000007F0000005500000055000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000557FAA00559FAA00559FD400559FD400559FD400559FD400559F - D400559FD400559FD400559FD400559FD400559FD400557FAA00559FD400559F - D400557FAA00001F5500001F7F00551F55000000550000007F00000055000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000005FAA00557FAA00557FD400559FD400559FD400559FD400559F - D400559FD400559FAA00559FD400557FAA00557FD40055BFD40055BFD400559F - D400553F5500000080000000800000007F000000550000005500553F7F000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000005F7F00559FAA00559FAA00009FAA00557FAA0000808000557FAA00557F - AA0000808000557FAA00559FD40055BFD40055DFD40055BFD40055BFD400555F - 550055007F00001F7F00551F550000007F0000007F0000007F00003F7F000000 - 000000000000000000000000000000000000000000000000000000000000557F - 7F00555F7F00007FD400559FD400559FAA0055BFD40055BFD40055DFFF0055DF - FF00AADFFF0055FFFF0055DFD400AADFFF0055BFFF0055BFD400555F55005500 - AA00001F55000000800000008000001F7F000000800000005500000000000000 - 0000000000000000000000000000000000000000000000000000555F5500553F - 5500003FAA00559FAA00009FAA00559FD40055BFD40055BFFF0055DFD400AADF - FF0055FFFF0055DFFF00AADFFF0055DFD400559FD400555F5500001F55000000 - AA000000AA00551F55000000AA000000800000008000003F7F00000000000000 - 000000000000000000000000000000000000003F7F00003F55000000AA00001F - D400553F7F00555F7F00553F7F00557FAA00559FAA0055BFD40055DFFF0055DF - D400AADFFF0055DFD400559FD400555F7F00555F55005500AA000000AA00001F - 5500000080000000AA00001F5500000080005500550000000000000000000000 - 0000000000000000000000000000553FAA00003F55000000D4000000D4005500 - D400000080000000D400551FAA00553FAA00553F7F00555F5500555F5500557F - 5500555F5500553F5500553FAA00001FAA000000AA00001F55000000AA000000 - AA000000AA000000AA000000800000008000003F7F0000000000000000000000 - 000000000000003F7F00553F55000000AA000000D4000000D4005500D4000000 - 80000000D4000000D400000080000000D400000080000000D4000000AA000000 - 80000000D40000007F000000AA000000AA000000AA000000AA00551F55000000 - AA000000AA00000080000000AA00003F7F00000000000000000000000000553F - 7F00003F7F000000AA000000D4000000D4000000D4005500FF00000080000000 - D4000000AA000000D400001FAA005500D400000080000000D4000000D4000000 - AA000000AA000000AA000000AA000000AA000000D4000000AA000000AA000000 - 80000000AA000000AA0000007F00000000000000000000000000000000000000 - 80000000D4000000D400555FD4000000D4005500D400555FAA000000D4000000 - D4000000D400000080005500D4000000D4000000D4000000AA000000D4000000 - D4000000D4000000AA000000AA000000AA000000AA000000AA000000D4000000 - AA0000008000553F7F0000000000000000000000000000000000000000000000 - 000000008000AA9FD4000000D4000000D400555FD4000000D4000000D4000000 - D4000000D4000000D4005500D4000000AA000000D4000000AA000000D4000000 - AA000000AA000000D4000000AA000000D4000000AA000000AA000000AA000000 - 8000003F7F000000000000000000000000000000000000000000000000000000 - 000000000000003F7F000000AA00AA9FD4000000D4000000D400555FD4000000 - D4000000D4000000D4000000AA00555FD4000000D400000080000000D4000000 - D4000000D4000000D4000000AA000000D4000000AA0000007F00003F7F000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000003F7F000000AA00AA9FD4000000D4000000 - D4000000D4000000D400AA9FFF000000AA000000D4000000D4000000D4000000 - AA000000D4000000D40000008000553F7F00003F7F0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000003F7F00000080000000 - 80000000AA0000008000555FAA000000AA000000800000008000000080000000 - AA00003F7F00553F7F0000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - 8000E7FC0000E0000000F0000000F0000000F8000000F8000000F8000000F800 - 0000F0000000F0000000F8000000FC000000FC000000FE000000FF000000FF00 - 0000FF800000FFC00000FFC00000FF800000FF000001FE000001F8000003F000 - 0003C00000070000000F0000001F8000003FC00000FFF00003FFFC001FFF} - ApplicationShortcuts.Options = [SendTo, StartMenu, StartUp, Desktop, OpenWith, Programs, QuickLaunch, ProgramsSubDir] - ApplicationShortcuts.MenuSubDir = 'File Extension ' - OnBusyStateChange = FileExtAssociate1BusyStateChange - OnErrorText = FileExtAssociate1ErrorText - OnSuccessText = FileExtAssociate1SuccessText - OnComplete = FileExtAssociate1Complete - Left = 248 - Top = 184 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/frmMain.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/frmMain.pas deleted file mode 100644 index df575de597..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/frmMain.pas +++ /dev/null @@ -1,178 +0,0 @@ -{*******************************************************} -{ File Associate demo } -{ } -{ For Delphi 5 - 2009 * -{ by bsalsa - bsalsa@bsalsa.com } -{ Please note our uses terms } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -unit frmMain; - -interface - -uses - Classes, Graphics, Windows, Controls, Forms, SysUtils, StdCtrls, ComCtrls, - FileExtAssociate, ExtCtrls; - -type - TForm1 = class(TForm) - StatusBar1: TStatusBar; - FileExtAssociate1: TFileExtAssociate; - Panel2: TPanel; - bttGetIcon: TButton; - edtIcon: TEdit; - Image1: TImage; - Panel3: TPanel; - btnExecute: TButton; - btnRemove: TButton; - Label1: TLabel; - Label2: TLabel; - edtExt: TEdit; - edtRemove: TEdit; - Label5: TLabel; - btnCheck: TButton; - edtCheck: TEdit; - Label3: TLabel; - edtPath: TEdit; - Panel1: TPanel; - edtPath2: TEdit; - btnFileType: TButton; - Image2: TImage; - Label4: TLabel; - Label7: TLabel; - lbNum: TLabel; - MemoFileInfo: TMemo; - procedure FormShow(Sender: TObject); - procedure btnFileTypeClick(Sender: TObject); - procedure bttGetIconClick(Sender: TObject); - procedure FileExtAssociate1BusyStateChange(Sender: TObject); - procedure FileExtAssociate1Complete(Extension, Status: string; - HResult: HRESULT); - procedure FileExtAssociate1SuccessText(Text: string); - procedure FileExtAssociate1ErrorText(Text: string); - procedure btnCheckClick(Sender: TObject); - procedure btnRemoveClick(Sender: TObject); - procedure btnExecuteClick(Sender: TObject); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.btnCheckClick(Sender: TObject); -var - st: string; -begin - st := FileExtAssociate1.GetExeByExtension(EdtCheck.Text); - if st <> '' then - EdtPath.Text := st - else - Statusbar1.Panels[0].Text := 'No association found.'; -end; - -procedure TForm1.btnExecuteClick(Sender: TObject); -begin - FileExtAssociate1.Execute; -end; - -procedure TForm1.btnRemoveClick(Sender: TObject); -begin - FileExtAssociate1.Remove; -end; - -procedure TForm1.bttGetIconClick(Sender: TObject); -begin - Image1.Picture.Icon.Handle := - FileExtAssociate1.GetIconByExtension(edtIcon.Text, False); -end; - -procedure TForm1.btnFileTypeClick(Sender: TObject); -var - sl: TStringList; -begin - sl := TStringList.Create; - try - sl.Add('File Type: ' + FileExtAssociate1.GetFileTypeName(edtPath2.Text)); - sl.Add('Display Name: ' + FileExtAssociate1.GetFileDisplayName(edtPath2.Text)); - sl.Add('File Size: ' + FileExtAssociate1.GetFileSize(edtPath2.Text)); - sl.Add('File Creation Date: ' + DateTimeToStr(FileExtAssociate1.GetFileDateTime(edtPath2.Text))); - Image2.Picture.Icon.Handle := FileExtAssociate1.GetFileIcon(edtPath2.Text); - lbNum.Caption := IntToStr(FileExtAssociate1.GetFileImage(edtPath2.Text)); - MemoFileInfo.Lines.Clear; - MemoFileInfo.Lines.AddStrings(sl); - finally - sl.Free; - end; -end; - -procedure TForm1.FileExtAssociate1BusyStateChange(Sender: TObject); -begin - btnExecute.Enabled := not FileExtAssociate1.Busy; -end; - -procedure TForm1.FileExtAssociate1Complete(Extension, Status: string; - HResult: HRESULT); -begin - if (HResult = S_OK) and (Pos('success', Status) <> 0) then - begin - edtRemove.Text := Extension; - edtCheck.Text := Extension; - edtIcon.Text := Extension; - EdtExt.Text := ''; - end; - if (HResult = S_OK) and (Pos('Un', Status) <> 0) then - begin - edtRemove.Text := ''; - edtCheck.Text := Extension; - EdtExt.Text := Extension; - end; -end; - -procedure TForm1.FileExtAssociate1ErrorText(Text: string); -begin - Statusbar1.Panels[1].Text := 'Errors: ' + Text; -end; - -procedure TForm1.FileExtAssociate1SuccessText(Text: string); -begin - Statusbar1.Panels[0].Text := Text; -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - edtPath2.Text := ExtractFilePath(Application.ExeName); -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/prjFile_AssDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/prjFile_AssDemo.dpr deleted file mode 100644 index 97044c666b..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/03 - FileAssociate_Demo/prjFile_AssDemo.dpr +++ /dev/null @@ -1,45 +0,0 @@ -{*******************************************************} -{ File Associate demo } -{ } -{ For Delphi 5, 6, 7, 2005, 2006 } -{ by bsalsa - bsalsa@bsalsa.com } -{ Please note our uses terms } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjFile_AssDemo; - -uses - Forms, - frmMain in 'frmMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/IEGuidList.txt b/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/IEGuidList.txt deleted file mode 100644 index 8b13789179..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/IEGuidList.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/prjGuidCreatorDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/prjGuidCreatorDemo.dpr deleted file mode 100644 index 2aecffc891..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/prjGuidCreatorDemo.dpr +++ /dev/null @@ -1,45 +0,0 @@ -//************************************************************* -// GuidCreator * -// * -// by * -// bsalsa - Eran Bodankin * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjGuidCreatorDemo; - -uses - Forms, - utGuidCreator in 'utGuidCreator.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/utGuidCreator.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/utGuidCreator.dfm deleted file mode 100644 index baebb29975..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/utGuidCreator.dfm +++ /dev/null @@ -1,293 +0,0 @@ -object Form1: TForm1 - Left = 353 - Top = 207 - Width = 684 - Height = 586 - Caption = 'bsalsa - Guid Creator' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnCreate = FormCreate - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 676 - Height = 193 - Align = alTop - TabOrder = 0 - object Label1: TLabel - Left = 121 - Top = 44 - Width = 73 - Height = 13 - Caption = 'Headers Folder' - end - object Label2: TLabel - Left = 134 - Top = 64 - Width = 60 - Height = 13 - Caption = 'SaveFileAs..' - end - object Label3: TLabel - Left = 134 - Top = 83 - Width = 60 - Height = 13 - Caption = 'SaveFileAs..' - end - object LinkLabel1: TLinkLabel - Left = 1 - Top = 1 - Width = 674 - Height = 29 - AutoSize = False - TextRun.Enable = True - Launch.AsHttp.Address = 'bsalsa.com/ie_guid.html' - TextEffects = teRunning - Layout = tlTop - Align = alTop - Caption = 'Instructions' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsUnderline] - end - object LinkLabel3: TLinkLabel - Left = 17 - Top = 44 - Width = 87 - Height = 29 - AutoSize = False - Launch.AsHttp.Address = - 'msdn.microsoft.com/archive/default.asp?url=/archive/en-us/sample' + - 's/internet/libraries/ie6_lib/default.asp' - Caption = 'DownloadHeaders' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsUnderline] - end - object btnIEGuid: TButton - Left = 615 - Top = 53 - Width = 48 - Height = 21 - Caption = 'Browse' - TabOrder = 0 - OnClick = btnIEGuidClick - end - object btnHPath: TButton - Left = 615 - Top = 25 - Width = 48 - Height = 22 - Caption = 'Browse' - TabOrder = 1 - OnClick = btnHPathClick - end - object btnCreateIEGuid: TButton - Left = 17 - Top = 63 - Width = 97 - Height = 21 - Caption = 'CreateIEGuid' - TabOrder = 2 - OnClick = btnCreateIEGuidClick - end - object btnCreateIEList: TButton - Left = 17 - Top = 82 - Width = 97 - Height = 21 - Caption = 'CreateIEList' - TabOrder = 3 - OnClick = btnCreateIEListClick - end - object edtHPath: TEdit - Left = 200 - Top = 37 - Width = 409 - Height = 21 - TabOrder = 4 - end - object edtIEGuid: TEdit - Left = 200 - Top = 61 - Width = 409 - Height = 21 - TabOrder = 5 - end - object btnIEList: TButton - Left = 615 - Top = 80 - Width = 48 - Height = 21 - Caption = 'Browse' - TabOrder = 6 - OnClick = btnIEListClick - end - object edtIEList: TEdit - Left = 200 - Top = 83 - Width = 409 - Height = 21 - TabOrder = 7 - end - object cbOpenNotepad: TCheckBox - Left = 17 - Top = 110 - Width = 184 - Height = 17 - Caption = 'Auto open in notepad when done' - TabOrder = 8 - end - object GroupBox1: TGroupBox - Left = 4 - Top = 133 - Width = 659 - Height = 54 - Caption = 'Use after file created' - Enabled = False - TabOrder = 9 - object btnGetInterfaces: TButton - Left = 281 - Top = 24 - Width = 82 - Height = 17 - Caption = 'GetInterfaces' - TabOrder = 0 - OnClick = btnGetInterfacesClick - end - object btnConnectionP: TButton - Left = 186 - Top = 22 - Width = 89 - Height = 19 - Caption = 'ConnectionPoints' - TabOrder = 1 - OnClick = btnConnectionPClick - end - object btnGetServices: TButton - Left = 369 - Top = 24 - Width = 75 - Height = 17 - Caption = 'GetServices' - TabOrder = 2 - OnClick = btnGetServicesClick - end - object Button1: TButton - Left = 13 - Top = 23 - Width = 167 - Height = 18 - Caption = 'Open Memo content In Notepad' - TabOrder = 3 - OnClick = Button1Click - end - end - end - object PageControl1: TPageControl - Left = 0 - Top = 193 - Width = 676 - Height = 359 - ActivePage = TabSheet2 - Align = alClient - TabOrder = 1 - object TabSheet1: TTabSheet - Caption = 'Memo1' - object Memo1: TMemo - Left = 0 - Top = 0 - Width = 668 - Height = 331 - Align = alClient - Lines.Strings = ( - '') - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet2: TTabSheet - Caption = 'EmbeddedWB' - ImageIndex = 1 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 29 - Width = 668 - Height = 302 - Align = alClient - TabOrder = 0 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - OnQueryService = EmbeddedWB1QueryService - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'Mozilla/4.0(Compatible-EmbeddedWB 14.58 http://bsalsa.com/ ' - ControlData = { - 4C0000000A450000F91D00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel2: TPanel - Left = 0 - Top = 0 - Width = 668 - Height = 29 - Align = alTop - Caption = 'Panel2' - TabOrder = 1 - object IEAddress1: TIEAddress - Left = 0 - Top = 5 - Width = 578 - Height = 22 - AutoNavigateOnLoad = False - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - EmbeddedWB = EmbeddedWB1 - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 0 - end - object btnGo: TButton - Left = 584 - Top = 8 - Width = 75 - Height = 17 - Caption = 'Go' - TabOrder = 1 - OnClick = btnGoClick - end - end - end - end - object SaveDialog1: TSaveDialog - Left = 624 - Top = 288 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/utGuidCreator.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/utGuidCreator.pas deleted file mode 100644 index 84c3774b96..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/GUID_Creator/utGuidCreator.pas +++ /dev/null @@ -1,280 +0,0 @@ -//************************************************************* -// GuidCreator * -// * -// by * -// bsalsa - Eran Bodankin * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit utGuidCreator; - -interface - -uses - Messages, SysUtils, IEGuid, Classes, Controls, - Forms, Dialogs, StdCtrls, ExtCtrls, Browse4Folder, IEAddress, OleCtrls, - SHDocVw_EWB, EmbeddedWB, ComCtrls, LinkLabel, EwbCore; - -type - TForm1 = class(TForm) - Panel1: TPanel; - btnIEGuid: TButton; - btnHPath: TButton; - btnCreateIEGuid: TButton; - btnCreateIEList: TButton; - Label1: TLabel; - edtHPath: TEdit; - edtIEGuid: TEdit; - Label2: TLabel; - SaveDialog1: TSaveDialog; - Label3: TLabel; - btnIEList: TButton; - edtIEList: TEdit; - cbOpenNotepad: TCheckBox; - GroupBox1: TGroupBox; - btnGetInterfaces: TButton; - btnConnectionP: TButton; - btnGetServices: TButton; - Button1: TButton; - PageControl1: TPageControl; - TabSheet1: TTabSheet; - Memo1: TMemo; - TabSheet2: TTabSheet; - EmbeddedWB1: TEmbeddedWB; - Panel2: TPanel; - IEAddress1: TIEAddress; - btnGo: TButton; - LinkLabel1: TLinkLabel; - LinkLabel3: TLinkLabel; - procedure FormDestroy(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure btnGoClick(Sender: TObject); - procedure Button1Click(Sender: TObject); - procedure btnGetServicesClick(Sender: TObject); - procedure btnConnectionPClick(Sender: TObject); - procedure btnGetInterfacesClick(Sender: TObject); - procedure btnIEListClick(Sender: TObject); - procedure btnCreateIEListClick(Sender: TObject); - procedure btnCreateIEGuidClick(Sender: TObject); - procedure btnHPathClick(Sender: TObject); - procedure btnIEGuidClick(Sender: TObject); - procedure EmbeddedWB1QueryService(Sender: TObject; const rsid, - iid: TGUID; var Obj: IUnknown); - end; - -var - Form1: TForm1; - WBGuids: TIEGuid; - -implementation - -uses - Windows, ShellAPI, ActiveX, MSHTML_EWB, ShDocVw; - -{$R *.dfm} - -procedure TForm1.btnCreateIEGuidClick(Sender: TObject); -begin - if (edtIEGuid.Text = '') or (edtHPath.Text = '') then - begin - MessageDlg('Please enter a valid path and file name!', mtError, [mbOK], 0); - Exit; - end; - Screen.Cursor := crHourGlass; - try - Memo1.Clear; - Memo1.Lines.Add('Please Wait..'); - CreateIEGuid(edtHPath.Text, edtIEGuid.Text); - Memo1.Lines.LoadFromFile(edtIEGuid.Text); - if cbOpenNotepad.Checked then - ShellExecute(Handle, 'open', 'notepad.exe', PChar(edtIEGuid.Text), nil, SW_SHOWNORMAL); - GroupBox1.Enabled := True; - finally - Screen.Cursor := crDefault; - end; -end; - -procedure TForm1.btnCreateIEListClick(Sender: TObject); -begin - if (edtIEGuid.Text = '') or (edtIEList.Text = '') then - begin - MessageDlg('Please enter a valid path and file name!', mtError, [mbOK], 0); - Exit; - end; - Screen.Cursor := crHourGlass; - try - Memo1.Clear; - Memo1.Lines.Add('Please Wait..'); - CreateIEList(edtIEGuid.Text, edtIEList.Text); - Memo1.Lines.LoadFromFile(edtIEList.Text); - if cbOpenNotepad.Checked then - ShellExecute(Handle, 'open', 'notepad.exe', PChar(edtIEGuid.Text), nil, SW_SHOWNORMAL); - GroupBox1.Enabled := True; - finally - Screen.Cursor := crDefault; - end; -end; - -procedure TForm1.btnIEGuidClick(Sender: TObject); -var - sd: TSaveDialog; -begin - Sd := TSaveDialog.Create(Self); - with Sd do - begin - FileName := 'GuidList.txt'; - InitialDir := ExtractFilePath(Forms.Application.ExeName); - Filter := 'Text files|*.txt'; - HelpContext := 0; - Options := Options + [ofShowHelp, ofEnableSizing]; - end; - if Sd.Execute then - edtIEGuid.Text := Sd.FileName; - Sd.Free; -end; - -procedure TForm1.btnIEListClick(Sender: TObject); -var - sd: TSaveDialog; -begin - Sd := TSaveDialog.Create(Self); - with Sd do - begin - FileName := 'IEGuidList.txt'; - InitialDir := ExtractFilePath(Forms.Application.ExeName); - Filter := 'Text files|*.txt|Word files|*.doc'; - HelpContext := 0; - Options := Options + [ofShowHelp, ofEnableSizing]; - end; - if Sd.Execute then - edtIEList.Text := Sd.FileName; - Sd.Free; -end; - -procedure TForm1.Button1Click(Sender: TObject); -begin - ShellExecute(Handle, 'open', 'notepad.exe', PChar(edtIEGuid.Text), nil, SW_SHOWNORMAL); -end; - -procedure TForm1.EmbeddedWB1QueryService(Sender: TObject; const rsid, - iid: TGUID; var Obj: IUnknown); -begin - Memo1.Lines.Add(WBGuids.NameFromGuid(rsid) + ' - ' + WBGuids.NameFromGuid(iid)); -end; - -procedure TForm1.FormCreate(Sender: TObject); -begin - if not FileExists('IEGuidList.txt') then - Memo1.Lines.SaveToFile(ExtractFilePath(Forms.Application.ExeName) + 'IEGuidList.txt'); //dummy To prevent a crash on load - WBGuids := TIEGuid.Create(ExtractFilePath(Forms.Application.ExeName) + 'IEGuidList.txt'); - PageControl1.ActivePageIndex := 0; - EmbeddedWB1.AssignEmptyDocument; -end; - -procedure TForm1.FormDestroy(Sender: TObject); -begin - WBGuids.Free; -end; - -procedure TForm1.btnGetServicesClick(Sender: TObject); -var - wb: TWebbrowser; - MyGuids: TIEGuid; -begin - Memo1.Clear; - WB := TWebbrowser.Create(Self); - try - MyGuids := TIEGuid.Create(edtIEList.Text); - try - MyGuids.GetServices(wb.Application, '', Memo1.lines); - finally - MyGuids.Free; - end; - finally - WB.Free; - end; -end; - -procedure TForm1.btnGoClick(Sender: TObject); -begin - EmbeddedWB1.Go(IEAddress1.Text); -end; - -procedure TForm1.btnConnectionPClick(Sender: TObject); -var - wb: TWebbrowser; - MyGuids: TIEGuid; -begin - Memo1.Clear; - MyGuids := TIEGuid.Create(edtIEList.Text); - try - WB := TWebbrowser.Create(Self); - try - MyGuids.GetConnectionPoints(wb.Document, Memo1.lines, TRUE); - finally - WB.Free; - end; - finally - MyGuids.Free; - end; -end; - -procedure TForm1.btnGetInterfacesClick(Sender: TObject); -var - wb: TWebbrowser; - MyGuids: TIEGuid; -begin - Memo1.Clear; - MyGuids := TIEGuid.Create(edtIEList.Text); - try - WB := TWebbrowser.Create(Self); - try - MyGuids.GetInterfaces(WB.Application, Memo1.lines); - finally - WB.Free; - end; - finally - MyGuids.Free; - end; -end; - -procedure TForm1.btnHPathClick(Sender: TObject); -var - b4f: TBrowse4Folder; -begin - b4f := TBrowse4Folder.Create(Self); - try - b4F.InitialDir := ExtractFilePath(Forms.Application.ExeName); - edtHPath.Text := b4f.Execute2; - finally - b4f.Free; - end; -end; - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/IEGuidList.txt b/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/IEGuidList.txt deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/ieguiddemo_u.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/ieguiddemo_u.dfm deleted file mode 100644 index c5b286efee..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/ieguiddemo_u.dfm +++ /dev/null @@ -1,205 +0,0 @@ -object Form1: TForm1 - Left = 303 - Top = 272 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsSingle - Caption = 'IEGUID demo' - ClientHeight = 439 - ClientWidth = 695 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnCreate = FormCreate - OnDestroy = FormDestroy - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object Label1: TLabel - Left = 199 - Top = 45 - Width = 76 - Height = 13 - Caption = 'Query Interface:' - end - object Label2: TLabel - Left = 199 - Top = 208 - Width = 70 - Height = 13 - Caption = 'Query Service:' - end - object Label3: TLabel - Left = 199 - Top = 330 - Width = 36 - Height = 13 - Caption = 'Events:' - end - object Label4: TLabel - Left = 445 - Top = 66 - Width = 228 - Height = 18 - AutoSize = False - Caption = 'Double-Click on the Interface or Service List to' - WordWrap = True - end - object Label6: TLabel - Left = 8 - Top = 8 - Width = 669 - Height = 16 - Caption = - 'First, create a IEGuid.txt file using the Guid Creator, then cop' + - 'y the files to this App folder and start.' - Font.Charset = DEFAULT_CHARSET - Font.Color = clRed - Font.Height = -13 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object Label7: TLabel - Left = 445 - Top = 82 - Width = 204 - Height = 18 - AutoSize = False - Caption = 'copy the Code to the ClipBoard.' - WordWrap = True - end - object TreeView1: TTreeView - Left = 3 - Top = 30 - Width = 188 - Height = 401 - Indent = 19 - TabOrder = 0 - OnChange = TreeView1Change - end - object ListBox1: TListBox - Left = 198 - Top = 64 - Width = 233 - Height = 138 - ItemHeight = 13 - TabOrder = 1 - OnDblClick = ListBox1DblClick - end - object ListBox2: TListBox - Left = 199 - Top = 227 - Width = 232 - Height = 97 - ItemHeight = 13 - TabOrder = 2 - OnDblClick = ListBox2DblClick - end - object ListBox3: TListBox - Left = 198 - Top = 349 - Width = 232 - Height = 82 - ItemHeight = 13 - TabOrder = 3 - end - object GroupBox1: TGroupBox - Left = 443 - Top = 113 - Width = 214 - Height = 89 - Caption = 'Include' - TabOrder = 4 - object IUnknownBox: TCheckBox - Left = 13 - Top = 18 - Width = 97 - Height = 17 - Caption = 'IUnknown' - Checked = True - State = cbChecked - TabOrder = 0 - OnClick = ServiceGroupClick - end - object IdispatchBox: TCheckBox - Left = 13 - Top = 34 - Width = 97 - Height = 17 - Caption = 'IDispatch' - Checked = True - State = cbChecked - TabOrder = 1 - OnClick = ServiceGroupClick - end - object IdispatchExBox: TCheckBox - Left = 13 - Top = 50 - Width = 97 - Height = 17 - Caption = 'IDispatchEx' - Checked = True - State = cbChecked - TabOrder = 2 - OnClick = ServiceGroupClick - end - object DispInterfacesBox: TCheckBox - Left = 13 - Top = 66 - Width = 97 - Height = 17 - Caption = 'Dispinterfaces' - Checked = True - State = cbChecked - TabOrder = 3 - OnClick = ServiceGroupClick - end - end - object ServiceGroup: TRadioGroup - Left = 442 - Top = 224 - Width = 215 - Height = 52 - Caption = 'Service group' - ItemIndex = 0 - Items.Strings = ( - 'IID' - 'SID_STopLevelBrowser') - TabOrder = 5 - OnClick = ServiceGroupClick - end - object EmbeddedWB1: TEmbeddedWB - Left = 451 - Top = 352 - Width = 47 - Height = 33 - TabOrder = 6 - Visible = False - Silent = False - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'Mozilla/4.0(Compatible-EmbeddedWB 14.58 http://bsalsa.com/ ' - ControlData = { - 4C0000005F080000100500000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/ieguiddemo_u.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/ieguiddemo_u.pas deleted file mode 100644 index b25399f2e6..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/ieguiddemo_u.pas +++ /dev/null @@ -1,185 +0,0 @@ -{*******************************************************} -{ EmbeddedWB - IEGuid Demo } -{ by Per larsen } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************} - -unit ieguiddemo_u; - -interface - -uses - Activex, IEGuid, Windows, Messages, SysUtils, Classes, Graphics, Controls, - Forms, Dialogs, clipbrd, Mshtml_Ewb, StdCtrls, ComCtrls, OleCtrls, SHDocVw_EWB, EmbeddedWB, - ExtCtrls, EwbCore; - -type - TForm1 = class(TForm) - TreeView1: TTreeView; - ListBox1: TListBox; - ListBox2: TListBox; - ListBox3: TListBox; - GroupBox1: TGroupBox; - IUnknownBox: TCheckBox; - IdispatchBox: TCheckBox; - IdispatchExBox: TCheckBox; - Label1: TLabel; - Label2: TLabel; - Label3: TLabel; - ServiceGroup: TRadioGroup; - DispInterfacesBox: TCheckBox; - Label4: TLabel; - Label6: TLabel; - EmbeddedWB1: TEmbeddedWB; - Label7: TLabel; - procedure FormCreate(Sender: TObject); - procedure FormDestroy(Sender: TObject); - procedure TreeView1Change(Sender: TObject; Node: TTreeNode); - procedure ListBox1DblClick(Sender: TObject); - procedure ListBox2DblClick(Sender: TObject); - procedure UpdateLists; - procedure FormShow(Sender: TObject); - procedure ServiceGroupClick(Sender: TObject); - private - { Private declarations } - public - { Public declarations } - end; - -var - MyGuids: TIEGuid; - Form1: TForm1; - IList: TInterfaceList; - EmbeddedWBNode, DocumentNode: TTreeNode; - -implementation - -{$R *.DFM} - -procedure TForm1.FormCreate(Sender: TObject); -begin - if not FileExists('IEGuidList.txt') then - TreeView1.SaveToFile('IEGuidList.txt'); // dummy - MyGuids := TIEGuid.Create('IEGuidList.txt'); -end; - -procedure TForm1.FormShow(Sender: TObject); -var - IDisp: IDispatch; - x: Integer; - sl: TStringlist; - HTMLDoc4: IHTMLDocument4; -begin - EmbeddedWB1.AssignEmptyDocument; - IList := TInterfaceList.Create; - sl := TStringlist.Create; - MyGuids.GetPropertylist(Embeddedwb1.Document, sl); - TreeView1.ReadOnly := True; - with TreeView1.Items do - begin - EmbeddedwbNode := Add(nil, 'EmbeddedWB'); - IList.Add(EmbeddedWB1); - AddChild(EmbeddedWBNode, 'Application'); - IList.Add(EmbeddedWB1.Application); - AddChild(EmbeddedWBNode, 'Document'); - IList.Add(EmbeddedWB1.Document); - DocumentNode := TreeView1.Items[2]; - HTMLDoc4 := EmbeddedWB1.Doc4; - if HTMLDoc4 <> nil then - for x := 0 to sl.Count - 1 do - begin - try - if (sl[x] <> 'parentDocument') and (sl[x] <> 'constructor') then - begin - IDisp := MyGuids.GetDispatchFromName(HTMLDoc4, sl[x]); - AddChild(DocumentNode, sl[x]); - IList.Add(IDisp); - end; - except - caption := sl[x]; - Break; - end; - end; - end; - TreeView1.Items[0].Expand(True); -end; - - -procedure TForm1.FormDestroy(Sender: TObject); -begin - IList.Free; - MyGuids.Free; -end; - -procedure TForm1.UpdateLists; -var - SID: string; -begin - if ServiceGroup.ItemIndex = 1 then SID := 'SID_STopLevelBrowser' else sid := ''; - Listbox1.Clear; - Listbox2.Clear; - Listbox3.Clear; - MyGuids.GetInterfacesEx(IList[Treeview1.Selected.AbsoluteIndex], listbox1.Items, - IUnknownBox.Checked, IdispatchBox.Checked, IdispatchExBox.Checked, DispInterfacesBox.Checked); - MyGuids.GetServices(IList[Treeview1.Selected.AbsoluteIndex], SID, listbox2.Items); - MyGuids.GetConnectionpoints(IList[Treeview1.Selected.AbsoluteIndex], listbox3.Items, IDispatchBox.Checked); -end; - -procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode); -begin - UpdateLists; -end; - -procedure TForm1.ListBox1DblClick(Sender: TObject); -var - S: string; -begin - S := 'var' + #13 + 'ID : ' + Listbox1.Items[Listbox1.ItemIndex] + ';' + #13#13; - - if treeview1.Selected.Parent = DocumentNode then - S := S + 'If SUCCEEDED((EmbeddedWB1.Document as IHTMLDocument4).' + Treeview1.Selected.Text + - '.QueryInterface(' + Listbox1.Items[Listbox1.ItemIndex] + ', ID)) then' else - - if Treeview1.Selected.Text = 'Document' then - S := S + 'If SUCCEEDED((EmbeddedWB1.Document as IHTMLDocument4).QueryInterface(' + Listbox1.Items[Listbox1.ItemIndex] + - ', ID))' else - - if Treeview1.Selected.Text = 'Application' then - S := S + 'If SUCCEEDED(EmbeddedWB1.Application.QueryInterface(' + Listbox1.Items[Listbox1.ItemIndex] + ', ID)) then' else - - if Treeview1.Selected.Text = 'EmbeddedWB' then - S := S + 'If SUCCEEDED(EmbeddedWB1.QueryInterface(' + Listbox1.Items[Listbox1.ItemIndex] + ', ID)) then'; - - ClipBoard.SetTextBuf(Pchar(s)); - Showmessage('Copied to Clipboard:' + #13#13#13 + S + #13); -end; - -procedure TForm1.ListBox2DblClick(Sender: TObject); -var - S, SID: string; -begin - if ServiceGroup.ItemIndex = 1 then SID := 'SID_STopLevelBrowser' else sid := Listbox2.Items[Listbox2.ItemIndex]; - S := 'var' + #13 + 'ID : ' + Listbox2.Items[Listbox2.ItemIndex] + ';' + #13#13; - if treeview1.Selected.Parent = DocumentNode then - S := s + 'If SUCCEEDED(((IHTMLDocument4(EmbeddedWB1.Document).' + Treeview1.Selected.Text + - ' as IServiceProvider).QueryService(' + SID + ', ' + Listbox2.Items[Listbox2.ItemIndex] + ',ID))) then' else - if Treeview1.Selected.Text = 'Document' then - S := s + 'If SUCCEEDED((EmbeddedWB1.Document as IServiceProvider).QueryService(' + SID + ', ' + Listbox2.Items[Listbox2.ItemIndex] + ',ID)) then' else - if Treeview1.Selected.Text = 'Application' then - S := s + 'If SUCCEEDED((EmbeddedWB1.Application as IServiceProvider).QueryService(' + SID + ', ' + Listbox2.Items[Listbox2.ItemIndex] + ',ID)) then' else - if Treeview1.Selected.Text = 'EmbeddedWB' then - S := s + 'If SUCCEEDED((EmbeddedWB1 as IServiceProvider).QueryService(' + SID + ', ' + - Listbox2.Items[Listbox2.ItemIndex] + ',ID)) then'; - ClipBoard.SetTextBuf(Pchar(s)); - Showmessage('Copied to Clipboard:' + #13#13#13 + S + #13); -end; - -procedure TForm1.ServiceGroupClick(Sender: TObject); -begin - UpdateLists; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/prjIEGuidDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/prjIEGuidDemo.dpr deleted file mode 100644 index 0aaeb772f4..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/04 - GUID_Demo/IEGuid/prjIEGuidDemo.dpr +++ /dev/null @@ -1,13 +0,0 @@ -program prjIEGuidDemo; - -uses - Forms, - ieguiddemo_u in 'ieguiddemo_u.pas' {Form1}; - -{$R *.RES} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/frmMain.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/frmMain.dfm deleted file mode 100644 index 278d3bb17e..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/frmMain.dfm +++ /dev/null @@ -1,250 +0,0 @@ -object Form1: TForm1 - Left = 210 - Top = 156 - Caption = 'IEAddress Demo' - ClientHeight = 480 - ClientWidth = 635 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 635 - Height = 41 - Align = alTop - TabOrder = 0 - DesignSize = ( - 635 - 41) - object Button1: TButton - Left = 585 - Top = 15 - Width = 41 - Height = 20 - Anchors = [akTop, akRight] - Caption = 'GO' - TabOrder = 0 - OnClick = Button1Click - end - object IEAddress1: TIEAddress - Left = 10 - Top = 13 - Width = 569 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - OnGetAppIcon = IEAddress1GetAppIcon - OnGetFavicon = IEAddress1GetFavicon - ParentBiDiMode = True - ShowFavicon = True - TabOrder = 1 - TextOnShow = 'sssssss' - Themes = tmXP - end - end - object GroupBox1: TGroupBox - Left = 450 - Top = 41 - Width = 185 - Height = 439 - Align = alRight - Caption = 'Property Settings' - TabOrder = 1 - object Label1: TLabel - Left = 14 - Top = 205 - Width = 89 - Height = 13 - Caption = 'Drop Down Count:' - end - object Label3: TLabel - Left = 6 - Top = 252 - Width = 59 - Height = 13 - Caption = 'DLL Version:' - end - object Image1: TImage - Left = 22 - Top = 329 - Width = 35 - Height = 33 - end - object Image2: TImage - Left = 126 - Top = 330 - Width = 35 - Height = 32 - end - object Label2: TLabel - Left = 22 - Top = 295 - Width = 3 - Height = 13 - end - object Label4: TLabel - Left = 118 - Top = 295 - Width = 3 - Height = 13 - end - object chkHasDropDown: TCheckBox - Left = 16 - Top = 44 - Width = 97 - Height = 17 - Caption = 'HasDropDown' - Checked = True - State = cbChecked - TabOrder = 0 - OnClick = chkHasDropDownClick - end - object chkRegistryUpdate: TCheckBox - Left = 16 - Top = 67 - Width = 97 - Height = 17 - Caption = 'RegistryUpdate' - Checked = True - State = cbChecked - TabOrder = 1 - OnClick = chkRegistryUpdateClick - end - object chkHasBorder: TCheckBox - Left = 16 - Top = 21 - Width = 97 - Height = 17 - Caption = 'HasBorder' - Checked = True - State = cbChecked - TabOrder = 3 - OnClick = chkHasBorderClick - end - object cbShowFavicons: TCheckBox - Left = 16 - Top = 113 - Width = 95 - Height = 17 - Caption = 'ShowFavicons' - Checked = True - State = cbChecked - TabOrder = 5 - OnClick = cbShowFaviconsClick - end - object cbShowAppIconToHtml: TCheckBox - Left = 16 - Top = 90 - Width = 166 - Height = 17 - Caption = 'ShowAppIconOnHtml' - Checked = True - State = cbChecked - TabOrder = 7 - OnClick = cbShowAppIconToHtmlClick - end - object chkAutoNavOnSelectLV: TCheckBox - Left = 16 - Top = 159 - Width = 145 - Height = 17 - Caption = 'AutoNavOnSelectLV' - Checked = True - State = cbChecked - TabOrder = 2 - OnClick = chkAutoNavOnSelectLVClick - end - object edtDLL: TEdit - Left = 6 - Top = 268 - Width = 171 - Height = 21 - ReadOnly = True - TabOrder = 4 - end - object Button2: TButton - Left = 71 - Top = 224 - Width = 83 - Height = 22 - Caption = 'Drop Down List' - TabOrder = 6 - OnClick = Button2Click - end - object chkAutoNavigateOnDblClk: TCheckBox - Left = 16 - Top = 182 - Width = 153 - Height = 17 - Caption = 'AutoNavigateOnDblClk' - Checked = True - State = cbChecked - TabOrder = 8 - end - object chkAutoNavigateOnEnterKey: TCheckBox - Left = 16 - Top = 136 - Width = 145 - Height = 17 - Caption = 'AutoNavigateOnEnterKey' - Checked = True - State = cbChecked - TabOrder = 9 - OnClick = chkAutoNavigateOnEnterKeyClick - end - object SpinDropDownCount: TSpinEdit - Left = 14 - Top = 224 - Width = 49 - Height = 22 - EditorEnabled = False - MaxLength = 3 - MaxValue = 100 - MinValue = 1 - TabOrder = 10 - Value = 15 - end - end - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 41 - Width = 450 - Height = 439 - Align = alClient - TabOrder = 2 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'MyBrowser' - ControlData = { - 4C000000822E00005F2D00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object ImageList1: TImageList - Left = 88 - Top = 328 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/frmMain.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/frmMain.pas deleted file mode 100644 index c4575c6c4f..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/frmMain.pas +++ /dev/null @@ -1,176 +0,0 @@ -{*******************************************************} -{ IEAddress Demo 31/05/2006 } -{ by Eran Bodankin (bsalsa) bsalsa@bsalsa.com } -{ Enjoy! } -{ For Delphi 5 - 2009 } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. You may consider donation in our web site! -{*******************************************************************************} - -unit frmMain; - -interface - -uses - Windows, EWBAcc, sysUtils, Graphics, Classes, Controls, Forms, EmbeddedWB, StdCtrls, IEAddress, - ExtCtrls, Spin, SHDocVw_EWB, LinkLabel, ImgList, ComCtrls, OleCtrls, ActiveX, Dialogs, - EwbCore; - -type - TForm1 = class(TForm) - Panel1: TPanel; - Button1: TButton; - GroupBox1: TGroupBox; - Label1: TLabel; - chkHasDropDown: TCheckBox; - chkRegistryUpdate: TCheckBox; - chkHasBorder: TCheckBox; - IEAddress1: TIEAddress; - cbShowFavicons: TCheckBox; - cbShowAppIconToHtml: TCheckBox; - chkAutoNavOnSelectLV: TCheckBox; - Label3: TLabel; - edtDLL: TEdit; - Button2: TButton; - chkAutoNavigateOnDblClk: TCheckBox; - chkAutoNavigateOnEnterKey: TCheckBox; - SpinDropDownCount: TSpinEdit; - Image1: TImage; - Image2: TImage; - Label2: TLabel; - Label4: TLabel; - ImageList1: TImageList; - EmbeddedWB1: TEmbeddedWB; - procedure IEAddress1GetAppIcon(Sender: TObject; var Cancel: Boolean; - Icon: TIcon); - procedure IEAddress1GetFavicon(Sender: TObject; Favicon, - SiteUrl: WideString; var Cancel: Boolean; Icon: TIcon); - procedure Button3Click(Sender: TObject); - procedure Button2Click(Sender: TObject); - procedure chkAutoNavOnSelectLVClick(Sender: TObject); - procedure cbShowAppIconToHtmlClick(Sender: TObject); - procedure cbShowFaviconsClick(Sender: TObject); - procedure chkHasBorderClick(Sender: TObject); - procedure Button1Click(Sender: TObject); - procedure chkAutoNavigateOnDblClkClick(Sender: TObject); - procedure chkAutoNavigateOnEnterKeyClick(Sender: TObject); - procedure chkHasDropDownClick(Sender: TObject); - procedure chkRegistryUpdateClick(Sender: TObject); - procedure SpinDropDownCountChange(Sender: TObject); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.chkAutoNavOnSelectLVClick(Sender: TObject); -begin - IEAddress1.AutoNavigateOnSelected := chkAutoNavOnSelectLV.Checked; -end; - -procedure TForm1.Button1Click(Sender: TObject); -begin - EmbeddedWB1.Go(IEAddress1.Text); - edtDll.Text := FloatToStr(IEAddress1.GetDllVersion('Shlwapi.dll')); -end; - -procedure TForm1.Button2Click(Sender: TObject); -begin - IEAddress1.DroppedDown := True; -end; - -procedure TForm1.Button3Click(Sender: TObject); -begin - IEAddress1.Flat := True; -end; - -procedure TForm1.cbShowAppIconToHtmlClick(Sender: TObject); -begin - IEAddress1.UseAppIcon := cbShowAppIconToHtml.Checked; -end; - -procedure TForm1.cbShowFaviconsClick(Sender: TObject); -begin - IEAddress1.ShowFavicon := cbShowFavicons.Checked; -end; - -procedure TForm1.chkAutoNavigateOnDblClkClick(Sender: TObject); -begin - IEAddress1.AutoNavigateOnDblClk := chkAutoNavigateOnDblClk.Checked; -end; - -procedure TForm1.chkAutoNavigateOnEnterKeyClick(Sender: TObject); -begin - IEAddress1.AutoNavigateOnEnterKey := chkAutoNavigateOnEnterKey.Checked; -end; - -procedure TForm1.chkHasDropDownClick(Sender: TObject); -begin - IEAddress1.HasDropDown := chkHasDropDown.Checked; -end; - -procedure TForm1.chkRegistryUpdateClick(Sender: TObject); -begin - IEAddress1.UpdateItemsToRegistry := chkRegistryUpdate.Checked; -end; - -procedure TForm1.IEAddress1GetAppIcon(Sender: TObject; var Cancel: Boolean; - Icon: TIcon); -begin - if IEAddress1.UseAppIcon then - begin - Image2.Picture.Icon := Icon; - Label4.Caption := 'App Icon:' - end; -end; - -procedure TForm1.IEAddress1GetFavicon(Sender: TObject; Favicon, - SiteUrl: WideString; var Cancel: Boolean; Icon: TIcon); -begin - if IEAddress1.ShowFavicon then - begin - Image1.Picture.Icon := Icon; - Label2.Caption := 'Favicon:'; - end; -end; - -procedure TForm1.SpinDropDownCountChange(Sender: TObject); -begin - IEAddress1.DropDownCount := SpinDropDownCount.Value; -end; - -procedure TForm1.chkHasBorderClick(Sender: TObject); -begin - IEAddress1.HasBorder := chkHasBorder.Checked; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/prjIEAddressDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/prjIEAddressDemo.dpr deleted file mode 100644 index 7f57385428..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/05 - IEAddress_Demo/prjIEAddressDemo.dpr +++ /dev/null @@ -1,14 +0,0 @@ -program prjIEAddressDemo; - -uses - ExceptionLog, - Forms, - frmMain in 'frmMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/06 - IECache_Demo/cachedemo_u.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/06 - IECache_Demo/cachedemo_u.dfm deleted file mode 100644 index 46244e3e1fa6dbfb4de2a6c0743eba0522060520..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2931 zcmai0O>Y}T7#{D|`(ei+O$th>RQ7-j0+BS7_E1%*&f3OSoUG;DC{z_HUzh_ zj!9Ap!5`qxfeR-%aX^SOXD;v)_y>ps=Q1C=UOP#fmF%65ci)d^p7)*iMFj+HZ?L}u z?yQAX0D^w|juEs8o$Qq5|Fs@EX8NO&9+0W_MfnIvY^?vG86AX2W2W1h>B1?)Br!I- zEvN1@Q9K=E=L5%u;TZAhgp^$p6KdLFyvvd{4ADxPBy7taLz*IHzSeBD8;8B%soQA` z{8ms=yYicrFh0UbL{0*9%Bpfh8P@)@4{1C<{vMeuA@+Q|qCu(eXi9aSMrX`ldsMg1) zC{Fu`c9U?deO?j%WuDc55%k~?#fJR9FA>x%0igc8q!83T%K+4BbNtrZI7T8K2PToz zhiv=+04wO>ln!|d?52|Y9PLmG1!@;FNKIMxxH z_~EM8hl;$PYSPo+a_skV>~GE;t++8s6MJOk3xo zYpXq&G6#ksN>dcQ(!q}wRdzF#jhCsMkO&{+D^%WFRQV)R>0DH4woa#*UWoWSZ&lEo zNmugLZbXsON*FyW4!3-sPIu>Ya>poqCg_w8mg)2YDA)C0K<@kXIh}5cy61$va`Qvy zv~qSSIY|+9RDm|7N)*{;pK*%tYCp_Y3eU{BXRC7u&ZX2UzdsN|G9-RmNL+RE>I7a< z-<`+8m|NUfR-BnNf<8=mrI!CoU}$-5ou`)mFPMXoeNcpE@nYGU3{e!J=xDcE471!) z_h+82U*+kl{{za67>^Ruf}#j>XbYX-MiZxS7$cX_n4?cwIAf_%I=FGjaqo&->zLoB zp1gk3>Siku!l}5U(#DJtmrSMt%oVi}jL`(8+}@DPm~q=Fe00W)O&@G;4^tSYa4RH} z?VEjGm06~GYah}PPSP#W3zWh5SUlh9kKVjgXdoJc1*y$TrTA^QAamfdhgHcKVu8LzqLNJvP~gZx}nM0?`p06je1}CFZ5pWl!I1;SrtVr zZ%|aVQytB>Ij4WfdqVB?3k_evY1{UaJ#^M2CyBYfpfXz%4NtcvTSqH<@6=Qik<)zT zfVZoS-qY4WFnGM;2VHmXaW-*1Z?D@@leNP^uhaDdZ;x@n$K_UaLn5>&Wyw?r&HdpsPfd8 1 then - IECache1.GetEntryInfo(ListBox1.Items.Strings[ListBox1.ItemIndex]); - with IECache1.EntryInfo do - begin - if ((pos('.htm', Localfilename) > 0) or (pos('.gif', Localfilename) > 0) or (pos('.jpg', Localfilename) > 0)) - and Checkbox1.checked then - EmbeddedWB1.Go(LocalFileName); - Label1.Caption := 'Hitrate: ' + InttoStr(HitRate); - Label2.Caption := 'FileSize: ' + InttoStr(FSize); - Label3.Caption := 'Last access: ' + DTString(LastAccessTime); - Label4.Caption := 'Last modified: ' + DTString(LastModifiedTime); - Label5.Caption := 'Expire: ' + DTString(ExpireTime); - edtFileName.Text := LocalFileName; - end; -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - Listbox1.SetFocus; - listbox1.ItemIndex := 1; - Listbox1Click(Sender); -end; - -procedure TForm1.Button3Click(Sender: TObject); -begin - with OpenDlg do - begin - filter := 'Internet files|*.htm;*.html;*.gif;*.jpg'; - if Execute then - if IECache1.CopyFileToCache('file:///' + FileName, FileName, - NORMAL_CACHE_ENTRY, StrToDateTime('01-01-02 00:00:00')) = S_OK - then - begin - Radiogroup1.ItemIndex := 0; - Radiogroup1Click(Sender); - listbox1.ItemIndex := Listbox1.Items.IndexOf('file:///' + FileName); - end; - end; -end; - -procedure TForm1.CheckBox1Click(Sender: TObject); -begin - if not Checkbox1.Checked then - EmbeddedWB1.GoAboutBlank; - listbox1.Setfocus; -end; - -procedure TForm1.DeleteEntryBtnClick(Sender: TObject); -begin - EmbeddedWB1.GoAboutBlank; - IECache1.DeleteEntry(Listbox1.Items[Listbox1.Itemindex]); - RadioGroup1Click(Sender); - Listbox1.Setfocus; -end; - -procedure TForm1.edtFileNameKeyDown(Sender: TObject; var Key: Word; - Shift: TShiftState); -begin - Exit; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/06 - IECache_Demo/prjCacheDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/06 - IECache_Demo/prjCacheDemo.dpr deleted file mode 100644 index 17194af3b4..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/06 - IECache_Demo/prjCacheDemo.dpr +++ /dev/null @@ -1,48 +0,0 @@ -//*********************************************************** -// IECache Demo ver 1.01 (2006) * -// * -// Freeware Demo * -// by * -// Per Linds Larsen * -// * -// Contributions: * -// Eran Bodankin -bsalsa(bsalsa@bsalsa.com) * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program PrjCacheDemo; - -uses - Forms, - cachedemo_u in 'cachedemo_u.pas' {Form1}; - - -{$R *.RES} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/Downloader.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/Downloader.dfm deleted file mode 100644 index a69fae7fe6..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/Downloader.dfm +++ /dev/null @@ -1,87 +0,0 @@ -object Form2: TForm2 - Left = 373 - Top = 201 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsSingle - Caption = 'IEDownload Run-Time demo' - ClientHeight = 264 - ClientWidth = 511 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 511 - Height = 57 - Align = alTop - TabOrder = 0 - object Label1: TLabel - Left = 8 - Top = 9 - Width = 39 - Height = 13 - Caption = 'Address' - end - object Button1: TButton - Left = 445 - Top = 26 - Width = 59 - Height = 25 - Caption = 'Go' - TabOrder = 0 - OnClick = Button1Click - end - object edtAddress: TEdit - Left = 8 - Top = 28 - Width = 421 - Height = 21 - TabOrder = 1 - Text = 'http://www.bsalsa.com/Downloads/2.exe' - end - end - object Panel2: TPanel - Left = 0 - Top = 208 - Width = 511 - Height = 56 - Align = alBottom - TabOrder = 1 - object Label2: TLabel - Left = 8 - Top = 13 - Width = 3 - Height = 13 - end - object ProgressBar1: TProgressBar - Left = 1 - Top = 38 - Width = 509 - Height = 17 - Align = alBottom - Min = 0 - Max = 100 - TabOrder = 0 - end - end - object memDL: TMemo - Left = 0 - Top = 57 - Width = 511 - Height = 151 - Align = alClient - Lines.Strings = ( - '') - ScrollBars = ssBoth - TabOrder = 2 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/Downloader.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/Downloader.pas deleted file mode 100644 index 38f64d1e3b..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/Downloader.pas +++ /dev/null @@ -1,77 +0,0 @@ -unit Downloader; - -interface - -uses - Windows, Messages, Classes, Graphics, Controls, Forms, - SysUtils, StdCtrls, ExtCtrls, IEDownload, ComCtrls; - -type - TForm2 = class(TForm) - Panel1: TPanel; - Button1: TButton; - Panel2: TPanel; - Label1: TLabel; - edtAddress: TEdit; - ProgressBar1: TProgressBar; - memDL: TMemo; - Label2: TLabel; - procedure Button1Click(Sender: TObject); - private - { Private declarations } - procedure MyProgress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode, FileSize: ULONG; szStatusText: LPCWSTR; Downloaded, - ElapsedTime, Speed, RemainingTime, Status, Percent: string); - public - { Public declarations } - end; - -var - Form2: TForm2; - -implementation - -{$R *.dfm} - -procedure TForm2.Button1Click(Sender: TObject); -var - IED: TIEDownload; -begin - IED := TIEDownload.Create(Self); - try - with IED do - begin - OpenDownloadFolder := True; - OnProgress := MyProgress; - Form2.Caption := 'Downloading from: ' + edtAddress.Text; - Go(edtAddress.Text); - with memDL.Lines do - begin - Clear; - Add('Downloaded File: ' + DownloadedFile); - Add('Download Folder: ' + DownloadFolder); - Add('File Name: ' + FileName); - Add('Server IP: ' + ServerIP); - Add('Server Address: ' + ServerAddress); - Add('File type: ' + MimeType); - Add('File extension: ' + FileExtension); - Add('File Size: ' + FormatSize(FileSize)); - end; - end; - finally - IED.Free; - Form2.Caption := 'Done.'; - end; -end; - -procedure TForm2.MyProgress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode, FileSize: ULONG; szStatusText: LPCWSTR; Downloaded, - ElapsedTime, Speed, RemainingTime, Status, Percent: string); -begin - ProgressBar1.Max := ulProgressMax; - ProgressBar1.Position := ulProgress; - Label2.Caption := 'Percents: ' + Percent; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/prjDownloaderDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/prjDownloaderDemo.dpr deleted file mode 100644 index a36e2c3487..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Creating_Dynamically (at Run-Time)/prjDownloaderDemo.dpr +++ /dev/null @@ -1,14 +0,0 @@ -program prjDownloaderDemo; - -uses - Forms, - Downloader in 'Downloader.pas' {Form2}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm2, Form2); - Application.Run; -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadForm_U.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadForm_U.dfm deleted file mode 100644 index 856649fd4e..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadForm_U.dfm +++ /dev/null @@ -1,126 +0,0 @@ -object DownloadForm: TDownloadForm - Left = 322 - Top = 111 - BorderIcons = [biSystemMenu, biMinimize, biMaximize, biHelp] - BorderStyle = bsDialog - Caption = 'Downloads' - ClientHeight = 178 - ClientWidth = 663 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - OnClose = FormClose - OnCreate = FormCreate - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object lvDownloads: TListView - Left = 0 - Top = 0 - Width = 663 - Height = 121 - Align = alClient - Columns = < - item - Caption = 'File' - Width = 140 - end - item - Caption = 'Status' - Width = 150 - end - item - Alignment = taRightJustify - Caption = 'Size' - Width = 55 - end - item - Alignment = taRightJustify - Caption = 'Progress' - Width = 55 - end - item - Alignment = taRightJustify - Caption = 'Speed' - Width = 70 - end - item - Caption = 'Remaining' - Width = 80 - end - item - Caption = 'Progressbar' - Width = 80 - end> - RowSelect = True - TabOrder = 0 - ViewStyle = vsReport - OnContextPopup = lvDownloadsContextPopup - end - object Panel1: TPanel - Left = 0 - Top = 121 - Width = 663 - Height = 57 - Align = alBottom - TabOrder = 1 - object btnCancel: TButton - Left = 464 - Top = 29 - Width = 75 - Height = 19 - Caption = 'Cancel All' - TabOrder = 0 - OnClick = btnCancelClick - end - object chkAutoClose: TCheckBox - Left = 8 - Top = 32 - Width = 369 - Height = 17 - Caption = 'Close this dialog box when downloads are completed' - Checked = True - State = cbChecked - TabOrder = 1 - end - object ProgressBar1: TProgressBar - Left = 8 - Top = 6 - Width = 531 - Height = 17 - TabOrder = 2 - end - end - object IEDownload: TIEDownload - AdditionalHeader.Strings = ( - 'Content-Type: application/x-www-form-urlencoded') - DefaultProtocol = 'http://' - DefaultUrlFileName = 'index.html' - DownloadMethod = dlFile - OnBeginningTransaction = IEDownloadBeginningTransaction - OnBinding = IEDownloadBinding - OnDownloadComplete = IEDownloadComplete - OnProgress = IEDownloadProgress - Options = [Asynchronous, AsyncStorage, GetNewestVersion, NoWriteCache, PullData, Pragma_No_Cache] - Left = 16 - Top = 80 - end - object pmDownloadItem: TPopupMenu - Left = 48 - Top = 80 - object miCancel: TMenuItem - Caption = 'Cancel' - OnClick = miCancelClick - end - object miOpen: TMenuItem - Caption = 'Open' - Enabled = False - OnClick = miOpenClick - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadForm_U.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadForm_U.pas deleted file mode 100644 index e0c3452ab9..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadForm_U.pas +++ /dev/null @@ -1,325 +0,0 @@ -unit DownloadForm_U; - -interface - -uses -{$IFDEF VER140}Variants, {$ENDIF}Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, IEDownload, ComCtrls, UrlMon, ActiveX, DownloadRequestForm, - ShellApi, Menus, ExtCtrls; - -const - SEE_MASK_NOZONECHECKS = $00800000; - -type - TDownloadForm = class(TForm) - IEDownload: TIEDownload; - lvDownloads: TListView; - pmDownloadItem: TPopupMenu; - miCancel: TMenuItem; - miOpen: TMenuItem; - Panel1: TPanel; - btnCancel: TButton; - chkAutoClose: TCheckBox; - ProgressBar1: TProgressBar; - procedure FormDestroy(Sender: TObject); - procedure btnCancelClick(Sender: TObject); - procedure IEDownloadProgress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode: Cardinal; szStatusText: PWideChar; Downloaded, ElapsedTime, - Speed, RemainingTime, Status: string); - procedure IEDownloadComplete(Sender: TBSCB; Stream: TStream; - Result: HRESULT); - function IEDownloadBeginningTransaction(Sender: TBSCB; szURL, - szHeaders: PWideChar; dwReserved: Cardinal; - out szAdditionalHeaders: PWideChar): HRESULT; - procedure IEDownloadBinding(var Sender: TBSCB; var Cancel: Boolean); - procedure miCancelClick(Sender: TObject); - procedure lvDownloadsContextPopup(Sender: TObject; MousePos: TPoint; - var Handled: Boolean); - procedure miOpenClick(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - private - { Private declarations } - finishedAll: Boolean; - procedure Execute(Sender: TBSCB); - protected - procedure CreateParams(var Params: TCreateParams); override; - public - { Public declarations } - procedure Download(Url: string); overload; - procedure Download( - pmk: IMoniker; // Identifies the object to be downloaded - pbc: IBindCtx // Stores information used by the moniker to bind - ); overload; - end; - -var - DownloadForm: TDownloadForm; - -implementation - -{$R *.dfm} - -uses - Registry; - -function GetTempDir: string; -var - Path: array[0..MAX_PATH] of Char; -begin - GetTempPath(MAX_PATH, Path); - Result := Path; -end; - -procedure TDownloadForm.CreateParams(var Params: TCreateParams); -begin - inherited CreateParams(Params); - Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; -end; - -procedure TDownloadForm.FormDestroy(Sender: TObject); -begin - DownloadForm := nil; -end; - -procedure TDownloadForm.btnCancelClick(Sender: TObject); -begin - Close; -end; - -procedure TDownloadForm.Download(Url: string); -begin - if (not Visible) then - Show - else - BringToFront; - IEDownload.Go(Url); -end; - -procedure TDownloadForm.Download(pmk: IMoniker; pbc: IBindCtx); -begin - if (not Visible) then - Show - else - BringToFront; - IEDownload.Download(pmk, pbc); -end; - -procedure TDownloadForm.Execute(Sender: TBSCB); -var - lpExecInfo: TShellExecuteInfo; -begin - ZeroMemory(@lpExecInfo, sizeof(lpExecInfo)); - lpExecInfo.cbSize := sizeof(lpExecInfo); - lpExecInfo.fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_NOZONECHECKS; - lpExecInfo.Wnd := Self.Handle; - //lpExecInfo.lpVerb := 'open'; // use default handling - lpExecInfo.lpFile := PChar(Sender.Info.DownloadDir + Sender.Info.FileName); - lpExecInfo.nShow := SW_SHOWNORMAL; - if (not ShellExecuteEx(@lpExecInfo)) then - begin - ShowMessage(SysErrorMessage(GetLastError())); - end; -end; - -procedure TDownloadForm.IEDownloadComplete(Sender: TBSCB; Stream: TStream; - Result: HRESULT); -var - i: Integer; - lvItem: TListItem; -begin - if ((Result = S_OK) and (Sender.Info.OpenAfterDownload)) then - Execute(Sender); - finishedAll := true; - if (lvDownloads.Items.Count > 1) then - for i := 0 to lvDownloads.Items.Count - 1 do - if (i <> Sender.Info.Index) then - begin - lvItem := lvDownloads.Items[i]; - if Assigned(lvItem.Data) and (TBSCB(lvItem.Data).State < Canceled) then - begin - finishedAll := false; - Break; - end; - end; - if (finishedAll) then - btnCancel.Caption := 'Close'; - if (chkAutoClose.Checked) then - Close; -end; - -function TDownloadForm.IEDownloadBeginningTransaction(Sender: TBSCB; - szURL, szHeaders: PWideChar; dwReserved: Cardinal; - out szAdditionalHeaders: PWideChar): HRESULT; -begin - result := S_OK; -end; - -procedure TDownloadForm.IEDownloadProgress(Sender: TBSCB; ulProgress, - ulProgressMax, ulStatusCode: Cardinal; szStatusText: PWideChar; Downloaded, - ElapsedTime, Speed, RemainingTime, Status: string); -var - lvItem: TListItem; -begin - ProgressBar1.Max := ulProgressMax; - ProgressBar1.Position := ulProgress; - lvItem := lvDownloads.Items[Sender.Info.Index]; - if (Assigned(lvItem)) then - begin - lvDownloads.Items.BeginUpdate; - if ((ulStatusCode = BINDSTATUS_ENDDOWNLOADDATA) or - (ulStatusCode = BINDSTATUS_DOWNLOADINGDATA)) then - begin - lvItem.SubItems[2] := Format('%.1f %%', [ulProgress / ulProgressMax * 100]); - lvItem.SubItems[4] := RemainingTime; - if (ulStatusCode <> BINDSTATUS_ENDDOWNLOADDATA) then - lvItem.SubItems[3] := Speed - else - lvItem.SubItems[4] := ''; - end; - - lvItem.SubItems[0] := Status; - lvDownloads.Items.EndUpdate; - end; -end; - -function FindItem(listItems: TListItems; Caption: string): Integer; -var - idx: Integer; -begin - result := -1; - for idx := 0 to listItems.Count - 1 do - if (listItems[idx].Caption = Caption) then - begin - result := idx; - break; - end; -end; - -procedure TDownloadForm.IEDownloadBinding(var Sender: TBSCB; - var Cancel: Boolean); -var - DownloadRequest: TDownloadRequest; - ModRes: TModalResult; - lvItem: TListItem; - arrSize: array[0..255] of Char; - idx: Integer; -begin - idx := FindItem(lvDownloads.Items, Sender.Info.FileName); - if (idx > -1) then - begin - lvItem := lvDownloads.Items[idx]; - lvItem.SubItems[0] := 'Resuming...'; - end - else - begin - lvItem := lvDownloads.Items.Add; - lvItem.Caption := Sender.Info.FileName; - lvItem.SubItems.Add(''); // Status - lvItem.SubItems.Add(StrFormatByteSize(Sender.Info.FileSize, arrSize, Length(arrSize) - 1)); // Size - lvItem.SubItems.Add(Format('%.1f %%', [0.])); // Progress - lvItem.SubItems.Add(''); // Speed - lvItem.SubItems.Add(''); // Remaining Time - end; - lvItem.Data := Sender; - Sender.Info.Index := lvItem.Index; - - DownloadRequest := TDownloadRequest.Create(nil); - DontOpenThisExts.Add('msi'); - DownloadRequest.SetInfo(Sender); - modres := DownloadRequest.ShowModal(); - case modres of - mrCancel: - Cancel := True; - mrOpen: - begin - Sender.Info.OpenAfterDownload := True; - Sender.Info.DownloadDir := GetTempDir; - finishedAll := false; - btnCancel.Caption := 'Cancel All'; - end; - else - begin - finishedAll := false; - btnCancel.Caption := 'Cancel All'; - end; - end; -end; - -procedure TDownloadForm.miCancelClick(Sender: TObject); -var - lvItem: TListItem; -begin - if (pmDownloadItem.Tag > -1) then - begin - lvItem := lvDownloads.Items[miCancel.Tag]; - if (Assigned(lvItem) and Assigned(lvItem.Data)) then - begin - IEDownload.Cancel(TBSCB(lvItem.Data)); - lvItem.Data := nil; - end; - pmDownloadItem.Tag := -1; - end; -end; - -procedure TDownloadForm.miOpenClick(Sender: TObject); -var - lvItem: TListItem; -begin - if (pmDownloadItem.Tag > -1) then - begin - lvItem := lvDownloads.Items[pmDownloadItem.Tag]; - if (Assigned(lvItem) and Assigned(lvItem.Data)) then - Execute(TBSCB(lvItem.Data)); - end; -end; - -procedure TDownloadForm.lvDownloadsContextPopup(Sender: TObject; - MousePos: TPoint; var Handled: Boolean); -var - lvItem: TListItem; - pt: TPoint; -begin - // no item is selected but the context menu hotkey was pressed - if ((MousePos.X = -1) and (MousePos.Y = -1)) then - begin - if (lvDownloads.ItemIndex > -1) then - begin - lvItem := lvDownloads.Items[lvDownloads.ItemIndex]; - pmDownloadItem.Tag := lvDownloads.ItemIndex; - miCancel.Enabled := Assigned(lvItem.Data) and (TBSCB(lvItem.Data).State = Finished); - miOpen.Enabled := Assigned(lvItem.Data) and (TBSCB(lvItem.Data).State = Finished) and CanOpen(TBSCB(lvItem.Data).Info.FileExt); - pt := lvDownloads.ClientToScreen(lvItem.GetPosition()); - pmDownloadItem.Popup(pt.X, pt.Y); - end; - end - else - begin - lvItem := lvDownloads.GetItemAt(MousePos.X, MousePos.Y); - if (Assigned(lvItem)) then - begin - pmDownloadItem.Tag := lvItem.Index; - miCancel.Enabled := Assigned(lvItem.Data) and (TBSCB(lvItem.Data).State = Finished); - miOpen.Enabled := Assigned(lvItem.Data) and (TBSCB(lvItem.Data).State = Finished) and CanOpen(TBSCB(lvItem.Data).Info.FileExt); - pt := lvDownloads.ClientToScreen(MousePos); - pmDownloadItem.Popup(pt.X, pt.Y); - end; - end; -end; - -procedure TDownloadForm.FormCreate(Sender: TObject); -begin - finishedAll := false; - btnCancel.Caption := 'Cancel All'; -end; - -procedure TDownloadForm.FormClose(Sender: TObject; - var Action: TCloseAction); -begin - if (not finishedAll) then - IEDownload.Cancel; - lvDownloads.Clear; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadManager.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadManager.dpr deleted file mode 100644 index b7e13acb8c..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadManager.dpr +++ /dev/null @@ -1,31 +0,0 @@ -library DownloadManager; - -{ Important note about DLL memory management: ShareMem must be the - first unit in your library's USES clause AND your project's (select - Project-View Source) USES clause if your DLL exports any procedures or - functions that pass strings as parameters or function results. This - applies to all strings passed to and from your DLL--even those that - are nested in records and classes. ShareMem is the interface unit to - the BORLNDMM.DLL shared memory manager, which must be deployed along - with your DLL. To avoid using BORLNDMM.DLL, pass string information - using PChar or ShortString parameters. } - -uses - comserv, - _IEDownloadManager in '_IEDownloadManager.pas', - DownloadForm_U in 'DownloadForm_U.pas' {DownloadForm}, - DownloadManager_TLB in 'DownloadManager_TLB.pas'; - -exports - DllGetClassObject, - DllCanUnloadNow, - DllRegisterServer, - DllUnRegisterServer; - - -{$R *.TLB} - -{$R *.res} - -begin -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadManager.tlb b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/DownloadManager.tlb deleted file mode 100644 index 0258cb9be4d7597d6ad89d35831130cc676c50f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1048 zcmeYbb_-!*U}OLRP8Kl55D4T#L?C=*5+u$K75EPY3P64X5QDft3QQxjLF!56djKtJ zfa(M3KLO-RAn_l79Kr-K7bO3HnSntDN&XKSpH%zFQ4i8XPXP2TJgg)7W372UHapGi zyXrI1ZI#wPdOBp(F1m&Qa=a63F+W4;7nl6= 0))); -end; - -procedure TDownloadRequest.SetInfo(Sender: TBSCB); -var - sfi: TSHFILEINFO; - arrSize: array[0..255] of Char; -begin - FSender := Sender; - //lbFromTxt.Caption := Sender.UrlComponents.lpszHostName; - lbNameTxt.Caption := Sender.Info.FileName; - - btnOpen.Enabled := CanOpen(Sender.Info.FileExt); - - if (Sender.Info.FileSize > 0) then begin - StrFormatByteSize(Sender.Info.FileSize, arrSize, Length(arrSize)-1); - lbSizeTxt.Caption := Trim(arrSize); - end else - lbSizeTxt.Caption := 'unknown'; - - // get file information - ZeroMemory(@sfi, sizeof(sfi)); - if (SHGetFileInfo( - PChar(Sender.Info.FileName), - FILE_ATTRIBUTE_NORMAL, - sfi, - sizeof(sfi), - SHGFI_ICON or SHGFI_TYPENAME or SHGFI_USEFILEATTRIBUTES) <> 0) then - begin - if (sfi.hIcon <> 0) then - imgIcon.Picture.Icon.Handle := sfi.hIcon; - if (sfi.szTypeName[0] <> #0) then - lbTypeTxt.Caption := sfi.szTypeName; - end; -{ else - begin - ShowMessage(SysErrorMessage(GetLastError())); - end;} -end; - -procedure TDownloadRequest.btnCancelClick(Sender: TObject); -begin - DownloadForm.Close; - Close; -end; - -procedure TDownloadRequest.btnOpenClick(Sender: TObject); -begin - Self.ModalResult := mrOpen; -end; - -procedure TDownloadRequest.btnSaveClick(Sender: TObject); -begin - dlgSave.FileName := FSender.Info.FileName; - if (dlgSave.Execute) then - begin - FSender.Info.FileName := ExtractFileName(dlgSave.FileName); - FSender.Info.DownloadDir := ExtractFilePath(dlgSave.FileName); - Self.ModalResult := mrSave; - end; -end; - -procedure TDownloadRequest.FormDestroy(Sender: TObject); -begin - if (imgIcon.Picture.Icon.Handle <> 0) then - DestroyIcon(imgIcon.Picture.Icon.Handle); -end; - -initialization - DontOpenThisExts := TStringList.Create(); - OpenOnlyThisExts := TStringList.Create(); -finalization - DontOpenThisExts.Free(); - OpenOnlyThisExts.Free(); -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/_IEDownloadManager.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/_IEDownloadManager.pas deleted file mode 100644 index b2e5ff31f4..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Internet Explorer_OutOfDate/_IEDownloadManager.pas +++ /dev/null @@ -1,129 +0,0 @@ -//*********************************************************** -// IEDownloadManager (Oct 15, 2001) * -// * -// ver. 1.0 * -// * -// For Delphi 5 & 6 * -// * -// by * -// Per Linds Larsen * -// per.lindsoe@larsen.mail.dk * -// * -// * -// * -// Updated versions: * -// * -// http://www.euromind.com/iedelphi * -//*********************************************************** - -unit _IEDownloadManager; - -interface - -uses - EwbAcc, Urlmon, Windows, ActiveX, Classes, ComObj, - Registry, DownloadForm_U; - - -type -TIEDownloadManagerFactory = class(TComObjectFactory) -private - procedure AddKeys; - procedure RemoveKeys; -public - procedure UpdateRegistry(Register: Boolean); override; -end; - - -TIEDownloadManager = class(TComObject, IDownloadManager) -private - DownloadForm: TDownloadForm; - function Download( - pmk: IMoniker; // Identifies the object to be downloaded - pbc: IBindCtx; // Stores information used by the moniker to bind - dwBindVerb: DWORD; // The action to be performed during the bind - grfBINDF: DWORD; // Determines the use of URL encoding during the bind - pBindInfo: PBindInfo; // Used to implement IBindStatusCallback::GetBindInfo - pszHeaders: PWidechar; // Additional headers to use with IHttpNegotiate - pszRedir: PWidechar; // The URL that the moniker is redirected to - uiCP: UINT // The code page of the object's display name - ): HRESULT; stdcall; -end; - - -const - Class_IEDownloadManager: TGUID = '{FEC76531-D69B-448D-840F-AD7865DD9F7B}'; - -implementation - -uses ComServ; - -{ TIEDownloadManager } - - -procedure TIEDownloadManagerFactory.UpdateRegistry(Register: Boolean); -begin - inherited UpdateRegistry(Register); - if Register then AddKeys else RemoveKeys; -end; - -procedure TIEDownloadManagerFactory.AddKeys; -var - reg: TRegistry; - S: string; -begin - inherited; - S := GUIDToString(Class_IEDownloadManager); - reg := TRegistry.Create; - try - Reg.RootKey := HKEY_CURRENT_USER; - if Reg.OpenKey('Software\Microsoft\Internet Explorer', True) then - begin - Reg.WriteString('DownloadUI', S); - Reg.CloseKey; - end; - finally - Reg.Free; - end; -end; - -procedure TIEDownloadManagerFactory.RemoveKeys; -var - reg: TRegistry; -begin - inherited; - reg := TRegistry.Create; - try - reg.RootKey := HKEY_CURRENT_USER; - reg.OpenKey('Software\Microsoft\Internet Explorer', False); - reg.DeleteValue('DownloadUI'); - reg.Closekey; - finally - Reg.Free; - end; -end; - - - - -{ TIEDownloadManager } - -function TIEDownloadManager.Download(pmk: IMoniker; pbc: IBindCtx; - dwBindVerb: DWORD; grfBINDF: DWORD; pBindInfo: PBindInfo; pszHeaders, - pszRedir: PWidechar; uiCP: UINT): HRESULT; -var - Url: PWidechar; -begin - if DownloadForm = nil then Downloadform := TDownloadform.Create(nil); - Downloadform.show; - pmk.GetDisplayName(pbc, nil, Url); - Downloadform.Download(Url); - Result := S_OK; -end; - -initialization - TIEDownloadManagerFactory.Create(ComServer, TIEDownloadManager, Class_IEDownloadManager, - 'IEDownloadManager', 'Download Manager for IE 5.5 and later', ciMultiinstance, tmApartment); - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadForm_U.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadForm_U.dfm deleted file mode 100644 index 58ee537468..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadForm_U.dfm +++ /dev/null @@ -1,160 +0,0 @@ -object DownloadForm: TDownloadForm - Left = 322 - Top = 111 - BorderIcons = [biSystemMenu, biMinimize, biMaximize, biHelp] - BorderStyle = bsDialog - Caption = 'Downloads' - ClientHeight = 322 - ClientWidth = 776 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - OnClose = FormClose - OnCloseQuery = FormCloseQuery - OnCreate = FormCreate - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 242 - Width = 776 - Height = 80 - Align = alBottom - TabOrder = 0 - object btnCancel: TButton - Left = 680 - Top = 14 - Width = 75 - Height = 19 - Caption = 'Cancel All' - TabOrder = 0 - OnClick = btnCancelClick - end - object chkAutoClose: TCheckBox - Left = 8 - Top = 6 - Width = 369 - Height = 17 - Caption = 'Close this dialog box when downloads are completed.' - TabOrder = 1 - end - object cbRemoveComp: TCheckBox - Left = 8 - Top = 29 - Width = 369 - Height = 17 - Caption = 'Remove complete downloads' - TabOrder = 2 - OnClick = cbRemoveCompClick - end - object cbExecute: TCheckBox - Left = 8 - Top = 52 - Width = 145 - Height = 17 - Caption = 'Execute On Complete' - TabOrder = 3 - OnClick = cbExecuteClick - end - object Memo1: TMemo - Left = 296 - Top = 6 - Width = 273 - Height = 67 - Lines.Strings = ( - 'Memo1') - ScrollBars = ssBoth - TabOrder = 4 - end - end - object ListView: TListView - Left = 0 - Top = 0 - Width = 776 - Height = 242 - Align = alClient - Columns = < - item - Caption = 'File' - Width = 120 - end - item - Caption = 'Status' - Width = 120 - end - item - Alignment = taRightJustify - Caption = 'Size' - Width = 55 - end - item - Alignment = taRightJustify - Caption = 'Progress' - Width = 55 - end - item - Alignment = taRightJustify - Caption = 'Speed' - Width = 60 - end - item - Caption = 'Remaining' - Width = 70 - end - item - Caption = 'Thread ID' - Width = 60 - end - item - Caption = 'ActiveConnections' - Width = 90 - end - item - Caption = 'Progress bar' - Width = 150 - end> - ReadOnly = True - RowSelect = True - PopupMenu = pmDownloadItem - TabOrder = 1 - ViewStyle = vsReport - OnContextPopup = ListViewContextPopup - end - object IEDownload: TIEDownload - About = ' IEDownload http://bsalsa.com/' - AdditionalHeader.Strings = ( - 'Content-Type: application/x-www-form-urlencoded') - BindF = [Asynchronous, AsyncStorage, GetNewestVersion, NoWriteCache, NeedFile] - DefaultProtocol = 'http://' - DefaultUrlFileName = 'index.html' - OnBeforeDownload = IEDownloadBeforeDownload - OnBeginningTransaction = IEDownloadBeginningTransaction - OnDataAvailable = IEDownloadDataAvailable - OnComplete = IEDownloadComplete - OnError = IEDownloadError - OnProgress = IEDownloadProgress - OnStartBinding = IEDownloadStartBinding - TimeOut = 2147483647 - Left = 16 - Top = 80 - end - object pmDownloadItem: TPopupMenu - Left = 48 - Top = 80 - object miCancel: TMenuItem - Caption = 'Cancel' - OnClick = miCancelClick - end - object miOpen: TMenuItem - Caption = 'Open' - Enabled = False - OnClick = miOpenClick - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadForm_U.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadForm_U.pas deleted file mode 100644 index 8ae9b90e78..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadForm_U.pas +++ /dev/null @@ -1,502 +0,0 @@ -//************************************************************************* -// * -// IE Downloag Mgr * -// For Delphi * -// * -// Freeware Demo * -// Developing Team: * -// Eran Bodankin -bsalsa(bsalsa@bsalsa.com) * -// Mathias Walter (mich@matze.tv) * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit DownloadForm_U; - -interface - -uses - Windows, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls, - IEDownload, ComCtrls, UrlMon, ActiveX, DownloadRequestForm, - ShellApi, Menus, ExtCtrls, IEDownloadTools, Graphics; - -const - SEE_MASK_NOZONECHECKS = $00800000; - -type - TDownloadForm = class(TForm) - IEDownload: TIEDownload; - pmDownloadItem: TPopupMenu; - miCancel: TMenuItem; - miOpen: TMenuItem; - Panel1: TPanel; - btnCancel: TButton; - chkAutoClose: TCheckBox; - - ListView: TListView; - cbRemoveComp: TCheckBox; - cbExecute: TCheckBox; - Memo1: TMemo; - procedure FormDestroy(Sender: TObject); - procedure btnCancelClick(Sender: TObject); - procedure miCancelClick(Sender: TObject); - procedure ListViewContextPopup(Sender: TObject; MousePos: TPoint; - var Handled: Boolean); - procedure miOpenClick(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure IEDownloadProgress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded, ElapsedTime, - Speed, RemainingTime, Status, Percent: string); - function IEDownloadBeginningTransaction(Sender: TBSCB; szURL, - szHeaders: PWideChar; dwReserved: Cardinal; - out szAdditionalHeaders: PWideChar): HRESULT; - procedure cbRemoveCompClick(Sender: TObject); - procedure cbExecuteClick(Sender: TObject); - procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); - procedure IEDownloadComplete(Sender: TCustomIEDownload; aFileNameAndPath, - aFileName, aFolderName, aExtension: WideString; - const ActiveConnections: Integer); - procedure IEDownloadStartBinding(Sender: TBSCB; var Cancel: Boolean; - pib: IBinding; const FileName: WideString; const FileSize: Integer); - procedure IEDownloadBeforeDownload(Sender: TInfoData; const Url, FileName, - FileExtension, Host, DownloadFolder: string; const FileSize: Integer; - var Cancel: Boolean); - procedure IEDownloadDataAvailable(Sender: TBSCB; var Buffer: PByte; - var BufLength: Cardinal); - procedure IEDownloadError(const ErrorCode: Integer; const stError: string); - private - { Private declarations } - - procedure Execute(FName: WideString); - protected - procedure CreateParams(var Params: TCreateParams); override; - public - { Public declarations } - procedure DoDownload(pmk: IMoniker; pbc: IBindCtx); - procedure DoGo(inUrl: string); - end; - -var - DownloadForm: TDownloadForm; - -implementation - -{$R *.dfm} - -procedure TDownloadForm.cbExecuteClick(Sender: TObject); -var - lvItem: TListItem; -begin - if (cbExecute.Checked) and (ListView.Selected.Index > 0) and - (ListView.Selected.SubItems[0]= 'Done.') then - begin - lvItem := ListView.Selected; - Execute(IEDownload.DownloadFolder+ lvItem.Caption); - end; -end; - -procedure TDownloadForm.cbRemoveCompClick(Sender: TObject); -var - idx: integer; -begin - if (cbRemoveComp.checked) then - begin - for idx := 0 to ListView.Items.Count - 1 do - begin - if ListView.Items[idx].SubItems[0]= 'Done.' then - begin - TProgressBar(ListView.Items[idx].Data).Free; - ListView.Items.Delete(idx); - end; - end; - end; -end; - -procedure TDownloadForm.CreateParams(var Params: TCreateParams); -begin - inherited CreateParams(Params); - Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW; -end; - -procedure TDownloadForm.FormDestroy(Sender: TObject); -begin - DownloadForm := nil; -end; - -procedure TDownloadForm.btnCancelClick(Sender: TObject); -begin - IEDownload.CancelAll; - Close; -end; - -procedure TDownloadForm.DoGo(inUrl: string); -begin - if (not Visible) then - Show - else - BringToFront; - IEDownload.Go(inUrl); -end; - -procedure TDownloadForm.DoDownload(pmk: IMoniker; pbc: IBindCtx); -begin - if (not Visible) then - Show - else - BringToFront; - IEDownload.Download(pmk, pbc); -end; - -procedure TDownloadForm.Execute(FName: WideString); -var - lpExecInfo: TShellExecuteInfo; -begin - ZeroMemory(@lpExecInfo, sizeof(lpExecInfo)); - with lpExecInfo do - begin - cbSize := sizeof(lpExecInfo); - fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_NOZONECHECKS; - Wnd := Self.Handle; - lpVerb := 'open'; // use default handling - lpFile := PWideChar(FName); - nShow := SW_SHOWNORMAL; - end; - if (not ShellExecuteEx(@lpExecInfo)) then - ShowMessage(SysErrorMessage(GetLastError())); -end; - -function FindStringInLV(listItems: TListItems; inString: string): Integer; -var - idx: Integer; -begin - Result := -1; - for idx := 0 to listItems.Count - 1 do - if (listItems[idx].Caption = inString) then - begin - Result := idx; - Break; - end; -end; - -function FindThreadIDInLV(listItem: TListItems; SubIdx, ID: integer): Integer; -var - idx: Integer; -begin - Result := -1; - for idx := 0 to listItem.Count - 1 do - if (listItem[idx].SubItems[SubIdx] = IntToStr(ID)) then - begin - Result := idx; - Break; - end; -end; - -procedure TDownloadForm.IEDownloadBeforeDownload(Sender: TInfoData; const Url, - FileName, FileExtension, Host, DownloadFolder: string; - const FileSize: Integer; var Cancel: Boolean); -var - sfi: TSHFileInfo; - DownloadRequest: TDownloadRequest; - ModRes: TModalResult; -begin {New downlaod} - DownloadRequest := TDownloadRequest.Create(nil); - try - with DownloadRequest do - begin - DontOpenThisExts.Add('msi'); - lbFromTxt.Caption := Host; - lbNameTxt.Caption := FileName; - lbSizeTxt.Caption := FormatSize(FileSize); - if (FileSize >= 0) then - lbSizeTxt.Caption := 'unknown'; - ZeroMemory(@sfi, sizeof(sfi)); - if (SHGetFileInfo(PChar(FileName),FILE_ATTRIBUTE_NORMAL, sfi, - sizeof(sfi), SHGFI_ICON or SHGFI_TYPENAME or SHGFI_USEFILEATTRIBUTES) <> 0) then - begin - if (sfi.hIcon <> 0) then - imgIcon.Picture.Icon.Handle := sfi.hIcon; - if (sfi.szTypeName[0] <> #0) then - lbTypeTxt.Caption := sfi.szTypeName; - end; - end; - - modres := DownloadRequest.ShowModal; - case ModRes of - mrCancel: - begin - Cancel := True; - DownloadRequest.Close; - end; - mrOpen: - begin - IEDownload.OpenDownloadFolder := True; - btnCancel.Caption := 'Cancel All'; - end; - mrSave: - begin - btnCancel.Caption := 'Cancel All'; - Sender.infDownloadFolder:= DownloadRequest.drDownloadFolder; - Sender.infFileName:=DownloadRequest.drFileName; - end; - end; - finally - DownloadRequest.Free; - end; -end; - -function TDownloadForm.IEDownloadBeginningTransaction(Sender: TBSCB; szURL, - szHeaders: PWideChar; dwReserved: Cardinal; - out szAdditionalHeaders: PWideChar): HRESULT; -begin - Result:= S_OK; -end; - -procedure TDownloadForm.IEDownloadComplete(Sender: TCustomIEDownload; - aFileNameAndPath, aFileName, aFolderName, aExtension: WideString; - const ActiveConnections: Integer); -var - lvItem: TListItem; - idx: integer; -begin - idx := FindStringInLV(Listview.Items, IEDownload.FileName); - lvItem := ListView.Items[idx]; - if (Assigned(lvItem)) then - lvItem.SubItems[6] := IntToStr(IEDownload.ActiveConnections); - - if cbExecute.Checked then - Execute(IEDownload.DownloadedFile); - lvItem := ListView.Selected; - if (cbRemoveComp.checked) and (lvItem <> nil) then - begin - idx := lvItem.Index; - TProgressBar(lvItem.Data).Free; - ListView.Items.Delete(idx); - end; - if (IEDownload.ActiveConnections = 0) and (not IEDownload.Busy) then - begin - btnCancel.Caption := 'Close'; - if (chkAutoClose.Checked) then - Close; - end; -end; - -procedure TDownloadForm.IEDownloadDataAvailable(Sender: TBSCB; - var Buffer: PByte; var BufLength: Cardinal); -begin - Memo1.Lines.Add(Char(Buffer)); -end; - -procedure TDownloadForm.IEDownloadError(const ErrorCode: Integer; - const stError: string); -begin - //Showmessage(stError); -end; - -procedure TDownloadForm.IEDownloadProgress(Sender: TBSCB; ulProgress, - ulProgressMax, ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded, - ElapsedTime, Speed, RemainingTime, Status, Percent: string); -var - lvItem: TListItem; - idx: integer; - pb: TProgressBar; -begin - if ListView.Items.Count = 0 then - Exit; - begin {New downlaod} - idx := FindThreadIDInLV(Listview.Items, 5, Sender.ThreadID); - lvItem := ListView.Items[idx]; - if (Assigned(lvItem)) then - begin - lvItem.SubItems[0] := Status; - if ((ulStatusCode = BINDSTATUS_ENDDOWNLOADDATA) or - (ulStatusCode = BINDSTATUS_DOWNLOADINGDATA)) then - begin - with lvItem do - begin - SubItems[1] := FormatSize(IEDownload.FileSize); - SubItems[2] := Percent; - SubItems[3] := Speed; - SubItems[4] := RemainingTime; - SubItems[6] := IntToStr(IEDownload.ActiveConnections); - end; - pb := TProgressBar(Listview.Items[idx].Data); - pb.Max := ulProgressMax; - pb.Position := ulProgress; - end; - end; - end; -end; - -procedure TDownloadForm.IEDownloadStartBinding(Sender: TBSCB; - var Cancel: Boolean; pib: IBinding; const FileName: WideString; - const FileSize: Integer); -var - lvItem: TListItem; - idx: Integer; - pbRect: TRect; - pb: TProgressBar; -begin {If the filename allready exists in our list view} - idx := FindStringInLV(Listview.Items, IEDownload.FileName); - if (idx > -1) then - begin - lvItem := Listview.Items[idx]; - with lvItem do - begin - SubItems[0] := 'Resuming...'; - SubItems.Add(''); // Size - SubItems.Add(''); // Progress - SubItems.Add(''); // Speed - SubItems.Add('UnKnown'); // Remaining Time - SubItems.Add(IntToStr(Sender.ThreadID)); - SubItems.Add(IntToStr(IEDownload.ActiveConnections)); - SubItems.Add(''); //ProgressBar - end; - pb := TProgressBar.Create(nil); - pb.Parent := Listview; - lvItem.Data := pb; - pbRect := lvItem.DisplayRect(drBounds); - pbRect.Left := 540 + pbRect.Left + ListView.Columns[7].Width; - pbRect.Right := pbRect.Left+ Listview.Columns[7].Width+50; - pb.BoundsRect := pbRect; - end; - - - idx := FindThreadIDInLV(Listview.Items, 5, Sender.ThreadID); - if (idx > -1) then - lvItem := ListView.Items[idx] - else - lvItem := Listview.Items.Add; - with lvItem do - begin - Caption := IEDownload.FileName; - SubItems.Add('Waiting'); // Status - SubItems.Add(''); // Size - SubItems.Add(''); // Progress - SubItems.Add(''); // Speed - SubItems.Add('UnKnown'); // Remaining Time - SubItems.Add(IntToStr(Sender.ThreadID)); - SubItems.Add(IntToStr(IEDownload.ActiveConnections)); - SubItems.Add(''); //ProgressBar - end; - pb := TProgressBar.Create(nil); - pb.Parent := Listview; - lvItem.Data := pb; - pbRect := lvItem.DisplayRect(drBounds); - pbRect.Left := 540 + pbRect.Left + ListView.Columns[7].Width; - pbRect.Right := pbRect.Left+ Listview.Columns[7].Width+50; - pb.BoundsRect := pbRect; - end; - - -procedure TDownloadForm.miCancelClick(Sender: TObject); -var - lvItem: TListItem; -begin - if (pmDownloadItem.Tag > -1) then - begin - lvItem := ListView.Items[miCancel.Tag]; - if (Assigned(lvItem) and Assigned(lvItem.Data)) then - begin - IEDownload.Cancel(TBSCB(lvItem.Data)); - lvItem.Data := nil; - end; - pmDownloadItem.Tag := -1; - end; -end; - -procedure TDownloadForm.miOpenClick(Sender: TObject); -var - lvItem: TListItem; -begin - if (pmDownloadItem.Tag > -1) then - begin - lvItem := ListView.Items[pmDownloadItem.Tag]; - if (Assigned(lvItem)) and (lvItem.SubItems[0]= 'Done.') then - Execute(IEDownload.DownloadFolder+ lvItem.Caption); - end; -end; - -procedure TDownloadForm.ListViewContextPopup(Sender: TObject; - MousePos: TPoint; var Handled: Boolean); -var - lvItem: TListItem; - pt: TPoint; -begin - // no item is selected but the context menu hotkey was pressed - if ((MousePos.X = -1) and (MousePos.Y = -1)) then - begin - if (ListView.ItemIndex > -1) then - begin - lvItem := ListView.Items[ListView.ItemIndex]; - pmDownloadItem.Tag := ListView.ItemIndex; - miCancel.Enabled := Assigned(lvItem.Data); - miOpen.Enabled := (Assigned(lvItem)) and (lvItem.SubItems[0]= 'Done.'); - CanOpen(TBSCB(lvItem.Data).BscbInfo.infFileExt); - pt := ListView.ClientToScreen(lvItem.GetPosition()); - pmDownloadItem.Popup(pt.X, pt.Y); - end; - end - else - begin - lvItem := ListView.GetItemAt(MousePos.X, MousePos.Y); - if (Assigned(lvItem)) then - begin - pmDownloadItem.Tag := lvItem.Index; - lvItem := ListView.Items[pmDownloadItem.Tag]; - miCancel.Enabled := Assigned(lvItem.Data) and (lvItem.SubItems[0]<> 'Done.'); - miOpen.Enabled := (Assigned(lvItem)) and (lvItem.SubItems[0]= 'Done.'); - pt := ListView.ClientToScreen(MousePos); - pmDownloadItem.Popup(pt.X, pt.Y); - end; - end; -end; - -procedure TDownloadForm.FormCreate(Sender: TObject); -begin - btnCancel.Caption := 'Cancel All'; -end; - -procedure TDownloadForm.FormClose(Sender: TObject; - var Action: TCloseAction); -begin - if IEDownload.ActiveConnections > 0 then - IEDownload.CancelAll; -end; - -procedure TDownloadForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); -begin - if IEDownload.ActiveConnections > 0 then - begin - if MessageDlg('There are active threads. Are you sure you want to quit?', - mtWarning, [mbYes, mbNo], 0) = mrNo then - CanClose:= False - else - IEDownload.CancelAll; - end; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo.dpr deleted file mode 100644 index 0721750c16..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo.dpr +++ /dev/null @@ -1,52 +0,0 @@ -//************************************************************************* -// * -// IE Downloag Mgr * -// For Delphi * -// * -// Freeware Demo * -// Developing Team: * -// Eran Bodankin -bsalsa(bsalsa@bsalsa.com) * -// Mathias Walter (mich@matze.tv) * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program DownloadMgrDemo; - -uses - ExceptionLog, - Forms, - DownloadMgrDemo_U in 'DownloadMgrDemo_U.pas' {Form1}, - DownloadForm_U in 'DownloadForm_U.pas' {DownloadForm}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.CreateForm(TDownloadForm, DownloadForm); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo_U.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo_U.dfm deleted file mode 100644 index b1b335c223..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo_U.dfm +++ /dev/null @@ -1,93 +0,0 @@ -object Form1: TForm1 - Left = 269 - Top = 107 - Width = 607 - Height = 428 - Caption = 'IE Downloag Mgr ' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 65 - Width = 591 - Height = 327 - TabStop = False - Align = alClient - TabOrder = 0 - Silent = False - OnDownloadComplete = EmbeddedWB1DownloadComplete - OnBeforeNavigate2 = EmbeddedWB1BeforeNavigate2 - OnFileDownload = EmbeddedWB1FileDownload - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.55 from: http://www.bsalsa.com/' - ControlData = { - 4C0000005E330000901A00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 591 - Height = 65 - Align = alTop - TabOrder = 1 - object Button1: TButton - Left = 421 - Top = 9 - Width = 33 - Height = 22 - Caption = 'Go' - TabOrder = 0 - OnClick = Button1Click - end - object IEAddress1: TIEAddress - Left = 0 - Top = 9 - Width = 417 - Height = 22 - AutoNavigateOnLoad = False - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - EmbeddedWB = EmbeddedWB1 - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 1 - TextOnLoad = tlUserDefine - TextOnShow = 'http://bsalsa.com/downloads.html' - end - object rgMethod: TRadioGroup - Left = 464 - Top = 0 - Width = 127 - Height = 59 - Caption = 'FileDownload Method' - Items.Strings = ( - 'Go (Url)' - 'Download (Moniker)') - TabOrder = 2 - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo_U.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo_U.pas deleted file mode 100644 index 1ce24ae9ea..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadMgrDemo_U.pas +++ /dev/null @@ -1,113 +0,0 @@ -//************************************************************************* -// * -// IE Downloag Mgr * -// For Delphi * -// * -// Freeware Demo * -// Developing Team: * -// Eran Bodankin -bsalsa(bsalsa@bsalsa.com) * -// Mathias Walter (mich@matze.tv) * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit DownloadMgrDemo_U; - -interface - -uses - dialogs, ActiveX, IEConst, Classes, Forms, StdCtrls, EmbeddedWB, UrlMon, - IEAddress, ExtCtrls, EwbCore, Controls, OleCtrls, SHDocVw_EWB; - -type - TForm1 = class(TForm) - EmbeddedWB1: TEmbeddedWB; - Panel1: TPanel; - Button1: TButton; - IEAddress1: TIEAddress; - rgMethod: TRadioGroup; - procedure EmbeddedWB1FileDownload(Sender: TCustomEmbeddedWB; pmk: IMoniker; - pbc: IBindCtx; dwBindVerb, grfBINDF: Cardinal; pBindInfo: PBindInfo; - pszHeaders, pszRedir: PWideChar; uiCP: Cardinal; var Rezult: HRESULT); - procedure Button1Click(Sender: TObject); - procedure EmbeddedWB1DownloadComplete(Sender: TObject); - procedure EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); - procedure FormShow(Sender: TObject); - private - dlUrl: WideString; - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -uses - DownloadForm_U; - -procedure TForm1.Button1Click(Sender: TObject); -begin - Embeddedwb1.Go(IEAddress1.Text); -end; - -procedure TForm1.EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - dlUrl := URL; -end; - -procedure TForm1.EmbeddedWB1DownloadComplete(Sender: TObject); -begin - IEAddress1.Text := EmbeddedWB1.LocationURL; -end; - -procedure TForm1.EmbeddedWB1FileDownload(Sender: TCustomEmbeddedWB; - pmk: IMoniker; pbc: IBindCtx; dwBindVerb, grfBINDF: Cardinal; - pBindInfo: PBindInfo; pszHeaders, pszRedir: PWideChar; uiCP: Cardinal; - var Rezult: HRESULT); -begin - Rezult := S_OK; - if pszRedir <> '' then - dlUrl := pszRedir; - case rgMethod.ItemIndex of - 0: DownloadForm.DoGo(dlUrl); - 1: DownloadForm.DoDownload(pmk, pbc); - end; -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - rgMethod.ItemIndex := 0; - EmbeddedWb1.Go(IEAddress1.Text); -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadRequestForm.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadRequestForm.dfm deleted file mode 100644 index 081209b599..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadRequestForm.dfm +++ /dev/null @@ -1,133 +0,0 @@ -object DownloadRequest: TDownloadRequest - Left = 557 - Top = 186 - BorderStyle = bsDialog - Caption = 'File Download' - ClientHeight = 161 - ClientWidth = 378 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object lbQuestion: TLabel - Left = 16 - Top = 16 - Width = 217 - Height = 13 - Caption = 'Do you want to open or save this file?' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object lbName: TLabel - Left = 81 - Top = 40 - Width = 31 - Height = 13 - Alignment = taRightJustify - Caption = 'Name:' - end - object lbType: TLabel - Left = 85 - Top = 56 - Width = 27 - Height = 13 - Alignment = taRightJustify - Caption = 'Type:' - end - object lbFrom: TLabel - Left = 86 - Top = 88 - Width = 26 - Height = 13 - Alignment = taRightJustify - Caption = 'From:' - end - object imgIcon: TImage - Left = 16 - Top = 40 - Width = 32 - Height = 32 - end - object lbNameTxt: TLabel - Left = 120 - Top = 40 - Width = 241 - Height = 13 - AutoSize = False - end - object lbTypeTxt: TLabel - Left = 120 - Top = 56 - Width = 241 - Height = 13 - AutoSize = False - end - object lbFromTxt: TLabel - Left = 120 - Top = 88 - Width = 241 - Height = 13 - AutoSize = False - end - object lbSize: TLabel - Left = 89 - Top = 72 - Width = 23 - Height = 13 - Alignment = taRightJustify - Caption = 'Size:' - end - object lbSizeTxt: TLabel - Left = 120 - Top = 72 - Width = 241 - Height = 13 - AutoSize = False - end - object btnOpen: TButton - Left = 112 - Top = 120 - Width = 75 - Height = 25 - Caption = 'Open' - Enabled = False - TabOrder = 0 - OnClick = btnOpenClick - end - object btnSave: TButton - Left = 200 - Top = 120 - Width = 75 - Height = 25 - Caption = 'Save' - TabOrder = 1 - OnClick = btnSaveClick - end - object btnCancel: TButton - Left = 288 - Top = 120 - Width = 75 - Height = 25 - Cancel = True - Caption = 'Cancel' - Default = True - ModalResult = 2 - TabOrder = 2 - OnClick = btnCancelClick - end - object dlgSave: TSaveDialog - Left = 24 - Top = 104 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadRequestForm.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadRequestForm.pas deleted file mode 100644 index dc4084f761..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_DownloadManager_Demo/Webbrowser/DownloadRequestForm.pas +++ /dev/null @@ -1,98 +0,0 @@ -{$WARN UNIT_PLATFORM OFF} -unit DownloadRequestForm; - -interface - -uses - Windows, SysUtils, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ExtCtrls; - -const - mrOpen = mrYesToAll + 1; - mrSave = mrOpen + 1; - -type - TDownloadRequest = class(TForm) - btnOpen: TButton; - btnSave: TButton; - btnCancel: TButton; - lbQuestion: TLabel; - lbName: TLabel; - lbType: TLabel; - lbFrom: TLabel; - imgIcon: TImage; - lbNameTxt: TLabel; - lbTypeTxt: TLabel; - lbFromTxt: TLabel; - dlgSave: TSaveDialog; - lbSize: TLabel; - lbSizeTxt: TLabel; - procedure btnCancelClick(Sender: TObject); - procedure btnOpenClick(Sender: TObject); - procedure btnSaveClick(Sender: TObject); - procedure FormDestroy(Sender: TObject); - private - { Private-Deklarationen } - FDownloadFolder: string; - FFileName: string; - public - { Public-Deklarationen } - property drDownloadFolder: string read FDownloadFolder; - property drFileName: string read FFileName; - end; - -var - DownloadRequest: TDownloadRequest; - DontOpenThisExts, OpenOnlyThisExts: TStringList; - -function CanOpen(FileExt: string): Boolean; - -implementation - -uses DownloadForm_U; - -{$R *.DFM} - -function CanOpen(FileExt: string): Boolean; -begin - Result := ((DontOpenThisExts.IndexOf(FileExt) < 0) and - ((OpenOnlyThisExts.Count = 0) or (OpenOnlyThisExts.IndexOf(FileExt) >= 0))); -end; - -procedure TDownloadRequest.btnCancelClick(Sender: TObject); -begin - // if FSender.State = sReady then - DownloadForm.Close; - Self.Close; -end; - -procedure TDownloadRequest.btnOpenClick(Sender: TObject); -begin - Self.ModalResult := mrOpen; -end; - -procedure TDownloadRequest.btnSaveClick(Sender: TObject); -begin - dlgSave.FileName := lbNameTxt.Caption; - if (dlgSave.Execute) then - begin - FFileName := ExtractFileName(dlgSave.FileName); - FDownloadFolder := ExtractFilePath(dlgSave.FileName); - Self.ModalResult := mrSave; - end; -end; - -procedure TDownloadRequest.FormDestroy(Sender: TObject); -begin - if (imgIcon.Picture.Icon.Handle <> 0) then - DestroyIcon(imgIcon.Picture.Icon.Handle); -end; - -initialization - DontOpenThisExts := TStringList.Create(); - OpenOnlyThisExts := TStringList.Create(); -finalization - DontOpenThisExts.Free(); - OpenOnlyThisExts.Free(); -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/Downloaddemo_U.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/Downloaddemo_U.dfm deleted file mode 100644 index ad67420959..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/Downloaddemo_U.dfm +++ /dev/null @@ -1,561 +0,0 @@ -object Form1: TForm1 - Left = 88 - Top = 73 - Width = 915 - Height = 639 - Caption = 'IEDownload Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poDesktopCenter - Scaled = False - OnCloseQuery = FormCloseQuery - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 899 - Height = 193 - Align = alTop - Color = clWhite - TabOrder = 0 - object btnStart: TButton - Left = 303 - Top = 7 - Width = 98 - Height = 21 - Caption = 'Download A File' - TabOrder = 0 - OnClick = btnStartClick - end - object btnStop: TButton - Left = 407 - Top = 7 - Width = 131 - Height = 21 - Caption = 'Stop Current ' - Enabled = False - TabOrder = 1 - OnClick = btnStopClick - end - object rgBind: TRadioGroup - Left = 711 - Top = 68 - Width = 182 - Height = 41 - Caption = 'DownloadMethod' - Items.Strings = ( - 'Download To File' - 'Download To Stream') - TabOrder = 2 - OnClick = rgBindClick - end - object rgBindMethod: TRadioGroup - Left = 807 - Top = 3 - Width = 87 - Height = 66 - Caption = 'BindVerbOption' - Items.Strings = ( - 'Get' - 'Post' - 'Put' - 'Custom') - TabOrder = 3 - end - object GroupBox1: TGroupBox - Left = 1 - Top = 113 - Width = 897 - Height = 79 - Align = alBottom - Caption = 'Download Path:' - TabOrder = 4 - DesignSize = ( - 897 - 79) - object lblProgress: TLabel - Left = 3 - Top = 39 - Width = 98 - Height = 13 - Caption = ' Download Progress:' - end - object ProgressBar1: TProgressBar - Left = 3 - Top = 55 - Width = 889 - Height = 17 - Anchors = [akLeft, akTop, akRight] - Min = 0 - Max = 100 - TabOrder = 0 - end - object edtFile: TEdit - Left = 3 - Top = 12 - Width = 814 - Height = 21 - Color = clBtnFace - TabOrder = 1 - end - end - object GroupBox2: TGroupBox - Left = 5 - Top = 7 - Width = 292 - Height = 102 - Caption = 'Enter the addresses of the files to download::' - TabOrder = 5 - object memAddress: TMemo - Left = 2 - Top = 15 - Width = 288 - Height = 85 - Align = alClient - Lines.Strings = ( - 'http://www.microsoft.com/en/us/default.aspx') - ScrollBars = ssBoth - TabOrder = 0 - end - end - object GroupBox3: TGroupBox - Left = 404 - Top = 80 - Width = 134 - Height = 29 - Caption = 'State:' - TabOrder = 6 - object lblState: TLabel - Left = 48 - Top = 11 - Width = 31 - Height = 13 - Caption = 'Ready' - end - end - object GroupBox4: TGroupBox - Left = 544 - Top = 7 - Width = 161 - Height = 102 - Caption = 'Options:' - TabOrder = 7 - object cbOverWrite: TCheckBox - Left = 3 - Top = 15 - Width = 138 - Height = 17 - Caption = 'OverWrite If File Exists' - TabOrder = 0 - end - object cbOpenFolder: TCheckBox - Left = 3 - Top = 38 - Width = 165 - Height = 17 - Caption = 'Open Folder After Download' - TabOrder = 1 - end - object cbAsyn: TCheckBox - Left = 3 - Top = 61 - Width = 150 - Height = 10 - Caption = 'Asynchronous mode' - TabOrder = 2 - end - end - object btnStopAll: TButton - Left = 407 - Top = 34 - Width = 131 - Height = 21 - Caption = 'Stop All' - Enabled = False - TabOrder = 8 - OnClick = btnStopAllClick - end - object btnGoList: TButton - Left = 301 - Top = 34 - Width = 100 - Height = 21 - Caption = 'Download a List' - TabOrder = 9 - OnClick = btnGoListClick - end - object rgFileExists: TRadioGroup - Left = 711 - Top = 7 - Width = 90 - Height = 62 - Caption = 'File Exist Options:' - Items.Strings = ( - 'OverWrite' - 'Rename' - 'Skip') - TabOrder = 10 - end - object btnToCache: TButton - Left = 303 - Top = 61 - Width = 98 - Height = 21 - Caption = 'DownloadToCache' - TabOrder = 11 - OnClick = btnToCacheClick - end - object btnToFile: TButton - Left = 303 - Top = 88 - Width = 98 - Height = 21 - Caption = 'DownloadToFile' - TabOrder = 12 - OnClick = btnToFileClick - end - end - object Panel3: TPanel - Left = 0 - Top = 463 - Width = 899 - Height = 140 - Align = alBottom - Caption = 'Panel3' - TabOrder = 1 - object ListView: TListView - Left = 1 - Top = 1 - Width = 897 - Height = 138 - Align = alClient - Columns = < - item - Caption = 'File Name' - Width = 160 - end - item - Caption = 'Speed' - Width = 75 - end - item - Caption = 'Downloaded' - Width = 75 - end - item - Caption = 'Remaining Time' - Width = 90 - end - item - Caption = 'Elapsed Time' - Width = 90 - end - item - Caption = 'Status' - Width = 100 - end - item - Caption = 'Data Recived' - Width = 160 - end - item - Caption = 'Percents' - Width = 70 - end> - GridLines = True - HideSelection = False - ReadOnly = True - RowSelect = True - TabOrder = 0 - ViewStyle = vsReport - end - end - object Panel4: TPanel - Left = 0 - Top = 193 - Width = 899 - Height = 270 - Align = alClient - Caption = 'Panel4' - TabOrder = 2 - object PageControl1: TPageControl - Left = 1 - Top = 1 - Width = 897 - Height = 268 - ActivePage = TabSheet1 - Align = alClient - TabIndex = 0 - TabOrder = 0 - object TabSheet1: TTabSheet - Caption = 'Web Browser' - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 41 - Width = 889 - Height = 199 - Align = alClient - TabOrder = 0 - OnBeforeNavigate2 = EmbeddedWB1BeforeNavigate2 - OnNavigateComplete2 = EmbeddedWB1NavigateComplete2 - OnFileDownload = EmbeddedWB1FileDownload - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C00000048430000E81B00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel2: TPanel - Left = 0 - Top = 0 - Width = 889 - Height = 41 - Align = alTop - TabOrder = 1 - object btnGo: TButton - Left = 808 - Top = 8 - Width = 75 - Height = 25 - Caption = 'Go' - TabOrder = 0 - OnClick = btnGoClick - end - object IEAddress1: TIEAddress - Left = 2 - Top = 8 - Width = 800 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 1 - TextOnShow = 'http://bsalsa.com/downloads.html' - end - end - end - object TabSheet4: TTabSheet - Caption = 'Preview Data' - ImageIndex = 3 - object memPreviewData: TMemo - Left = 0 - Top = 0 - Width = 889 - Height = 240 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet9: TTabSheet - Caption = 'Preview Stream' - ImageIndex = 8 - object memPreviewStream: TMemo - Left = 0 - Top = 0 - Width = 889 - Height = 240 - Align = alClient - Lines.Strings = ( - '') - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet3: TTabSheet - Caption = 'Events' - ImageIndex = 2 - object Panel5: TPanel - Left = 0 - Top = 0 - Width = 889 - Height = 240 - Align = alClient - Caption = 'Panel5' - TabOrder = 0 - object memEvents: TMemo - Left = 1 - Top = 1 - Width = 887 - Height = 238 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - end - object TabSheet5: TTabSheet - Caption = 'Server Response' - ImageIndex = 4 - object memResponse: TMemo - Left = 0 - Top = 0 - Width = 889 - Height = 240 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet6: TTabSheet - Caption = 'Progress Text' - ImageIndex = 5 - object memProgress: TMemo - Left = 0 - Top = 0 - Width = 889 - Height = 240 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet7: TTabSheet - Caption = 'Additional Headers' - ImageIndex = 6 - object memHeaders: TMemo - Left = 0 - Top = 0 - Width = 889 - Height = 240 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet8: TTabSheet - Caption = 'Errors' - ImageIndex = 7 - object memErrors: TMemo - Left = 0 - Top = 0 - Width = 889 - Height = 240 - Align = alClient - Lines.Strings = ( - '') - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet10: TTabSheet - Caption = 'Details' - ImageIndex = 9 - object memDetails: TMemo - Left = 0 - Top = 0 - Width = 889 - Height = 240 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet11: TTabSheet - Caption = 'Thread info' - ImageIndex = 10 - object lvThread: TListView - Left = 0 - Top = 0 - Width = 889 - Height = 240 - Align = alClient - Columns = < - item - Caption = 'FileName' - Width = 150 - end - item - Caption = 'Thread ID' - Width = 100 - end - item - Caption = 'Thread Handle' - Width = 100 - end - item - Caption = 'Status' - Width = 100 - end - item - Caption = 'ActiveConnecctions' - Width = 150 - end> - TabOrder = 0 - ViewStyle = vsReport - end - end - object TabSheet2: TTabSheet - Caption = 'Help' - ImageIndex = 9 - object memSession: TMemo - Left = 0 - Top = 0 - Width = 889 - Height = 240 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - end - end - object IEDownload1: TIEDownload - About = ' IEDownload http://bsalsa.com/' - AdditionalHeader.Strings = ( - 'Content-Type: application/x-www-form-urlencoded') - DefaultProtocol = 'http://' - DefaultUrlFileName = 'index.html' - OnAuthenticate = IEDownload1Authenticate - OnAuthenticateEx = IEDownload1AuthenticateEx - OnPutProperty = IEDownload1PutProperty - OnBeforeDownload = IEDownload1BeforeDownload - OnBeginningTransaction = IEDownload1BeginningTransaction - OnCodeInstallProblem = IEDownload1CodeInstallProblem - OnDataAvailable = IEDownload1DataAvailable - OnDataAvailableInfo = IEDownload1DataAvailableInfo - OnConnect = IEDownload1Connect - OnComplete = IEDownload1Complete - OnStreamComplete = IEDownload1StreamComplete - OnError = IEDownload1Error - OnGetBindResults = IEDownload1GetBindResults - OnGetBindInfo = IEDownload1GetBindInfo - OnGetBindInfoEx = IEDownload1GetBindInfoEx - OnGetSerializedClientCertContext = IEDownload1GetSerializedClientCertContext - OnGetRootSecurityId = IEDownload1GetRootSecurityId - OnGetWindow = IEDownload1GetWindow - OnProgress = IEDownload1Progress - OnRedirect = IEDownload1Redirect - OnResponse = IEDownload1Response - OnResume = IEDownload1Resume - OnSecurityProblem = IEDownload1SecurityProblem - OnStartBinding = IEDownload1StartBinding - OnStateChange = IEDownload1StateChange - OnStopBinding = IEDownload1StopBinding - TimeOut = 2147483647 - Left = 120 - Top = 72 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/Downloaddemo_U.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/Downloaddemo_U.pas deleted file mode 100644 index 37a154c1e7..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/Downloaddemo_U.pas +++ /dev/null @@ -1,735 +0,0 @@ -//************************************************************************* -// * -// IEDownload Demo 2009 * * -// by * -// Eran Bodankin - bsalsa - (bsalsa@gmail.com) * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit Downloaddemo_U; - -interface - -uses - dialogs, Windows, SysUtils, Classes, Forms, UrlMon, StdCtrls, ActiveX, - Controls, ComCtrls, SHDocVw_EWB, EwbCore, EmbeddedWB, ExtCtrls, OleCtrls, - IEDownload, IEDownloadAcc, IEDownloadTools, IEAddress; - -type - TForm1 = class(TForm) - IEDownload1: TIEDownload; - Panel1: TPanel; - btnStart: TButton; - btnStop: TButton; - Panel3: TPanel; - Panel4: TPanel; - ListView: TListView; - rgBind: TRadioGroup; - rgBindMethod: TRadioGroup; - GroupBox1: TGroupBox; - ProgressBar1: TProgressBar; - lblProgress: TLabel; - GroupBox2: TGroupBox; - edtFile: TEdit; - GroupBox3: TGroupBox; - lblState: TLabel; - GroupBox4: TGroupBox; - cbOverWrite: TCheckBox; - cbOpenFolder: TCheckBox; - PageControl1: TPageControl; - TabSheet1: TTabSheet; - EmbeddedWB1: TEmbeddedWB; - TabSheet4: TTabSheet; - memPreviewData: TMemo; - TabSheet9: TTabSheet; - memPreviewStream: TMemo; - TabSheet3: TTabSheet; - Panel5: TPanel; - memEvents: TMemo; - TabSheet5: TTabSheet; - memResponse: TMemo; - TabSheet6: TTabSheet; - memProgress: TMemo; - TabSheet7: TTabSheet; - memHeaders: TMemo; - TabSheet8: TTabSheet; - memErrors: TMemo; - TabSheet10: TTabSheet; - memDetails: TMemo; - TabSheet2: TTabSheet; - memSession: TMemo; - memAddress: TMemo; - btnStopAll: TButton; - btnGoList: TButton; - rgFileExists: TRadioGroup; - cbAsyn: TCheckBox; - btnToCache: TButton; - btnToFile: TButton; - TabSheet11: TTabSheet; - lvThread: TListView; - Panel2: TPanel; - btnGo: TButton; - IEAddress1: TIEAddress; - procedure rgBindClick(Sender: TObject); - procedure FormCreate(Sender: TObject); - function IEDownload1Response(Sender: TBSCB; dwResponseCode: Cardinal; - szResponseHeaders, szRequestHeaders: PWideChar; - out szAdditionalRequestHeaders: PWideChar): HRESULT; - procedure IEDownload1Resume(Sender: TBSCB; FileName: string; - var Action: Cardinal); - function IEDownload1GetWindow(Sender: TBSCB; const GUIDReason: TGUID; - out hwnd: Cardinal): HRESULT; - procedure IEDownload1DataAvailable(Sender: TBSCB; var Buffer: PByte; - var BufLength: Cardinal); - function IEDownload1BeginningTransaction(Sender: TBSCB; szURL, - szHeaders: PWideChar; dwReserved: Cardinal; - out szAdditionalHeaders: PWideChar): HRESULT; - procedure btnStopClick(Sender: TObject); - procedure btnStartClick(Sender: TObject); - function IEDownload1SecurityProblem(Sender: TBSCB; dwProblem: Cardinal; - Problem: string): HRESULT; - procedure IEDownload1GetBindResults(var Sender: TBSCB; - out clsidProtocol: TGUID; out dwResult: Cardinal; out szResult: PWideChar; - const stResult: string); - procedure IEDownload1StateChange(State: TState); - procedure IEDownload1Error(const ErrorCode: Integer; const stError: string); - function IEDownload1CodeInstallProblem(Sender: TBSCB; - ulStatusCode: Cardinal; szDestination, szSource: PWideChar; - dwReserved: Cardinal; stResult: string): HRESULT; - procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); - function IEDownload1GetRootSecurityId(var SecurityIdBuffer: TByteArray; - var BufferSize: Cardinal): HRESULT; - procedure IEDownload1Redirect(Sender: TBSCB; var AbortRedirect: Boolean; - const FromUrl, DestUrl: string); - procedure IEDownload1DataAvailableInfo(Sender: TBSCB; grfBSCF: Cardinal; - Status: string); - procedure btnStopAllClick(Sender: TObject); - procedure btnGoListClick(Sender: TObject); - procedure IEDownload1FileExists(var Action: TFileExistsOption; - const aFileName: WideString; var NewFileName: WideString); - procedure IEDownload1StopBinding(Sender: TBSCB; HRESULT: HRESULT; - szError: PWideChar); - function IEDownload1GetBindInfo(Sender: TBSCB; out grfBINDF: Cardinal; - var BindInfo: _tagBINDINFO): HRESULT; - procedure btnToCacheClick(Sender: TObject); - procedure btnToFileClick(Sender: TObject); - procedure IEDownload1Connect(Sender: TBSCB; Res: HRESULT; - stMessage: string); - procedure IEDownload1StreamComplete(Sender: TBSCB; Stream: TStream; - Result: HRESULT); - procedure IEDownload1Terminate(const Sender: TBSCB; const ThreadId: Integer; - const aFileName: WideString; var bCancel: Boolean); - function IEDownload1GetBindInfoEx(Sender: TBSCB; out grfBINDF: Cardinal; - pbindinfo: _tagBINDINFO; out grfBINDF2: Cardinal): HRESULT; - function IEDownload1GetSerializedClientCertContext(var Sender: TBSCB; - out ppbCert: Byte; var pcbCert: Cardinal): HRESULT; - function IEDownload1PutProperty(Sender: TBSCB; mkp: _MONIKERPROPERTY; - val: PWideChar): HRESULT; - procedure IEDownload1Progress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded, - ElapsedTime, Speed, RemainingTime, Status, Percent: string); - procedure IEDownload1StartBinding(Sender: TBSCB; var Cancel: Boolean; - pib: IBinding; const FileName: WideString; const FileSize: Integer); - procedure IEDownload1Authenticate(Sender: TBSCB; var tmpHWND: HWND; - var szUserName, szPassWord: WideString; var Rezult: HRESULT); - procedure IEDownload1AuthenticateEx(Sender: TBSCB; var tmpHWND: HWND; - var szUserName, szPassWord: WideString; pauthinfo: _tagAUTHENTICATEINFO; - var Rezult: HRESULT); - procedure IEDownload1Complete(Sender: TCustomIEDownload; aFileNameAndPath, - aFileName, aFolderName, aExtension: WideString; - const ActiveConnections: Integer); - procedure IEDownload1BeforeDownload(Sender: TInfoData; const Url, FileName, - FileExtension, Host, DownloadFolder: string; const FileSize: Integer; - var Cancel: Boolean); - procedure EmbeddedWB1FileDownload(Sender: TCustomEmbeddedWB; pmk: IMoniker; - pbc: IBindCtx; dwBindVerb, grfBINDF: Cardinal; pBindInfo: PBindInfo; - pszHeaders, pszRedir: PWideChar; uiCP: Cardinal; var Rezult: HRESULT); - procedure btnGoClick(Sender: TObject); - procedure EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); - procedure EmbeddedWB1NavigateComplete2(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); - private - { Private declarations } - tmpString: string; - counter: integer; - procedure ClearComponents; - procedure InitialComponents; - procedure UpdateThreadDetails(aSender: TBSCB); - end; - -var - Form1: TForm1; - -implementation - -{$R *.DFM} - -procedure TForm1.btnStopAllClick(Sender: TObject); -begin - IEDownload1.CancelAll; - counter := 0; -end; - -procedure TForm1.btnStopClick(Sender: TObject); -begin - IEDownload1.Cancel; - counter := 0; -end; - -procedure TForm1.btnToCacheClick(Sender: TObject); -begin - ClearComponents; - InitialComponents; - IEdownload1.UrlDownloadToCacheFile(memAddress.Lines[0]); -end; - -procedure TForm1.btnToFileClick(Sender: TObject); -begin - ClearComponents; - InitialComponents; - IEdownload1.UrlDownloadToFile(memAddress.Lines[0]); -end; - -procedure TForm1.btnGoClick(Sender: TObject); -begin - EmbeddedWB1.Go(IEAddress1.Text); -end; - -procedure TForm1.btnGoListClick(Sender: TObject); -var - sl: TStrings; -begin - ClearComponents; - InitialComponents; - sl := TStringList.Create; - try - with sl do - begin - Add('http://www.bsalsa.com/Downloads/2.exe'); - Add('http://www.bsalsa.com/Downloads/2.rar'); - Add('http://www.bsalsa.com/support.html'); - end; - memAddress.Clear; - memAddress.Lines := sl; - IEdownload1.GoList(sl); - finally - sl.Free; - end; -end; - -procedure TForm1.btnStartClick(Sender: TObject); -begin - ClearComponents; - InitialComponents; - IEdownload1.Go(memAddress.Lines[0]); - MemSession.Lines:= IEdownload1.ItemsManager.SessionList; -end; - -procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); -begin - if IEDownload1.ActiveConnections > 0 then - begin - if MessageDlg('Threads active. Do you still want to quit?', - mtWarning, [mbYes, mbNo], 0) = mrNo then - CanClose:= False - else - IEDownload1.CancelAll; - end; -end; - -procedure TForm1.FormCreate(Sender: TObject); -begin - PageControl1.ActivePageIndex := 0; - cbOverWrite.Checked := True; - cbAsyn.Checked := True; - cbOpenFolder.Checked := True; - rgBindMethod.ItemIndex := 0; - rgBind.ItemIndex := 0; - rgFileExists.ItemIndex := 0; -end; - -procedure TForm1.rgBindClick(Sender: TObject); -begin - cbOpenFolder.Enabled := not (rgBind.ItemIndex = 1); -end; - -procedure TForm1.IEDownload1DataAvailable(Sender: TBSCB; var Buffer: PByte; - var BufLength: Cardinal); -{Use the OnData event to get the data for parsing/editing ' - on the fly'. } -begin - inc(counter); - if counter = 1 then {Just so you will not see the event fires several times} - memEvents.Lines.Add('Data Available Event.'); - memPreviewData.Lines.Add(string(PAnsiChar(Buffer))); -end; - -procedure TForm1.IEDownload1DataAvailableInfo(Sender: TBSCB; grfBSCF: Cardinal; - Status: string); -begin - if tmpString <> Status then - {Just so you will not see the event fires several times} - memEvents.Lines.Add('Data Available Info Event:' + Status); - tmpString := status; -end; - -procedure TForm1.IEDownload1Error(const ErrorCode: Integer; - const stError: string); -begin - memEvents.Lines.Add('Error Event.' + stError); - memErrors.Lines.Add('An error accrued: ' + stError); - PageControl1.ActivePageIndex := 7; -end; - -procedure TForm1.IEDownload1FileExists(var Action: TFileExistsOption; - const aFileName: WideString; var NewFileName: WideString); - -begin - memEvents.Lines.Add('File Exists Event: ' + aFileName); - case rgFileExists.ItemIndex of - 0: Action := feOverWrite; - 1: - begin - Action := feRename; - TimeSeparator := '_'; - NewFileName := Inputbox('IE Downloader - File exist warning', - 'Please type a new file name', TimeToStr(now) + '_' + - IEDownload1.FileName); - if NewFileName = '' then - Action := feSkip; - end; - 2: - begin - showmessage('The file exists. Operation aborted.'); - EmbeddedWb1.LoadFromString('The file exists. Operation aborted.'); - Action := feSkip; - end; - end; -end; - -procedure TForm1.IEDownload1Authenticate(Sender: TBSCB; var tmpHWND: HWND; - var szUserName, szPassWord: WideString; var Rezult: HRESULT); -begin - memEvents.Lines.Add('Authenticate Event.' + #13#10 + - ResponseCodeToStr(Rezult)); - if (szUserName <> '') or (szPassWord <> '') then - begin - memEvents.Lines.Add('UserName : ' + szUserName); - memEvents.Lines.Add('Password : ' + szPassWord) - end; -end; - -procedure TForm1.IEDownload1AuthenticateEx(Sender: TBSCB; var tmpHWND: HWND; - var szUserName, szPassWord: WideString; pauthinfo: _tagAUTHENTICATEINFO; - var Rezult: HRESULT); -begin - memEvents.Lines.Add('AuthenticateEx Event.' + #13#10 + - ResponseCodeToStr(Rezult)); - if (szUserName <> '') or (szPassWord <> '') then - begin - memEvents.Lines.Add('UserName : ' + szUserName); - memEvents.Lines.Add('Password : ' + szPassWord) - end; -end; - -procedure TForm1.IEDownload1BeforeDownload(Sender: TInfoData; const Url, - FileName, FileExtension, Host, DownloadFolder: string; - const FileSize: Integer; var Cancel: Boolean); -begin - memEvents.Lines.Add('Before Download Event. ' + FileName); -end; - -function TForm1.IEDownload1BeginningTransaction(Sender: TBSCB; szURL, - szHeaders: PWideChar; dwReserved: Cardinal; - out szAdditionalHeaders: PWideChar): HRESULT; -{Use OnBeginningTransaction to add additionally headers to the - transaction.} -begin - UpdateThreadDetails(Sender); - memHeaders.Lines.Add('AdditionalHeaders:' + #13#10 + szAdditionalHeaders); - memEvents.Lines.Add('Beginning Transaction Event.'); - Result := S_OK; -end; - -function TForm1.IEDownload1CodeInstallProblem(Sender: TBSCB; - ulStatusCode: Cardinal; szDestination, szSource: PWideChar; - dwReserved: Cardinal; stResult: string): HRESULT; -begin {The event will fire only under this terms: - http://msdn.microsoft.com/en-us/library/ms775136(VS.85).aspx} - memEvents.Lines.Add('Code Install Problem Event.'); - memErrors.Lines.Add('An error accrued: ' + stResult); - Result := S_OK; -end; - -procedure TForm1.IEDownload1Complete(Sender: TCustomIEDownload; - aFileNameAndPath, aFileName, aFolderName, aExtension: WideString; - const ActiveConnections: Integer); - var - lvTItem: TListItem; - idx: integer; -begin - memEvents.Lines.Add('Complete Event:' + aFileName); - with memDetails.Lines do - begin - Add(#13#10 + 'Downloading from: ' + IEDownload1.ServerAddress); - Add(#13#10 + 'Server IP: ' + IEDownload1.ServerIP); - Add(#13#10 + 'File mime type: ' + IEDownload1.MimeType); - Add(#13#10 + 'Display Name: ' + IEDownload1.DisplayName); - case IEDownload1.DownloadMethod of - dmStream:Add(#13#10 + 'Download method: Stream'); - dmFile: - begin - Add(#13#10 + 'Download method: File'); - Add(#13#10 + 'Download folder: ' + aFolderName); - Add(#13#10 + 'Downloaded File name: ' + aFileName); - Add(#13#10 + 'Downloaded File Extension: ' + aExtension); - Add(#13#10 + 'File size: ' + (FormatSize(IEDownload1.FileSize))); - if not FileExists(aFileNameAndPath) then - memErrors.Lines.Add('Can not Locate The File.') - else - begin - if IEDownload1.MimeType = 'text/html' then - EmbeddedWB1.Go(aFileNameAndPath) - else - EmbeddedWB1.LoadFromString('Done.'); - end; - end; - end; - Add(#13#10 + 'Total Downloads: ' + IntToStr(IEDownload1.DownloadsCounter)); - edtFile.Text := IEDownload1.DownloadFolder + IEDownload1.FileName; - end; - for idx := 0 to lvThread.Items.Count - 1 do - if (lvThread.Items[idx].Caption = IEDownload1.FileName) then - begin - lvTItem := lvThread.Items[idx]; - if (Assigned(lvTItem)) then - lvTItem.SubItems[3] := IntToStr(IEDownload1.ActiveConnections); - end; -end; - -procedure TForm1.IEDownload1Connect(Sender: TBSCB; Res: HRESULT; - stMessage: string); -begin - memEvents.Lines.Add('Connect Event:' + stMessage); -end; - -function TForm1.IEDownload1SecurityProblem(Sender: TBSCB; dwProblem: Cardinal; - Problem: string): HRESULT; -begin - memEvents.Lines.Add('SecurityProblem Event.'); - Result := S_OK; -end; - -procedure TForm1.IEDownload1StartBinding(Sender: TBSCB; var Cancel: Boolean; - pib: IBinding; const FileName: WideString; const FileSize: Integer); -begin - memEvents.Lines.Add('Start Binding Event.' + FileName); -end; - -procedure TForm1.IEDownload1StateChange(State: TState); -begin - btnStart.Enabled := not IEDownload1.Busy; - btnGoList.Enabled := not IEDownload1.Busy; - btnToCache.Enabled := not IEDownload1.Busy; - btnToFile.Enabled := not IEDownload1.Busy; - btnStop.Enabled := IEDownload1.Busy; - btnStopAll.Enabled := IEDownload1.Busy; - case State of - sBusy: - begin - memEvents.Lines.Add('StateChange: Busy'); - lblState.Caption := 'Busy'; - end; - sReady: - begin - memEvents.Lines.Add('StateChange: Ready'); - lblState.Caption := 'Ready'; - end; - sStopped: - begin - memEvents.Lines.Add('StateChange: Stopped'); - lblState.Caption := 'Stopped'; - end; - end; -end; - -procedure TForm1.IEDownload1StopBinding(Sender: TBSCB; HRESULT: HRESULT; - szError: PWideChar); -begin - memEvents.Lines.Add('StopBinding Event. ' + ResponseCodeToStr(HRESULT)); - if HRESULT <> S_OK then - memErrors.Lines.Add('On Stop Binding Error: ' + szError); -end; - -procedure TForm1.IEDownload1StreamComplete(Sender: TBSCB; Stream: TStream; - Result: HRESULT); -var - MS: TMemoryStream; -begin - memEvents.Lines.Add('DownloadComplete Event.'); - counter := 0; - MS := TMemoryStream.Create; - with ms do - begin - Seek(0, 0); - LoadFromStream(Stream); - end; - memPreviewStream.Lines.LoadFromStream(MS); - MS.Free; - if IEDownload1.DownloadMethod = dmStream then - EmbeddedWB1.LoadFromStream(Stream); -end; - -procedure TForm1.IEDownload1Terminate(const Sender: TBSCB; - const ThreadId: Integer; const aFileName: WideString; var bCancel: Boolean); -begin - UpdateThreadDetails(Sender); - memEvents.Lines.Add('Termination Event.'); - // if IEDownload1.ProcessCounter > 0 then - begin - // if MessageDlg('Threads active. Do you still want to quit?', - // mtWarning, [mbYes, mbNo], 0) = mrNo then - // CanClose := false; - end; -end; - -function TForm1.IEDownload1GetBindInfo(Sender: TBSCB; out grfBINDF: Cardinal; - var BindInfo: _tagBINDINFO): HRESULT; -begin - memEvents.Lines.Add('GetBindInfo Event.'); - Result := S_OK; -end; - -function TForm1.IEDownload1GetBindInfoEx(Sender: TBSCB; out grfBINDF: Cardinal; - pbindinfo: _tagBINDINFO; out grfBINDF2: Cardinal): HRESULT; -begin - memEvents.Lines.Add('GetBindInfoEx Event.'); - Result := S_OK; -end; - -procedure TForm1.IEDownload1GetBindResults(var Sender: TBSCB; - out clsidProtocol: TGUID; out dwResult: Cardinal; out szResult: PWideChar; - const stResult: string); -begin - memEvents.Lines.Add('GetBindResults Event. ' + stResult); - if dwResult <> S_OK then - memErrors.Lines.Add(szResult + ' GetBindResults.' + stResult); -end; - -function TForm1.IEDownload1GetRootSecurityId(var SecurityIdBuffer: TByteArray; - var BufferSize: Cardinal): HRESULT; -begin - Result := S_OK; - memEvents.Lines.Add('Get Root Security Id Event.'); -end; - -function TForm1.IEDownload1GetSerializedClientCertContext(var Sender: TBSCB; - out ppbCert: Byte; var pcbCert: Cardinal): HRESULT; -begin - memEvents.Lines.Add('GetSerializedClientCertContext Event.'); - Result := S_OK; -end; - -function TForm1.IEDownload1GetWindow(Sender: TBSCB; const GUIDReason: TGUID; - out hwnd: Cardinal): HRESULT; -begin - memEvents.Lines.Add('GetWindow Event.'); - Result := S_OK; -end; - -procedure TForm1.IEDownload1Progress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded, - ElapsedTime, Speed, RemainingTime, Status, Percent: string); -var - ListItem: TListItem; -begin - memProgress.Lines.Add(szStatusText); - memProgress.Lines.Add(Status); - lblProgress.Caption := Format('Downloaded %d of %d bytes', [ulProgress, - ulProgressMax]) + ' | in KB: ' + FormatSize(IEDownload1.FileSize); - ProgressBar1.Max := ulProgressMax; - ProgressBar1.Position := ulProgress; - if (ulStatusCode = BINDSTATUS_BEGINDOWNLOADDATA) then - memEvents.Lines.Add('Progress Event.'); - if (ulStatusCode = BINDSTATUS_DOWNLOADINGDATA) or (ulStatusCode = - BINDSTATUS_ENDDOWNLOADDATA) then - begin - with ListView do - begin - Items.BeginUpdate; - try - ListItem := ListView.Items.Add; - ListItem.Caption := IEDownload1.FileName; - with ListItem.SubItems do - begin - Add(Speed); - Add(Downloaded); - Add(RemainingTime); - Add(ElapsedTime); - Add(Status); - Add(' (' + IntToStr(ulProgress) + ' of: ' + IntToStr(ulProgressMax) + - ')'); - Add(Percent); - end; - finally - Items.EndUpdate; - end; - end; - end; -end; - -function TForm1.IEDownload1PutProperty(Sender: TBSCB; mkp: _MONIKERPROPERTY; - val: PWideChar): HRESULT; -begin - memEvents.Lines.Add('Put Property Event'); - Result:= S_OK; -end; - -procedure TForm1.IEDownload1Redirect(Sender: TBSCB; var AbortRedirect: Boolean; - const FromUrl, DestUrl: string); -begin - AbortRedirect := False; - memEvents.Lines.Add('Redirect Event from address:' + FromUrl + #13#10 + - 'To address: ' + DestUrl); -end; - -function TForm1.IEDownload1Response(Sender: TBSCB; dwResponseCode: Cardinal; - szResponseHeaders, szRequestHeaders: PWideChar; - out szAdditionalRequestHeaders: PWideChar): HRESULT; -{Use OnResponse to get response headers and eventually add additional request headers.} -begin - memEvents.Lines.Add('Response Event.'); - with memResponse.Lines do - begin - Add('dwResponseCode:'); - Add(ResponseCodeToStr(dwResponseCode)); - Add('Response szResponseHeaders:'); - Add(szResponseHeaders); - end; - Result := S_OK; -end; - -procedure TForm1.IEDownload1Resume(Sender: TBSCB; FileName: string; - var Action: Cardinal); -begin - //Useless, the event is not supprted by Microsoft yet. - memEvents.Lines.Add('Response Event.'); -end; - -{Some procedures-----------------------------------------------------------------} - -procedure TForm1.ClearComponents; -begin - lvThread.Clear; - memHeaders.Lines.Clear; - memEvents.Lines.Clear; - memPreviewData.Lines.Clear; - memPreviewStream.Lines.Clear; - memResponse.Lines.Clear; - memProgress.Lines.Clear; - MemErrors.Lines.Clear; - ListView.Items.Clear; - MemDetails.Lines.Clear; - edtFile.Text := ''; -end; - -procedure TForm1.EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - IEAddress1.Text:= URL; -end; - -procedure TForm1.EmbeddedWB1FileDownload(Sender: TCustomEmbeddedWB; - pmk: IMoniker; pbc: IBindCtx; dwBindVerb, grfBINDF: Cardinal; - pBindInfo: PBindInfo; pszHeaders, pszRedir: PWideChar; uiCP: Cardinal; - var Rezult: HRESULT); -begin - Rezult:= S_OK; - IEDownload1.Download(pmk, pbc); -end; - -procedure TForm1.EmbeddedWB1NavigateComplete2(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); -begin - IEAddress1.Text:= EmbeddedWB1.LocationURL; -end; - -procedure TForm1.InitialComponents; -begin - EmbeddedWB1.AddHtmlToAboutBlank('Working. Please wait..'); - //PageControl1.ActivePageIndex := 0; - ProgressBar1.Position := 0; - counter := 0; - with IEDownload1 do - begin - case rgBind.ItemIndex of - 0: BindVerb := Get; - 1: BindVerb := Post; - 2: BindVerb := Put; - 3: BindVerb := Custom; - end; - case rgBind.ItemIndex of - 0: DownloadMethod := dmFile; - 1: DownloadMethod := dmStream; - end; - if (cbOpenFolder.Checked) and (DownloadMethod = dmFile) then - OpenDownloadFolder := True - else - OpenDownloadFolder := False; - - if cbAsyn.Checked then - BindF := BindF + [Asynchronous] - else - BindF := BindF - [Asynchronous]; - end; -end; - -procedure TForm1.UpdateThreadDetails(aSender: TBSCB); - var - lvTItem: TListItem; -begin - if (aSender <> nil) then - begin - lvTItem := lvThread.Items.Add; - with lvTItem do - begin - Caption := IEDownload1.FileName; - SubItems.Add(IntToStr(aSender.ThreadID)); - SubItems.Add(IntToStr(aSender.Handle)); - case aSender.ThreadStatus of - tsRunning: SubItems.Add('Running'); - tsSuspended: SubItems.Add('Suspended'); - tsWaiting: SubItems.Add('Waiting'); - tsTerminated: SubItems.Add('Terminated'); - end; - SubItems.Add(IntToStr(IEDownload1.ActiveConnections)); - end; - end; -end; -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/prjDownloadDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/prjDownloadDemo.dpr deleted file mode 100644 index b7eaf82ed5..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Mega_Demo/prjDownloadDemo.dpr +++ /dev/null @@ -1,47 +0,0 @@ -//************************************************************************* -// * -// IEDownload Demo * * -// by * -// Per Linds Larsen * -// * -// Contributions: * -// Eran Bodankin -bsalsa(bsalsa@bsalsa.com) * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -program prjDownloadDemo; - -uses - Forms, - Downloaddemo_U in 'Downloaddemo_U.pas' {Form1}; - -{$R *.RES} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadForm_U.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadForm_U.dfm deleted file mode 100644 index 8e966e110e..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadForm_U.dfm +++ /dev/null @@ -1,72 +0,0 @@ -object DownloadForm: TDownloadForm - Left = 322 - Top = 111 - BorderIcons = [biSystemMenu, biMinimize, biMaximize, biHelp] - BorderStyle = bsDialog - Caption = 'Downloads' - ClientHeight = 217 - ClientWidth = 776 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - OnClose = FormClose - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object ListView: TListView - Left = 0 - Top = 0 - Width = 776 - Height = 217 - Align = alClient - Columns = < - item - Caption = 'File' - Width = 120 - end - item - Caption = 'Status' - Width = 120 - end - item - Alignment = taRightJustify - Caption = 'Size' - Width = 55 - end - item - Alignment = taRightJustify - Caption = 'Progress' - Width = 55 - end - item - Alignment = taRightJustify - Caption = 'Speed' - Width = 60 - end - item - Caption = 'Remaining' - Width = 70 - end - item - Caption = 'Thread ID' - Width = 60 - end - item - Caption = 'ActiveConnections' - Width = 90 - end - item - Caption = 'Progress bar' - Width = 150 - end> - ReadOnly = True - RowSelect = True - TabOrder = 0 - ViewStyle = vsReport - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadForm_U.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadForm_U.pas deleted file mode 100644 index fda61b69e7..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadForm_U.pas +++ /dev/null @@ -1,256 +0,0 @@ -//************************************************************************* -// * -// IE Downloag Mgr * -// For Delphi * -// * -// Freeware Demo * -// By: * -// Eran Bodankin -bsalsa(bsalsa@gmail.com) * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit DownloadForm_U; - -interface - -uses - Windows, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls, - IEDownload, ComCtrls, UrlMon, ActiveX, DownloadRequestForm, - ShellApi, Menus, ExtCtrls, IEDownloadTools, Graphics; - -const - SEE_MASK_NOZONECHECKS = $00800000; - -type - TDownloadForm = class(TForm) - - ListView: TListView; - procedure FormDestroy(Sender: TObject); - procedure FormClose(Sender: TObject; var Action: TCloseAction); - procedure IEDownloadStartBinding(Sender: TBSCB; var Cancel: Boolean; pib: - IBinding; const FileName: WideString; const FileSize: integer); - procedure IEDownloadProgress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded, ElapsedTime, - Speed, RemainingTime, Status, Percent: string); - private - protected - public - { Public declarations } - procedure FileDownload(inUrl: string; pmk: IMoniker; pbc: IBindCtx); - - end; - -var - IED: TIEDownload; - DownloadForm: TDownloadForm; - -implementation - -{$R *.dfm} - - -procedure TDownloadForm.FormDestroy(Sender: TObject); -begin - DownloadForm := nil; -end; - -procedure TDownloadForm.FileDownload(inUrl: string; pmk: IMoniker; pbc: - IBindCtx); -begin - if (not Visible) then - Show - else - BringToFront; - IED := TIEDownload.Create(Self); - try - with IED do - begin - OnProgress:= IEDownloadProgress; - OnStartBinding:= IEDownloadStartBinding; - Go(inUrl); - end; - finally - if IED <> nil then - FreeAndNil(IED); - end; -end; - - -function FindStringInLV(listItems: TListItems; inString: string): Integer; -var - idx: Integer; -begin - Result := -1; - for idx := 0 to listItems.Count - 1 do - if (listItems[idx].Caption = inString) then - begin - Result := idx; - Break; - end; -end; - -function FindThreadIDInLV(listItem: TListItems; SubIdx, ID: integer): Integer; -var - idx: Integer; -begin - Result := -1; - for idx := 0 to listItem.Count - 1 do - if (listItem[idx].SubItems[SubIdx] = IntToStr(ID)) then - begin - Result := idx; - Break; - end; -end; - -procedure TDownloadForm.IEDownloadProgress(Sender: TBSCB; ulProgress, - ulProgressMax, ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded, - ElapsedTime, Speed, RemainingTime, Status, Percent: string); -var - lvItem: TListItem; - idx: integer; - pb: TProgressBar; -begin - if ListView.Items.Count = 0 then - Exit; - begin {New downlaod} - idx := FindThreadIDInLV(Listview.Items, 5, Sender.ThreadID); - lvItem := ListView.Items[idx]; - if (Assigned(lvItem)) then - begin - lvItem.SubItems[0] := Status; - if ((ulStatusCode = BINDSTATUS_ENDDOWNLOADDATA) or - (ulStatusCode = BINDSTATUS_DOWNLOADINGDATA)) then - begin - with lvItem do - begin - SubItems[1] := FormatSize(FileSize); - SubItems[2] := Percent; - SubItems[3] := Speed; - SubItems[4] := RemainingTime; - // SubItems[6] := IntToStr(IED.ActiveConnections); - end; - pb := TProgressBar(Listview.Items[idx].Data); - pb.Max := ulProgressMax; - pb.Position := ulProgress; - end; - end; - end; -end; - -procedure TDownloadForm.IEDownloadStartBinding(Sender: TBSCB; var Cancel: Boolean; pib: - IBinding; const FileName: WideString; const FileSize: integer); -var - DownloadRequest: TDownloadRequest; - ModRes: TModalResult; - lvItem: TListItem; - idx: Integer; - pbRect: TRect; - pb: TProgressBar; -begin - idx := FindStringInLV(Listview.Items, IED.FileName); - if (idx > -1) then - begin - lvItem := Listview.Items[idx]; - with lvItem do - begin - SubItems[0] := 'Resuming...'; - SubItems.Add(''); // Size - SubItems.Add(''); // Progress - SubItems.Add(''); // Speed - SubItems.Add('UnKnown'); // Remaining Time - SubItems.Add(IntToStr(Sender.ThreadID)); - //SubItems.Add(IntToStr(IED.ActiveConnections)); - SubItems.Add(''); //ProgressBar - end; - pb := TProgressBar.Create(nil); - pb.Parent := Listview; - lvItem.Data := pb; - pbRect := lvItem.DisplayRect(drBounds); - pbRect.Left := 540 + pbRect.Left + ListView.Columns[7].Width; - pbRect.Right := pbRect.Left+ Listview.Columns[7].Width+50; - pb.BoundsRect := pbRect; - end - else - begin - DownloadRequest := TDownloadRequest.Create(nil); - try - DontOpenThisExts.Add('msi'); - DownloadRequest.SetInfo(IED); - modres := DownloadRequest.ShowModal; - case ModRes of - mrCancel: - begin - Cancel := True; - DownloadRequest.Close; - end; - mrOpen: - begin - IED.OpenDownloadFolder := True; - end; - mrSave: - end; - idx := FindThreadIDInLV(Listview.Items, 5, Sender.ThreadID); - if (idx > -1) then - lvItem := ListView.Items[idx] - else - lvItem := Listview.Items.Add; - with lvItem do - begin - Caption := IED.FileName; - SubItems.Add('Waiting'); // Status - SubItems.Add(''); // Size - SubItems.Add(''); // Progress - SubItems.Add(''); // Speed - SubItems.Add('UnKnown'); // Remaining Time - SubItems.Add(IntToStr(Sender.ThreadID)); - // SubItems.Add(IntToStr(IED.ActiveConnections)); - SubItems.Add(''); //ProgressBar - end; - pb := TProgressBar.Create(nil); - pb.Parent := Listview; - lvItem.Data := pb; - pbRect := lvItem.DisplayRect(drBounds); - pbRect.Left := 540 + pbRect.Left + ListView.Columns[7].Width; - pbRect.Right := pbRect.Left+ Listview.Columns[7].Width+50; - pb.BoundsRect := pbRect; - finally - DownloadRequest.Free; - end; - end; -end; - -procedure TDownloadForm.FormClose(Sender: TObject; - var Action: TCloseAction); -begin - if IED<> nil then - begin - if IED.Busy then - IED.CancelAll; - end; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadMgrDemo_U.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadMgrDemo_U.dfm deleted file mode 100644 index 6bb50a50c9..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadMgrDemo_U.dfm +++ /dev/null @@ -1,81 +0,0 @@ -object Form1: TForm1 - Left = 269 - Top = 107 - Width = 607 - Height = 428 - Caption = 'IE Downloag Mgr ' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 41 - Width = 591 - Height = 351 - TabStop = False - Align = alClient - TabOrder = 0 - OnDownloadComplete = EmbeddedWB1DownloadComplete - OnBeforeNavigate2 = EmbeddedWB1BeforeNavigate2 - OnFileDownload = EmbeddedWB1FileDownload - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.55 from: http://www.bsalsa.com/' - ControlData = { - 4C0000005E330000901A00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 591 - Height = 41 - Align = alTop - TabOrder = 1 - object Button1: TButton - Left = 514 - Top = 10 - Width = 58 - Height = 21 - Caption = 'Go' - TabOrder = 0 - OnClick = Button1Click - end - object IEAddress1: TIEAddress - Left = 0 - Top = 9 - Width = 505 - Height = 22 - AutoNavigateOnLoad = False - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - EmbeddedWB = EmbeddedWB1 - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 1 - TextOnLoad = tlUserDefine - TextOnShow = 'http://bsalsa.com/downloads.html' - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadMgrDemo_U.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadMgrDemo_U.pas deleted file mode 100644 index b58ea80a08..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadMgrDemo_U.pas +++ /dev/null @@ -1,107 +0,0 @@ -//************************************************************************* -// * -// IE Downloag Mgr * -// For Delphi * -// * -// Freeware Demo * -// by: * -// Eran Bodankin -bsalsa(bsalsa@gmail.com) * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit DownloadMgrDemo_U; - -interface - -uses - dialogs, ActiveX, IEConst, Windows, Classes, Forms, StdCtrls, EmbeddedWB, UrlMon, - IEAddress, ExtCtrls, EwbCore, Controls, OleCtrls, SHDocVw_EWB; - -type - TForm1 = class(TForm) - EmbeddedWB1: TEmbeddedWB; - Panel1: TPanel; - Button1: TButton; - IEAddress1: TIEAddress; - procedure EmbeddedWB1FileDownload(Sender: TCustomEmbeddedWB; pmk: IMoniker; - pbc: IBindCtx; dwBindVerb, grfBINDF: Cardinal; pBindInfo: PBindInfo; - pszHeaders, pszRedir: PWideChar; uiCP: Cardinal; var Rezult: HRESULT); - procedure Button1Click(Sender: TObject); - procedure EmbeddedWB1DownloadComplete(Sender: TObject); - procedure EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); - procedure FormShow(Sender: TObject); - private - dlUrl: WideString; - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -uses - DownloadForm_U; - -procedure TForm1.Button1Click(Sender: TObject); -begin - Embeddedwb1.Go(IEAddress1.Text); -end; - -procedure TForm1.EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - dlUrl := URL; -end; - -procedure TForm1.EmbeddedWB1DownloadComplete(Sender: TObject); -begin - IEAddress1.Text := EmbeddedWB1.LocationURL; -end; - -procedure TForm1.EmbeddedWB1FileDownload(Sender: TCustomEmbeddedWB; - pmk: IMoniker; pbc: IBindCtx; dwBindVerb, grfBINDF: Cardinal; - pBindInfo: PBindInfo; pszHeaders, pszRedir: PWideChar; uiCP: Cardinal; - var Rezult: HRESULT); -begin - Rezult := S_OK; - if pszRedir <> '' then - dlUrl := pszRedir; - DownloadForm.FileDownload(dlUrl, pmk, pbc); -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - EmbeddedWb1.Go(IEAddress1.Text); -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadRequestForm.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadRequestForm.dfm deleted file mode 100644 index 081209b599..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadRequestForm.dfm +++ /dev/null @@ -1,133 +0,0 @@ -object DownloadRequest: TDownloadRequest - Left = 557 - Top = 186 - BorderStyle = bsDialog - Caption = 'File Download' - ClientHeight = 161 - ClientWidth = 378 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object lbQuestion: TLabel - Left = 16 - Top = 16 - Width = 217 - Height = 13 - Caption = 'Do you want to open or save this file?' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object lbName: TLabel - Left = 81 - Top = 40 - Width = 31 - Height = 13 - Alignment = taRightJustify - Caption = 'Name:' - end - object lbType: TLabel - Left = 85 - Top = 56 - Width = 27 - Height = 13 - Alignment = taRightJustify - Caption = 'Type:' - end - object lbFrom: TLabel - Left = 86 - Top = 88 - Width = 26 - Height = 13 - Alignment = taRightJustify - Caption = 'From:' - end - object imgIcon: TImage - Left = 16 - Top = 40 - Width = 32 - Height = 32 - end - object lbNameTxt: TLabel - Left = 120 - Top = 40 - Width = 241 - Height = 13 - AutoSize = False - end - object lbTypeTxt: TLabel - Left = 120 - Top = 56 - Width = 241 - Height = 13 - AutoSize = False - end - object lbFromTxt: TLabel - Left = 120 - Top = 88 - Width = 241 - Height = 13 - AutoSize = False - end - object lbSize: TLabel - Left = 89 - Top = 72 - Width = 23 - Height = 13 - Alignment = taRightJustify - Caption = 'Size:' - end - object lbSizeTxt: TLabel - Left = 120 - Top = 72 - Width = 241 - Height = 13 - AutoSize = False - end - object btnOpen: TButton - Left = 112 - Top = 120 - Width = 75 - Height = 25 - Caption = 'Open' - Enabled = False - TabOrder = 0 - OnClick = btnOpenClick - end - object btnSave: TButton - Left = 200 - Top = 120 - Width = 75 - Height = 25 - Caption = 'Save' - TabOrder = 1 - OnClick = btnSaveClick - end - object btnCancel: TButton - Left = 288 - Top = 120 - Width = 75 - Height = 25 - Cancel = True - Caption = 'Cancel' - Default = True - ModalResult = 2 - TabOrder = 2 - OnClick = btnCancelClick - end - object dlgSave: TSaveDialog - Left = 24 - Top = 104 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadRequestForm.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadRequestForm.pas deleted file mode 100644 index 9699ca5e00..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/DownloadRequestForm.pas +++ /dev/null @@ -1,138 +0,0 @@ -unit DownloadRequestForm; - -interface - -{$IFDEF DELPHI6_UP} -{$WARN UNIT_PLATFORM OFF} -{$ENDIF} - -uses - Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - StdCtrls, ExtCtrls, IEDownload, ShellApi; - -const - mrOpen = mrYesToAll + 1; - mrSave = mrOpen + 1; - -type - TDownloadRequest = class(TForm) - btnOpen: TButton; - btnSave: TButton; - btnCancel: TButton; - lbQuestion: TLabel; - lbName: TLabel; - lbType: TLabel; - lbFrom: TLabel; - imgIcon: TImage; - lbNameTxt: TLabel; - lbTypeTxt: TLabel; - lbFromTxt: TLabel; - dlgSave: TSaveDialog; - lbSize: TLabel; - lbSizeTxt: TLabel; - procedure btnCancelClick(Sender: TObject); - procedure btnOpenClick(Sender: TObject); - procedure btnSaveClick(Sender: TObject); - procedure FormDestroy(Sender: TObject); - private - { Private-Deklarationen } - FDestPath: string; - FSender: TIEDownload; - public - { Public-Deklarationen } - procedure SetInfo(Sender: TIEDownload); - property DestinationPath: string read FDestPath; - end; - -var - DownloadRequest: TDownloadRequest; - DontOpenThisExts, OpenOnlyThisExts: TStringList; - -function CanOpen(FileExt: string): Boolean; -function StrFormatByteSize(dw: DWORD; szBuf: PChar; uiBufSize: UINT): - PChar; stdcall; external 'shlwapi.dll' name 'StrFormatByteSizeA'; -function StrFormatKBSize(qdw: LONGLONG; szBuf: PChar; uiBufSize: UINT): - PChar; stdcall; external 'shlwapi.dll' name 'StrFormatKBSizeA'; - -implementation - -uses DownloadForm_U; - -{$R *.DFM} - -function CanOpen(FileExt: string): Boolean; -begin - Result := ((DontOpenThisExts.IndexOf(FileExt) < 0) and - ((OpenOnlyThisExts.Count = 0) or (OpenOnlyThisExts.IndexOf(FileExt) >= 0))); -end; - -procedure TDownloadRequest.SetInfo(Sender: TIEDownload); -var - sfi: TSHFileInfo; - arrSize: array[0..255] of Char; -begin - FSender := Sender; - lbFromTxt.Caption := Sender.Url; - lbNameTxt.Caption := Sender.FileName; - btnOpen.Enabled := CanOpen(Sender.FileExtension); - if (Sender.FileSize > 0) then - begin - StrFormatByteSize(Sender.FileSize, arrSize, Length(arrSize) - 1); - lbSizeTxt.Caption := Trim(arrSize); - end - else - lbSizeTxt.Caption := 'unknown'; - - // get file information - ZeroMemory(@sfi, SizeOf(sfi)); - if (SHGetFileInfo( - PChar(Sender.FileName), - FILE_ATTRIBUTE_NORMAL, - sfi, - SizeOf(sfi), - SHGFI_ICON or SHGFI_TYPENAME or SHGFI_USEFILEATTRIBUTES) <> 0) then - begin - if (sfi.hIcon <> 0) then - imgIcon.Picture.Icon.Handle := sfi.hIcon; - if (sfi.szTypeName[0] <> #0) then - lbTypeTxt.Caption := sfi.szTypeName; - end; -end; - -procedure TDownloadRequest.btnCancelClick(Sender: TObject); -begin - if FSender.State = sReady then - DownloadForm.Close; - Self.Close; -end; - -procedure TDownloadRequest.btnOpenClick(Sender: TObject); -begin - Self.ModalResult := mrOpen; -end; - -procedure TDownloadRequest.btnSaveClick(Sender: TObject); -begin - dlgSave.FileName := FSender.FileName; - if (dlgSave.Execute) then - begin - FSender.FileName := ExtractFileName(dlgSave.FileName); - FSender.DownloadFolder := ExtractFilePath(dlgSave.FileName); - Self.ModalResult := mrSave; - end; -end; - -procedure TDownloadRequest.FormDestroy(Sender: TObject); -begin - if (imgIcon.Picture.Icon.Handle <> 0) then - DestroyIcon(imgIcon.Picture.Icon.Handle); -end; - -initialization - DontOpenThisExts := TStringList.Create(); - OpenOnlyThisExts := TStringList.Create(); -finalization - DontOpenThisExts.Free(); - OpenOnlyThisExts.Free(); -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/prjDownloadMgrDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/prjDownloadMgrDemo.dpr deleted file mode 100644 index 512025f514..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Multiple Files_Simultaneous_Downloading/prjDownloadMgrDemo.dpr +++ /dev/null @@ -1,51 +0,0 @@ -//************************************************************************* -// * -// IE Downloag Mgr * -// For Delphi * -// * -// Freeware Demo * -// Developing Team: * -// Eran Bodankin -bsalsa(bsalsa@bsalsa.com) * -// Mathias Walter (mich@matze.tv) * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjDownloadMgrDemo; - -uses - Forms, - DownloadMgrDemo_U in 'DownloadMgrDemo_U.pas' {Form1}, - DownloadForm_U in 'DownloadForm_U.pas' {DownloadForm}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.CreateForm(TDownloadForm, DownloadForm); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/prjIEDownloadSimple.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/prjIEDownloadSimple.dpr deleted file mode 100644 index 5f964b7d5c..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/prjIEDownloadSimple.dpr +++ /dev/null @@ -1,49 +0,0 @@ -//************************************************************************* -// * -// IE Downloag Mgr * -// For Delphi * -// * -// Freeware Demo * -// Developing Team: * -// Eran Bodankin -bsalsa(bsalsa@bsalsa.com) * -// Mathias Walter (mich@matze.tv) * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjIEDownloadSimple; - -uses - Forms, - utIEDownloadSimple in 'utIEDownloadSimple.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/utIEDownloadSimple.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/utIEDownloadSimple.dfm deleted file mode 100644 index 67c7e058e0..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/utIEDownloadSimple.dfm +++ /dev/null @@ -1,175 +0,0 @@ -object Form1: TForm1 - Left = 269 - Top = 107 - Width = 671 - Height = 428 - Caption = 'IEDownload Simple Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 62 - Width = 655 - Height = 177 - TabStop = False - Align = alClient - TabOrder = 0 - OnDownloadComplete = EmbeddedWB1DownloadComplete - OnBeforeNavigate2 = EmbeddedWB1BeforeNavigate2 - OnFileDownload = EmbeddedWB1FileDownload - DisableCtrlShortcuts = 'N' - DownloadOptions = [DownloadImages, DownloadVideos, DownloadBGSounds, DownloadAndIgnoreCache] - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ControlData = { - 4C0000005E330000901A00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 655 - Height = 42 - Align = alTop - TabOrder = 1 - object Button1: TButton - Left = 520 - Top = 13 - Width = 58 - Height = 22 - Caption = 'Go' - TabOrder = 0 - OnClick = Button1Click - end - object IEAddress1: TEdit - Left = 0 - Top = 14 - Width = 514 - Height = 21 - TabOrder = 1 - Text = 'http://bsalsa.com/downloads.html' - end - object Button2: TButton - Left = 584 - Top = 13 - Width = 58 - Height = 22 - Caption = 'Cancel' - TabOrder = 2 - OnClick = Button2Click - end - end - object Panel4: TPanel - Left = 0 - Top = 239 - Width = 655 - Height = 153 - Align = alBottom - Caption = 'Panel4' - TabOrder = 2 - object PageControl1: TPageControl - Left = 1 - Top = 1 - Width = 653 - Height = 151 - ActivePage = TabSheet3 - Align = alClient - TabOrder = 0 - object TabSheet3: TTabSheet - Caption = 'Events' - ImageIndex = 2 - object Panel5: TPanel - Left = 0 - Top = 0 - Width = 645 - Height = 123 - Align = alClient - Caption = 'Panel5' - TabOrder = 0 - object memEvents: TMemo - Left = 1 - Top = 1 - Width = 643 - Height = 121 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - end - object TabSheet8: TTabSheet - Caption = 'Errors' - ImageIndex = 7 - object memErrors: TMemo - Left = 0 - Top = 0 - Width = 645 - Height = 123 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet10: TTabSheet - Caption = 'Details' - ImageIndex = 9 - object memDetails: TMemo - Left = 0 - Top = 0 - Width = 645 - Height = 123 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - end - end - object ProgressBar1: TProgressBar - Left = 0 - Top = 42 - Width = 655 - Height = 20 - Align = alTop - Min = 0 - Max = 100 - TabOrder = 3 - end - object IEDownload1: TIEDownload - About = ' IEDownload http://bsalsa.com/' - AdditionalHeader.Strings = ( - 'Content-Type: application/x-www-form-BindInfoFd ') - DefaultProtocol = 'http://' - DefaultUrlFileName = 'index.html' - OnBeforeDownload = IEDownload1BeforeDownload - OnComplete = IEDownload1Complete - OnError = IEDownload1Error - OnProgress = IEDownload1Progress - OnStartBinding = IEDownload1StartBinding - TimeOut = 2147483647 - Left = 16 - Top = 64 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/utIEDownloadSimple.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/utIEDownloadSimple.pas deleted file mode 100644 index 835571e1f4..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/07 - IEDownload_Demo/IEDownload_Simple_Demo/utIEDownloadSimple.pas +++ /dev/null @@ -1,194 +0,0 @@ -//************************************************************************* -// * -// TIEDownload Simple Demo * -// For Delphi * -// * -// Freeware Demo * -// Developing Team: * -// Eran Bodankin -bsalsa(bsalsa@bsalsa.com) * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit utIEDownloadSimple; - -interface - -uses - Dialogs, ActiveX, IEConst, Classes, Forms, StdCtrls, EmbeddedWB, UrlMon, - IEAddress, ExtCtrls, EwbCore, Controls, OleCtrls, SHDocVw_EWB, IEDownload, - ComCtrls, IEDownloadTools, Windows, IEDownloadAcc, SysUtils; - -type - TForm1 = class(TForm) - EmbeddedWB1: TEmbeddedWB; - Panel1: TPanel; - Button1: TButton; - IEDownload1: TIEDownload; - IEAddress1: TEdit; - Panel4: TPanel; - PageControl1: TPageControl; - TabSheet3: TTabSheet; - Panel5: TPanel; - memEvents: TMemo; - TabSheet8: TTabSheet; - memErrors: TMemo; - TabSheet10: TTabSheet; - memDetails: TMemo; - Button2: TButton; - ProgressBar1: TProgressBar; - procedure EmbeddedWB1FileDownload(Sender: TCustomEmbeddedWB; pmk: IMoniker; - pbc: IBindCtx; dwBindVerb, grfBINDF: Cardinal; pBindInfo: PBindInfo; - pszHeaders, pszRedir: PWideChar; uiCP: Cardinal; var Rezult: HRESULT); - procedure Button1Click(Sender: TObject); - procedure EmbeddedWB1DownloadComplete(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure IEDownload1Error(const ErrorCode: Integer; const stError: string); - procedure IEDownload1Progress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded, - ElapsedTime, Speed, RemainingTime, Status, Percent: string); - procedure Button2Click(Sender: TObject); - procedure IEDownload1BeforeDownload(Sender: TInfoData; const Url, FileName, - FileExtension, Host, DownloadFolder: string; const FileSize: Integer; - var Cancel: Boolean); - procedure IEDownload1Complete(Sender: TCustomIEDownload; aFileNameAndPath, - aFileName, aFolderName, aExtension: WideString; - const ActiveConnections: Integer); - procedure IEDownload1StartBinding(Sender: TBSCB; var Cancel: Boolean; - pib: IBinding; const FileName: WideString; const FileSize: Integer); - procedure EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); - private - dlUrl: string; - procedure ClearComponents; - procedure InitialComponents; - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.Button1Click(Sender: TObject); -begin - ClearComponents; - InitialComponents; - Embeddedwb1.Go(IEAddress1.Text); -end; - -procedure TForm1.EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - dlUrl := URL; -end; - -procedure TForm1.EmbeddedWB1DownloadComplete(Sender: TObject); -begin - IEAddress1.Text := EmbeddedWB1.LocationURL; -end; - -procedure TForm1.EmbeddedWB1FileDownload(Sender: TCustomEmbeddedWB; - pmk: IMoniker; pbc: IBindCtx; dwBindVerb, grfBINDF: Cardinal; - pBindInfo: PBindInfo; pszHeaders, pszRedir: PWideChar; uiCP: Cardinal; - var Rezult: HRESULT); -begin - Rezult := S_OK; - if pszRedir <> '' then - dlUrl := pszRedir; - IEDownload1.Go(dlUrl); - //IEDownload1.Download(pmk, pbc); -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - EmbeddedWb1.Go(IEAddress1.Text); -end; - -procedure TForm1.IEDownload1BeforeDownload(Sender: TInfoData; const Url, - FileName, FileExtension, Host, DownloadFolder: string; - const FileSize: Integer; var Cancel: Boolean); -begin - memEvents.Lines.Add('BeforeDownload. ' + Url + - #13#10 + FileName + #13#10 + DownloadFolder + #13#10); -end; - -procedure TForm1.IEDownload1Complete(Sender: TCustomIEDownload; - aFileNameAndPath, aFileName, aFolderName, aExtension: WideString; - const ActiveConnections: Integer); -begin - memEvents.Lines.Add('Complete Event:' + aFileName); - PageControl1.ActivePageIndex := 0; -end; - -procedure TForm1.IEDownload1Error(const ErrorCode: Integer; - const stError: string); -begin - memEvents.Lines.Add('Error Event.' + stError); - memErrors.Lines.Add('An error accrued: ' + stError); -end; - -procedure TForm1.IEDownload1Progress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded, - ElapsedTime, Speed, RemainingTime, Status, Percent: string); -begin - ProgressBar1.Max := ulProgressMax; - ProgressBar1.Position := ulProgress; -end; - -procedure TForm1.IEDownload1StartBinding(Sender: TBSCB; var Cancel: Boolean; - pib: IBinding; const FileName: WideString; const FileSize: Integer); -begin - memEvents.Lines.Add('StartBinding Event. ' - + #13#10 + 'Filename: ' + FileName - + #13#10 + 'FileSize:' + IntToStr(FileSize)); -end; - -{Some procedures-----------------------------------------------------------------} - -procedure TForm1.Button2Click(Sender: TObject); -begin - IEDownload1.CancelAll; -end; - -procedure TForm1.ClearComponents; -begin - memEvents.Lines.Clear; - MemErrors.Lines.Clear; - MemDetails.Lines.Clear; -end; - -procedure TForm1.InitialComponents; -begin - PageControl1.ActivePageIndex := 0; - ProgressBar1.Position := 0; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/prjMultiDLDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/prjMultiDLDemo.dpr deleted file mode 100644 index e04d5b1361..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/prjMultiDLDemo.dpr +++ /dev/null @@ -1,14 +0,0 @@ -program prjMultiDLDemo; - -uses - Forms, - utMultiDL in 'utMultiDL.pas' {frmMultiDownloader}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TfrmMultiDownloader, frmMultiDownloader); - Application.Run; -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/utMultiDL.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/utMultiDL.dfm deleted file mode 100644 index 3fe7380fa5..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/utMultiDL.dfm +++ /dev/null @@ -1,285 +0,0 @@ -object frmMultiDownloader: TfrmMultiDownloader - Left = 299 - Top = 296 - Caption = 'Multi Downloader Demo' - ClientHeight = 443 - ClientWidth = 709 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - OnCreate = FormCreate - PixelsPerInch = 96 - TextHeight = 13 - object StatusBar1: TStatusBar - Left = 0 - Top = 424 - Width = 709 - Height = 19 - Panels = < - item - Width = 150 - end - item - Width = 150 - end - item - Style = psOwnerDraw - Text = 'D/L Progress:' - Width = 350 - end> - OnDrawPanel = StatusBar1DrawPanel - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 709 - Height = 41 - Align = alTop - TabOrder = 1 - object btnGo: TButton - Left = 597 - Top = 13 - Width = 42 - Height = 22 - Caption = 'Go' - TabOrder = 0 - OnClick = btnGoClick - end - object edtAddress: TEdit - Left = 5 - Top = 14 - Width = 580 - Height = 21 - TabOrder = 1 - Text = 'http://bsalsa.com' - end - object btnCancel: TButton - Left = 645 - Top = 13 - Width = 49 - Height = 22 - Caption = 'Cancel' - Enabled = False - TabOrder = 2 - OnClick = btnCancelClick - end - end - object Panel2: TPanel - Left = 0 - Top = 41 - Width = 709 - Height = 383 - Align = alClient - TabOrder = 2 - object PageControl1: TPageControl - Left = 1 - Top = 1 - Width = 707 - Height = 381 - ActivePage = tsDownloads - Align = alClient - TabOrder = 0 - object tsEvents: TTabSheet - Caption = 'Events' - ImageIndex = 2 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 - object Panel5: TPanel - Left = 0 - Top = 0 - Width = 699 - Height = 353 - Align = alClient - Caption = 'Panel5' - TabOrder = 0 - object memEvents: TMemo - Left = 1 - Top = 1 - Width = 697 - Height = 351 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - end - object TabSheet5: TTabSheet - Caption = 'Server Response' - ImageIndex = 4 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 - object memResponse: TMemo - Left = 0 - Top = 0 - Width = 699 - Height = 353 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet6: TTabSheet - Caption = 'Progress Text' - ImageIndex = 5 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 - object memProgress: TMemo - Left = 0 - Top = 0 - Width = 699 - Height = 353 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet8: TTabSheet - Caption = 'Errors' - ImageIndex = 7 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 - object memErrors: TMemo - Left = 0 - Top = 0 - Width = 699 - Height = 353 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabSheet10: TTabSheet - Caption = 'Details' - ImageIndex = 9 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 - object memDetails: TMemo - Left = 0 - Top = 0 - Width = 699 - Height = 353 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabImages: TTabSheet - Caption = 'Image List' - ImageIndex = 7 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 - object memImages: TMemo - Left = 0 - Top = 0 - Width = 699 - Height = 353 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object TabLinks: TTabSheet - Caption = 'Link List' - ImageIndex = 8 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 - object memLinks: TMemo - Left = 0 - Top = 0 - Width = 699 - Height = 353 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsDownloads: TTabSheet - Caption = 'Downloads' - ImageIndex = 7 - object memDownloads: TMemo - Left = 0 - Top = 0 - Width = 699 - Height = 353 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsItems: TTabSheet - Caption = 'Items' - ImageIndex = 8 - ExplicitLeft = 0 - ExplicitTop = 0 - ExplicitWidth = 0 - ExplicitHeight = 0 - object memItems: TMemo - Left = 0 - Top = 0 - Width = 699 - Height = 353 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - end - end - object ProgressBar1: TProgressBar - Left = 296 - Top = 392 - Width = 350 - Height = 17 - TabOrder = 3 - end - object IEMultiDownload1: TIEMultiDownload - About = 'TIEMultiDownload from: http://www.bsalsa.com' - AdditionalHeader.Strings = ( - 'Content-Type: application/x-www-form-BindInfoFd ') - DefaultProtocol = 'http://' - DefaultUrlFileName = 'index.html' - OnBeforeDownload = IEMultiDownload1BeforeDownload - OnDataAvailableInfo = IEMultiDownload1DataAvailableInfo - OnError = IEMultiDownload1Error - OnProgress = IEMultiDownload1Progress - OnResponse = IEMultiDownload1Response - OnStateChange = IEMultiDownload1StateChange - TimeOut = 2147483647 - DownloadOptions = doPages - GetCompleteBaseSite = True - Items = <> - OnMultiBeforeDownload = IEMultiDownload1MultiBeforeDownload - OnMultiComplete = IEMultiDownload1MultiComplete - OnMultiGetDocInfo = IEMultiDownload1MultiGetDocInfo - OnMultiGetImage = IEMultiDownload1MultiGetImage - OnMultiGetLink = IEMultiDownload1MultiGetLink - OnMultiGetQueryInfo = IEMultiDownload1MultiGetQueryInfo - OnMultiItemAdded = IEMultiDownload1MultiItemAdded - OnMultiParseComplete = IEMultiDownload1MultiParseComplete - OnMultiParseDocument = IEMultiDownload1MultiParseDocument - OnMultiParseError = IEMultiDownload1MultiParseError - OnMultiParseProgress = IEMultiDownload1MultiParseProgress - OnMultiStateChange = IEMultiDownload1MultiStateChange - OnMultiStartParsing = IEMultiDownload1MultiStartParsing - Left = 32 - Top = 80 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/utMultiDL.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/utMultiDL.pas deleted file mode 100644 index 74406e097e..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/08 - IEMultiDownload/utMultiDL.pas +++ /dev/null @@ -1,347 +0,0 @@ -//************************************************************************* -// * -// IEMultiDownload Demo 2009 * * -// by * -// Eran Bodankin - bsalsa - (bsalsa@gmail.com) * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit utMultiDL; - -interface - -uses - MSHTML_EWB, SysUtils, IEDownloadTools, Windows, Classes, Forms, IEDownload, - IEMultiDownload, StdCtrls, ExtCtrls, ComCtrls, IEParser, OleCtrls, Controls; - -type - TfrmMultiDownloader = class(TForm) - IEMultiDownload1: TIEMultiDownload; - StatusBar1: TStatusBar; - Panel1: TPanel; - btnGo: TButton; - Panel2: TPanel; - PageControl1: TPageControl; - tsEvents: TTabSheet; - Panel5: TPanel; - memEvents: TMemo; - TabSheet5: TTabSheet; - memResponse: TMemo; - TabSheet6: TTabSheet; - memProgress: TMemo; - TabSheet8: TTabSheet; - memErrors: TMemo; - TabSheet10: TTabSheet; - memDetails: TMemo; - TabImages: TTabSheet; - TabLinks: TTabSheet; - memImages: TMemo; - memLinks: TMemo; - edtAddress: TEdit; - ProgressBar1: TProgressBar; - btnCancel: TButton; - tsDownloads: TTabSheet; - memDownloads: TMemo; - tsItems: TTabSheet; - memItems: TMemo; - procedure btnGoClick(Sender: TObject); - procedure IEMultiDownload1Error(const ErrorCode: Integer; - const stError: string); - function IEMultiDownload1Response(Sender: TBSCB; dwResponseCode: Cardinal; - szResponseHeaders, szRequestHeaders: PWideChar; - out szAdditionalRequestHeaders: PWideChar): HRESULT; - procedure IEMultiDownload1StateChange(const State: TState); - procedure FormCreate(Sender: TObject); - procedure StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; - const Rect: TRect); - procedure IEMultiDownload1Progress(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; Downloaded, - ElapsedTime, Speed, RemainingTime, Status, Percent: string); - procedure IEMultiDownload1DataAvailableInfo(Sender: TBSCB; - grfBSCF: Cardinal; Status: string); - procedure IEMultiDownload1Complete(Sender: TCustomIEDownload; - aFileNameAndPath, aFileName, aFolderName, aExtension: WideString; - const ActiveConnections: Integer); - procedure btnCancelClick(Sender: TObject); - procedure IEMultiDownload1MultiParseError(Sender: TObject; - const ErrorCode: Integer; const Url, stError: string); - procedure IEMultiDownload1MultiStateChange(Sender: TObject; - const State: TMultiState); - procedure IEMultiDownload1MultiItemAdded(Sender: TObject; const hRef, - hProtocol, hRoot, hPath, hFileName, hUser, hPassword: WideString; - hPort: Integer); - procedure IEMultiDownload1MultiBeforeDownload(Sender: TObject; - const hRef: WideString; const Item: TDownloadItem; var Cancel: Boolean); - procedure IEMultiDownload1MultiGetDocInfo(Sender: TObject; - const Text: string); - procedure IEMultiDownload1MultiGetLink(Sender: TObject; const hRef, Host, - HostName, PathName, Port, Protocol, MimeType, NameProp: string; - var Cancel: Boolean); - procedure IEMultiDownload1MultiGetQueryInfo(const MimeType, Encoding, - Disposition: string); - procedure IEMultiDownload1MultiParseComplete(Sender: TObject; - Doc: IHTMLDocument2; All: IHTMLElementCollection); - procedure IEMultiDownload1MultiParseDocument(Sender: TObject; - const Res: HRESULT; stMessage: string); - procedure IEMultiDownload1MultiComplete(Sender: TObject; - const DownloadedList: TStrings); - procedure IEMultiDownload1MultiGetImage(Sender: TObject; - const ImgName: string; var Cancel: Boolean); - procedure IEMultiDownload1MultiParseProgress(Sender: TObject; - const ulProgress, ulProgressMax: Integer); - procedure IEMultiDownload1MultiStartParsing(Sender: TObject; - const aUrl: WideString); - procedure IEMultiDownload1BeforeDownload(Sender: TInfoData; const Url, - FileName, FileExtension, Host, DownloadFolder: string; - const FileSize: Integer; var Cancel: Boolean); - private - procedure AddLog(Memo: TMemo; const s: string); - public - - end; - -var - frmMultiDownloader: TfrmMultiDownloader; - -implementation - -{$R *.dfm} - -procedure TfrmMultiDownloader.AddLog(Memo: TMemo; const s: string); -begin -// Sleep(1); -// OutputDebugString(PChar(s)); - Memo.Lines.Add(s); -end; - -procedure TfrmMultiDownloader.btnCancelClick(Sender: TObject); -begin - IEMultiDownload1.Stop; -end; - -procedure TfrmMultiDownloader.btnGoClick(Sender: TObject); -begin - memDownloads.Clear; - IEMultiDownload1.GoMulti(edtAddress.Text); -end; - -procedure TfrmMultiDownloader.FormCreate(Sender: TObject); -var - pbStyle: integer; -begin - StatusBar1.Panels[2].Style := psOwnerDraw; - ProgressBar1.Parent := StatusBar1; - pbStyle := GetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE); - pbStyle := pbStyle - WS_EX_STATICEDGE; - SetWindowLong(ProgressBar1.Handle, GWL_EXSTYLE, pbStyle); - StatusBar1.Panels[0].Text := 'Ready.' -end; - -procedure TfrmMultiDownloader.IEMultiDownload1BeforeDownload(Sender: TInfoData; - const Url, FileName, FileExtension, Host, DownloadFolder: string; - const FileSize: Integer; var Cancel: Boolean); -begin - AddLog(memDownloads, #13#10 +FileName +#13#10 +DownloadFolder); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1Complete(Sender: TCustomIEDownload; - aFileNameAndPath, aFileName, aFolderName, aExtension: WideString; - const ActiveConnections: Integer); -begin - AddLog(memDownloads, 'Done with: ' + aFileName); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1DataAvailableInfo(Sender: TBSCB; - grfBSCF: Cardinal; Status: string); -begin - if not StrContain('intermediate', Status) then - AddLog(memEvents, Status); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1Error(const ErrorCode: Integer; - const stError: string); -begin - AddLog(memErrors, stError); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiBeforeDownload( - Sender: TObject; const hRef: WideString; const Item: TDownloadItem; - var Cancel: Boolean); -begin - AddLog(memEvents, 'MultiBeforeDownload: ' + hRef); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiComplete(Sender: TObject; - const DownloadedList: TStrings); -begin - //memDownloads.Lines := DownloadedList; - AddLog(memEvents, 'MultiComplete '); - StatusBar1.Panels[0].Text := 'Done.' -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiGetDocInfo(Sender: TObject; - const Text: string); -begin -// AddLog(memEvents, 'MultiGetDocInfo '); - AddLog(memDetails, Text); -end; - - -procedure TfrmMultiDownloader.IEMultiDownload1MultiGetLink(Sender: TObject; - const hRef, Host, HostName, PathName, Port, Protocol, MimeType, - NameProp: string; var Cancel: Boolean); -begin -// AddLog(memEvents, 'MultiGetLink'); - AddLog(MemLinks, 'hRef: ' + hRef + #13#10 + 'Host: ' + Host + #13#10 + - 'HostName: ' + HostName + #13#10 + 'PathName: ' + PathName + #13#10 + 'Port: ' + - Port + #13#10 + 'Protocol: ' + Protocol + #13#10 + - 'MimeType: ' + MimeType + #13#10 + 'NameProp: ' + NameProp + #13#10); - -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiGetQueryInfo(const MimeType, - Encoding, Disposition: string); -begin - AddLog(memEvents, 'MultiGetQueryInfo '); - if MimeType <> '' then - AddLog(memDetails, 'MimeType: ' + MimeType); - if Encoding <> '' then - AddLog(memDetails, 'Encoding: ' + Encoding); - if Disposition <> '' then - AddLog(memDetails, 'Disposition: ' + Disposition); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiItemAdded(Sender: TObject; - const hRef, hProtocol, hRoot, hPath, hFileName, hUser, hPassword: WideString; - hPort: Integer); -begin - // AddLog(memEvents, 'MultiItemAdded '); - memItems.Lines.Add(#13#10 + 'Ref: ' + hRef + - #13#10 + 'Protocol: ' + hProtocol + - #13#10 + 'Root: ' + hRoot + - #13#10 + 'Path: ' + hPath + - #13#10 + 'FileName: ' + hFileName + - #13#10 + 'User: ' + hUser + - #13#10 + 'Password: ' + hPassword + - #13#10 + 'Port: ' + IntToStr(hPort)); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiParseComplete( - Sender: TObject; Doc: IHTMLDocument2; All: IHTMLElementCollection); -begin - AddLog(memEvents, 'MultiParseComplete'); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiParseDocument( - Sender: TObject; const Res: HRESULT; stMessage: string); -begin - StatusBar1.Panels[0].Text := 'Parsing.'; - AddLog(memEvents, 'MultiParseDocument: ' + stMessage); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiParseError(Sender: TObject; - const ErrorCode: Integer; const Url, stError: string); -begin - AddLog(memEvents, 'MultiParseError'); - memErrors.Lines.Add(stError); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiParseProgress( - Sender: TObject; const ulProgress, ulProgressMax: Integer); -begin - Progressbar1.Max:= ulProgressMax; - Progressbar1.Position:= ulProgress; -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiStartParsing(Sender: TObject; - const aUrl: WideString); -begin - AddLog(memEvents, #13#10 +'Starting with: '+aUrl); -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiStateChange(Sender: TObject; - const State: TMultiState); -begin - btnGo.Enabled := IEMultiDownload1.MultiState <> msBusy; - btnCancel.Enabled := IEMultiDownload1.MultiState = msBusy; - case IEMultiDownload1.MultiState of - msBusy: AddLog(memEvents, 'MultiDownload Busy'); - msReady: AddLog(memEvents, 'MultiDownload Ready'); - msStopped: AddLog(memEvents, 'MultiDownload Stopped'); - end; -end; - -procedure TfrmMultiDownloader.IEMultiDownload1Progress(Sender: TBSCB; ulProgress, - ulProgressMax, ulStatusCode, FileSize: Cardinal; szStatusText: PWideChar; - Downloaded, ElapsedTime, Speed, RemainingTime, Status, Percent: string); -begin - AddLog(memResponse, Status); - Progressbar1.Max := ulProgressMax; - Progressbar1.Position := ulProgress; -end; - -function TfrmMultiDownloader.IEMultiDownload1Response(Sender: TBSCB; - dwResponseCode: Cardinal; szResponseHeaders, szRequestHeaders: PWideChar; - out szAdditionalRequestHeaders: PWideChar): HRESULT; -begin - AddLog(memResponse, szResponseHeaders); - Result := S_OK; -end; - -procedure TfrmMultiDownloader.IEMultiDownload1StateChange(const State: TState); -begin - case IEMultiDownload1.State of - sBusy: - begin - AddLog(memEvents, 'IEDownload Busy'); - StatusBar1.Panels[0].Text := 'Downloading, Please Wait..' - end; - sReady: AddLog(memEvents, 'IEDownload Ready'); - sStopped: AddLog(memEvents, 'IEDownload Stopped'); - end; -end; - -procedure TfrmMultiDownloader.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; - const Rect: TRect); -begin - if Panel = StatusBar.Panels[2] then - with ProgressBar1 do - begin - Top := Rect.Top; - Left := Rect.Left; - Width := Rect.Right - Rect.Left - 15; - Height := Rect.Bottom - Rect.Top - end; -end; - -procedure TfrmMultiDownloader.IEMultiDownload1MultiGetImage( - Sender: TObject; const ImgName: string; var Cancel: Boolean); -begin - //AddLog(memEvents, 'MultiGetImage'); - AddLog(memImages, 'ImageName: ' + ImgName); -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/Unit1.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/Unit1.dfm deleted file mode 100644 index b9f321cb1a..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/Unit1.dfm +++ /dev/null @@ -1,337 +0,0 @@ -object Form1: TForm1 - Left = 236 - Top = 318 - Width = 865 - Height = 474 - Caption = 'IE HTML Parser Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 857 - Height = 41 - Align = alTop - TabOrder = 0 - object btnGo: TButton - Left = 749 - Top = 12 - Width = 42 - Height = 22 - Caption = 'Go' - TabOrder = 0 - OnClick = btnGoClick - end - object edtAddress: TEdit - Left = 8 - Top = 12 - Width = 729 - Height = 21 - TabOrder = 1 - Text = 'http://bsalsa.com/' - end - object Button1: TButton - Left = 800 - Top = 12 - Width = 42 - Height = 22 - Caption = 'Stop' - TabOrder = 2 - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 421 - Width = 857 - Height = 19 - Panels = < - item - Width = 70 - end - item - Width = 350 - end> - end - object Panel2: TPanel - Left = 0 - Top = 41 - Width = 857 - Height = 380 - Align = alClient - Caption = 'Panel2' - TabOrder = 2 - object PageControl1: TPageControl - Left = 1 - Top = 1 - Width = 855 - Height = 378 - ActivePage = tsScript - Align = alClient - TabOrder = 0 - object tsParse: TTabSheet - Caption = 'Parse' - ImageIndex = 15 - object memParse: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsProp: TTabSheet - Caption = 'Doc Properties' - ImageIndex = 4 - object memProp: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - Font.Charset = DEFAULT_CHARSET - Font.Color = clMaroon - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsAnchor: TTabSheet - Caption = 'Anchor' - object memAnchor: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object Images: TTabSheet - Caption = 'Images' - ImageIndex = 2 - object memImages: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object Meta: TTabSheet - Caption = ' MetaTags' - ImageIndex = 3 - object memMeta: TMemo - Left = 0 - Top = 0 - Width = 847 - Height = 350 - Align = alClient - Lines.Strings = ( - '') - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsBase: TTabSheet - Caption = 'Base' - ImageIndex = 5 - object memBase: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsBaseFont: TTabSheet - Caption = 'BaseFont' - ImageIndex = 6 - object memBaseFont: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsBody: TTabSheet - Caption = 'Body' - ImageIndex = 7 - object memBody: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsBR: TTabSheet - Caption = 'BR' - ImageIndex = 8 - object memBR: TMemo - Left = 0 - Top = 0 - Width = 847 - Height = 350 - Align = alClient - Lines.Strings = ( - 'Memo2') - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsComment: TTabSheet - Caption = 'Comment' - ImageIndex = 9 - object memComment: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsDiv: TTabSheet - Caption = 'Div' - ImageIndex = 10 - object memDiv: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsFont: TTabSheet - Caption = 'Font' - ImageIndex = 11 - object memFont: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsForm: TTabSheet - Caption = 'Form' - ImageIndex = 12 - object memForm: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsHR: TTabSheet - Caption = 'HR' - ImageIndex = 13 - object memHR: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsMarquee: TTabSheet - Caption = 'Marquee' - ImageIndex = 14 - object memMarquee: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsPError: TTabSheet - Caption = 'ParseError' - ImageIndex = 16 - object memParseError: TMemo - Left = 0 - Top = 0 - Width = 844 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - object tsScript: TTabSheet - Caption = 'Script' - ImageIndex = 17 - object memScript: TMemo - Left = 0 - Top = 0 - Width = 847 - Height = 350 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - end - end - end - object IEParser1: TIEParser - About = 'TIEParser from: http://www.bsalsa.com' - OnAnchor = IEParser1Anchor - OnBase = IEParser1Base - OnBaseFont = IEParser1BaseFont - OnBody = IEParser1Body - OnBR = IEParser1BR - OnBusyStateChange = IEParser1BusyStateChange - OnComment = IEParser1Comment - OnDiv = IEParser1Div - OnDocInfo = IEParser1DocInfo - OnParseComplete = IEParser1ParseComplete - OnFont = IEParser1Font - OnForm = IEParser1Form - OnHR = IEParser1HR - OnImage = IEParser1Image - OnMarquee = IEParser1Marquee - OnMeta = IEParser1Meta - OnParseDocument = IEParser1ParseDocument - OnParseError = IEParser1ParseError - OnScript = IEParser1Script - OnStateChange = IEParser1StateChange - Left = 32 - Top = 112 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/Unit1.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/Unit1.pas deleted file mode 100644 index 4325982ffd..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/Unit1.pas +++ /dev/null @@ -1,487 +0,0 @@ -//**************************************************** -// Extended IEParser Demo * -// Freeware Demo * -// by * -// * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DocUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 3 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit Unit1; - -interface - -{$I EWB.inc} - -uses - MSHTML_EWB, {$IFDEF DELPHI6_UP}Variants, {$ENDIF} SysUtils, Classes, Controls, - Forms, StdCtrls, IEAddress, ExtCtrls, IEParser, ComCtrls, RichEditBrowser; - -type - TForm1 = class(TForm) - edtAddress: TEdit; - btnGo: TButton; - IEParser1: TIEParser; - Images: TTabSheet; - memAnchor: TMemo; - memBase: TMemo; - memBaseFont: TMemo; - memBody: TMemo; - memBR: TMemo; - memComment: TMemo; - memDiv: TMemo; - memFont: TMemo; - memForm: TMemo; - memHR: TMemo; - memImages: TMemo; - memMarquee: TMemo; - memMeta: TMemo; - memParse: TMemo; - memParseError: TMemo; - memProp: TMemo; - memScript: TMemo; - Meta: TTabSheet; - PageControl1: TPageControl; - Panel1: TPanel; - Panel2: TPanel; - StatusBar1: TStatusBar; - tsAnchor: TTabSheet; - tsBase: TTabSheet; - tsBaseFont: TTabSheet; - tsBody: TTabSheet; - tsBR: TTabSheet; - tsComment: TTabSheet; - tsDiv: TTabSheet; - tsFont: TTabSheet; - tsForm: TTabSheet; - tsHR: TTabSheet; - tsMarquee: TTabSheet; - tsParse: TTabSheet; - tsPError: TTabSheet; - tsProp: TTabSheet; - tsScript: TTabSheet; - Button1: TButton; - procedure IEParser1BusyStateChange(Sender: TObject); - procedure IEParser1Meta(Sender: TObject; HttpEquiv, Content, Name, URL, - Charset: string; Element: TElementInfo); - procedure IEParser1Anchor(Sender: TObject; hRef, Target, Rel, Rev, Urn, - Methods, Name, Host, HostName, PathName, Port, Protocol, Search, Hash, - AccessKey, ProtocolLong, MimeType, NameProp: string; - Element: TElementInfo); - procedure btnGoClick(Sender: TObject); - procedure IEParser1Base(Sender: TObject; hRef, Target: string; - Element: TElementInfo); - procedure IEParser1BaseFont(Sender: TObject; Color: OleVariant; - Face: string; Size: Integer; Element: TElementInfo); - procedure IEParser1Body(Sender: TObject; Background, bgProperties: string; - LeftMargin, TopMargin, RightMargin, BottomMargin, bgColor, Text, Link, - vLink, aLink: OleVariant; NoWrap: Boolean; Element: TElementInfo); - procedure IEParser1BR(Sender: TObject; Clear: string; - Element: TElementInfo); - procedure IEParser1Comment(sender: TObject; Text: string; - Element: TElementInfo); - procedure IEParser1Div(Sender: TObject; Align: string; NoWrap: Boolean; - Element: TElementInfo); - procedure IEParser1Font(Sender: TObject; Color, Size: OleVariant; - Face: string; Element: TElementInfo); - procedure IEParser1Form(Sender: TObject; Action, Dir, Encoding, Method, - Target, Name: string; Element: TElementInfo); - procedure IEParser1HR(Sender: TObject; Align: string; Color, Width, - Size: OleVariant; NoShade: Boolean; Element: TElementInfo); - procedure IEParser1Marquee(Sender: TObject; bgColor, Width, - Height: OleVariant; Direction, Behavior: string; ScrollAmount, - ScrollDelay, Loop, vSpace, hSpace: Integer; Element: TElementInfo); - procedure IEParser1ParseComplete(Sender: TObject; Doc: IHTMLDocument2; - All: IHTMLElementCollection); - procedure IEParser1ParseDocument(Sender: TObject; const Res: HRESULT; - stMessage: string); - procedure IEParser1ParseError(Sender: TObject; const ErrorCode: Integer; - const Url, stError: string); - procedure IEParser1StateChange(Sender: TObject; const State: TParserState); - procedure IEParser1DocInfo(Sender: TObject; const Text: string); - procedure IEParser1Image(Sender: TObject; Source: String; - ImgElement: IHTMLImgElement; Element: TElementInfo); - procedure IEParser1Script(Sender: TObject; Source: String; - ScriptElement: IHTMLScriptElement; Element: TElementInfo); - private - procedure UpdateControls; - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.UpdateControls; -begin - memAnchor.Clear; - memBase.Clear; - memBaseFont.Clear; - memBody.Clear; - memBR.Clear; - memComment.Clear; - memDiv.Clear; - memFont.Clear; - memForm.Clear; - memHR.Clear; - memImages.Clear; - memMarquee.Clear; - memMeta.Clear; - memParse.Clear; - memParseError.Clear; - memProp.Clear; - memScript.Clear; -end; - -procedure TForm1.btnGoClick(Sender: TObject); -begin - UpdateControls; - IEParser1.Parse(edtAddress.Text); -end; - -procedure TForm1.IEParser1BusyStateChange(Sender: TObject); -begin - // -end; - -//Events------------------------------------------------------------------- - -procedure TForm1.IEParser1Anchor(Sender: TObject; hRef, Target, Rel, Rev, Urn, - Methods, Name, Host, HostName, PathName, Port, Protocol, Search, Hash, - AccessKey, ProtocolLong, MimeType, NameProp: string; Element: TElementInfo); -begin - with memAnchor.Lines do - begin - if hRef <> '' then - Add(#13#10 + 'hRef:' + hRef); - if Rel <> '' then - Add('Rel:' + Rel); - if Rev <> '' then - Add('Rev:' + Rev); - if Urn <> '' then - Add('Urn:' + Urn); - if Target <> '' then - Add('Target: ' + Target); - if Methods <> '' then - Add('Methods: ' + Methods); - if Name <> '' then - Add('Name: ' + Name); - if Host <> '' then - Add('Host: ' + Host); - if HostName <> '' then - Add('HostName: ' + HostName); - if PathName <> '' then - Add('PathName: ' + PathName); - if Port <> '' then - Add('Port: ' + Port); - if Protocol <> '' then - Add('Protocol: ' + Protocol); - if Search <> '' then - Add('Search: ' + Search); - if AccessKey <> '' then - Add('AccessKey: ' + AccessKey); - if ProtocolLong <> '' then - Add('ProtocolLong: ' + ProtocolLong); - if MimeType <> '' then - Add('MimeType: ' + MimeType); - if NameProp <> '' then - Add('NameProp: ' + NameProp); - end; -end; - - -procedure TForm1.IEParser1Base(Sender: TObject; hRef, Target: string; - Element: TElementInfo); -begin - with memBase.Lines do - begin - if hRef <> '' then - Add(#13#10 + 'hRef: ' + hRef); - if Target <> '' then - Add('Target: ' + Target); - if Element.InnerHTML <> '' then - Add('Element.InnerHTML:' + #13#10 + Element.InnerHTML); - end; -end; - -procedure TForm1.IEParser1BaseFont(Sender: TObject; Color: OleVariant; - Face: string; Size: Integer; Element: TElementInfo); -begin - with memBaseFont.Lines do - begin - if VarToStr(Color) <> '' then - Add(#13#10 + 'Color: ' + VarToStr(Color)); - if Face <> '' then - Add('Face: ' + Face); - if IntToStr(Size) <> '' then - Add('Size: ' + IntToStr(Size)); - if Element.InnerHTML <> '' then - Add('Element.InnerHTML:' + #13#10 + Element.InnerHTML); - end; -end; - -procedure TForm1.IEParser1Body(Sender: TObject; Background, - bgProperties: string; LeftMargin, TopMargin, RightMargin, BottomMargin, - bgColor, Text, Link, vLink, aLink: OleVariant; NoWrap: Boolean; - Element: TElementInfo); -begin - with memBody.Lines do - begin - if Background <> '' then - Add(#13#10 + 'Background:' + Background); - if bgProperties <> '' then - Add('bgProperties: ' + bgProperties); - if VarToStr(bgColor) <> '' then - Add('bgColor: ' + VarToStr(bgColor)); - if VarToStr(Text) <> '' then - Add('Text: ' + VarToStr(Text)); - if VarToStr(Link) <> '' then - Add('Link: ' + VarToStr(Link)); - if VarToStr(vLink) <> '' then - Add('vLink: ' + VarToStr(vLink)); - if VarToStr(aLink) <> '' then - Add('aLink: ' + VarToStr(aLink)); - if Element.InnerHTML <> '' then - Add('Element.InnerHTML:' + #13#10 + Element.InnerHTML); - end; -end; - -procedure TForm1.IEParser1BR(Sender: TObject; Clear: string; - Element: TElementInfo); -begin - memBR.Lines.Add(#13#10 + 'Clear: ' + Clear + #13#10); -end; - -procedure TForm1.IEParser1Comment(sender: TObject; Text: string; - Element: TElementInfo); -begin - memComment.Lines.Add(#13#10 + 'Text: ' + Text); - if Element.InnerHTML <> '' then - memComment.Lines.Add('Element.InnerHTML:' + #13#10 + Element.InnerHTML); -end; - -procedure TForm1.IEParser1Div(Sender: TObject; Align: string; NoWrap: Boolean; - Element: TElementInfo); -begin - memDiv.Lines.Add(#13#10 + 'Align: ' + Align); - if Element.InnerHTML <> '' then - memDiv.Lines.Add('Element.InnerHTML:' + Element.InnerHTML); -end; - -procedure TForm1.IEParser1DocInfo(Sender: TObject; const Text: string); -begin - memProp.Lines.Add(Text); -end; - -procedure TForm1.IEParser1Form(Sender: TObject; Action, Dir, Encoding, Method, - Target, Name: string; Element: TElementInfo); -begin - with memForm.Lines do - begin - if Action <> '' then - Add(#13#10 + 'Action: ' + Action); - if Dir <> '' then - Add('Dir: ' + Dir); - if Encoding <> '' then - Add('Encoding: ' + Encoding); - if Method <> '' then - Add('Method: ' + Method); - if Target <> '' then - Add('Target: ' + Target); - if Name <> '' then - Add('Name: ' + Name); - if Element.InnerHTML <> '' then - Add('Element.InnerHTML:' + #13#10 + Element.InnerHTML); - end; -end; - -procedure TForm1.IEParser1HR(Sender: TObject; Align: string; Color, Width, - Size: OleVariant; NoShade: Boolean; Element: TElementInfo); -begin - with memHR.Lines do - begin - if Align <> '' then - Add(#13#10 + 'Align: ' + Align); - if VarToStr(Color) <> '' then - Add('Color: ' + VarToStr(Color)); - if VarToStr(Size) <> '' then - Add('Size: ' + VarToStr(Size)); - if Element.OuterHTML <> '' then - Add('Element.OuterHTML:' + #13#10 + Element.OuterHTML); - end; -end; - -procedure TForm1.IEParser1Marquee(Sender: TObject; bgColor, Width, - Height: OleVariant; Direction, Behavior: string; ScrollAmount, ScrollDelay, - Loop, vSpace, hSpace: Integer; Element: TElementInfo); -begin - with memMarquee.Lines do - begin - if VarToStr(bgColor) <> '' then - Add(#13#10 + 'bgColor: ' + VarToStr(bgColor)); - if Direction <> '' then - Add('Direction: ' + Direction); - if Behavior <> '' then - Add('Behavior: ' + Behavior); - if Element.OuterHTML <> '' then - Add('Element.OuterHTML:' + #13#10 + Element.OuterHTML); - end; -end; - -procedure TForm1.IEParser1Meta(Sender: TObject; HttpEquiv, Content, Name, URL, - Charset: string; Element: TElementInfo); -begin - with memMeta.Lines do - begin - if HttpEquiv <> '' then - Add('HttpEquiv: ' + HttpEquiv); - if Content <> '' then - Add('Content: ' + Content); - if Name <> '' then - Add('Name: ' + Name); - if URL <> '' then - Add('Url: ' + URL); - if Charset <> '' then - Add('Charset: ' + Charset); - if Element.OuterHTML <> '' then - Add('Element.OuterHTML:' + #13#10 + Element.OuterHTML); - end; -end; - -procedure TForm1.IEParser1Script(Sender: TObject; Source: String; - ScriptElement: IHTMLScriptElement; Element: TElementInfo); -begin - with memScript.Lines, ScriptElement do - begin - if Element.Language <> '' then - Add('Element.Language:' + Element.Language); - if Source <> '' then - Add(#13#10 + 'Source: ' + Source); - if HtmlFor <> '' then - Add('HtmlFor: ' + HtmlFor); - if Event <> '' then - Add('Event: ' + Event); - if Text <> '' then - Add('Text: ' + Text); - if Element.OuterHTML <> '' then - Add('Element.OuterHTML:' + #13#10 + Element.OuterHTML); - if Element.InnerHTML <> '' then - Add('Element.InnerHTML:' + #13#10 + Element.InnerHTML); - end; -end; - -procedure TForm1.IEParser1StateChange(Sender: TObject; - const State: TParserState); -begin - btnGo.Enabled := not IEParser1.Busy; - if IEParser1.Busy then - StatusBar1.Panels[0].Text := 'Parsing..' - else - StatusBar1.Panels[0].Text := 'Ready.' -end; - -procedure TForm1.IEParser1ParseComplete(Sender: TObject; Doc: IHTMLDocument2; - All: IHTMLElementCollection); -begin - // StatusBar1.Panels[0].Text := stMessage; -// memParse.Lines.Add(stMessage + #13#10); -end; - -procedure TForm1.IEParser1ParseDocument(Sender: TObject; const Res: HRESULT; - stMessage: string); -begin - StatusBar1.Panels[1].Text := stMessage; - memParse.Lines.Add(stMessage + #13#10); -end; - -procedure TForm1.IEParser1ParseError(Sender: TObject; const ErrorCode: Integer; - const Url, stError: string); -begin - memParseError.Lines.Add(Url+ #13#10+ stError); -end; - -procedure TForm1.IEParser1Font(Sender: TObject; Color, Size: OleVariant; - Face: string; Element: TElementInfo); -begin - with memFont.Lines do - begin - if VarToStr(Color) <> '' then - Add(#13#10 + 'Color: ' + VarToStr(Color)); - if VarToStr(Size) <> '' then - Add('Size: ' + VarToStr(Size)); - if Face <> '' then - Add('Face: ' + Face); - if Element.InnerHTML <> '' then - Add('Element.InnerHTML:' + Element.InnerHTML); - end; -end; - -procedure TForm1.IEParser1Image(Sender: TObject; Source: String; - ImgElement: IHTMLImgElement; Element: TElementInfo); -begin - with memImages.Lines, ImgElement do - begin - if Source <> '' then - Add(#13#10 + 'Source:' + Source); - if LowSrc <> '' then - Add('LowSrc:' + LowSrc); - if Vrml <> '' then - Add('Vrml:' + Vrml); - if DynSrc <> '' then - Add('DynSrc:' + DynSrc); - if Alt <> '' then - Add('Alt: ' + Alt); - if Align <> '' then - Add('Align: ' + Align); - if Name <> '' then - Add('Name: ' + Name); - if UseMap <> '' then - Add('UseMap: ' + UseMap); - if IntToStr(hSpace) <> '' then - Add('hSpace: ' + IntToStr(hSpace)); - if IntToStr(Width) <> '' then - Add('Width: ' + IntToStr(Width)); - if IntToStr(Height) <> '' then - Add('Height: ' + IntToStr(Height)); - end; - - with memImages.Lines, ImgElement as IHTMLImgElement2 do - begin - if longDesc <> '' then - Add('longDesc: ' + longDesc); - end; - -end; - - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/prjIEParserDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/prjIEParserDemo.dpr deleted file mode 100644 index afc8939300..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/09 - IEParser_Demo/prjIEParserDemo.dpr +++ /dev/null @@ -1,49 +0,0 @@ -//**************************************************** -// Extended IEParser Demo * -// Freeware Demo * -// by * -// * -// Per Linds Larsen & * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DocUMENTATION. [YOUR Name] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 3 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjIEParserDemo; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/TravelLogDemo_U.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/TravelLogDemo_U.dfm deleted file mode 100644 index 9723a53cb0..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/TravelLogDemo_U.dfm +++ /dev/null @@ -1,221 +0,0 @@ -object Form1: TForm1 - Left = 344 - Top = 414 - Width = 726 - Height = 480 - Caption = 'IETravelLog Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 27 - Width = 718 - Height = 419 - Align = alClient - TabOrder = 4 - Silent = False - OnCommandStateChange = EmbeddedWB1CommandStateChange - OnBeforeNavigate2 = EmbeddedWB1BeforeNavigate2 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - VisualEffects.TextSize = 0 - UserAgent = 'EmbeddedWB 14.55 from: http://www.bsalsa.com/' - ControlData = { - 4C00000062460000ED2B00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 718 - Height = 27 - Align = alTop - Caption = 'Panel1' - TabOrder = 6 - object IEAddress1: TIEAddress - Left = 204 - Top = 3 - Width = 443 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 0 - end - end - object ForwardBtn: TBitBtn - Left = 108 - Top = 1 - Width = 75 - Height = 25 - Caption = 'Forward' - Enabled = False - TabOrder = 2 - OnClick = ForwardBtnClick - Glyph.Data = { - A6020000424DA602000000000000420000002800000011000000110000000100 - 1000030000006402000000000000000000000000000000000000007C0000E003 - 00001F000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7F0000FF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7F - 00000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7F - FF7FFF7F000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7F - FF7FFF7FFF7FFF7F0000000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - 0000FF7FFF7FFF7FFF7FFF7F00000000000000000000FF7FFF7FFF7FFF7FFF7F - FF7FFF7F0000FF7FFF7FFF7FFF7FFF7F000000000000000000000000FF7FFF7F - FF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7F000000000000000000000000 - FF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7F0000000000000000 - 0000FF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7F00000000 - 00000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7F - 000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7F - FF7FFF7F00000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7F - FF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - 0000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7F0000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7F0000} - end - object BackDropDownBtn: TBitBtn - Left = 79 - Top = 1 - Width = 18 - Height = 25 - Enabled = False - TabOrder = 1 - OnMouseDown = MyMouseDown - Glyph.Data = { - 62010000424D620100000000000042000000280000000C0000000C0000000100 - 1000030000002001000000000000000000000000000000000000007C0000E003 - 00001F000000FF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - 00000000000000000000FF7FFF7FFF7FFF7FFF7FFF7F00000000000000000000 - 00000000FF7FFF7FFF7FFF7F000000000000000000000000000000000000FF7F - FF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7F000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000 - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7F} - Layout = blGlyphBottom - end - object BackBtn: TBitBtn - Left = 1 - Top = 1 - Width = 81 - Height = 25 - Caption = 'Back' - Enabled = False - TabOrder = 0 - OnClick = BackBtnClick - Glyph.Data = { - 82040000424D8204000000000000420000002800000020000000110000000100 - 1000030000004004000000000000000000000000000000000000007C0000E003 - 00001F000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000000000000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7F00000000000000000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7F000000000000000000000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7F000000000000000000000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7F00000000000000000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000000000000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F00000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7F} - Style = bsNew - Spacing = 0 - end - object ForwardDropDownBtn: TBitBtn - Left = 181 - Top = 1 - Width = 18 - Height = 25 - Enabled = False - TabOrder = 3 - OnMouseDown = MyMouseDown - Glyph.Data = { - 62010000424D620100000000000042000000280000000C0000000C0000000100 - 1000030000002001000000000000000000000000000000000000007C0000E003 - 00001F000000FF7FFF7FFF7FFF7FFF7FFF7FFF7F0000FF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - 00000000000000000000FF7FFF7FFF7FFF7FFF7FFF7F00000000000000000000 - 00000000FF7FFF7FFF7FFF7F000000000000000000000000000000000000FF7F - FF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7F000000000000FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000 - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F000000000000FF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7FFF7F - FF7FFF7FFF7F} - Layout = blGlyphBottom - end - object Button1: TButton - Left = 653 - Top = 3 - Width = 61 - Height = 22 - Caption = 'GO' - TabOrder = 5 - OnClick = Button1Click - end - object PopupMenu1: TPopupMenu - TrackButton = tbLeftButton - Left = 64 - Top = 120 - end - object IETravelLog1: TIETravelLog - About = 'TIETravelLog. Help & Support: http://www.bsalsa.com/' - EmbeddedWB = EmbeddedWB1 - OnEntry = IETravelLog1Entry - Left = 64 - Top = 56 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/TravelLogDemo_U.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/TravelLogDemo_U.pas deleted file mode 100644 index 768ddaafd9..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/TravelLogDemo_U.pas +++ /dev/null @@ -1,177 +0,0 @@ -//*********************************************************** -// IETravelLog Demo (2006) * -// * -// For Delphi 5 - 2009 * -// by * -// Per Linds Larsen * -// per.lindsoe@larsen.mail.dk * -// * -//Updates by: Eran Bodankin (bsalsa) bsalsa@bsalsa.com * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit TravelLogDemo_U; - -interface - -uses - IETravelLog, Controls, Forms, Buttons, StdCtrls, Menus, OleCtrls, EmbeddedWB, - SHDocVw_EWB, EwbCore, Classes, IEAddress, ExtCtrls; - -type - TForm1 = class(TForm) - BackBtn: TBitBtn; - BackDropDownBtn: TBitBtn; - PopupMenu1: TPopupMenu; - ForwardBtn: TBitBtn; - ForwardDropDownBtn: TBitBtn; - IETravelLog1: TIETravelLog; - EmbeddedWb1: TEmbeddedWB; - Button1: TButton; - Panel1: TPanel; - IEAddress1: TIEAddress; - procedure IETravelLog1Entry(Title, Url: WideString; var Cancel: Boolean); - procedure MyMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); - procedure Button1Click(Sender: TObject); - procedure BackBtnClick(Sender: TObject); - procedure ForwardBtnClick(Sender: TObject); - procedure EmbeddedWb1CommandStateChange(Sender: TObject; - Command: Integer; Enable: WordBool); - procedure FormShow(Sender: TObject); - procedure EmbeddedWb1BeforeNavigate2(Sender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); - - private - { Private declarations } - FBack: Boolean; - PopUpItems: array[0..9] of TMenuItem; - ItemsCounter: Integer; - Popupx, PopupY: Integer; - procedure MyPopupHandler(Sender: TObject); - public - { Public declarations } - end; - -var - Form1: TForm1; - - -implementation - -{$R *.dfm} - -procedure TForm1.MyPopupHandler(Sender: TObject); -var - index: Integer; -begin - with Sender as TMenuItem do - if FBack then - Index := 0 - PopupMenu1.Items.IndexOf(Sender as TMenuItem) - 1 - else - Index := PopupMenu1.Items.IndexOf(Sender as TMenuItem) + 1; - IETravelLog1.TravelTo(Index); -end; - -procedure TForm1.MyMouseDown(Sender: TObject; Button: TMouseButton; - Shift: TShiftState; X, Y: Integer); -begin - ItemsCounter := 0; - PopUpX := Self.Left + (Sender as TBitBtn).Left; - popUpY := Self.Top + (Sender as TBitBtn).Top + 50; - PopupMenu1.Items.Clear; - if (Sender as TBitbtn) = ForwardDropDownBtn then - begin - IETravellog1.EnumerateForward; - FBack := False; - end - else - begin - IETravellog1.EnumerateBack; - FBack := True; - end; - PopupMenu1.Popup(popupX, popupY); -end; - -procedure TForm1.Button1Click(Sender: TObject); -begin - EmbeddedWb1.go(IEAddress1.Text); -end; - -procedure TForm1.BackBtnClick(Sender: TObject); -begin - EmbeddedWb1.GoBack; -end; - -procedure TForm1.ForwardBtnClick(Sender: TObject); -begin - EmbeddedWb1.GoForward; -end; - -procedure TForm1.IETravelLog1Entry(Title, Url: WideString; var Cancel: Boolean); -begin - PopUpItems[itemsCounter] := TMenuItem.Create(Self); - PopUpItems[itemsCounter].Caption := Title; - PopUpItems[itemsCounter].Hint := Url; - PopUpItems[itemsCounter].OnClick := MyPopUpHandler; - PopUpMenu1.Items.Add(PopUpItems[itemsCounter]); - Inc(ItemsCounter); - Cancel := ItemsCounter = 10; // limit to 10 entries -end; - -procedure TForm1.EmbeddedWb1CommandStateChange(Sender: TObject; - Command: Integer; Enable: WordBool); -begin - case Command of - CSC_NAVIGATEFORWARD: - begin - ForwardBtn.Enabled := Enable; - ForwardDropDownBtn.Enabled := Enable; - end; - CSC_NAVIGATEBACK: - begin - BackBtn.Enabled := Enable; - BackDropDownBtn.Enabled := Enable; - end; - end; -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - EmbeddedWb1.AssignEmptyDocument; - IETravellog1.Connect; -end; - -procedure TForm1.EmbeddedWb1BeforeNavigate2(Sender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - IEAddress1.Text := Url; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/prjTravellogDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/prjTravellogDemo.dpr deleted file mode 100644 index b5c1c9dc04..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/10 - IETravellog_Demo/prjTravellogDemo.dpr +++ /dev/null @@ -1,48 +0,0 @@ -//*********************************************************** -// IETravelLog Demo (2006) * -// * -// by * -// Per Linds Larsen * -// per.lindsoe@larsen.mail.dk * -// * -//Updates by: Eran Bodankin (bsalsa) bsalsa@bsalsa.com * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -program prjTravellogDemo; - -uses - Forms, - TravelLogDemo_U in 'TravelLogDemo_U.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/FrmMain.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/FrmMain.dfm deleted file mode 100644 index dd27570b4d..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/FrmMain.dfm +++ /dev/null @@ -1,258 +0,0 @@ -object Form2: TForm2 - Left = 346 - Top = 114 - Width = 364 - Height = 184 - Caption = 'TLinksLabel Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object LinksLabel1: TLinksLabel - Left = 144 - Top = 62 - Width = 54 - Height = 29 - TextFlick.Enable = True - Launch.AsHttp.Address = 'bsalsa.com' - Images = ImageList1 - ImageIndex = 1 - OnLaunch = LinksLabel1Launch - Caption = 'Home Page' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsUnderline] - end - object LinksLabel2: TLinksLabel - Left = 240 - Top = 62 - Width = 32 - Height = 29 - AutoSize = False - Launch.AsMail.Address = 'bsalsa@bsalsa.com' - Launch.AsMail.Subject = 'EmbeddedWB' - Launch.AsMail.Body = 'About Link Label..' - Launch.Options = MailTo - Images = ImageList1 - ImageIndex = 2 - OnLaunch = LinksLabel1Launch - Alignment = taCenter - LinkColor = clGreen - DownColor = clGreen - UpColor = clMaroon - Caption = 'MailMe' - Font.Charset = DEFAULT_CHARSET - Font.Color = clGreen - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsUnderline] - end - object LinksLabel3: TLinksLabel - Left = 72 - Top = 62 - Width = 41 - Height = 29 - AutoSize = False - Launch.AsApplication.Path = 'notepad.exe' - Launch.Options = Application - Images = ImageList1 - ImageIndex = 0 - OnLaunch = LinksLabel1Launch - Caption = 'Notepad' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsUnderline] - end - object LinksLabel4: TLinksLabel - Left = 0 - Top = 121 - Width = 356 - Height = 29 - AutoSize = False - TextRun.Enable = True - Launch.AsApplication.Path = 'bad App' - Launch.Options = Application - OnLaunch = LinksLabel1Launch - Align = alBottom - Caption = 'Launch Error Demo' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsUnderline] - end - object LinksLabel5: TLinksLabel - Left = 0 - Top = 0 - Width = 356 - Height = 29 - AutoSize = False - TextRun.Enable = True - TextRun.Direction = diRightToLeft - TextStyle = ts3D_F - Launch.AsHttp.Address = 'bsalsa.com/forum/' - OnLaunch = LinksLabel1Launch - Layout = tlTop - Align = alTop - Caption = 'Forum' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsUnderline] - end - object ImageList1: TImageList - Left = 400 - Top = 16 - Bitmap = { - 494C010103000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000001000000001002000000000000010 - 00000000000000000000000000000000000000000000A15E5D00A5848300947D - 79009E8B8B00A48B8C00AC8C8B00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000626262006262620062626200626262000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BF868000D7B39A00D7B3 - 9A00C68E6500B57C6300B57C63008F766F008977760097838200A48B8C000000 - 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF - FF00000073009E9E9E009E9E9E00FFFFFF0048FFFF00FFFFFF0048FFFF00FFFF - FF0048FFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BC7F7500D3DECB00D5FC - D700E0F2CB00D8E8B100B0CD7600D8D38B00DCB99500C7A17D00A57050009783 - 8200000000000000000000000000000000000000000000000000FFFFFF00FFFF - FF00000073009E9E9E009E9E9E00FFFFFF00FFFFFF0048FFFF00FFFFFF0048FF - FF00FFFFFF000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BC7F7500D5DBC700E0FD - E300E5E2B000D0B25D00BDB95B00E3D07900D8D38B00E2E59600CAB57800746C - 65009E8B8B00A68F910000000000000000000000000000000000FFFFFF00FFFF - FF00000073009E9E9E009E9E9E00FFFFFF0048FFFF00FFFFFF0048FFFF00FFFF - FF0048FFFF000000000000000000000000000000000080808000808080008080 - 8000808080008080800080808000808080008080800080808000808080008080 - 8000808080008080800000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BC7F7500DDDCCE00D5FC - D700E3D07900C9964300BD904100CC974C00D2944D00D69D5200D2944D00C896 - 6800C8966800B28F66009A878600000000000000000000000000FFFFFF00FFFF - FF00000073009E9E9E009E9E9E00FFFFFF00FFFFFF0062626200626262006262 - 6200FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BC7F7500C2D7B600B6EF - B100DBBD6900DDAC4C00C49B4200CC9B4B00CC974C00CC974C00BD7B3600C68E - 6500D4946500DAA56F00AC8C8B00000000000000000000000000FFFFFF00FFFF - FF00000073009E9E9E009E9E9E00FFFFFF0048FFFF00626262009E9E9E006262 - 620048FFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BC7F7500C2D7B600D8E8 - B100ECB75E00DDAC4C00CDA64000DDAC4C00DDAC4C00CD9E4600C7923800D494 - 6500DF9F6800D2AC7C0000000000000000000000000000000000FFFFFF00FFFF - FF0000007300000073000000730000007300FFFFFF00626262009E9E9E006262 - 6200FFFFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00C0C0C000C0C0C000C0C0C000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BC7F7500D3DECB00E2D9 - 9700F1BB5200F1BB5200DCB14600EDBA4D00DDAC4C00CDA64000C7923800E1A1 - 6100E3AB6A00B399870000000000000000000000000000000000CECECE00FFFF - FF0048FFFF00FFFFFF0048FFFF00FFFFFF0048FFFF0062626200626262006262 - 620048FFFF0000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00C0C0C000FFFFFF00FFFFFF00FFFFFF00C0C0C000FFFFFF00FFFF - FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BC7F7500C2D7B600E3D0 - 7900F4C15D00F4C15D00E4B94800EDBA4D00EDBA4D00E2B14700DCA03D00EDAC - 6000E3AB6A00AA918F000000000000000000000000000000000062626200CECE - CE00FFFFFF0048FFFF00FFFFFF0048FFFF00FFFFFF0048FFFF00FFFFFF0048FF - FF006262620062626200000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00C0C0C000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0C000FFFF - FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BB837D00DAD6BB00F2D3 - 8200F2CC7500EEC76900E2C05200EDBE5800F1BB5200EDBA4D00E3AE3D00FDBC - 6300D2AC7C00AE8485000000000000000000000000002525FF002525FF006262 - 6200CECECE00FFFFFF0048FFFF00FFFFFF0048FFFF00FFFFFF0048FFFF00CECE - CE002525FF002525FF00000000000000000000000000FFFFFF00FFFFFF00C0C0 - C000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00C0C0 - C000FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BB837D00E0C59D00F2D3 - 8200ECD88800EED07C00E1C96600F3C66B00ECC56200E2C05200E3AE3D00FDBC - 6300B8A38B0000000000000000000000000000000000000000002525FF002525 - FF0062626200CECECE00FFFFFF0048FFFF00FFFFFF0048FFFF00CECECE002525 - FF002525FF0000000000000000000000000000000000FFFFFF00C0C0C000FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00C0C0C000FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BB837D00E4B98100F0DC - 9700F0DC9700F0DC9700E3D07900E3D07900E1CB6C00E1C96600EDBE5800E8B3 - 6C00AA918F000000000000000000000000000000000000000000000000002525 - FF002525FF0062626200CECECE00FFFFFF0048FFFF00CECECE002525FF002525 - FF000000000000000000000000000000000000000000C0C0C000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00C0C0C00000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BC7F7500EDC49600FDEC - C200FCE9B900F6E2AA00D8D38B00ECD88800ECD88800F2D38200F3C66B00D3A9 - 7500AE84850000000000000000000000000000000000000000000000DC000000 - 00002525FF002525FF0062626200CECECE00CECECE002525FF002525FF000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000C0817600D0968E00B8B6 - AD00E9CDB200D0D0C300D9BDAD00D8CCAD00E9CDB200DAD6BB00EDC49600B8A3 - 8B000000000000000000000000000000000000000000000000000000DC000000 - 7300000000002525FF002525FF002525FF002525FF002525FF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000AB6C61009D8D9300788C - 9C009D8D93007E8C9500A09198008A9AA3009D9BA4006DA6B900B19DA000839F - AB000000000000000000000000000000000000000000000000000000DC000000 - 730000000000000000002525FF002525FF000000FF0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000009563 - 65008E7C81008E5E5E007E8C9500A58483008A9AA300939097006DA6B9000000 - 00000000000000000000000000000000000000000000000000000000DC000000 - 7300000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000424D3E000000000000003E000000 - 2800000040000000100000000100010000000000800000000000000000000000 - 000000000000000000000000FFFFFF0081FF8003FFFF0000801F8003FFFF0000 - 800F8003FFFF0000800380038001000080018003800100008001800380010000 - 8003800380010000800380038001000080030001800100008003000180010000 - 80078003800100008007C007800100008007C00F80010000800FC01FFFFF0000 - 800FC83FFFFF0000E01FCC7FFFFF000000000000000000000000000000000000 - 000000000000} - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/FrmMain.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/FrmMain.pas deleted file mode 100644 index 588707fc35..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/FrmMain.pas +++ /dev/null @@ -1,72 +0,0 @@ -//*********************************************************** -// TLinksLabel demo * -// * -// For Delphi 5 - 2010 * -// Freeware demo * -// By: Eran Bodankin (bsalsa) bsalsa@bsalsa.com * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit FrmMain; - -interface - -uses - Classes, Controls, Forms, Dialogs, StdCtrls, LinksLabel, ImgList; - -type - TForm2 = class(TForm) - LinksLabel1: TLinksLabel; - LinksLabel2: TLinksLabel; - LinksLabel3: TLinksLabel; - LinksLabel4: TLinksLabel; - ImageList1: TImageList; - LinksLabel5: TLinksLabel; - procedure LinksLabel1Launch(var Success: Boolean; const ErrorText: string; - var Result: Cardinal); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form2: TForm2; - -implementation - -{$R *.dfm} - -procedure TForm2.LinksLabel1Launch(var Success: Boolean; - const ErrorText: string; var Result: Cardinal); -begin - if not Success then - ShowMessage(ErrorText); -end; - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/prjLinksDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/prjLinksDemo.dpr deleted file mode 100644 index 6cff612117..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/11 - LinksLabel_Demo/prjLinksDemo.dpr +++ /dev/null @@ -1,44 +0,0 @@ -//*********************************************************** -// TLinksLabel demo * -// * -// For Delphi 5 - 2010 * -// Freeware demo * -// By: Eran Bodankin (bsalsa) bsalsa@bsalsa.com * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -program prjLinksDemo; - -uses - Forms, - FrmMain in 'FrmMain.pas' {Form2}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm2, Form2); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/Unit1.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/Unit1.dfm deleted file mode 100644 index 87207672a8..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/Unit1.dfm +++ /dev/null @@ -1,352 +0,0 @@ -object Form2: TForm2 - Left = 357 - Top = 320 - BorderStyle = bsSingle - Caption = 'Links Bar Demo' - ClientHeight = 541 - ClientWidth = 554 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 329 - Width = 554 - Height = 193 - Align = alBottom - TabOrder = 0 - object Button1: TButton - Left = 0 - Top = 13 - Width = 137 - Height = 25 - Caption = 'Add Site To Links Bar' - TabOrder = 0 - OnClick = Button1Click - end - object Button3: TButton - Left = 144 - Top = 13 - Width = 137 - Height = 25 - Caption = 'Clear The Link List' - TabOrder = 1 - OnClick = Button3Click - end - object Button4: TButton - Left = 288 - Top = 13 - Width = 137 - Height = 25 - Caption = 'Remove The Site From List' - TabOrder = 2 - OnClick = Button4Click - end - object Memo1: TMemo - Left = 0 - Top = 64 - Width = 273 - Height = 99 - TabOrder = 3 - end - object Memo2: TMemo - Left = 280 - Top = 64 - Width = 263 - Height = 100 - TabOrder = 4 - end - object Button5: TButton - Left = 0 - Top = 168 - Width = 273 - Height = 17 - Caption = 'Get The Link List' - TabOrder = 5 - OnClick = Button5Click - end - object Button6: TButton - Left = 280 - Top = 168 - Width = 265 - Height = 17 - Caption = 'Get The Url From List' - TabOrder = 6 - OnClick = Button6Click - end - object ShowImages: TCheckBox - Left = 432 - Top = 8 - Width = 113 - Height = 17 - Caption = 'Hide/Show Images' - TabOrder = 7 - OnClick = ShowImagesClick - end - object ViewHideLinksbar: TCheckBox - Left = 432 - Top = 24 - Width = 113 - Height = 17 - Caption = 'Hide/Show LinksBar' - TabOrder = 8 - OnClick = ViewHideLinksbarClick - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 522 - Width = 554 - Height = 19 - Panels = <> - SimplePanel = True - end - object Panel2: TPanel - Left = 0 - Top = 0 - Width = 554 - Height = 29 - Align = alTop - TabOrder = 3 - object Edit1: TEdit - Left = 5 - Top = 3 - Width = 484 - Height = 21 - TabOrder = 0 - Text = 'http://bsalsa.com' - end - object Button2: TButton - Left = 501 - Top = 3 - Width = 48 - Height = 21 - Caption = 'Go' - TabOrder = 1 - OnClick = Button2Click - end - end - object LinksBar1: TLinksBar - Left = 0 - Top = 29 - Width = 554 - Height = 26 - AutoSize = True - Caption = 'LinksBar1' - Flat = True - Images = ImageList1 - ParentShowHint = False - PopupMenu = PopupMenu1 - ShowCaptions = True - ShowHint = True - TabOrder = 2 - About = 'LinksBar by bsalsa : bsalsa@gmail.com' - MaxCaptionLength = 15 - WebBrowser = EmbeddedWB1 - StatusBar = StatusBar1 - end - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 55 - Width = 554 - Height = 274 - Align = alClient - TabOrder = 4 - Silent = False - OnDocumentComplete = EmbeddedWB1DocumentComplete - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bSeite &p von &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.55 from: http://www.bsalsa.com/' - ControlData = { - 4C0000000D390000871900000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object ImageList1: TImageList - Left = 16 - Top = 56 - Bitmap = { - 494C010101000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 - 0000000000003600000028000000400000001000000001002000000000000010 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000E3D2BEFFD8A259FFD49A - 4BFFD8BE9FFFEFE8E1FFD8CCC1FFC2B0A0FFC1B1A0FFC7B9A8FFDCD5CBFFEAE6 - E2FFFAF9F7FF0000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000E1B067FFBF9D75FFFFFF - FFFFC69860FFA3764AFF755031FF68472AFF66472CFF5D4430FF634C38FF8A78 - 5CFFECEAE5FFF9F7F6FF00000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000EEB047FFCCB69DFFE6DF - D8FF8A582BFFC37E34FFDE943CFFEAA847FFF0B454FFDFB364FFA98751FF6349 - 2EFFB3A78DFFECE9E4FFFAF9F7FF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000E0AF61FFDD992EFFBB7D - 2BFFEB9B32FFE7932FFFE79030FFB36D27FFBA732BFFE69531FFF4B142FFFBD4 - 6CFF71553AFF8D765CFFDDD5CBFF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000E7D2B5FFF6B53DFFF3AC - 34FFE5962BFFDA8A29FF85582DFFFFFFFFFFFFFFFFFFE3C6ABFFD48632FFF4A8 - 3CFFD7B77EFF866C4FFFD7CCC0FF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FAF9F7FFE2B767FFF4B4 - 36FFE29526FFA46720FF4F331FFF6B5037FF72563FFF7D5739FF8D5B30FF8C5B - 2EFF916C42FF83654AFFB7A08BFF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFFFFDED5C4FFF4BD - 3FFFE59D27FFD0802CFFD0802CFFD0802CFFD0802CFFD0802CFFD0802CFFD080 - 2CFFD0802CFF654934FFAF9884FF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000F0EBE4FFFFFFFFFFECD7 - A8FFECAC2EFFE59F27FFDE9628FFE09529FFE0942DFFDD9537FFE7932EFFE995 - 32FFEDA142FF6E4E37FFC4B5AAFF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000F5F2EDFFCAAF7EFFFFFF - FFFFF5C642FFB88429FF6C4926FFFFFFFFFFFFFFFFFFB0906BFFBF832EFFE896 - 2EFFCF8B37FF856950FFD5CDC6FF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000D2BD8DFFEBCF - 91FFF5E5A8FFE0AF3BFF705129FF5A4330FF715638FFB67925FFE6982AFFE797 - 2DFFA36D30FFC1B0A0FFF4F1EEFF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000E5D9 - B5FFF6EED6FFF2DB8FFFE1B23BFFB68125FFCD8F25FFE5A029FFE49C28FFEAA0 - 2EFFA48666FFE3DBD4FFFFFFFFFF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000E6D8AFFFF3E19BFFFAE981FFFBE96BFFF4CC45FFF8CF4BFFDDB350FFB497 - 6FFFFFFFFFFFE7C98AFFE8DECFFF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000ECE6DBFFDED2BDFFD1BC9CFFCDB593FFCEA966FFEFD285FFE9C5 - 7CFFE8DABFFFE1C286FFECE4D9FF000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000EDE3 - D3FFEACF9CFFDFD0BBFF00000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000424D3E000000000000003E000000 - 2800000040000000100000000100010000000000800000000000000000000000 - 000000000000000000000000FFFFFF00FFFF0000000000008007000000000000 - 8003000000000000800100000000000080010000000000008001000000000000 - 8001000000000000800100000000000080010000000000008001000000000000 - C001000000000000E001000000000000F001000000000000F801000000000000 - FFE3000000000000FFFF00000000000000000000000000000000000000000000 - 000000000000} - end - object PopupMenu1: TPopupMenu - Left = 80 - Top = 56 - object AddCurrentSiteToTheLinksList1: TMenuItem - Caption = 'Add Current Site To The Links List' - OnClick = Button1Click - end - object RemoveTheCurrentSiteFromTheLinksList1: TMenuItem - Caption = 'Remove The Current Site From The Links List' - OnClick = Button4Click - end - object N14: TMenuItem - Caption = '-' - end - object ClearTheLinksList1: TMenuItem - Caption = 'Clear The Links List' - OnClick = Button3Click - end - object ShowTheList2: TMenuItem - Caption = 'Show The List' - OnClick = Button6Click - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/Unit1.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/Unit1.pas deleted file mode 100644 index 024c6936ad..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/Unit1.pas +++ /dev/null @@ -1,168 +0,0 @@ -//**************************************************** -// LinksBar Demo * -// * -// * -// By: * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DocUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -//I used 2 methods to get the info : -// 1. StringList (So you can SaveToFile) -// 2. String so you use it simple Add procedure -// Both of them do the job for every parsed item. - -unit Unit1; - -interface - -uses - Classes, Controls, Forms, ComCtrls, OleCtrls, StdCtrls, ExtCtrls, - ToolWin, LinksBar, ImgList, Buttons, Menus, SHDocVw, SHDocVw_EWB, EmbeddedWB, - EwbCore; - -type - TForm2 = class(TForm) - Panel1: TPanel; - StatusBar1: TStatusBar; - Button1: TButton; - Button3: TButton; - Button4: TButton; - Memo1: TMemo; - Memo2: TMemo; - Button5: TButton; - Button6: TButton; - ImageList1: TImageList; - ShowImages: TCheckBox; - Panel2: TPanel; - Edit1: TEdit; - Button2: TButton; - LinksBar1: TLinksBar; - PopupMenu1: TPopupMenu; - AddCurrentSiteToTheLinksList1: TMenuItem; - RemoveTheCurrentSiteFromTheLinksList1: TMenuItem; - N14: TMenuItem; - ShowTheList2: TMenuItem; - ClearTheLinksList1: TMenuItem; - ViewHideLinksbar: TCheckBox; - EmbeddedWB1: TEmbeddedWB; - procedure ViewHideLinksbarClick(Sender: TObject); - procedure ShowImagesClick(Sender: TObject); - procedure Button6Click(Sender: TObject); - procedure Button5Click(Sender: TObject); - procedure Button4Click(Sender: TObject); - procedure Button3Click(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure Button1Click(Sender: TObject); - procedure Button2Click(Sender: TObject); - procedure EmbeddedWB1DocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); - private - bFirstTime: Boolean; - { Private declarations } - public - { Public declarations } - end; - -var - Form2: TForm2; - -implementation - -{$R *.dfm} - -procedure TForm2.Button2Click(Sender: TObject); -begin - EmbeddedWB1.Navigate(Edit1.Text); -end; - -procedure TForm2.Button1Click(Sender: TObject); -begin - LinksBar1.AddToLinksList(EmbeddedWB1.LocationName, EmbeddedWB1.LocationURL); -end; - -procedure TForm2.FormShow(Sender: TObject); -begin - bFirstTime := True; - EmbeddedWB1.Navigate('http://www.bsalsa.com'); -end; - -procedure TForm2.Button3Click(Sender: TObject); -begin - LinksBar1.ClearTheLinksList; -end; - -procedure TForm2.Button4Click(Sender: TObject); -begin - LinksBar1.RemoveFromLinksList(EmbeddedWB1.LocationName); -end; - -procedure TForm2.Button5Click(Sender: TObject); -begin - Memo1.Clear; - LinksBar1.GetTheLinksList(Memo1.lines); -end; - -procedure TForm2.Button6Click(Sender: TObject); -begin - Memo2.Clear; - LinksBar1.GetTheLinksURLs(Memo2.lines); -end; - -procedure TForm2.ShowImagesClick(Sender: TObject); -begin - if ShowImages.Checked then - begin - LinksBar1.ShowImages := false; - LinksBar1.CreateLinkButtons(-1); - end - else - begin - LinksBar1.ShowImages := true; - LinksBar1.CreateLinkButtons(0); - end -end; - -procedure TForm2.ViewHideLinksbarClick(Sender: TObject); -begin - Linksbar1.Shown := ViewHideLinksbar.Checked -end; - -procedure TForm2.EmbeddedWB1DocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); -begin - if bFirstTime then - begin - LinksBar1.AddToLinksList(EmbeddedWB1.LocationName, EmbeddedWB1.LocationURL); - bFirstTime := False; - end; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/prjProject1Demo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/prjProject1Demo.dpr deleted file mode 100644 index f505d1647c..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/12 - LinksBar_Demo/prjProject1Demo.dpr +++ /dev/null @@ -1,49 +0,0 @@ -//**************************************************** -// LinksBar Demo * -// * -// * -// By: * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DocUMENTATION. [YOUR Name] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -program prjProject1Demo; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form2}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm2, Form2); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/Mime_unit.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/Mime_unit.dfm deleted file mode 100644 index 57958b7bf809dc76895b4c00bb13e04db00ca18e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2432 zcmai0&5s*36nADeGx^x;Za=6>LEuwpw<5b)D2Q%_$Y(cFvI(8pE=5S-%s9!Yjy)PX z&6X2?0zw=R;&0%N#DNj($anJ~8vyM;m#FlyZx zk;Qb1#stGbZ_t6=fCwDHHlDM5ixC#tMUONE?II6vb{Q45)(k})3wyiW={8RK?x(Gz z#sjD0mh^6XX45050rlC^#b=@%Z)nxV-^KXp7|pR&892~EltTwc!9<^T#8ZOHU~5SH zR)mqj!^p=`p)g`RPzKvuA#=P4W7@)0T535SBG@l%4rz-pjz3)B=&8M>+>kw6L+Z@f z(k`giYE>BpXPEF2j(XIa8K0Guor#4NV7VhiF|p#g9y`+j%9lp!%CAya8eYCZf+@B0 zh)98gi^j3R29PLyG?pmwtWnHgG|Z8Xh;cs&h*4R^V|%y=MYs^q5m7*=cb~yI(AK;f zTa&`P`#emgM->Q9L2S3V5Q5S2SkRvG8^uCr$s0zDRZ2`6r&!lkCSC3`+qV-2iW!DJ5(wTLMVNC)R1nZa zk<(MyGC6K#7uf)y!$Y}jh4Xk(Uo0?!kE z?QD%uB)QuR+QESNxR~7{AM@l;l9!&Foz_U1REi=Mu~>Q>L4H|A7fCCm>48r6Fx%nN9c@Jqf0=d>z;~ zGG+B=_O7-Au1ar9L`0UQNO%jut=#c;n=Ppd_%JTgyu6jZ=*`g-^VQ?Sz{ia5q`S@g z4qH&4UvA4n-8sV&4mUgzJi#AEz0p&H73wbb`sPT>Y!Ho-r9;m*wCUyNnDVa-a zGOt`H(`2&F&DX@PoD)03NcI!!N_ANsJ2(&+RzvuNQCJp^i`>iYg|Jsob*KYWb!NE|rWM zu+IZR(B9j%eRxxnEtDr^ln&v*>2=^cwf#e=+bf61F1%B#A42D0{qR<~CF343(w23j z^qu5PU;aLM4}ia}$;AtXl1WESF8=uK6!1I0Uiv;LfZMgp<3h5jj?zhMiz#h>o$_zRY2#5wX&vKL$<&SdAfveK)9yfh!Kf)IfiIx7ahk#E YN>P%Z7mSdm{K~N{&ZVwdh8$nwUp-XTq5uE@ diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/Mime_unit.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/Mime_unit.pas deleted file mode 100644 index d9e1b95c67..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/Mime_unit.pas +++ /dev/null @@ -1,160 +0,0 @@ - {*****************************************************************} -{ } -{ MimeFilter interface Demo } -{ } -{ By Eran Bodankin - bsalsa } -{ Converted 6 May 2007 bsalsa@bsalsa.com } -{ Last modified 6 May 2007 bsalsa@bsalsa.com } -{ Version 2 } -{ } -{ Documentation and updated versions: } -{ } -{ http://www.bsalsa.com } -{*****************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 4 conditions: -1. In your web site, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit Mime_unit; - -interface - -uses - ComServ, Classes, Forms, SysUtils, ActiveX, UrlMon, StdCtrls, OleCtrls, - SHDocVw_EWB, EwbCore, EmbeddedWB, ExtCtrls, Controls, IEAddress; - -type - TForm1 = class(TForm) - Panel1: TPanel; - Panel3: TPanel; - btnInternet: TButton; - btnLocal: TButton; - EmbeddedWB1: TEmbeddedWB; - edtIn: TEdit; - edtOut: TEdit; - Label1: TLabel; - Label2: TLabel; - cbFilter: TCheckBox; - IEAddress1: TIEAddress; - Panel2: TPanel; - Memo1: TMemo; - procedure EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); - procedure FormShow(Sender: TObject); - procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); - procedure btnLocalClick(Sender: TObject); - procedure btnInternetClick(Sender: TObject); - private - bConnected: Boolean; - procedure RegisterFilter; - procedure UnregisterFilter; - procedure SetFilter; - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.DFM} - -uses MimeFilter; - -var - Factory: IClassFactory; - InternetSession: IInternetSession; - -procedure TForm1.UnregisterFilter; -begin - if bConnected then - begin - InternetSession.UnregisterMimeFilter(Factory, 'text/html'); - if InternetSession <> nil then - begin - InternetSession._Release; - InternetSession := nil; - end; - if Factory <> nil then - begin - Factory._Release; - Factory := nil; - end; - bConnected := False; - end; -end; - -procedure TForm1.RegisterFilter; -begin - if Succeeded(CoInternetGetSession(0, InternetSession, 0)) - and Succeeded(CoGetClassObject(Class_StrMimeFilter, CLSCTX_SERVER, nil, IClassFactory, Factory)) - and Succeeded(InternetSession.RegisterMimeFilter(Factory, Class_StrMimeFilter, 'text/html')) then - bConnected := True; -end; - -procedure TForm1.SetFilter; -begin - if cbFilter.Checked then - begin - MimeFilter.StrIn := edtIn.Text; - MimeFilter.StrOut := edtOut.Text; - end else - begin - MimeFilter.StrIn := ''; - MimeFilter.StrOut := ''; - end; -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - EmbeddedWB1.Go('http://www.bsalsa.com/forum/'); - RegisterFilter; -end; - -procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); -begin - UnRegisterFilter; -end; - -procedure TForm1.btnLocalClick(Sender: TObject); -begin - SetFilter; - EmbeddedWB1.Go('file://' + ExtractFilePath(Application.ExeName) + 'demo.htm'); -end; - -procedure TForm1.btnInternetClick(Sender: TObject); -begin - SetFilter; - EmbeddedWB1.Go(IEAddress1.Text); -end; - -procedure TForm1.EmbeddedWB1BeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - IEAddress1.Text := EmbeddedWB1.LocationURL; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/demo.htm b/windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/demo.htm deleted file mode 100644 index 9ba5c01748..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/demo.htm +++ /dev/null @@ -1,43 +0,0 @@ - - - - - Page 1 - - - - - - - -

-

- - - -
 
-

 

-

-

This demo demonstrates some of the powerful features in a - temporary or permanent pluggable NameSpaceHandler.
On this document, we are replacing the strings from the EditBox in a local /remote html file.

-

- Instructions:
-
-
Check / UnCheck the Filter CheckBox and, load the file.

-

Delphi

-

Delphi

-

Delphi

-

Delphi

-

Delphi

-

 

-

For info:
- http://msdn2.microsoft.com/en-us/library/aa767916.aspx

-

-

-

 

-
 
-

 

- - - - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/pnh.gif b/windows/src/ext/embeddedwb/Demos/Various Demos/13 - MimeFilter_Demo/pnh.gif deleted file mode 100644 index 96146927694bf6c7995ae1c28099eb73544131e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8795 zcmWkyc|6mNAOCJPw(obCYmQW-$lXY#Qs&H+=15wOMM|S5MD?hcGiNO%x6L{CT)8tc zH%;WK7%D1hx|G82`Mv-6{Pq6teZ5|vlU5c6M=pfI_5kYu5K=$&a_L(}Mn=o{+nk)7 z+1c63%F3Df_Yce4?lEgSJ3E7z?de^w9Wr~Sr>9d>Q{xNkdwP0aym*n>yErs7bSAt1 z-Me>XLkqfz+`_^_x1!NgsCihfgE2D?-y*B_$>27{kR?wFe&#G_-eR z6|j7Ap57_t2IRKfDCj6HE#=OA@yzKe@0)HN7-zN)X4Z3!(*_HAUO%qsY~v2bJ)JA6 zY3>~viz#lso!?@YGs0vtFJ-naepx?q|5;Jzi>R96gxZ0T@u|GLyu`%B@|p&dhh6^` zciE+Nksf#Z34>mp{%Uz&6_u)qoa$9i;azqU%!5>t*!n3{rk_KKPM+A+uPe)TU%>tYJUIz{q*V6 zj~_p-udfdb47`8;{@b^2iZ)VjP-S0?m9u8-53Z8V9v~ah!w$$Q#x3{;Iej|YYL+k(N|Cs<# z+rTzj(UQ&Rj6_Lkxc0G`&+cLOSZ7<-HrWx%Sr< z4L&A#4P;x@6%VJw$jh&rub=P86KeeM7ybP`G3P{rg7i#;k5PiHkb!nzWwcX~MV-m` z@5p6`Libb7?E^v7zEI!4rEY^aFj;nw5B>0E{!DgjK7Dn|3F5BqtJr=&(GE>9DPbyo zoXxDpIYgN6-+`Cb|IWLIN#Rc8ZpjTSbnV({`g9x}Pi_h@_F7q2*M2ogy@G|_CnS+Q zn*x8gq&8mau%YghaEy+-*%?~AIX`jLRrzZJIdNWNtA4Jy*UP^YocM6<-524o@@;R5 z@9mP|=bJ|~PTwsIUTKOw;^3>fzB;S;Cs<+eTDQjKI?Fx7S_Bl+87;DRZ0ODw2cD=o zb~SKJHJ#;+((0d*OuU(W*YkX&xW#hzJ-<;xl4i5u=MJGQAHY_vhxGy-%D;P(Nxq{f zbSkl@=I8vb-l%+~d-%#JWi9p!b3#|iQ<-@(3sDemG)vD1_GPbp9Y|AWy%f`Y#%E3( ztaYI$YCL`&6sJLL$3xnjDZNGFhOU}T#^qvp`yA?<`R6;Y7%o~9vPgXks9JWQGV|b} zmSVC;g#$;whvMM25AzQj)MWQrd7a#(1hTZs{TLG(xAK3Fs&v~<)6|8#wuT#8X3OiJe@v_~AeIzq+_S82_StWLk38c0hyYW)Vr(C5 zboO$4@TC2<+N8ZI^*@|l)1&g!Fz&xfClsYto)jl<6}||9^;5R>Iu-q33^}j)cM*r7 z-K;Z_I&AFa!B!a;Q|p8Ea*GxQepgQQs3ZpOr1@?Q&ByG|t5(_gXY#1_5AX!o}z(nzb)mG!DdkdT;Tg^yG$fi4z z>GRZwb%T0hil)LdRH+APMx@kGzG&8giRXt7BaAF?0lyrLHLAxM6Z>zkZ{Flb?g3Zf zK+{2=_l`Nlo{{>8Fh+R3G-!$3=l@PT#E=xWg+=Zo%>xZ=CE0Wr+rU6rmmPw5!;r_p z{Dslfk9Zy{G-ZP4mb*UF!*^0MqJ)bJ(;%#nR1+?!7VIb^IuU$Y+9mVD7uY9_PlEIK#AB{Zqg$k19zn|5 z7|ZkEWFYMLSKe+R9?A7dc(b~5zKcPeUdIP*-jSSNQaTOQ+X8Eyey`GYc@Tx zMbOz-Q7C-zmS&EI$${Emai_|>g`Lc7cm1tFoXTEs-7?@x6&N)7DC;HMu(!coED67a-IH=Y z)kW`yb2R262WZ1bBjUs3)miU$DFaB6@xX29RJ{qDDi0(UkHv{cn;187=J(bLFz3`3 zA>U3RE&7E7%2ygwESg2$n~A{<16Z6IMM4uDhFh;}#QX936JBk`48=h!8_$H=6{E@HfU45F2;+*_9{mC2gEN*iIE%if$j72(9}8(e-P_xD1^d+3~MQm{>fFs!P0oow#H)ccibMD9qfWlw?0- zBAZ~LUvMX798gI^1v%mOw1KIb4_=9(4LYa%_YU?jGKu6r;Shz!CV!v3qPk;DO zME8D;*&hyo;*Lo+AmjrGU$Jdlkljwlt(HL`$#k{BrBl*@klWy%hQdo|-dx9!m5GsZ36(sv#4H^664=6Bd!6g>CePH5Z{vX`t@}c$o$qWdoKB zTs{_7M}XL>0GtRY^Pm!cM7*h}9s|eV|Hr)anE--x^h6L?LJzhj!X^O>v*fx(F;1Qq z4kw6HjsI<-;B6>i5fPj#h6?ClBn^OQaB2-uO#>x)-c~$l!W-DdfInOEs}F>hmc%o# zuo1kY2Q5OQFG71++?ED%d16sLsAGJQc0Rg+gRUgPUNCSd3NS>}%w&hfO9hLmz$ADy zak+5$@26E{ga-vsK0Pd#k9OLYfsMZxkLg7>5MxRhxEmx)Js&($LM~iFAb3JUB`nC#ZTdZ z<8;wciwIS<7)_U${VZtbMV(tdz*b>gA4d%_dUs18YED9E`GaT!P=W(7@NoPRdI|y7 zrGjssp^tjQIDB)L7ob}jyn_>w&rrz#e23_0QTpv{&Vwx!T~}3D=mS-l7cF=%j;Dpo z^I>iHo2`i3eM{(SHhro1KPy0^eDEn<_E-t7h8VhjmzYXKyI$N2Q%}cT&EHpVkcB=tt z&PR*Nrd3bS2l1kAJt@i@OfDUrLA$L%qv@Q3RkOn~IS}D;biWH?DE;A%b0LNWKo=3_ zf(~rJKOUo9f3*)g`%6@g6`sq1el5YY_$lY(j8}g_Am!d$HP|QsQ5iU`CP*j)(ZEON z(^FVPQEEU4gLqxjAM7j59zs7<_J?eVJ~n)~CPU~GC6XZkC$<4!ChBw{J9|?EJnsWE z60^66$Qgm?90_U7Mp%=Ob9|vA4IqaO?L8OS*9&)4L(1{R9T|XIJ|bxv%r3@VWg|4% zK&U`;i;t)wL3yR{k@v98bi}i>xfyh$(HNQ#I`6Ah-p{za6WFY30c5~{yOJ2b^Kd;2 zkZlplU_)KB+$}&Xg9o1e7xij7XYPaemu_^tBc!~~i$w%08HbaL5nq3c&XDqEXnCP* zs7`oFVxP#;2F5{M4+80YJ9YC7M)wl#t4-%e}8wVBwp75zzja~ zWe`+CI?m#OngZtFRO0HD{BP&-*0(eAGV!_8hrrtrPW#?10o4dgK& zc(x$8gzs^20BZdpo~!`n6TxvGp-~*v+ly%@f%=VrFfH0i1-z^PwbQ{70!H36(h3Pq z{R(y|!HHYC-I)Qy`QoQ}A{`t^<|ZUf7LoUd+88A#&Ov9URptQw5~66K!qt<_m2VXE z=M<`@(*27$nAIS-2L8?#Ug-Rj@><~&<;2P@Lc~r|MQU!JW+|?z6lj^pc1U+5FTWafIc?$<_GZ$8^AyxrsE@8m|ncaE^hxXIbIcgWfe8} zd%+)5q+G&-LCPO93?zu|sNoM_7RX>Vr=~<5DlIn8Xeosg zinZto_ha=X8PMUMWeqbGiuAJb5RBfBG6n;EOpx0*4UQ0@F^0%Ph5wco(T)e{n$4-7 zDwHYFS7}DQWH6KO0msAhv5i{{xH2C-PO2K?pK+r6*R>f&^8ap;kSD&`<@;A3Wx&w@ z2$C>3A}07;a`g<F5|{9=Zlj|&K8k6QsnRWH7E3~R0+4hM2ml+2#tyWUdw(!0MXk?qR~fWc z!C>pR9c>wG=+SMcl!WQU?y_)QkZB0%LtsGg_U5mL6r7K#}JMervX zeArGFj!yzv3=EGCUgL$;nHb-G-5aLZ*DM1$Z~sDNGa_y;qkCCStaXSALqzlIYH64% z0KG*=e3;76Vz{|6aAAa0Vmb;LFV;?IV2dUuOh-}Yk@<|OA^JUuCU`ZkA}z7M zkAlh0hBpG>xk=&Mjrab@_Mh~PmLtN?s6hQ#U@<`S1?99WJ^V{5x`-ZZNdX#YU{Ka| z(@zNQ5^RSPriI`sCk>b9qjzO;ey#VdYQeqRQo1WJV+72xI(R!lUqUgXk^!YU=qwGw zdrR&O`wfg{548JpHz(RTX*5RvYL=7?-&X~Q9#Uy)nHDCWgm=(HDGb<{ zx0^vxlpGD{;`eGP_tnE+I-Gjx3xg?>3N@iY1Cp38GrYYO=SmYo+(iQXOR79bi_$t1 z3`$@S*sEPT1t@Z3lge?-bYzvmguWOXd?A3GS-4X~pw)X^l#a^foj!&y_&dOS1$GrM zFr$EXk~&6=0}lF~y6!fa=|B0eXqV8m@E;D8=|2*!jl6PY!bcmT4o~FrVMqB@NuSXd zj!)!U!jWXL%S2c$V7o;S!Z9#Y*oZA2D#*WNmqKqN2VDTvYy2%L|6|w2>&5wFG>i31 zme7OS@5S9IAVqsZEn)Qdinu0m8VO+7g3(4`uwghs<+!L2{+Klfqan)8tqf*p&k)&7 zt-K08y{%7}WJ3%NrguFhlLYN^?>_@9 z$nlU3Z0N35U7kQ@a-Q8KxH+*AHu!>df+mB3b6FKXs&nl4EVOHzkJb@eq>eWA zi^A*SVtQqZSBfy-3xWGvN!A269TJp56wNfy`d7DJ0~@F!3XL&ACQlPB=q#d)dv!1C z<-VS#qd@|__B&L-0eQUHG27N(pfF`)mQQv%>PHfw_}aAL#r`67B6SDPAvx^2WQs@*AviT4$P_qy6^($8@)4=BLp zkqbS?FC4MVw=*8g4yFrEv;X@BuuclzH7g4c9wJj8(V@gys*=bTy7wRy^3KTqajbLf~e?vQ;OW`K^FGr^uTha~A>3D!$OP?$+WVR=Z~XXr-8 z{n}#SG#M1YOC91mcF(*Kn_W1XUkth+dxe9$JGLB=?uu$~AjB#*o8@9+v7KEsqcA1JcN%ddhTxm6pCQTBOer;)mZWL;XiVf` zk7KeWi~7eT5C{FV66n^(8os4Rdy+-MP4BrCQC}|9`@Ph4eY`cyMcACxJk7Xeuf|&$ z>p0cqGrWNupq1KEQ*^Fw=tspSmO8AJJtC0RTx!);UUYwY+2c^sLSNjcWuhu1A99iM z9wyC7+|e5$ZROy&UF2Q8QB~&4z_%_Fv8x^%6JH6 zK6QmOh>vtJoPR6ZaP*ILxSQVm-l8|5x<#@P*6J!!&>kKae*Wl(%Pk+P2Jc7s((F}a zeVmy+0BjeQ7Hunis|Y6q=)Ze*-t!!fHgaP=It7(|!CTHbJC5?$>5@7J?(Eb?O2-^t z5tu@i#>gytZ)+0vRX{qrMJmdd9IY^OR3Jv^d9-km#!40O&S=EMcSr?!%F_qTf1m4sj=3Z zBN8Hbi^;yod+ZSg!x5wO*O5iCWkVNLaU|>CA7va>|4C|hoT5fY*tZlE%lKuF7Rfoe zOT3eIv^&B|b+UNK<=T{~Ou7cOdn4s-b!xoj(4iS|NXNi2nOXhGPe z2RWm+rDWWEj`T!aKd&@>G4;%)>38mq#zpBV>Xux5qG7=K)Rl?)hd_+(*IUx)OKUp& zW6uhEFB~paicam134E1G4plOTyJgEqD@2k{s7Z0lYdCTqWt+XS7k!E>!o3T*MPq?y zjm>+V({w8f?(Nyi^0ceyJQ(4epW7pIQHzIsgd#oUWO!OkKk|0`=Ys?hVdTjFl;Y@q z?rZJIQEoW3a4jU&m(p*3-Pfp7B9Jmf@pJ;@Stc0Ao?hJQ_`}lLuK{X4Qk8y(Ukcq9V zR-dLaUd5-|{Q8L^%)GWaCP|~TXk9;_ zr#5_LY1{Z7eMWeOPqu?xA!#SF&_3~up&oRaV|9EJ7G)$I4%F}w8iB;qw`ULJ1r0{E z#Op#}{kQbq?C1lE{-WMa&(5`8S<=c2z_|ETJ|06M^?KA3JcIVZ?@{xRbY^^}Ov&zf z#moC2%*VUl$={vVXRcT4f)QbN!Er8o4w0BU=sTr$bR1CHuZ@krge{O~vWfa-KA7`Q z>a%xl`dC`&I?QpUC1px^`?|qJ_0ykP9LaYMGP_V3 zrsXy9@V3(>Otv{8a1^6u;YDSlxVnKy;)BIT(j{;C!2FJ#c_1cKcwx8zVaw*H(bAyX9CQ)Qa| z5*S;AkZhG@jAnM$qPWN5E~y^Ru>IK=&bC>~Om9~RzE^d|U%?arCYIsSETgwep5>SfT?{Qo-mf_`G1GK82Nk1zYsCxwDxws*{7=MA(GMcx8C@1VgsiI- zpsT*Aa}NiZTUokv$`vlD5%hUY}Xs#&#W62=GcD(~~Lh`niu8QaXq755FU z8FJ9zohJ$`(xEz0sRS3pV-5;8*zC$rXV1zNOm+ADbKsWZio#s;+fW{_y#S6B-;InJF!GyhH zU+#WWnEmRm(f;{O-RZuN{`5{YeOF_Q7v>qP5E~t-jECv`{4uhH`!~4#jaP@lGo1S& zZCyp%#RndqQcBf9Othc*(v5|Q(U%QT+V{VF=sqTA7xpda>eDmX_gbe+s~WoR>HMg= zX4uS86)3@z`cn0tM<$ihVjno%JYx&k{+qJIM(7e)$$bgNe{cr97 zyN`3u46Mf`Y<$m%^>|XnIZTDv9;p1x^+kZC4TAOze;o}DuZ8}b&VlKuC|DKP!K+Uk_cMBhQ@Q{ojWde zO4u6jdVOq%G!gD') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.52 from: http://www.bsalsa.com/' - VisualEffects.TextSize = 0 - ControlData = { - 4C000000B43A0000B21E00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object StatusBar2: TStatusBar - Left = 1 - Top = 319 - Width = 585 - Height = 19 - Panels = < - item - Width = 400 - end - item - Width = 70 - end - item - Width = 50 - end> - end - end - object Panel2: TPanel - Left = 0 - Top = 339 - Width = 587 - Height = 224 - Align = alBottom - TabOrder = 1 - object RichEditWB1: TRichEditWB - Left = 1 - Top = 1 - Width = 585 - Height = 222 - Hint = - 'File Name: Untitled. | '#10#13'Position: Line: 1 Col: 1. | '#10#13'Mod' + - 'ified. | '#10#13'Caps Lock: Off. | '#10#13'NumLock: On. | '#10#13'Insert: On. | '#10#13 + - 'Total Lines Count: 0. |' - Align = alClient - Font.Charset = ANSI_CHARSET - Font.Color = clBlack - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - ParentShowHint = False - ScrollBars = ssBoth - ShowHint = True - TabOrder = 0 - WordWrap = False - AutoNavigate = True - EmbeddedWB = EmbeddedWB1 - FileName = 'Untitled' - HighlightHTML = True - HighlightURL = True - HighlightXML = True - RTFText = - #23675#29810#12646#24924#29550#23657#25956#26214#31536#26204#28271#29812#27746#23675#12390#26204#26990#23660#25446#24936#29554#29797#8240#24916#28520#24941#32059#3453#31498#25436#27759#29295#25204#8300#23611#25970#12388#26460#25970#28261#23600#27746#25973#15152#3453#23562#26998#30565#26987#25710#23604#25461#23601#24944#25714#25436#12646#27740#28257#12903#13616#23605#12390#26204 + - #12659#23606#24944#3442#32010#2573#12288#29232#10076#12336#23668#12327#26160#10076#12336#23601#12327#23600#23644#12327#26160#10076#12336#23650#12327#26928#10076#12336#23652#12327#26928#10076#12336#23667#12327#23600#23644#12327#24880#10076#12336#23662#12327#29488#10076#12336#23657#12327#23600#23644#12327#25648#10076#12336#23653#12327#26160#10076#12336#23654#12327#12336#10076#12336 + - #31580#10076#12336#23644#10076#12336#23654#12327#28464#10076#12336#23662#12327#29744#10076#12336#23668#12327#25136#10076#12336#23660#12327#23600#23675#12327#23600#23644#12327#26160#10076#12336#23600#12327#23600#23644#12327#26160#10076#12336#23662#12327#26928#10076#12336#23660#12327#8240#10076#12336#23636#12327#24880#10076#12336#23656#12327#28464#10076#12336#23661#12327#24880#10076 + - #12336#23611#12327#23600#23677#12327#23600#23677#12327#23600#24944#3442#23562#12327#23600#24944#3442#23562#12327#23600#23675#12327#23600#23644#12327#25392#10076#12336#23663#12327#27696#10076#12336#23663#12327#29232#10076#12336#23668#12327#25136#10076#12336#23660#12327#8240#10076#12336#23611#12327#23600#23644#12327#29232#10076#12336#23653#12327#25648#10076#304#128#240 - Statusbar = StatusBar1 - SupprtMoreThen64KB = False - TextAlignment = taLeftJustify - HideCaret = False - Themes = tDefault - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 563 - Width = 587 - Height = 19 - Panels = < - item - Text = - 'File Name: Untitled. | '#10#13'Position: Line: 1 Col: 1. | '#10#13'Mod' + - 'ified. | '#10#13'Caps Lock: Off. | '#10#13'NumLock: On. | '#10#13'Insert: Off. | '#10 + - #13'Total Lines Count: 1. |' - Width = 2000 - end - item - Width = 50 - end - item - Width = 50 - end - item - Width = 50 - end - item - Width = 50 - end - item - Width = 50 - end - item - Width = 50 - end - item - Width = 50 - end - item - Width = 50 - end> - end - object MainMenu1: TMainMenu - Left = 56 - Top = 208 - object File1: TMenuItem - Caption = 'File' - object New1: TMenuItem - Caption = 'New' - OnClick = New1Click - end - object Open3: TMenuItem - Caption = 'Open' - OnClick = Open3Click - end - object Save1: TMenuItem - Caption = 'Save' - OnClick = Save1Click - end - object SaveAs2: TMenuItem - Caption = 'Save As..' - OnClick = SaveAs2Click - end - object N20: TMenuItem - Caption = '-' - end - object Print2: TMenuItem - Caption = 'Print' - OnClick = Print2Click - end - object N1: TMenuItem - Caption = '-' - end - object Exit1: TMenuItem - Caption = 'Exit' - OnClick = Exit1Click - end - end - object Edit1: TMenuItem - Caption = 'Edit' - object Find1: TMenuItem - Caption = 'Find' - OnClick = Find1Click - end - object Replace1: TMenuItem - Caption = 'Replace' - OnClick = Replace1Click - end - object GoToLineNumber1: TMenuItem - Caption = 'Go To Line Number..' - OnClick = GoToLineNumber1Click - end - object SetSelectionAsAHyperLink1: TMenuItem - Caption = 'Set Selection As A HyperLink' - OnClick = SetSelectionAsAHyperLink1Click - end - object SetWordAsAHyperLink1: TMenuItem - Caption = 'Set Word As A HyperLink' - OnClick = SetWordAsAHyperLink1Click - end - object WrapLongLines1: TMenuItem - Caption = 'Wrap Long Lines' - Checked = True - end - end - object Fonts1: TMenuItem - Caption = 'Fonts' - object SelectFonts1: TMenuItem - Caption = 'Set Fonts' - OnClick = SelectFonts1Click - end - object SetFontColor1: TMenuItem - Caption = 'Set Font Color' - OnClick = SetFontColor1Click - end - object SetSize1: TMenuItem - Caption = 'Set Size' - OnClick = SetSize1Click - end - object SetBold1: TMenuItem - Caption = 'Set Bold' - OnClick = SetBold1Click - end - object SetItalic1: TMenuItem - Caption = 'Set Italic' - OnClick = SetItalic1Click - end - object SetUnderLine1: TMenuItem - Caption = 'Set UnderLine' - OnClick = SetUnderLine1Click - end - object AddBackroundColor1: TMenuItem - Caption = 'Add Backround Color To Selected Text' - OnClick = AddBackroundColor1Click - end - object ResetFontsFormat1: TMenuItem - Caption = 'Reset Fonts Format' - OnClick = ResetFontsFormat1Click - end - end - object Add1: TMenuItem - Caption = 'Add' - object InsertFile1: TMenuItem - Caption = 'Insert File ( As Link)' - OnClick = InsertFile1Click - end - object InsertBitmap1: TMenuItem - Caption = 'Insert Bitmap' - OnClick = InsertBitmap1Click - end - object N24: TMenuItem - Caption = '-' - end - object AddDateAndTime1: TMenuItem - Caption = 'Add Date And Time' - OnClick = AddDateAndTime1Click - end - object N25: TMenuItem - Caption = '-' - end - object AddBullets1: TMenuItem - Caption = 'Add Bullets' - OnClick = AddBullets1Click - end - object AddRomanNumbers1: TMenuItem - Caption = 'Add Roman Line Numbers' - OnClick = AddRomanNumbers1Click - end - object AddLineNumbers1: TMenuItem - Caption = 'Add Line Numbers' - OnClick = AddLineNumbers1Click - end - object N26: TMenuItem - Caption = '-' - end - object AddAButton1: TMenuItem - Caption = 'Add A Button' - OnClick = AddAButton1Click - end - object AddTEditBox1: TMenuItem - Caption = 'Add TEdit Box' - OnClick = AddTEditBox1Click - end - object AddARadioButton1: TMenuItem - Caption = 'Add A Radio Button' - OnClick = AddARadioButton1Click - end - object AddACheckBox1: TMenuItem - Caption = 'Add A TCheckBox' - OnClick = AddACheckBox1Click - end - end - object Tools1: TMenuItem - Caption = 'Tools' - object CreateASnapshot1: TMenuItem - Caption = 'Create A Snapshot' - OnClick = CreateASnapshot1Click - end - object PreviewRichEditLinesInTheBrowser1: TMenuItem - Caption = 'Preview Code In The Browser (Stream)' - OnClick = PreviewRichEditLinesInTheBrowser1Click - end - object LoadCodeFromBrowserStream1: TMenuItem - Caption = 'Load HTML Code From Browser (Stream)' - OnClick = LoadCodeFromBrowserStream1Click - end - object N21: TMenuItem - Caption = '-' - end - object MailSelectedText1: TMenuItem - Caption = 'Mail Selected Text' - OnClick = MailSelectedText1Click - end - object Mail1: TMenuItem - Caption = 'Mail' - OnClick = Mail1Click - end - object N23: TMenuItem - Caption = '-' - end - object SetColor1: TMenuItem - Caption = 'Set Color' - OnClick = SetColor1Click - end - object Themes1: TMenuItem - Caption = 'Set Themes' - OnClick = Themes1Click - end - object N2: TMenuItem - Caption = '-' - end - object DesignMode: TMenuItem - Caption = 'Set Browser Design Mode' - OnClick = DesignModeClick - end - end - object Demo: TMenuItem - Caption = 'Demo' - object HighlighHTML1: TMenuItem - Caption = 'Highlight HTML' - OnClick = HighlighHTML1Click - end - object HighLightXML1: TMenuItem - Caption = 'Highlight XML' - OnClick = HighLightXML1Click - end - object HighLightURL1: TMenuItem - Caption = 'Highlight URL' - OnClick = HighLightURL1Click - end - object N22: TMenuItem - Caption = '-' - end - object InsertFromImageList1: TMenuItem - Caption = 'Insert Smiles And Formated Text from image list Demo' - OnClick = InsertFromImageList1Click - end - end - end - object OpenDialog1: TOpenDialog - Left = 120 - Top = 208 - end - object ilsSmilies: TImageList - BkColor = clBlack - Height = 19 - Width = 19 - Left = 88 - Top = 208 - Bitmap = { - 494C01012F00310004001300130000000000FF10FFFFFFFFFFFFFFFF424D3600 - 00000000000036000000280000004C000000E40000000100200000000000C00E - 0100000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000002F4F - 4F00386058000B3838000B38380012473F00052F280000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000B89 - 82000B8982000000000000000000000000002F3F4700284747001A3F3F000028 - 2800000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000B8982000B8982000B8982000B8982000B817A000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000B8982000B8982000B89 - 82000B8982000B817A0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000012A49B000B9C930012A49B000000000000000000000000000000 - 0000585868003F4F58001A293800000000000000000000000000000000000000 - 00000000000000000000000000000000000012A49B000B9C930012A49B000B9C - 930012A49B000B9289000B8982000B8982000A7A700000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000012A4 - 9B000B9C930000000000000000000000000000000000000000000B8982000A7A - 7000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000012A49B0011ADA50011ADA50011AD - A5000000000000000000000000004F4F60002F2838003F3F4700000000000000 - 00000000000000000000000000000000000000000000000000000000000012A4 - 9B0011ADA50011ADA50011ADA50011ADA50011ADA50011ADA5000B9289000B92 - 89000B817A000A7A700000000000000000000000000000000000000000000000 - 0000000000000000000012A49B0011ADA500000000002828FF002828FF001414 - 4D002828FF002828FF00000000000B817A000A7A700000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000011B5AC0011B5AC0011BEB50011BEB50011BEB50000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000011BEB50011B5AC0011B5AC0011B5AC0011B5 - AC0011B5AC0011ADA50011ADA50011ADA5000B8982000B898200000000000000 - 000000000000000000000000000000000000000000000000000011BEB5000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000B8982000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000011B5AC0011BEB50012D0C00012D1C70012D0 - C00012D1C70011BEB50000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000011B5AC0011BE - B50011BEB50012D1C70012D0C00012D1C70011BEB50011BEB50011B5AC0011AD - A50012A49B000B8982000B817A00000000000000000000000000000000000000 - 00000000000011B5AC0011BEB500000000000000000000000000000000000000 - 0000000000000000000000000000000000000B8982000B817A00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000011BE - B50012D1C70019E3D20019E3D20019E3D20019E3D20019E3D20012D0C0000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000011BEB50012D1C70019E3D20019E3D20019E3D20038E3 - D90019E3D20011BEB50011BEB50011B5AC0012A49B000B9289000B8982000000 - 0000000000000000000000000000000000000000000011BEB500000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000B89820000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000012D0C00019E3D20028E3D90028E3D90028E3 - D90028E3D90019E3D20019E3D20012D0C00011B5AC0011ADA50012A49B000B89 - 820000000000000000000000000000000000000000000000000012D0C00019E3 - D20028E3D90028E3D90028E3D90038E3D90028E3D90038E3D90012D0C00011B5 - AC0011ADA50012A49B000B898200000000000000000000000000000000000000 - 00000000000012D0C00000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000B898200000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000012D1 - C70028E3D90028E3D90038E3D90038E3D90038E3D90038E3D90019E3D20012D0 - C00011BEB50011ADA5000B9C93000B8982000000000000000000000000000000 - 0000000000000000000012D1C70019E3D20028E3D90038E3D90038E3D90038E3 - D90028E3D90038E3D90012D0C00011BEB50011ADA5000B9C93000B8982000000 - 0000000000000000000000000000000000000000000012D1C700000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000B89820000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000012D1C70019E3D20028E3D90038E3D90047ED - E40038E3D90028E3D90019E3D200000000000000000011ADA50012A49B000B89 - 820000000000000000000000000000000000000000000000000012D1C70019E3 - D20038E3D90038E3D90038E3D90038E3D90028E3D90019E3D20012D0C00011B5 - AC0011ADA50012A49B000B898200000000000000000000000000000000000000 - 00000000000012D1C70000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000B898200000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000019E3D20028E3D90038E3D90038E3D90038E3D90028E3D90019E3D2000000 - 00000000000011ADA50012A49B00000000000000000000000000000000000000 - 000000000000000000000000000019E3D20028E3D90038E3D90038E3D90038E3 - D90028E3D90019E3D20012D0C00011B5AC0011ADA50012A49B00000000000000 - 000000000000000000000000000000000000000000000000000019E3D2000000 - 0000FFFFFF00FFEDD100FFFFFF00FFFFFF00FFEDD100FFFFFF00FFEDD1000000 - 000012A49B000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20028E3D90028E3D90028E3 - D90028E3D90028E3D90019E3D20012D0C00011B5AC0011ADA5000B9C93000000 - 00000000000000000000000000000000000000000000000000000000000019E3 - D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3D20012D0C00011B5 - AC0011ADA5000B9C930000000000000000000000000000000000000000000000 - 0000000000000000000019E3D200000000000000000000000000000000000000 - 0000000000000000000000000000000000000B9C930000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000019E3D20019E3D20028E3D90019E3D20019E3D20012D1C70011BE - B50011B5AC0012A49B0000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20019E3D20028E3D90019E3 - D20019E3D20012D1C70011BEB50011B5AC0012A49B0000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000019E3 - D20019E3D20028E3D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A4 - 9B00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000012D1 - C70012D0C00012D0C00011BEB50011B5AC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000012D1C70012D0C00012D0C00011BEB50011B5AC000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000012D1C70012D0C00012D0 - C00011BEB50011B5AC0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000B282F00051A - 2100051A21000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000001258680012586800125868000B21280012282F003F8A - 9C004FA5C000478A9C0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000007AB6D10082C9ED002168930000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000B8982000B8982000B8982000B8982000B81 - 7A00000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000B8982000B8982000B8982000B8982000B817A000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000001A688200217A93001A6882000B21 - 2800123A3C003F8A9C0047A5C0003F8A9C00213F470000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000093D1ED00A5E4 - FF002F82B6000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000012A49B000B9C930012A4 - 9B000B9C930012A49B000B9289000B8982000B8982000A7A7000000000000000 - 00000000000000000000000000000000000012A49B0012A49B0012A49B0012A4 - 9B0012A49B000B9C93000B8982000B8982000A7A700000000000000000000000 - 00000000000000000000000000000000000000000000000000001A688200217A - 93003FA5C0003FA5C000217A9300123A3C0028687A0038829300213F4700213F - 47003F93A5004FA5C000478A9C00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000007AB6D100B6EDFF0060A5C90000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000011ADA5000000930000009300000093000B9C - 93000B9289000B817A000A7A70000000000000000000000000000000000012A4 - 9B0011ADA5000000000011ADA50011ADA50011ADA50012A49B0012A49B000000 - 00000B8982000A7A700000000000000000000000000000000000000000000000 - 00000000000000000000388293003FA5C00047C0DA0047C0DA0047C0DA003882 - 93000B2128001A3847003F8A9C004FA5C0004FA5C0001E474900000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000093D1 - ED0060A5C90000000000000000000000000000000000000000000000000012A4 - 9B0012A49B000B817A000B8982000B817A000B8982000B817A000B8982000000 - 000000009C000000B90000009C00000093000B9C93000B9289000B8982000000 - 000000000000000000000000000011B5AC0011BEB50011BEB500000000000000 - 000000000000000000000000000012A49B000B9289000B898200000000000000 - 00000000000000000000000000000000000000000000000000003FA5C0004FC9 - E40068E4FF007BE5FF0068E4FF004FA5C0001A38470028687A0038829300213F - 4700213F47003F93A5004FA5C000478A9C000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000093D1ED0082C9ED003F8AAD00000000000000 - 000000000000000000000000000011ADA50011ADA50012A49B000B9C930012A4 - 9B000B9C93000B9C93000B898200000000000000000000000000000000000000 - 000000000000000000000B8982000B817A00000000000000000011BEB50011BE - B50012D0C00012D1C70012D1C70012D1C70012D0C00011BEB50011BEB50011AD - A50012A49B000B8982000B817A00000000000000000000000000000000000000 - 000000000000000000004FC9E40068E4FF007BE5FF007BE5FF0060C9E40068E4 - FF00478A9C001A3847000B212800388293004FA5C00047A5C0001E4749000000 - 000000000000000000000000000000000000000000000000000068A5C90068A5 - C9002F7093001A2938000B282F003F70930082C9ED007AB6D1002F5C68007AB6 - D100A5E4FF0082C9ED004F8AB6000000000000000000000000000000000047ED - E40011ADA50011ADA50011ADA50011ADA50011ADA50012A49B000B817A000000 - 000028E3D90012D1C70012D1C70011BEB50011B5AC0012A49B00000000000B89 - 8200000000000000000011BEB50012D1C70019E3D20019E3D20019E3D20019E3 - D20019E3D20012D1C70011BEB50011B5AC0012A49B000B9C93000B8982000000 - 000000000000000000000000000000000000000000000000000060C9E4007BE5 - FF007BE5FF0060C9E400386D7C0058ADC00068E4FF00478A9C001A3847003F8A - 9C0047A5C0002F5C6800388293003F8A9C000000000000000000000000000000 - 000000000000000000004F8AB6003F8AAD00386D7C0068A5C9004F8AB6001A38 - 47005D93B000A5E4FF007AB6D1003F7093007AB6D100B6EDFF00B6EDFF0093D1 - ED0000000000000000000000000047EDE40012D0C00012D0C00012D0C00012D0 - C00011ADA50012A49B000B817A000000000028E3D90019E3D20019E3D20012D0 - C00011B5AC0011ADA50012A49B000B898200000000000000000012D0C00019E3 - D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3D20012D0C00011BE - B50011ADA50012A49B000B898200000000000000000000000000000000000000 - 00000000000000000000000000003F8A9C004FC9E40068E4FF0058ADC000284F - 5D0058ADC0004FC9E400386D7C000B21280012282F0028687A0047A5C00047A5 - C0000000000000000000000000000000000000000000000000001A293800284F - 5D0068A5C9006EADC6003F8AAD000B282F001A3847005D93B000A5E4FF007AB6 - D1003F70930093D1ED00A5E4FF0082C9ED0000000000000000000000000047ED - E4000000000012D0C00012A49B000000000011ADA50012A49B000B817A000000 - 000038E3D90038E3D90019E3D20012D0C00011BEB50011ADA50012A49B000B89 - 8200000000000000000012D1C70019E3D20028E3D90038E3D90038E3D90038E3 - D90028E3D90019E3D20012D1C70011BEB50011ADA50012A49B000B8982000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000388293004FC9E40060C9E400000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000005D93B0006EADC6005D93B00021475800214758003F8A - AD003F7093001A38470068A5C900A5E4FF0093D1ED00A5E4FF0082C9ED0060A5 - C90000000000000000000000000047EDE4000000000012D0C00012A49B000000 - 000011B5AC00000000000B8982000000000038E3D90028E3D90019E3D20012D1 - C70011BEB50011ADA5000B9C93000B898200000000000000000012D1C70019E3 - D20028E3D900000000000000000038E3D90028E3D90019E3D200000000000000 - 000011ADA50012A49B000B898200000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000047A5C00060C9E4000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000001A38 - 4700284F5D006EADC6006EADC6004F8AB6001A3847001A2938003F8AAD0070C0 - E40070C0E40070C0E40060A5C9002F82B6000000000000000000000000000000 - 00000000000012D0C00012A49B000000000000000000000000000000000038E3 - D90038E3D90028E3D90019E3D20012D0C00011BEB5000000000012A49B000000 - 000000000000000000000000000019E3D20028E3D900000000000000000038E3 - D90028E3D90019E3D200000000000000000011ADA50012A49B00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000047A5C0007BE5FF0058ADC0000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000005D93B0006EADC6005D93B000214758002147 - 58003F8AAD002F7093001A384700287AAD0060A5C90060A5C900287AAD002168 - 9300000000000000000000000000000000000000000012D0C00012A49B000000 - 000019E3D20028E3D90000000000000000000000000028E3D900000000000000 - 00000000000011ADA5000B9C93000000000000000000000000000000000019E3 - D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3D20012D0C00011BE - B50011ADA50012A49B0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000047A5C0007BE5FF0060C9 - E400000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00001A384700214758004F8AB60068A5C9004F8AB6001A384700051A21002168 - 9300287AAD002168930000000000000000000000000000000000000000000000 - 00000000000012D0C00012A49B00000000000000000019E3D20019E3D20028E3 - D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B00000000000000 - 00000000000000000000000000000000000019E3D20019E3D20019E3D20019E3 - D20019E3D20012D1C70011BEB50011B5AC0012A49B0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000003F8A9C0060C9E40058ADC0000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000005D93B0006EADC6004F8AB6001A29 - 38000B282F0012587A0012587A0012587A000000000000000000000000000000 - 0000000000000000000000000000000000000000000012D0C00012A49B000000 - 000000000000000000000000000012D1C70012D0C00012D0C00011BEB50011B5 - AC00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000012D1C70012D1C70012D0C00011BEB50011BEB5000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000001020F00000614000006 - 140001050D000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000006140000061400000614000102 - 0F00000000000000000000000000000000000000000000000000000000000000 - 0000000000000B8982000B8982000B8982000B8982000B817A00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000B8982000B8982000B8982000B89 - 82000B817A000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000B8982000B8982000B89 - 82000B8982000B817A0000000000000000000000000000000000000000000000 - 00000000000000012800335FA600335FA600335FA60000061400000000000000 - 00000B8982000B8982000B8982000B8982000B817A0000000000000000000006 - 1400335FA600335FA600335FA60000001C000000000000000000000000000000 - 00000000000000000000000000000B9C930012A49B0000000000000000000000 - 000000000000000000000B8982000A7A70000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000B9C930012A4 - 9B0000000000000000000000000000000000000000000B8982000A7A70000000 - 00000000000000000000000000000000000000000000000000000000000012A4 - 9B000B9C930012A49B000B9C930012A49B000B9289000B8982000B8982000A7A - 7000000000000000000000000000000000000000000000001C00335FA600335F - A600335FA6000000000012A49B000B9C930012A49B000B9C930012A49B000B92 - 89000B8982000B8982000A7A700000000000335FA600335FA600335FA6000001 - 220000000000000000000000000000000000000000000000000012A49B0011AD - A5000000000000000000FFFFFF00FFFFFF00FFEDD10000000000000000000B89 - 82000A7A70000000000000000000000000000000000000000000000000000000 - 00000000000012A49B0011ADA5000000000000000000FFFFFF00FFFFFF00FFED - D10000000000000000000B8982000A7A70000000000000000000000000000000 - 0000000000000000000012A49B0011ADA50011ADA50000000000000000000000 - 000000000000000000000B9289000B817A000A7A700000012200000000000000 - 0000000000000000000001122100335FA6000001070012A49B0011ADA50011AD - A50000000000000000000000000000000000000000000B9289000B817A000A7A - 700000012200335FA60000132D00000000000000000000000000000000000000 - 000000000000000000000000000000000000FFEDD10000000000FFFFFF00FFFF - FF00FFEDD10000000000FFFFFF00000000000B89820000000000000000000000 - 0000000000000000000000000000000000000000000011B5AC0000000000FFED - D10000000000FFFFFF00FFFFFF00FFEDD10000000000FFFFFF00000000000B89 - 820000000000000000000000000000000000000000000000000011B5AC0011B5 - AC000000000011BEB50011BEB50011B5AC0011B5AC0011ADA500000000000B92 - 89000B89820000091A000000000000000000000000000000000000131000335F - A6000013100011B5AC0011B5AC000000000011BEB50011BEB50011B5AC0011B5 - AC0011ADA500000000000B9289000B89820000091A00335FA60001020F000000 - 000000000000007A7A0000000000007A7A00007A7A0000000000007A7A000000 - 0000FFEDD10000000000FFFFFF00FFFFFF00FFEDD10000000000FFFFFF00FFED - D100000000000B817A00000000000000000000000000000000007A0000007A00 - 00007A0000007A0000007A000000FFEDD10000000000FFFFFF00FFFFFF00FFED - D10000000000FFFFFF00FFEDD100000000000B817A0000000000000000000000 - 00000000000011B5AC0011BEB5000000000012D1C70012D0C00012D1C70012D0 - C00011BEB50011B5AC0011ADA500000000000B8982000B817A00001A16000000 - 00000000000000000000000107000519190011B5AC0011BEB5000000000012D1 - C70012D0C00012D1C70012D0C00011BEB50011B5AC0011ADA500000000000B89 - 82000B817A00001A1600001A16000000000000000000007A7A0000000000007A - 7A00007A7A0000000000007A7A00000000000000000000000000FFFFFF00FFFF - FF00FFEDD10000000000FFFFFF00FFEDD100000000000B898200000000000000 - 0000000000000000000000000000000000007A00000000000000FFFFFF00FFED - D10000000000FFFFFF00FFFFFF00FFEDD10000000000FFFFFF00FFEDD1000000 - 00000B8982000000000000000000000000000000000011BEB50012D1C70019E3 - D20019E3D20019E3D20019E3D20019E3D20012D1C70011BEB50011B5AC0012A4 - 9B000B9289000B898200000E08000000000000000000000000001C1A1D000001 - 070011BEB50012D1C70019E3D20019E3D20019E3D20019E3D20019E3D20012D1 - C70011BEB50011B5AC0012A49B000B9289000B898200000E0800000E08000000 - 000000000000007A7A0000000000007A7A00007A7A0000000000007A7A000000 - 000012D1C70012D1C70000000000FFFFFF00FFEDD10000000000FFFFFF00FFED - D100000000000B89820000000000000000000000000000000000000000000000 - 000012D1C70012D1C70000000000FFEDD10000000000FFFFFF00FFFFFF00FFED - D10000000000FFFFFF00FFEDD100000000000B89820000000000000000000000 - 000001050D0012D0C00019E3D20028E3D90028E3D90028E3D90028E3D90028E3 - D90012D1C70012D0C00011B5AC0011ADA50012A49B000B898200001310000000 - 000000000000000000000001070001050D0012D0C00019E3D20028E3D90028E3 - D90028E3D90028E3D90028E3D90012D1C70012D0C00011B5AC0011ADA50012A4 - 9B000B89820000131000000E08000000000000000000007A7A00000000000000 - 00000000000000000000007A7A000000000012D1C70012D0C000000000000000 - 000000000000000000000000000000000000000000000B898200000000000000 - 00000000000000000000000000000000000012D1C70012D0C000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000B89820000000000000000000001280001050D0012D1C70019E3D20028E3 - D90038E3D90038E3D90038E3D90028E3D90019E3D20012D0C00011BEB50011AD - A5000B9C93000B898200000107000001280000000000000000000F121B000105 - 0D0012D1C70019E3D20028E3D90038E3D90038E3D90038E3D90028E3D90019E3 - D20012D0C00011BEB50011ADA5000B9C93000B89820000010700001A16000000 - 00000000000000000000007A7A00007A7A00007A7A00007A7A00000000000000 - 000012D1C7000000000038E3D90028E3D90019E3D20012D0C00011BEB50011AD - A5000B9C93000B89820000000000000000000000000000000000000000000000 - 000012D1C7000000000028E3D90038E3D90047EDE40038E3D90028E3D90019E3 - D20012D0C00011BEB50011ADA5000B9C93000B89820000000000000000000001 - 28000013100012D1C70019E3D20038E3D900000000000000000038E3D90028E3 - D90019E3D200000000000000000011ADA50012A49B000B898200000614000001 - 28000000000000000000000000000013100012D1C70019E3D20038E3D9000000 - 00000000000038E3D90028E3D90019E3D200000000000000000011ADA50012A4 - 9B000B89820000061400051A21000000000000000000007A7A00007A7A00007A - 7A00007A7A00007A7A00007A7A000000000000000000000000000000000028E3 - D9000000000012D1C70011BEB5000000000012A49B0000000000000000000000 - 00000000000000000000000000007A00000000000000000000000000000038E3 - D90038E3D9000000000028E3D9000000000012D1C70011BEB5000000000012A4 - 9B000000000000000000000000000001280018222D000013100019E3D20028E3 - D900000000000000000038E3D90028E3D90019E3D200000000000000000011AD - A50012A49B0001020F0018222D00000128000000000000000000000E0800335F - A6000013100019E3D20028E3D900000000000000000038E3D90028E3D90019E3 - D200000000000000000011ADA50012A49B0001020F00335FA60001020F000000 - 000000000000007A7A00007A7A00007A7A00007A7A00007A7A00007A7A000000 - 0000000000000000000028E3D90028E3D90019E3D200000000000000000011AD - A5000B9C930000000000000000000000000000000000000000007A000000007A - 7A000000FF00BFBFBF007A000000000000000000000028E3D90028E3D90019E3 - D200000000000000000011ADA5000B9C93000000000000000000000000000001 - 280018222D00001A160019E3D20028E3D90028E3D90028E3D90028E3D90028E3 - D90019E3D20012D0C00011B5AC0011ADA5000B9C930000132D0018222D000001 - 2800000000000000000001122100335FA600001A160019E3D20028E3D90028E3 - D90028E3D90028E3D90028E3D90019E3D20012D0C00011B5AC0011ADA5000B9C - 930000132D00335FA600172240000000000000000000007A7A00007A7A00FFFF - FF00007A7A00007A7A00007A7A000000000019E3D2000000000019E3D20019E3 - D20012D1C70011BEB50011B5AC0012A49B000000000000000000000000000000 - 0000000000007A000000BFBFBF00007A7A00007A7A00BFBFBF00BFBFBF007A00 - 000028E3D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B000000 - 00000000000000000000000000000001280018222D0018222D00000114000001 - 140000132D000112210000091A00000821000001140000061400000614000105 - 0D000112210018222D0018222D0000012800000000000000000000011400335F - A600335FA600000114000001140000132D000112210000091A00000821000001 - 1400000614000006140001050D0001122100335FA600335FA600000114000000 - 000000000000007A7A00FFFFFF00FFFFFF00FFFFFF00FFFFFF00007A7A000000 - 00000000000012D1C70012D0C00012D0C00011BEB50011B5AC00000000000000 - 0000000000000000000000000000000000007A000000BFBFBF00BFBFBF00BFBF - BF00BFBFBF0000007A00BFBFBF00BFBFBF007A00000012D0C00012D0C00011BE - B50011B5AC000000000000000000000000000000000000000000000000000001 - 140018222D0018222D0018222D0018222D0018222D0018222D0018222D001822 - 2D0018222D0018222D0018222D0018222D0018222D0018222D0018222D000112 - 210000000000000000000001140000132D0025628900335FA600335FA600335F - A600335FA600335FA600335FA600335FA600335FA600335FA600335FA600335F - A600335FA60000082100011221000000000000000000007A7A00007A7A00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000007A00 - 00007A0000007A0000007A0000007A0000007A0000007A0000007A0000007A00 - 00007A0000007A00000000000000000000000000000000000000000000000000 - 00000000000000000000000000000001280018222D0018222D0018222D001822 - 2D0018222D0018222D0018222D0018222D0018222D0018222D0018222D001822 - 2D0018222D0018222D0018222D00000128000000000000000000000000000001 - 140000193C00335FA600335FA600335FA600335FA600335FA600335FA600335F - A600335FA600335FA60023609E00335FA6000008210001020F00000000000000 - 0000000000000000000000000000787878007878780078787800787878000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000007A00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000001 - 280018222D00000107000008210018222D0018222D0018222D0018222D001822 - 2D0018222D0018222D0018222D000003390000001C0000091A0018222D000001 - 280000000000000000000000000000000000000107000008210000082100335F - A600335FA600335FA600335FA600335FA600335FA600335FA600000339000000 - 1C0000091A000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 7A00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000001280000012800000128001822 - 2D0000082100000339000001280018222D000003390018222D0018222D000001 - 2800000000000001280000012800000000000000000000000000000000000000 - 0000000000000000000000011400000821000003390000012800000128000003 - 3900000128000001280000012800000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000001280018222D0018222D00000128000001280018222D001822 - 2D00000128000001280018222D0018222D000001280000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000122000001 - 2800000000000000000000012800000128000001280000000000000128000001 - 2800000128000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000B8982000B8982000B89 - 82000B8982000B817A0000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000FFFF0000FF - FF00BFBFBF00000000000B8982000B8982000B817A0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000B8982000B8982000B8982000B8982000B817A00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000B8982000B8982000B8982000B89 - 82000B817A000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000B9C - 930012A49B0000000000000000000000000000000000000000000B8982000A7A - 7000000000000000000000000000000000000000000000000000000000000000 - 000012D1C70012D1C7000000000000FFFF0000FFFF00BFBFBF00000000000B92 - 89000B8982000B8982000A7A7000000000000000000000000000000000000000 - 000000000000000000000000000012A49B000B9C930012A49B000B9C930012A4 - 9B000B9289000B8982000B8982000A7A70000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000012A49B000B9C - 930012A49B000B9C930012A49B000B9289000B8982000B8982000A7A70000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000012A49B0011ADA5000000000000000000FFFFFF00FFFF - FF00FFEDD10000000000000000000B8982000A7A700000000000000000000000 - 00000000000000000000000000000000000012D1C70012D0C0000000000000FF - FF0000FFFF0000FFFF000000000000000000000000000B9289000B817A000A7A - 700000000000000000000000000000000000000000000000000012A49B0011AD - A50011ADA50011ADA50011ADA50011ADA50011ADA5000B9289000B9289000B81 - 7A000A7A70000000000000000000000000000000000000000000000000000000 - 00000000000012A49B0011ADA50011ADA50011ADA50011ADA50011ADA50011AD - A5000B9289000B9289000B817A000A7A70000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000FFEDD10000000000FFFFFF00FFFFFF00FFEDD10000000000FFFFFF000000 - 00000B8982000000000000000000000000000000000000000000BFBFBF000000 - 000012D1C700000000000000000000FFFF0000FFFF000000000011B5AC0011B5 - AC0012A49B00000000000B9289000B8982000000000000000000000000000000 - 0000000000000000000011B5AC0011B5AC0011BEB50011BEB50011BEB50011B5 - AC00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000011B5AC0011ADA50011ADA50011ADA5000B8982000B89 - 82000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFEDD10000000000FFEDD10000000000FFFFFF00FFFF - FF00FFEDD10000000000FFFFFF00FFEDD100000000000B817A00000000000000 - 000000000000BFBFBF0000FFFF0000FFFF00000000000000000019E3D2000000 - 00000000000012D1C70012D0C00011BEB50011B5AC0011ADA5000B9C93000B89 - 82000B817A000000000000000000000000000000000011B5AC0011BEB50011BE - B50012D1C70012D0C00012D1C7000000000011BEB50011B5AC0011ADA50012A4 - 9B000B8982000B817A0000000000000000000000000000000000000000000000 - 000011B5AC0011BEB50011BEB50012D1C70012D0C00012D1C7000000000011BE - B50011B5AC0011ADA50012A49B000B8982000B817A0000000000000000000000 - 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFEDD1000000 - 00000000000000000000FFFFFF00FFFFFF00FFEDD10000000000FFFFFF00FFED - D100000000000B8982000000000000000000BFBFBF0000FFFF0000FFFF00FFFF - FF000000000012D1C70019E3D200000000000000000019E3D20019E3D20012D1 - C700000000000000000012A49B000B9289000B89820000000000000000000000 - 00000000000011BEB50012D1C70019E3D20019E3D20019E3D2000000000019E3 - D20012D1C70011BEB50011B5AC0012A49B000B9289000B898200000000000000 - 00000000000000000000000000000000000011BEB50012D1C70019E3D20019E3 - D20019E3D20038E3D90019E3D2000000000011BEB50011B5AC0012A49B000B92 - 89000B89820000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFEDD1000000000012D1C70012D1C70000000000FFFF - FF00FFEDD10000000000FFFFFF00FFEDD100000000000B89820000000000007A - 7A0000FFFF0000FFFF00FFFFFF000000000012D0C00019E3D20000000000FFED - D100FFEDD1000000000028E3D90000000000FFEDD100FFEDD100000000000B9C - 93000B8982000000000000000000000000000000000012D0C00019E3D20028E3 - D90028E3D90028E3D9000000000028E3D90012D1C70012D0C00011B5AC0011AD - A50012A49B000B89820000000000000000000000000000000000000000000000 - 000012D0C00019E3D20028E3D90028E3D90028E3D90038E3D90028E3D9000000 - 000012D0C00011B5AC0011ADA50012A49B000B89820000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000012D1C70012D0C00000000000000000000000000000000000000000000000 - 0000000000000B89820000000000007A7A00FFFFFF0000FFFF00FFFFFF000000 - 000012D1C70000000000FFEDD100FFFFFF00FFFFFF00FFEDD10000000000FFED - D100FFFFFF00FFFFFF00FFEDD100000000000B89820000000000000000000000 - 00000000000012D1C70019E3D20028E3D90038E3D90038E3D90038E3D90028E3 - D90019E3D20012D0C00011BEB50011ADA5000B9C93000B898200000000000000 - 00000000000000000000000000000000000012D1C70019E3D20028E3D90038E3 - D90038E3D90038E3D90028E3D90019E3D20012D0C00011BEB50011ADA5000B9C - 93000B8982000000000000000000000000000000000000000000000000000000 - 00000000000019E3D20019E3D20000000000000000000000000038E3D90028E3 - D90019E3D20012D0C00011BEB50011ADA5000B9C93000B89820000000000007A - 7A00FFFFFF0000FFFF0000FFFF00FFFFFF000000000000000000FFEDD1000000 - 000000000000FFEDD10000000000FFEDD1000000000000000000FFEDD1000000 - 00000B8982000000000000000000000000000000000012D1C70019E3D20038E3 - D90028E3D90028E3D90038E3D90028E3D90019E3D200000000000000000011AD - A50012A49B000B89820000000000000000000000000000000000000000000000 - 000012D1C70019E3D20038E3D900000000000000000038E3D90028E3D90019E3 - D20012D0C00011B5AC0011ADA50012A49B000B89820000000000000000000000 - 000000000000787878000000000000000000000000000000000019E3D2000000 - 000019E3D20019E3D2000000000028E3D9000000000012D1C70011BEB5000000 - 000012A49B00000000000000000000000000007A7A00FFFFFF0000FFFF0000FF - FF000000000019E3D2000000000000000000000000000000000028E3D9000000 - 000000000000000000000000000012A49B000000000000000000000000000000 - 0000000000000000000019E3D20028E3D90028E3D90028E3D90038E3D90028E3 - D90019E3D200000000000000000011ADA50012A49B0000000000000000000000 - 0000000000000000000000000000000000000000000019E3D20028E3D9000000 - 00000000000038E3D90028E3D90019E3D20012D0C00011B5AC0011ADA50012A4 - 9B00000000000000000000000000000000000000000000000000787878000000 - 0000000000000000000019E3D20019E3D200000000000000000028E3D90028E3 - D90019E3D200000000000000000011ADA5000B9C930000000000000000000000 - 000000000000007A7A00007A7A00000000000000000019E3D20028E3D9000000 - 0000494A4A0028E3D90028E3D90019E3D20000000000494A4A0011ADA5000B9C - 930000000000000000000000000000000000000000000000000019E3D20028E3 - D90028E3D90028E3D90028E3D90028E3D90019E3D20012D0C00011B5AC0011AD - A5000B9C93000000000000000000000000000000000000000000000000000000 - 00000000000019E3D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3 - D20012D0C00011B5AC0011ADA5000B9C93000000000000000000000000000000 - 00000000000000000000787878000000000000000000000000000000000019E3 - D20019E3D20019E3D20019E3D20019E3D20012D1C70011BEB50011B5AC0012A4 - 9B00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000019E3D20019E3D20028E3D90019E3D20019E3D20012D1 - C70011BEB50011B5AC0012A49B00000000000000000000000000000000000000 - 000000000000000000000000000019E3D20019E3D20028E3D90019E3D20019E3 - D20012D1C70011BEB50011B5AC0012A49B000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000019E3D20019E3 - D20028E3D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B000000 - 0000000000000000000000000000000000000000000000000000787878000000 - 0000787878000000000000000000000000000000000012D1C70012D0C00012D0 - C00011BEB50011B5AC0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000012D1C70012D0C00012D0C00011BEB50011B5AC0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000012D1C70012D0C00012D0C00011BEB50011B5AC00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000012D1C70012D0C00012D0C00011BE - B50011B5AC000000000000000000000000000000000000000000000000000000 - 0000000000007878780000000000000000007878780000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000078787800000000007878 - 7800000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000007878780000000000787878000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000007878780000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000078787800000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000B89 - 82000B8982000B8982000B8982000B817A000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000088C8400088C8400088C8400088C840008847B000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000B89 - 82000B8982000B8982000B8982000B817A000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000B8982000B89 - 82000B8982000B8982000B817A00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000B9C930012A49B00000000000000000000000000000000000000 - 00000B8982000A7A700000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000010A59C00089C940010A59C00089C - 940010A59C0008948C00088C8400088C84000A7A700000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000B9C930012A49B000B9C930012A49B000B9C93000B9289000B89 - 82000B8982000A7A700000000000000000000000000000000000000000000000 - 000012A49B000B9C930012A49B000B9C930012A49B000B9289000B8982000B89 - 82000A7A70000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000012A49B0011ADA500000000000000 - 0000FFFFFF00FFFFFF00FFEDD10000000000000000000B8982000A7A70000000 - 00000000000000000000000000000000000000000000000000000000000010A5 - 9C0011ADA50011ADA50011ADA50011ADA50011ADA50011ADA50008948C000894 - 8C0008847B000A7A700000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000B9C930011ADA50012A49B000000 - 0000000000000000000000000000000000000B9289000B817A000A7A70000000 - 000000000000000000000000000012A49B0011ADA50011ADA500000000000000 - 00000000000000000000000000000B9289000B817A000A7A7000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000011B5AC0000000000FFEDD10000000000FFFFFF00FFFFFF00FFEDD1000000 - 0000FFFFFF00000000000B898200000000000000000000000000000000000000 - 000000000000000000000000000011BEB50011B5AC0000000000000000000000 - 000000000000000000000000000000000000088C8400088C8400000000000000 - 000000000000000000000000000012D1C70012D1C70000000000BFBFBF00BFBF - BF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF00BFBFBF0011AD - A500000000000B9289000B8982000000000000000000000000000000000011B5 - AC0011B5AC000000000011BEB50011BEB50011B5AC0011B5AC0011ADA5000000 - 00000B9289000B89820000000000000000000000000000000000000000000000 - 000000000000000000000000000011B5AC0000000000FFFFFF00FFEDD1000000 - 0000FFFFFF00FFFFFF00FFEDD10000000000FFFFFF00FFEDD100000000000B81 - 7A0000000000000000000000000000000000000000000000000011B5AC0011BE - B50011BEB50010D6C60010D6C60012D1C70012D0C00011BEB50011B5AC0011AD - A50010A59C00088C840008847B000000000000000000000000000000000012D1 - C70012D0C0000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000011B5AC0011ADA5000B9C93000B8982000B81 - 7A00000000000000000011B5AC0011BEB5000000000012D1C70012D0C00012D1 - C70012D0C00011BEB50011B5AC0011ADA500000000000B8982000B817A000000 - 00000000000000000000000000000000000000000000000000000000000011BE - B50000000000FFFFFF00FFEDD10000000000FFFFFF00FFFFFF00FFEDD1000000 - 0000FFFFFF00FFEDD100000000000B8982000000000000000000000000000000 - 0000000000000000000011BEB50010D6C60019E3D20019E3D20019E3D20019E3 - D20019E3D20012D1C70011BEB50011B5AC0010A59C0008948C00088C84000000 - 000000000000000000000000000012D1C7000000000000000000000000000000 - 00000000000000000000FFFFFF00FFFFFF0000000000000000000000000011BE - B50011B5AC0012A49B000B9289000B898200000000000000000011BEB50012D1 - C70019E3D20019E3D20019E3D20019E3D20019E3D20012D1C70011BEB50011B5 - AC0012A49B000B9289000B898200000000000000000000000000000000000000 - 00000000000019E3D20019E3D2000000000000000000FFFFFF00FFEDD1000000 - 0000FFFFFF00FFFFFF00FFEDD10000000000FFFFFF00FFEDD100000000000000 - 000019E3D20019E3D2000000000000000000000000000000000010D6C60019E3 - D20028E3D90028E3D90028E3D90028E3D90028E3D90010D6C60012D0C00011B5 - AC0011ADA50010A59C00088C84000000000000000000000000000000000012D1 - C7000000000000000000000000000000000000000000FFFFFF00FF000000FF00 - 0000FFFFFF00000000000000000012D0C00011B5AC0011ADA50012A49B000B89 - 8200000000000000000012D0C00019E3D20028E3D90028E3D90028E3D90028E3 - D90028E3D90012D1C70012D0C00011B5AC0011ADA50012A49B000B8982000000 - 0000000000000000000000000000000000000000000019E3D20019E3D2000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20019E3D200000000000000 - 0000000000000000000010D6C60019E3D20028E3D90038E3D90038E3D90047ED - E40028E3D90038E3D90010D6C60011BEB50011ADA500089C9400088C84000000 - 000000000000000000000000000000000000FFFF000000000000000000000000 - 0000FFFFFF007878780078787800FF000000FF000000FFFFFF000000000012D1 - C70011BEB50011ADA5000B9C93000B898200000000000000000012D1C70019E3 - D20028E3D90038E3D90038E3D90038E3D90028E3D90019E3D20012D0C00011BE - B50011ADA50012A49B000B898200000000000000000000000000000000000000 - 00000000000019E3D2000000000012D1C70019E3D20028E3D90038E3D90047ED - E40038E3D90028E3D90019E3D20012D0C00011BEB50011ADA5000B9C93000B89 - 82000000000019E3D200000000000000000038E3D90038E3D9000001070019E3 - D20038E3D900000000000000000038E3D90028E3D90019E3D200000107000000 - 000011ADA50010A59C00088C8400000000000000000000000000000000000000 - 0000FFFF0000000000000000000000000000FFFFFF0078787800787878007878 - 7800FF000000FFFFFF0000000000000000000000000011ADA50012A49B000B89 - 8200000000000000000012D1C70019E3D20038E3D900000000000000000038E3 - D90028E3D90019E3D200000000000000000011ADA5000B9C93000B8982000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000019E3D2000000000038E3D90038E3D9000000000028E3D9000000000012D1 - C70011BEB5000000000012A49B00000000000000000000000000000000000000 - 000038E3D90038E3D90038E3D9000000000028E3D900000000000000000038E3 - D90028E3D90019E3D2002C2C2D002C2C2D002C2C2D002C2C2D002C2C2D002C2C - 2D002C2C2D002C2C2D0000000000000000000000000000000000000000000000 - 000000000000FFFFFF007878780078787800FFFFFF00000000000000000012D1 - C70011BEB50011ADA50012A49B000000000000000000000000000000000019E3 - D20028E3D900000000000000000038E3D90028E3D90019E3D200000000000000 - 000011ADA50012A49B0000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20028E3D900000000000000 - 000028E3D90028E3D90019E3D200000000000000000011ADA5000B9C93000000 - 0000000000000000000000000000000000000000000000000000000000002C2C - 2D002C2C2D002C2C2D002C2C2D002C2C2D002C2C2D002C2C2D002C2C2D002C2C - 2D0011305A0011305A0011305A0011305A002C2C2D0000000000000000000000 - 0000000000000000000000000000000000000000000000000000FFFFFF00FFFF - FF0000000000000000000000000012D0C00011B5AC0011ADA5000B9C93000000 - 000000000000000000000000000019E3D20028E3D90028E3D90028E3D90028E3 - D90028E3D90019E3D20012D0C00011B5AC0011ADA5000B9C9300000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000019E3D20019E3D20028E3D90019E3D20019E3D20012D1C70011BE - B50011B5AC0012A49B0000000000000000000000000000000000000000000000 - 00002C2C2D002C2C2D002C2C2D000B6947000B6947000B6947000B6947000B69 - 47000B6947001C9153001C9153001C9153001C9153001C91530011305A001130 - 5A002C2C2D000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000FFFF000000000000FFFF0011BE - B50011B5AC0012A49B0000000000000000000000000000000000000000000000 - 000019E3D20019E3D20028E3D90019E3D20019E3D20012D1C70011BEB50011B5 - AC0012A49B000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000012D1 - C70012D0C00012D0C00011BEB50011B5AC000000000000000000000000000000 - 000000000000000000000000000000000000000000002C2C2D001C9153001C91 - 53001C9153001C9153000B6947000B6947000B6947000B6947000B6947001C91 - 53001C9153000B69470011305A0011305A002C2C2D0000000000000000000000 - 0000BFBFBF00BFBFBF007878780078787800BFBFBF00BFBFBF00BFBFBF0000FF - FF0000FFFF0000FFFF0000FFFF0011B5AC000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000012D1C70012D0 - C00012D0C00011BEB50011B5AC00000000000000000000000000787878003636 - 3600000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000002C2C2D001C9153001C91530011305A0011305A001130 - 5A0011305A000B6947000B6947000B6947000B6947000B6947000B6947002C2C - 2D000000000000000000000000000000000000FFFF0000FFFF00787878007878 - 780000000000000000000000000000FFFF0000FFFF0000FFFF0000FFFF000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000007A - 7A00000000000000000078787800363636000000000000000000007A7A000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000002C2C - 2D0011305A0011305A0011305A0011305A000B6947000B6947001C9153001130 - 5A0011305A000B6947002C2C2D00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000007A7A0000FFFF00FFFF - FF00007A7A000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000002C2C2D002C2C2D0011305A000B69 - 47000B6947000B6947001C91530011305A002C2C2D002C2C2D00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000007A7A000000 - 0000007A7A0000FFFF00FFFFFF00FFFFFF00FFFFFF00007A7A0000000000007A - 7A00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000002C2C2D002C2C2D002C2C2D002C2C2D002C2C2D002C2C - 2D00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000007A7A0000FFFF00FFFF - FF00007A7A000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000007A - 7A000000000000000000007A7A00007A7A000000000000000000007A7A000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000B8982000B8982000B89 - 82000B8982000B817A0000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000B8982000B8982000B8982000B8982000B817A0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000B8982000B8982000B8982000B8982000B817A000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000B8982000B8982000B8982000B89 - 82000B817A000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000012A4 - 9B000B9C930012A49B000B9C930012A49B000B9289000B8982000B8982000A7A - 7000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000012A49B000B9C930012A49B000B9C930012A49B000B92 - 89000B8982000B8982000A7A7000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000B9C930012A49B000B9C - 930012A49B000B9289000B8982000B8982000A7A700000000000000000000000 - 000000000000000000000000000000000000000000000000000012A49B000B9C - 930012A49B000000B9000000B9000000B9000B8982000B8982000A7A70000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000012A49B0011ADA50011ADA50000000000000000000000 - 000000000000000000000B9289000B817A000A7A700000000000000000000000 - 0000000000000000000000000000000000000000000012A49B0011ADA50011AD - A50011ADA50011ADA50011ADA50012A49B0012A49B000B8982000B8982000A7A - 7000000000000000000000000000000000000000000019E3D20019E3D20019E3 - D20019E3D2000000000000000000000000000000000000000000000000000B92 - 89000B817A000A7A700000000000000000000000000000000000000000000000 - 00000000000012A49B0011ADA50011ADA5000000B9000000B9000000B9000000 - B9000000B9000B9289000B817A000A7A70000000000000000000000000000000 - 00000000000000000000000000000000000011BEB500000000000000000011B5 - AC000000000011BEB50011BEB50011B5AC0011B5AC0011ADA500000000000B92 - 89000B89820000000000000000000000000000000000000000000000000011BE - B500000000000000000011B5AC000000000011BEB50011BEB50011B5AC0011B5 - AC0012A49B00000000000B9289000B8982000000000000000000000000000000 - 00000000000019E3D20019E3D20019E3D2000000000011BEB50011BEB50011BE - B50011B5AC0011B5AC0011ADA500000000000B9289000B898200000000000000 - 0000000000000000000000000000000000000000000011B5AC0011B5AC000000 - B9000000B9000000000000000000000000000000B9000000B9000B9289000B89 - 8200000000000000000000000000000000000000000000000000000000000000 - 000011BEB50011BEB500000000000000000012D1C70012D0C00012D1C70012D0 - C00011BEB50011B5AC0011ADA500000000000B8982000B817A00000000000000 - 000000000000000000000000000011BEB50011BEB5000000000012D0C00012D1 - C700000000000000000000000000000000000000000011ADA5000B9C93000B89 - 82000B817A000000000000000000000000000000000000000000000000000000 - 000012D0C00012D1C70012D0C00012D1C70012D0C00011BEB50011B5AC0011AD - A5000B9C93000B8982000B817A00000000000000000000000000000000000000 - 000011B5AC0011BEB50011BEB50012D1C7000000B9000000B90012D0C0000000 - B9000000B90011ADA5000B9289000B8982000B817A0000000000000000000000 - 000000000000007A0000007A00000000000011BEB50011BEB5000000000019E3 - D20019E3D20019E3D20019E3D20019E3D20012D1C70011BEB50011B5AC0012A4 - 9B000B9289000B8982000000000000000000007A0000007A00000000000011BE - B50011BEB5000000000019E3D20019E3D20019E3D20019E3D20019E3D20012D1 - C70011BEB50011B5AC0012A49B000B9289000B89820000000000000000000000 - 0000000000000000000011BEB50012D1C70019E3D200000000000000000019E3 - D20019E3D20012D1C700000000000000000012A49B000B9289000B8982000000 - 00000000000000000000000000000000000011BEB50012D1C70019E3D20019E3 - D20019E3D20019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B000B92 - 89000B89820000000000000000000000000000000000007A0000007A00000000 - 000011BEB50000000000007A0000007A000028E3D90028E3D90028E3D90028E3 - D90012D1C70012D0C00011B5AC0011ADA50012A49B000B898200000000000000 - 0000007A0000007A00000000000011BEB50000000000007A0000007A000028E3 - D90028E3D90028E3D90028E3D90012D1C70012D0C00011B5AC0011ADA50012A4 - 9B000B898200000000000000000000000000000000000000000012D0C00019E3 - D2000000000000000000FFEDD1000000000028E3D9000000000000000000FFED - D100000000000B9C93000B898200000000000000000000000000000000000000 - 000012D0C00019E3D20028E3D90028E3D90028E3D90028E3D90028E3D90012D1 - C70012D0C00011B5AC0011ADA50012A49B000B89820000000000000000000000 - 0000007A0000007A000000000000000000000000000000000000007A0000007A - 000038E3D90038E3D90038E3D90028E3D90019E3D20012D0C00011BEB50011AD - A5000B9C93000B89820000000000007A0000007A000000000000000000000000 - 000000000000007A0000007A0000000000000000000038E3D90028E3D90028E3 - D900000000000000000011ADA50012A49B000B89820000000000000000000000 - 0000000000000000000012D1C700000000000000000000000000FFFFFF00FFED - D100000000000000000000000000FFFFFF00FFEDD100000000000B8982000000 - 00000000000000000000000000000000000012D1C70019E3D20028E3D90038E3 - D90038E3D90038E3D90028E3D90019E3D20012D0C00011BEB50011ADA5000B9C - 93000B8982000000000000000000000000000000000000000000000000000000 - 00007A7A00000000000019E3D200007A0000007A00000000000038E3D90028E3 - D90019E3D200000000000000000011ADA50012A49B000B898200000000000000 - 00000000000000000000000000007A7A00000000000019E3D200007A0000007A - 00000000000038E3D90028E3D90019E3D200000000000000000011ADA5000B9C - 93000B898200000000000000000000000000000000000000000012D1C7000000 - 0000FFEDD100FFFFFF00FFFFFF00FFEDD10000000000FFEDD100FFFFFF00FFFF - FF00FFEDD100000000000B898200000000000000000000000000000000000000 - 000012D1C70019E3D2000000000038E3D90038E3D9000000000028E3D9000000 - 000028E3D90011BEB5000000000012A49B000B89820000000000000000000000 - 000000000000000000000000000000007A007A7A000000007A0019E3D20028E3 - D900000000000000000038E3D90028E3D90019E3D200000000000000000011AD - A50012A49B00000000000000000000000000000000000000000000007A007A7A - 000000007A0019E3D2000000000038E3D90038E3D90038E3D90028E3D90019E3 - D20012D0C00011BEB5000000000012A49B000000000000000000000000000000 - 000000000000000000000000000019E3D20000000000FFEDD100FFEDD1000000 - 000028E3D90000000000FFEDD100FFEDD1000000000012A49B00000000000000 - 0000000000000000000000000000000000000000000019E3D20028E3D9000000 - 00000000000038E3D90028E3D90019E3D200000000000000000011ADA50012A4 - 9B000000000000000000000000000000000000000000000000000000FF000000 - FF000000FF000000FF000000FF0028E3D90028E3D90028E3D90028E3D90028E3 - D90019E3D20012D0C00011B5AC0011ADA5000B9C930000000000000000000000 - 0000000000000000FF000000FF000000FF000000FF000000FF0028E3D9000000 - 000028E3D90028E3D90028E3D90019E3D20012D0C0000000000011ADA5000B9C - 93000000000000000000000000000000000000000000000000000000000019E3 - D20028E3D900000000000000000028E3D90028E3D90019E3D200000000000000 - 000011ADA5000B9C930000000000000000000000000000000000000000000000 - 00000000000019E3D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3 - D20012D0C00011B5AC0011ADA5000B9C93000000000000000000000000000000 - 0000000000000000000000007A000000FF000000FF000000FF0000007A0019E3 - D20019E3D20028E3D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A4 - 9B00000000000000000000000000000000000000000000007A000000FF000000 - FF000000FF0000007A0019E3D20019E3D2000000000028E3D90019E3D20012D1 - C7000000000011B5AC0012A49B00000000000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20019E3D20028E3D90019E3 - D20019E3D20012D1C70011BEB50011B5AC0012A49B0000000000000000000000 - 000000000000000000000000000000000000000000000000000019E3D20019E3 - D20028E3D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B000000 - 0000000000000000000000000000000000000000000000007A000000FF000000 - FF000000FF000000FF000000FF0000007A000000000012D1C70012D0C00012D0 - C00011BEB50011B5AC0000000000000000000000000000000000000000000000 - 000000007A000000FF000000FF000000FF000000FF000000FF0000007A000000 - 000012D1C70012D0C00012D0C00011BEB50011B5AC0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000012D1C70012D0C00012D0C00011BEB50011B5AC000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000012D1C70012D0C00012D0C00011BE - B50011B5AC000000000000000000000000000000000000000000000000000000 - 00000000000000007A000000FF000000FF000000FF000000FF000000FF000000 - 7A00000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000007A000000FF000000FF000000 - FF000000FF000000FF0000007A00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000FF000000 - FF000000FF000000FF000000FF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000FF000000FF000000FF000000FF000000FF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000088C - 8400088C8400088C8400088C840008847B000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000B8982000B8982000B8982000B8982000B817A000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000B89 - 82000B8982000B8982000B8982000B817A000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000B8982000B89 - 82000B8982000B8982000B817A00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000010A59C00089C940010A59C00089C940010A59C0008948C00088C - 8400088C84000A7A700000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000012A49B000B9C930012A49B000B9C - 930012A49B000B9289000B8982000B8982000A7A700000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000B9C930012A49B00000000000000000000000000000000000000 - 00000B8982000A7A700000000000000000000000000000000000000000000000 - 000012A49B000B9C930012A49B000B9C930012A49B000B9289000B8982000B89 - 82000A7A70000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000010A59C0011ADA50011ADA5000000 - 00000000000000000000000000000000000008948C0008847B000A7A70000000 - 00000000000000000000000000000000000000000000000000000000000012A4 - 9B0011ADA50000000000000000000B9C930012A49B0012A49B00000000000000 - 00000B8982000A7A700000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000012A49B0011ADA500000000000000 - 0000FFFFFF00FFFFFF00FFEDD10000000000000000000B8982000A7A70000000 - 000000000000000000000000000012A49B0011ADA50011ADA500000000000000 - 00000000000000000000000000000B9289000B8982000A7A7000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000011B5AC0011B5AC0011BEB50011BEB50011BEB50011B5AC0011B5AC0011AD - A50011ADA50008948C00088C8400000000000000000000000000000000000000 - 000000000000000000000000000011B5AC000000000011B5AC0011BEB5000000 - 000011B5AC000000000011ADA50011ADA500000000000B817A00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000011B5AC0000000000FFEDD10000000000FFFFFF00FFFFFF00FFEDD1000000 - 0000FFFFFF00000000000B8982000000000000000000000000000000000011B5 - AC0011B5AC000000000011BEB50011BEB50011B5AC0011B5AC0011ADA5000000 - 00000B9289000B817A0000000000000000000000000000000000000000000000 - 000000000000000000000000000011B5AC0011BEB50010D6C60010D6C60010D6 - C60010D6C60010D6C60011BEB50011B5AC0011ADA500089C9400088C84000884 - 7B0000000000000000000000000000000000000000000000000011B5AC0011BE - B50012D0C00012D1C70012D0C00012D1C70012D0C00011BEB50011B5AC0011AD - A5000B9C93000B8982000B817A00000000000000000000000000000000000000 - 000000000000000000000000000011B5AC0000000000FFFFFF00FFEDD1000000 - 0000FFFFFF00FFFFFF00FFEDD10000000000FFFFFF00FFEDD100000000000B81 - 7A00000000000000000011B5AC0011BEB50012D0C00012D1C70012D0C00012D1 - C70012D0C00011BEB50011B5AC0011ADA5000B9C93000B8982000B817A000000 - 00000000000000000000000000000000000000000000000000000000000011BE - B50010D6C60019E3D20028E3D90028E3D90019E3D20019E3D20010D6C60011B5 - AC0011B5AC0010A59C0008948C00088C84000000000000000000000000000000 - 0000000000000000000011BEB500000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000B8982000000 - 0000000000000000000000000000000000000000000012D1C70012D1C7000000 - 000000000000000000000000000000000000FFFFFF00FFFFFF00FFEDD1000000 - 0000FFFFFF00FFEDD100000000000B898200000000000000000011BEB50012D1 - C70019E3D20019E3D20019E3D20019E3D20019E3D20012D1C70011BEB50011B5 - AC0012A49B000B9289000B898200000000000000000000000000000000000000 - 000000000000000000000000000010D6C60019E3D20028E3D90028E3D9000000 - 00000000000028E3D90028E3D90010D6C60011BEB5000000000000000000088C - 840000000000000000000000000000000000000000000000000012D0C0000000 - 0000FFFFFF00FFEDD10000000000FFFFFF00FFFFFF00FFEDD10000000000FFFF - FF00FFEDD100000000000B89820000000000000000000000000000000000FFFF - FF000000000012D1C70012D1C7000000000090FFFF008EC5C500000000000000 - 0000FFFFFF00FFFFFF00FFEDD10000000000FFFFFF00FFEDD100000000000B89 - 8200000000000000000012D0C00019E3D20028E3D90028E3D90028E3D90028E3 - D90028E3D90012D1C70012D0C00011B5AC0011ADA50012A49B000B8982000000 - 00000000000000000000000000000000000000000000000000000000000010D6 - C600000000000001070000010700000107000001070028E3D900000107000000 - 0000000000000000000000000000088C84000000000000000000000000000000 - 0000000000000000000012D1C70000000000FFFFFF00FFEDD10000000000FFFF - FF00FFFFFF00FFEDD10000000000FFFFFF00FFEDD100000000000B8982000000 - 0000000000000000000000000000FFFFFF00905B2A000000000000000000FFFF - FF00FFFFFF008EC5C50000000000000000000000000000000000000000000000 - 00000000000000000000000000000B898200000000000000000012D1C70019E3 - D20028E3D90038E3D90038E3D90038E3D90028E3D90019E3D20012D0C00011BE - B50011ADA5000B9C93000B898200000000000000000000000000000000000000 - 000000000000000000000000000010D6C60028E3D90028E3D90028E3D90028E3 - D90028E3D90028E3D90028E3D90010D6C60011BEB50010A59C0010A59C00088C - 840000000000000000000000000000000000000000000000000012D1C7000000 - 0000FFFFFF00FFEDD10000000000FFFFFF00FFFFFF00FFEDD10000000000FFFF - FF00FFEDD100000000000B89820000000000000000000000000000000000FFFF - FF00905B2A00FFFFFF00FFFFFF00FFFFFF0090FFFF008EC5C5000000000047ED - E40038E3D90028E3D90019E3D20012D0C00011BEB50011ADA5000B9C93000B89 - 8200000000000000000012D1C70019E3D20038E3D900000000000000000038E3 - D90028E3D90019E3D200000000000000000011ADA50012A49B000B8982000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000028E3D90028E3D90028E3D90028E3D90028E3D90028E3D90028E3D90010D6 - C60011BEB50010A59C0010A59C00000000000000000000000000000000000000 - 000000000000000000000000000019E3D20000000000FFEDD10000000000FFFF - FF00FFFFFF00FFEDD10000000000FFFFFF000000000012A49B00000000000000 - 0000000000000000000000000000FFFFFF00BFBFBF00FFFFFF00905B2A0090FF - FF00905B2A008EC5C5000000000038E3D9000000000028E3D9000000000012D1 - C70011BEB5000000000012A49B000000000000000000000000000000000019E3 - D20028E3D900000000000000000038E3D90028E3D90019E3D200000000000000 - 000011ADA50012A49B0000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20028E3D90028E3D90028E3 - D90028E3D90028E3D90019E3D20010D6C60011BEB50011ADA500089C94000000 - 00000000000000000000000000000000000000000000000000000000000019E3 - D20028E3D9000000000000000000FFFFFF00FFFFFF00FFEDD100000000000000 - 000011ADA5000B9C93000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00905B2A00FFFFFF00905B2A008EC5C500000000000000 - 000028E3D90028E3D90019E3D200000000000000000011ADA5000B9C93000000 - 000000000000000000000000000019E3D20028E3D90028E3D90028E3D90028E3 - D90028E3D90019E3D20012D0C00011B5AC0011ADA5000B9C9300000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000019E3D20019E3D20028E3D90019E3D20019E3D20010D6C60011BE - B50011B5AC0010A59C0000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20019E3D200000000000000 - 000000000000000000000000000011B5AC0012A49B0000000000000000000000 - 0000000000000000000000000000FFFFFF00FFFFFF0090FFFF00905B2A0090FF - FF00905B2A008EC5C5000000000028E3D90019E3D20019E3D20012D1C70011BE - B50011B5AC0012A49B0000000000000000000000000000000000000000000000 - 000019E3D20019E3D20028E3D90019E3D20019E3D20012D1C70011BEB50011B5 - AC0012A49B000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000010D6 - C60010D6C60010D6C60011BEB50011B5AC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000012D1C70012D0C00012D0C00011BEB50011B5AC000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF00FFFFFF00905B2A00FFFFFF00905B2A008EC5C5000000000012D1 - C70012D0C00012D0C00011BEB50011B5AC000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000012D1C70012D0 - C00012D0C00011BEB50011B5AC00000000000000000000000000000000006C6C - 6C000B0B0B002C2C2D00ADC0B600000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000FFFFFF00FFFFFF0090FFFF00905B2A0090FF - FF00905B2A008EC5C50000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000058585800000000001C1A1D00A5A5A5000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF004545FF002A2A900090FFFF00FFFFFF0090FFFF008EC5C500000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000BFBFBF00A5A5A500000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000090FFFF002A2A90002A2A9000FFFFFF0090FF - FF00FFFFFF008EC5C50000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BFBFBF00A5A5A5000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000008EC5 - C5008EC5C5008EC5C5008EC5C5008EC5C5008EC5C5008EC5C500000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000BFBFBF006C6C6C00494A4A000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000BFBFBF002C2C2D00BFBF - BF003F4F4F002F3F3F009CADAD002F4747008AB6B60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000939C9C00ADC0B6009CADAD0093A5 - AD0093B6B600000000000000000000000000000000000B8982000B8982000B89 - 82000B8982000B817A0000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000707A7A00707A7A00707A7A00707A - 7A00707A7A00707A7A00707A7A00707A7A000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000B8982000B8982000B8982000B8982000B817A00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000B8982000B8982000B8982000B8982000B817A000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00002838380028383800283838002F47470082A5AD00000000000000000012A4 - 9B000B9C930012A49B000B9C930012A49B000B9289000B8982000B8982000A7A - 7000000000000000000000000000000000000000000000000000000000000000 - 0000707A7A00707A7A00707A7A00707A7A00707A7A00707A7A00707A7A00707A - 7A00000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000012A49B000B9C930012A49B000B9C930012A4 - 9B000B9289000B8982000B8982000A7A70000000000000000000000000000000 - 00000000000000000000000000000000000012A49B000B9C930012A49B000B9C - 930012A49B000B9289000B8982000B8982000A7A700000000000000000000000 - 0000000000000000000000000000000000003F5858003F584F00213B39002F58 - 580069ADB2000000000012A49B0011ADA50011ADA50011ADA50011ADA50011AD - A50012A49B0012A49B000B8982000B8982000A7A700000000000000000000000 - 0000000000000000000000000000707A7A00707A7A00707A7A00707A7A00707A - 7A00707A7A00707A7A00707A7A00707A7A00707A7A0000000000000000000000 - 000000000000000000000000000000000000000000000000000012A49B0011AD - A50011ADA50011ADA5000000930000009300000093000B9C93000B9289000B81 - 7A000A7A700000000000000000000000000000000000000000000000000012A4 - 9B0011ADA50011ADA50000000000000000000000000000000000000000000B92 - 89000B8982000A7A700000000000000000000000000000000000000000000000 - 00008A9C9C008CADA50093ADAD00709E9E0069ADB20000000000000000000000 - 00000000000011BEB50011BEB50011B5AC0011B5AC0012A49B0012A49B000B89 - 82000B898200000000000000000000000000000000000000000000000000707A - 7A00707A7A0000000000707A7A00707A7A00707A7A00707A7A0000000000707A - 7A00707A7A000000000000000000000000000000000000000000000000000000 - 0000000000000000000011B5AC0011B5AC0011BEB5000000930000009C000000 - B90000009C00000093000B9C93000B9289000B89820000000000000000000000 - 000000000000000000000000000011B5AC0011B5AC000000000011BEB50011BE - B50011B5AC0011B5AC0011ADA500000000000B9289000B817A00000000000000 - 0000000000000000000000000000000000003B4F47002A473F008AADAD001E47 - 49008AC0D1000000000011BEB50012D0C00012D1C700000000000000000012D0 - C00011BEB50011B5AC0011ADA5000B9C93000B8982000B817A00000000000000 - 00000000000000000000000000000000000000000000707A7A00707A7A00707A - 7A00707A7A00707A7A00707A7A00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000011B5AC0011BEB5000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000B8982000B817A000000000000000000000000000000000011B5AC0011BE - B50012D0C00012D1C70012D0C00012D1C70012D0C00011BEB50011B5AC0011AD - A5000B9C93000B8982000B817A00000000000000000000000000000000000000 - 0000384F4F002A473F008AADAD001E4749007AA5B6000000000012D1C70019E3 - D20019E3D20019E3D20019E3D20019E3D20012D0C00011BEB50011B5AC0012A4 - 9B000B9289000B8982000000000000000000000000000000000000000000FFFF - FF00FFFFFF00000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF000000000000000000000000000000000000000000000000000000 - 00000000000011BEB5000000000019E3D20019E3D20019E3D20028E3D90012D1 - C70012D1C70011BEB50011B5AC0012A49B00000000000B898200000000000000 - 0000000000000000000011BEB50012D1C70019E3D20019E3D20019E3D20019E3 - D20012D1C70012D1C70011BEB50011B5AC0012A49B000B9289000B8982000000 - 0000000000000000000000000000000000007A9393008CADA5009CC0C000709E - 9E006EADC6000000000019E3D20028E3D90028E3D90028E3D90028E3D90019E3 - D20019E3D20012D0C00011B5AC0011ADA50012A49B000B898200000000000000 - 0000000000000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF0000000000000000000000 - 0000000000000000000000000000000000000000000012D0C00019E3D20028E3 - D90028E3D90028E3D90028E3D90019E3D20019E3D20012D0C00011B5AC0011AD - A50012A49B000B8982000000000000000000000000000000000012D0C00019E3 - D20028E3D90028E3D90028E3D90028E3D90019E3D20019E3D20012D0C00011B5 - AC0011ADA50012A49B000B898200000000000000000000000000000000000000 - 0000283F3F002F4F4F001A3F38001E47490069ADB2000000000028E3D90028E3 - D90038E3D90038E3D90038E3D90038E3D90019E3D20012D0C00011BEB50011AD - A50012A49B000B89820000000000000000000000000000000000000000000000 - 0000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00000000000000000000000000000000000000000000000000000000000000 - 00000000000012D1C70019E3D20038E3D90038E3D90038E3D90038E3D90038E3 - D90019E3D20012D0C00011BEB50011ADA50012A49B000B898200000000000000 - 0000000000000000000012D1C70028E3D90028E3D90038E3D90038E3D90038E3 - D90038E3D90019E3D20012D0C00011BEB50011ADA5000B9C93000B8982000000 - 000000000000000000000000000000000000213B3900284747001A3F3F001E47 - 490069ADB2000000000019E3D200000000000000000047EDE40038E3D90028E3 - D90019E3D20012D1C70011BEB50011ADA5000B9C93000B898200000000000000 - 000000000000000000006070680060706800FFFFFF00FFFFFF0068606000AEAE - AE00AEAEAE0068606000FFFFFF00FFFFFF006070680060706800000000000000 - 0000000000000000000000000000000000000000000012D1C70019E3D20028E3 - D900000000000000000038E3D90028E3D90019E3D200000000000000000011AD - A5000B9C93000B8982000000000000000000000000000000000012D1C70019E3 - D20028E3D900000000000000000038E3D90028E3D90019E3D200000000000000 - 000011ADA50012A49B000B898200000000000000000000000000000000000000 - 000093B6B6008AADAD0082B2B20082B2B20069ADB2000000000019E3D20028E3 - D900000000000000000038E3D90028E3D90019E3D20012D0C00011BEB50011AD - A50012A49B000000000000000000000000000000000000000000607068000000 - 000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF000000 - 0000000000006070680000000000000000000000000000000000000000000000 - 0000000000000000000019E3D20028E3D900000000000000000038E3D90028E3 - D90019E3D200000000000000000011ADA50012A49B0000000000000000000000 - 000000000000000000000000000019E3D20028E3D90038E3D90038E3D90038E3 - D90028E3D90019E3D20012D0C00011BEB50011ADA50012A49B00000000000000 - 000000000000000000000000000000000000213B39001A3F38008AADAD00123A - 3C008EC5C5000000000019E3D20028E3D90028E3D90028E3D90028E3D90028E3 - D90019E3D20012D0C00011B5AC0011ADA5000B9C930000000000000000000000 - 00000000000000000000000000000000000000000000FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000019E3D20028E3 - D90028E3D90028E3D90028E3D90028E3D90028E3D90012D1C70011BEB50011AD - A5000B9C930000000000000000000000000000000000000000000000000019E3 - D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3D20012D0C00011B5 - AC0011ADA5000B9C930000000000000000000000000000000000000000000000 - 00002A473F002F4F47008CADA5001A3F3F00709E9E00000000000000000019E3 - D20019E3D20028E3D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A4 - 9B00000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000019E3D20019E3D20028E3D90019E3D20019E3 - D20012D1C70011BEB50011B5AC0012A49B000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20019E3D20028E3D90019E3 - D20019E3D20012D1C70011BEB50011B5AC0012A49B0000000000000000000000 - 00000000000000000000000000000000000093A5A5008A9C9C008CADA5009CB6 - B60093A5AD000000000000000000000000000000000012D1C70012D0C00012D0 - C00011BEB50011B5AC0000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000000000000FFFF - FF00FFFFFF000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000004A6881000000 - 00000000000012D1C70012D0C00012D0C00011BEB50011B5AC00000000000000 - 00004A6881000000000000000000000000000000000000000000000000000000 - 0000000000000000000012D1C70012D0C00012D0C00011BEB50011B5AC000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000494A4A00384747002F3F3F003B4F4700A5B6B60000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000004A6881000000000000000000000000000000 - 00000000000000000000000000004A6881000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000B21 - 8A000B218A000B218A000B2182000B2182000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000F6F6F6000B817A000B8982000B8982000B817A000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000B8982000B8982000B8982000B89 - 82000B817A000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000B89 - 82000B8982000B8982000B8982000B817A000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000001228A5000B289C00000000000000000000000000000000000000 - 00000B2182000B21820000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000B9C93009CD1D100F6F6F6009CD1 - D1000B9289000B9C93000B8982000B8982000A7A700000000000000000000000 - 000000000000000000000000000000000000000000000000000012A49B000B9C - 930012A49B000B9C930012A49B000B9289000B8982000B8982000A7A70000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000012A49B000B9C930012A49B000B9C930012A49B000B9289000B89 - 82000B8982000A7A700000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000001228A5001228AD0000000000F6F6 - F600F6F6F600FFFFFF00F6F6F600F6F6F600000000000B2182000B217A000000 - 00000000000000000000000000000000000000000000000000000000000012A4 - 9B009CD1D100D1D1E400F6F6F600D1D1E4009CD1D10000000000000000000B92 - 89000B817A000A7A700000000000000000000000000000000000000000000000 - 00000000000012A49B0011ADA50011ADA5000000000000000000000000000000 - 0000000000000B9289000B817A000A7A70000000000000000000000000000000 - 00000000000000000000000000000000000012A49B0011ADA50011ADA50011AD - A50011ADA50011ADA50012A49B0012A49B000B8982000B8982000A7A70000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000122FB60000000000D1D1D100D1D1D100F6F6F600F6F6F600F6F6F600D1D1 - D100D1D1D100000000000B218200000000000000000000000000000000000000 - 0000000000000000000000000000F6F6F600F6F6F600F6F6F600F6F6F600F6F6 - F600F6F6F600F6F6F600F6F6F600000000000B9289000B898200000000000000 - 0000000000000000000000000000000000000000000011B5AC0011B5AC000000 - 000011BEB50011BEB50011B5AC0011B5AC0011ADA500000000000B9289000B89 - 8200000000000000000000000000000000000000000000000000000000000000 - 000011B5AC0011B5AC000000000011BEB50011BEB50011B5AC0011B5AC0012A4 - 9B00000000000B9289000B817A00000000000000000000000000000000000000 - 0000000000000000000000000000122FC00000000000AEAEAE00000000000000 - 00000000000000000000000000000000000000000000AEAEAE00000000000B21 - 820000000000000000000000000000000000000000000000000011B5AC0011BE - B5009CD1D100D1D1E400F6F6F600D1D1E4009CD1D10000000000000000000000 - 0000000000000B8982000B817A00000000000000000000000000000000000000 - 000011B5AC0011BEB5000000000012D1C70012D0C00012D1C70012D0C00011BE - B50011B5AC0011ADA500000000000B8982000B817A0000000000000000000000 - 000000000000000000000000000011B5AC0011BEB50012D0C00012D1C7000000 - 00000000000000000000000000000000000011ADA5000B9C93000B8982000B81 - 7A00000000000000000000000000000000000000000000000000000000000000 - 000000000000000000001D3DE4001D3DE4001D3DE4001238D1001238D100122F - C000122FB6000000000000000000000000000000000000000000000000000000 - 0000000000000000000011BEB50012D1C700000000009CD1D100F6F6F6009CD1 - D10012D1C70012D1C70011BEB50011B5AC00000000000B9289000B8982000000 - 00000000000000000000000000000000000011BEB50012D1C70019E3D20019E3 - D20019E3D20019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B000B92 - 89000B89820000000000000000000000000000000000000000000000000011BE - B50012D1C70019E3D20019E3D20019E3D20019E3D20019E3D20012D0C00011BE - B50011B5AC0012A49B000B9289000B8982000000000000000000000000000000 - 00000000000000000000000000001238D100000000001D3DE4002847E4002847 - E4002847E4002847E4001D3DE400122FC000122FC0001228AD00000000000B21 - 8A0000000000000000000000000000000000000000000000000012D0C00019E3 - D20028E3D90028E3D900F6F6F60028E3D90019E3D20019E3D20012D0C00011B5 - AC0011ADA50012A49B000B898200000000000000000000000000000000000000 - 000012D0C00019E3D20028E3D90028E3D90028E3D90028E3D90028E3D90012D1 - C70012D0C00011B5AC0011ADA50012A49B000B89820000000000000000000000 - 000000000000000000000000000012D0C00019E3D20028E3D90028E3D90028E3 - D90028E3D90028E3D90012D1C70012D0C00011B5AC0011ADA50012A49B000B89 - 8200000000000000000000000000000000000000000000000000000000001238 - D1001D3DE4002847E4000000000000000000000000002847E400000000000000 - 000000000000122FB6000B289C000B218A000000000000000000000000000000 - 0000000000000000000012D1C70019E3D20028E3D90038E3D900F6F6F60038E3 - D90028E3D90019E3D20012D0C00011BEB50011ADA5000B9C93000B8982000000 - 00000000000000000000000000000000000012D1C70019E3D20028E3D90038E3 - D90038E3D90038E3D90028E3D90019E3D20012D0C00011BEB50011ADA5000B9C - 93000B89820000000000000000000000000000000000000000000000000012D1 - C70019E3D20038E3D900000000000000000038E3D90028E3D90028E3D9000000 - 00000000000011ADA50012A49B000B8982000000000000000000000000000000 - 00000000000000000000000000001238D1001D3DE4002847E400000000000000 - 00003858E4002847E4001D3DE40000000000000000001228AD001228A5000B21 - 8A0000000000000000000000000000000000000000000000000012D1C70019E3 - D20038E3D90000000000F6F6F60038E3D90028E3D90019E3D200000000000000 - 000011ADA50012A49B000B898200000000000000000000000000000000000000 - 000012D1C70019E3D20038E3D900000000000000000038E3D90028E3D90019E3 - D200000000000000000011ADA50012A49B000B89820000000000000000000000 - 000000000000000000000000000012D1C70019E3D20028E3D900000000000000 - 000038E3D90028E3D90019E3D200000000000000000011ADA5000B9C93000B89 - 8200000000000000000000000000000000000000000000000000000000000000 - 00001D3DE40000000000000000003858E4003858E4002847E4001D3DE4001238 - D10000000000000000000B289C00000000000000000000000000000000000000 - 000000000000000000000000000019E3D20028E3D900000000000000000038E3 - D90028E3D90019E3D200000000000000000011ADA50012A49B00000000000000 - 0000000000000000000000000000000000000000000019E3D20028E3D9000000 - 00000000000038E3D90028E3D90019E3D200000000000000000011ADA50012A4 - 9B00000000000000000000000000000000000000000000000000000000000000 - 000019E3D2000000000038E3D90038E3D90038E3D90028E3D90019E3D20012D0 - C00011BEB5000000000012A49B00000000000000000000000000000000000000 - 0000000000000000000000000000000000001D3DE4001D3DE4002847E4002847 - E4002847E4002847E4001D3DE400122FC000122FC0001228AD001228A5000000 - 00000000000000000000000000000000000000000000000000000000000019E3 - D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3D20012D0C00011B5 - AC0011ADA5000B9C930000000000000000000000000000000000000000000000 - 00000000000019E3D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3 - D20012D0C00011B5AC0011ADA5000B9C93000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20028E3D9000000000028E3 - D90028E3D90028E3D90019E3D20012D0C0000000000011ADA5000B9C93000000 - 00000000000000000000000000000000000000000000000000000000000028C9 - C900000000001D3DE4001D3DE4001D3DE4001D3DE4001D3DE4001238D100122F - C000122FB6001228A5000000000028C9C9000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20019E3D20028E3D90019E3 - D20019E3D20012D1C70011BEB50011B5AC0012A49B0000000000000000000000 - 000000000000000000000000000000000000000000000000000019E3D20019E3 - D20028E3D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000019E3D20019E3D2000000000028E3D90019E3D20012D1C7000000 - 000011B5AC0012A49B0000000000000000000000000000000000000000000000 - 0000000000000000000012C0C00070E4E400059C9C0000000000000000001238 - D1001238D100122FD100122FC000122FB6000000000000000000059C9C0070E4 - E40012C0C0000000000000000000000000000000000000000000000000000000 - 0000000000000000000012D1C70012D0C00012D0C00011BEB50011B5AC000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000012D1C70012D0C00012D0C00011BE - B50011B5AC000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000012D1 - C70012D0C00012D0C00011BEB50011B5AC000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000070E4E4000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000070E4E40000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000B90000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000B90000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000B9000000B9000000B9000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - B900000000000000B90000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - B9000000B9000000B9000000B9000000B9000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000B9000000B900000000000000B9000000B9000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000B9000000B9000000B9000000B9000000 - B900000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000B9000000 - B900000000000000B9000000B900000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000B900000000000000B900000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000B900000000000000B900000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000B8982000B8982000B8982000B8982000B81 - 7A00000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000B8982000B89 - 82000B8982000B8982000B817A00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000B8982000B8982000B8982000B8982000B817A00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000B8982000B8982000B8982000B89 - 82000B817A000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000012A49B000B9C930012A4 - 9B000B9C930012A49B000B9289000B8982000B8982000A7A7000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000012A49B000B9C930012A49B000B9C930012A49B000B9289000B8982000B89 - 82000A7A70000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000012A49B000B9C930012A49B000B9C930012A4 - 9B000B9289000B8982000B8982000A7A70000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000012A49B000B9C - 930012A49B000B9C930012A49B000B9289000B8982000B8982000A7A70000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000012A49B0011ADA50011ADA50011ADA50011ADA50011ADA500000000000000 - 00000B9289000B8982000A7A7000000000000000000000000000000000000000 - 000000000000000000000000000012A49B0011ADA50011ADA50011ADA50011AD - A50011ADA50012A49B0012A49B000B8982000B8982000A7A7000000000000000 - 000000000000000000000000000000000000000000000000000012A49B0011AD - A50011ADA50011ADA50011ADA50011ADA50012A49B0012A49B000B8982000B89 - 82000A7A70000000000000000000000000000000000000000000000000000000 - 00000000000012A49B0011ADA50011ADA5000000000000000000000000000000 - 0000000000000B9289000B817A000A7A70000000000000000000000000000000 - 00000000000000000000000000000000000011B5AC0011B5AC000000000011BE - B50011BEB5000000000011B5AC0012A49B00000000000B9289000B817A000000 - 00000000000000000000000000000000000000000000000000000000000011B5 - AC0011B5AC000000000011BEB50011BEB50011B5AC0011B5AC0012A49B000000 - 00000B9289000B817A0000000000000000000000000000000000000000000000 - 0000000000000000000011B5AC0011B5AC000000000011BEB50011BEB50011B5 - AC0011B5AC0012A49B00000000000B9289000B817A0000000000000000000000 - 0000000000000000000000000000000000000000000011B5AC0011B5AC0011BE - B50011BEB50011BEB50011B5AC0011B5AC0011ADA500000000000B9289000B89 - 82000000000000000000000000000000000000000000000000000000000011B5 - AC0011BEB50012D0C00012D1C700000000000000000012D0C00011BEB50011B5 - AC0011ADA5000B9C93000B8982000B817A000000000000000000000000000000 - 0000000000000000000011B5AC0011BEB50012D0C00012D1C700000000000000 - 000000000000000000000000000011ADA5000B9C93000B8982000B817A000000 - 0000000000000000000000000000000000000000000011B5AC0011BEB50012D0 - C00012D1C700000000000000000000000000000000000000000011ADA5000B9C - 93000B8982000B817A0000000000000000000000000000000000000000000000 - 000011B5AC0011BEB50012D0C00012D1C70012D0C00012D1C70012D0C00011BE - B50011B5AC0011ADA5000B9C93000B8982000B817A0000000000000000000000 - 000000000000000000000000000011BEB50012D1C70019E3D20019E3D20019E3 - D20019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B000B9289000B89 - 820000000000000000000000000000000000000000000000000011BEB50012D1 - C70019E3D20019E3D20019E3D20019E3D20019E3D20012D0C00011BEB50011B5 - AC0012A49B000B9289000B898200000000000000000000000000000000000000 - 00000000000011BEB50012D1C70019E3D20019E3D20019E3D20019E3D20019E3 - D20012D0C00011BEB50011B5AC0012A49B000B9289000B898200000000000000 - 00000000000000000000000000000000000011BEB50012D1C70019E3D2000000 - 00000000000019E3D20019E3D20012D1C700000000000000000012A49B000B92 - 89000B89820000000000000000000000000000000000000000000000000012D0 - C00019E3D20028E3D90028E3D90028E3D90028E3D90028E3D90012D1C70012D0 - C00011B5AC0011ADA50012A49B000B8982000000000000000000000000000000 - 0000000000000000000012D0C00019E3D20028E3D90028E3D90028E3D90028E3 - D90028E3D90012D1C70012D0C00011B5AC0011ADA50012A49B000B8982000000 - 0000000000000000000000000000000000000000000012D0C00019E3D200FF36 - 360028E3D90028E3D90028E3D90028E3D90012D1C70012D0C00011B5AC0011AD - A50012A49B000B89820000000000000000000000000000000000000000000000 - 000012D0C00019E3D20000000000FFEDD100FFEDD1000000000028E3D9000000 - 0000FFEDD100FFEDD100000000000B9C93000B89820000000000000000000000 - 000000000000000000000000000012D1C70019E3D20028E3D90038E3D90038E3 - D90038E3D90028E3D90019E3D20012D0C00011BEB50011ADA5000B9C93000B89 - 820000000000000000000000000000000000000000000000000012D1C70019E3 - D20038E3D900000000000000000038E3D90028E3D90028E3D900000000000000 - 000011ADA50012A49B000B898200000000000000000000000000000000000000 - 00000000000012D1C70019E3D20038E3D900000000000000000038E3D90028E3 - D90028E3D900000000000000000011ADA50012A49B000B898200000000000000 - 00000000000000000000000000000000000012D1C70000000000FFEDD100FFFF - FF00FFFFFF00FFEDD10000000000FFEDD100FFFFFF00FFFFFF00FFEDD1000000 - 00000B89820000000000000000000000000000000000000000000000000012D1 - C70019E3D20038E3D900000000000000000038E3D90028E3D90019E3D2000000 - 00000000000011ADA50012A49B000B8982000000000000000000000000000000 - 0000000000000000000012D1C70019E3D20028E3D900000000000000000038E3 - D90028E3D90019E3D200000000000000000011ADA5000B9C93000B8982000000 - 0000000000000000000000000000000000000000000012D1C70019E3D20028E3 - D900000000000000000038E3D90028E3D90019E3D200000000000000000011AD - A5000B9C93000B89820000000000000000000000000000000000000000000000 - 000012D1C70000000000FFEDD1000000000000000000FFEDD10000000000FFED - D1000000000000000000FFEDD100000000000B89820000000000000000000000 - 00000000000000000000000000000000000019E3D20028E3D900000000000000 - 000038E3D90028E3D90019E3D200000000000000000011ADA50012A49B000000 - 00000000000000000000000000000000000000000000000000000000000019E3 - D2000000000038E3D90038E3D90038E3D90028E3D90019E3D20012D0C00011BE - B5000000000012A49B0000000000000000000000000000000000000000000000 - 0000000000000000000019E3D2000000000038E3D90038E3D90038E3D90028E3 - D90019E3D20012D0C00011BEB5000000000012A49B0000000000000000000000 - 0000000000000000000000000000000000000000000019E3D200000000000000 - 0000000000000000000028E3D9000000000000000000000000000000000012A4 - 9B00000000000000000000000000000000000000000000000000000000000000 - 000019E3D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3D20012D0 - C00011B5AC0011ADA5000B9C9300000000000000000000000000000000000000 - 000000000000000000000000000019E3D20028E3D9000000000028E3D90028E3 - D90028E3D90019E3D20012D0C0000000000011ADA5000B9C9300000000000000 - 000000000000000000000000000000000000000000000000000019E3D20028E3 - D9000000000028E3D90028E3D90028E3D90019E3D20012D0C0000000000011AD - A5000B9C93000000000000000000000000000000000000000000000000000000 - 00000000000019E3D20028E3D90000000000494A4A0028E3D90028E3D90019E3 - D20000000000494A4A0011ADA5000B9C93000000000000000000000000000000 - 0000000000000000000000000000000000000000000019E3D20019E3D20028E3 - D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000019E3D20019E3D2000000000028E3D90019E3D20012D1C7000000000011B5 - AC0012A49B000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000019E3D20019E3D2000000000028E3D90019E3 - D20012D1C7000000000011B5AC0012A49B000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000019E3D20019E3 - D20028E3D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000012D1C70012D0C00012D0C00011BEB50011B5 - AC00000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000012D1C70012D0 - C00012D0C00011BEB50011B5AC00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000012D1C70012D0C00012D0C00011BEB50011B5AC00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000012D1C70012D0C00012D0C00011BE - B50011B5AC000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000B89 - 82000B8982000B8982000B8982000B817A000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000B8982000B8982000B8982000B8982000B817A000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000B218A000B218A000B21 - 8A000B2182000B21820000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000B8982000B8982000B8982000B8982000B817A0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000012A49B000B9C930012A49B000B9C930012A49B000B9289000B89 - 82000B8982000A7A700000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000012A49B000B9C930012A49B000B9C - 930012A49B000B9289000B8982000B8982000A7A700000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000001228 - A5000B289C001228A5000B289C001228A5000B2193000B218A000B2182000B21 - 7A00000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000012A49B000B9C930012A49B000B9C930012A49B000B92 - 89000B89820010838A0010737B0001020F000000000000000000000000000000 - 00000000000000000000000000000000000012A49B0011ADA50011ADA50011AD - A5000000930000009300000093000B9C93000B9289000B817A000A7A70000000 - 00000000000000000000000000000000000000000000000000000000000012A4 - 9B0011ADA50011ADA50000000000000000000000000000000000000000000B92 - 89000B817A000A7A700000000000000000000000000000000000000000000000 - 000000000000000000001228A5001228AD00122FB6001228AD00122FB6001228 - AD001228A5001228A5000B218A000B218A000B217A0000000000000000000000 - 0000000000000000000000000000000000000000000012A49B0016A3AA0016A3 - AA0001020F00000000000000000000000000000000001483990014758B00146E - 8400000000000000000000000000000000000000000000000000000000000000 - 000011B5AC0011B5AC0011BEB5000000930000009C000000B90000009C000000 - 93000B9C93000B9289000B898200000000000000000000000000000000000000 - 000000000000000000000000000011B5AC0011B5AC000000000011BEB50011BE - B50011B5AC0011B5AC0011ADA500000000000B9289000B898200000000000000 - 0000000000000000000000000000000000000000000000000000122FB6000000 - 0000122FC000122FC000122FC000122FC000122FB6001228A5001228A5000000 - 00000B2182000000000000000000000000000000000000000000000000000000 - 0000000000001C98B500287AC3001D1D62002292C30011BEB50011B5AC0011B5 - AC001C8EAE0014144D00226DAD00147D92000000000000000000000000000000 - 000000000000000000000000000011B5AC0011BEB50000000000000000000000 - 00000000000000000000000000000000000000000000000000000B8982000B81 - 7A0000000000000000000000000000000000000000000000000011B5AC0011BE - B50012D0C00012D1C70012D1C70012D0C00012D0C00011BEB50011B5AC0011AD - A5000B9C93000B8982000B817A00000000000000000000000000000000000000 - 000000000000122FC000122FC000122FC000000000001238D1001238D100122F - D100122FC000122FB600000000001228A5000B2182000B218200000000000000 - 00000000000000000000000000000000000016A3AA00287AC3002D2D9B00336C - D8002888CF0012D1C70012D0C00011BEB5001C98B500287AC30025257F00226D - AD001871910000000000000000000000000000000000000000000000000011BE - B5000000000019E3D20019E3D20019E3D20028E3D90012D1C70012D1C70011BE - B50011B5AC0012A49B00000000000B8982000000000000000000000000000000 - 0000000000000000000011BEB50012D1C70019E3D20019E3D20019E3D20028E3 - D90012D1C70012D1C70011BEB50011B5AC0012A49B000B9289000B8982000000 - 00000000000000000000000000000000000000000000122FC0001238D1001D3D - E4001D3DE4000000000000000000000000000000000000000000122FB6001228 - A5000B289C000B21820000000000000000000000000000000000000000000000 - 000016B3B9002888CF003664D9003664D9002F83D70019E3D20019E3D20012D1 - C7001D9FBF002E68C9002E5FC2002E5FC2001878980000000000000000000000 - 000000000000000000000000000012D0C00019E3D20028E3D90028E3D90028E3 - D90028E3D90019E3D20019E3D20012D0C00011B5AC0011ADA50012A49B000B89 - 820000000000000000000000000000000000000000000000000012D0C00019E3 - D20028E3D900000000000000000028E3D90028E3D90019E3D200000000000000 - 000011ADA50012A49B000B898200000000000000000000000000000000000000 - 0000000000001238D1001D3DE4002847E4002847E4002847E4002847E4002847 - E4001238D1001238D100122FB600122FB6000B289C000B218A00000000000000 - 0000000000000000000000000000000000001AB5C4002F9CD800336CD800377D - DA002F9CD80028E3D90028E3D90012D1C70012D0C000287AC3002E68C9002E5F - C2001878980000000000000000000000000000000000000000000000000012D1 - C70019E3D20038E3D90038E3D90038E3D90038E3D90038E3D90019E3D20012D0 - C00011BEB50011ADA50012A49B000B8982000000000000000000000000000000 - 0000000000000000000012D1C70019E3D2002C2C2D00494A4A00000000000000 - 0000000000002C2C2D00494A4A0000000000000000000B9C93000B8982000000 - 000000000000000000000000000000000000000000001238D1001D3DE4002847 - E4003858E4003858E4003858E4002847E4001D3DE4001238D100122FC0001228 - AD001228A5000B218A0000000000000000000000000000000000000000000000 - 000016C2CB0021C4D4002F9CD8003BADDA003ABFDA0038E3D90028E3D90019E3 - D20012D0C0002292C300267CBD00226DAD0010838A0000000000000000000000 - 000000000000000000000000000012D1C70019E3D20028E3D90038E3D90047ED - E40038E3D90028E3D90019E3D20012D1C70011BEB50011ADA5000B9C93000B89 - 8200000000000000000000000000000000000000000000000000000000000000 - 0000000000002C2C2D00494A4A000000000028E3D900000000002C2C2D00494A - 4A00000000000000000000000000000000000000000000000000000000000000 - 0000000000001238D1001D3DE4002847E40000000000000000003858E4002847 - E4001D3DE40000000000000000001228AD001228A5000B218A00000000000000 - 00000000000000000000000000000000000016C2CB0021C4D4003ABFDA000102 - 0F000000000038E3D90028E3D90019E3D2000000000001020F001C8EAE001C8E - AE00147D92000000000000000000000000000000000000000000000000000000 - 000019E3D2000000000038E3D90038E3D90038E3D90028E3D90019E3D20012D0 - C00011BEB5000000000012A49B00000000000000000000000000000000000000 - 000000000000000000000000000019E3D20028E3D900000000002C2C2D0038E3 - D90028E3D90019E3D200000000002C2C2D0011ADA50012A49B00000000000000 - 00000000000000000000000000000000000000000000000000001D3DE4002847 - E40000000000000000003858E400000000001D3DE4000000000000000000122F - B6000B289C000000000000000000000000000000000000000000000000000000 - 00000000000019E3D20028E3D900000000000000000038E3D90028E3D90019E3 - D20000000000000000001C98B5001C8EAE000A0A220000000000000000000000 - 00000000000000000000000000000000000019E3D20028E3D900000000000000 - 00000000000028E3D90000000000000000000000000011ADA5000B9C93000000 - 00000000000000000000000000000000000000000000000000000000000019E3 - D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3D20012D0C00011B5 - AC0011ADA5000B9C930000000000000000000000000000000000000000000000 - 000000000000000000001D3DE4001D3DE4002847E4002847E400000000001D3D - E400000000001238D100122FB6001228AD001228A50000000000000000000000 - 0000000000000000000000000000000000000000000019E3D20028E3D90028E3 - D90028E3D90028E3D90028E3D90019E3D20012D0C00011B5AC0016A3AA001093 - 9A0001020F000000000000000000000000000000000000000000000000000000 - 00000000000019E3D20019E3D20028E3D90019E3D20019E3D20012D1C70011BE - B50011B5AC0012A49B0000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000019E3D20019E3D20028E3D90019E3 - D20019E3D20012D1C70011BEB50011B5AC0012A49B0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000001D3D - E4001D3DE400000000001D3DE4001D3DE4001238D10000000000122FB6001228 - A500000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000019E3D20019E3D20028E3D90019E3D20019E3D20012D1 - C70011BEB50011B5AC0012A49B00000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000000000012D1 - C70012D0C00012D0C00011BEB50011B5AC000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000012D1C70012D0C00012D0C00011BEB50011B5AC000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000001238D1001238D100122F - D100122FC000122FB60000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000012D1C70012D0C00012D0C00011BEB50011B5AC0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000B8982000B8982000B8982000B8982000B81 - 7A00000000000000000000000000000000000000000000000000000000000000 - 00000000000000000000000000000000000000000000000000000B8982000B89 - 82000B8982000B8982000B817A00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000B8982000B8982000B8982000B8982000B817A00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000008A470B008A470B00934F0B008247 - 0B0082470B000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000012A49B000B9C930012A4 - 9B000B9C930012A49B000B9289000B8982000B8982000A7A7000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000B9C930012A49B0000000000000000000000000000000000000000000B89 - 82000A7A70000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000012A49B000B9C930012A49B000B9C930012A4 - 9B000B9289000B8982000B8982000A7A70000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000A5581200A558 - 12009C580B000000000000000000000000008A470B0082470B007A3F0B000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000012A49B0011ADA50011ADA500000000000000000000000000000000000000 - 00000B9289000B817A000A7A7000000000000000000000000000000000000000 - 000000000000000000000000000012A49B0011ADA5000000000000000000FFFF - FF00FFFFFF00FFEDD10000000000000000000B8982000A7A7000000000000000 - 000000000000000000000000000000000000000000000000000012A49B0011AD - A50011ADA50000000000000000000000000000000000000000000B9289000B81 - 7A000A7A70000000000000000000000000000000000000000000000000000000 - 000000000000A5581200AD601200AD601200AD60120000000000000093000000 - 0000A5581200934F0B0082470B0082470B000000000000000000000000000000 - 00000000000000000000000000000000000011B5AC0011B5AC000000000011BE - B50011BEB50011B5AC0011B5AC0011ADA500000000000B9289000B8982000000 - 00000000000000000000000000000000000000000000000000000000000011B5 - AC0000000000FFEDD10000000000FFFFFF00FFFFFF00FFEDD10000000000FFFF - FF00000000000B89820000000000000000000000000000000000000000000000 - 0000000000000000000011B5AC0011B5AC000000000011BEB50011BEB50011B5 - AC0011B5AC0011ADA500000000000B9289000B89820000000000000000000000 - 00000000000000000000000000000000000000000000B6601200C0681200C068 - 1200C0681200000000000000000000000000AD601200A55812008A470B008247 - 0B000000000000000000000000000000000000000000000000000000000011B5 - AC0011BEB5000000000012D1C70012D0C00012D1C70012D0C00011BEB50011B5 - AC0011ADA500000000000B8982000B817A000000000000000000000000000000 - 0000000000000000000011B5AC0000000000FFFFFF00FFEDD10000000000FFFF - FF00FFFFFF00FFEDD10000000000FFFFFF00FFEDD100000000000B817A000000 - 0000000000000000000000000000000000000000000011B5AC0011BEB5000000 - 000012D1C70012D0C00012D1C70012D0C00011BEB50011B5AC0011ADA5000000 - 00000B8982000B817A0000000000000000000000000000000000000000000000 - 0000C0681200C0681200C0681200D1701200D170120000000000000000000000 - 0000C0681200A5581200A55812008A470B0082470B0000000000000000000000 - 000000000000000000000000000011BEB50012D1C70019E3D20019E3D20019E3 - D20019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B000B9289000B89 - 820000000000000000000000000000000000000000000000000011BEB5000000 - 0000FFFFFF00FFEDD10000000000FFFFFF00FFFFFF00FFEDD10000000000FFFF - FF00FFEDD100000000000B898200000000000000000000000000000000000000 - 00000000000011BEB50012D1C70019E3D20019E3D20019E3D20019E3D20012D1 - C70012D1C70011BEB50011B5AC0012A49B000B9289000B817A00000000000000 - 000000000000000000000000000000000000C0681200D1701200E47C1B00E47C - 1B00E47C1B00E47C1B00D1701200D1701200C0681200AD601200A5581200934F - 0B008A470B0000000000000000000000000000000000000000000000000012D0 - C00019E3D20028E3D90028E3D90028E3D90028E3D90028E3D90012D1C70012D0 - C00011B5AC0011ADA50012A49B000B8982000000000000000000000000000000 - 0000000000000000000012D0C00000000000FFFFFF00FFEDD10000000000FFFF - FF00FFFFFF00FFEDD10000000000FFFFFF00FFEDD100000000000B8982000000 - 0000000000000000000000000000000000000000000012D0C00019E3D20028E3 - D90028E3D90028E3D90028E3D90028E3D90019E3D20011BEB50011BEB50011AD - A50012A49B000B89820000000000000000000000000000000000000000000000 - 0000D1701200E47C1B00EDA55800EDA55800EDA55800E47C1B00E47C1B00D170 - 1200EDA55800EDA55800EDA55800934F0B008A470B0000000000000000000000 - 000000000000000000000000000012D1C70019E3D20028E3D90038E3D90038E3 - D90038E3D90028E3D90019E3D20012D0C00011BEB50011ADA5000B9C93000B89 - 820000000000000000000000000000000000000000000000000012D1C7000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000B898200000000000000000000000000000000000000 - 00000000000012D1C70028E3D90028E3D90038E3D90038E3D90038E3D90028E3 - D90019E3D20012D1C70011BEB50011ADA5000B9C93000B898200000000000000 - 000000000000000000000000000000000000D1701200EDA55800FFFFFF00FFFF - FF00FFFFFF00EDA55800E48A2800EDA55800FFFFFF00FFFFFF00FFFFFF00EDA5 - 58008A470B0000000000000000000000000000000000000000000000000012D1 - C70019E3D20038E3D900000000000000000038E3D90028E3D90019E3D2000000 - 00000000000011ADA50012A49B000B8982000000000000000000000000000000 - 0000000000000000000012D1C70019E3D20028E3D90038E3D90047EDE40038E3 - D90028E3D90019E3D20012D0C00011BEB50011ADA5000B9C93000B8982000000 - 0000000000000000000000000000000000000000000012D1C70019E3D20028E3 - D90000000000000000000000000028E3D90019E3D200000000000000000011AD - A50012A49B000B89820000000000000000000000000000000000000000000000 - 0000D1701200EDA55800FFFFFF0000000000FFFFFF00EDA55800E48A2800EDA5 - 5800FFFFFF0000000000FFFFFF00EDA5580082470B0000000000000000000000 - 00000000000000000000000000000000000019E3D20028E3D900000000000000 - 000038E3D90028E3D90019E3D200000000000000000011ADA50012A49B000000 - 00000000000000000000000000000000000000000000000000000000000019E3 - D2000000000038E3D90038E3D9000000000028E3D9000000000012D1C70011BE - B5000000000012A49B0000000000000000000000000000000000000000000000 - 0000000000000000000019E3D2000000000038E3D90038E3D90038E3D9000000 - 000019E3D200000000000000000011ADA50012A49B0000000000000000000000 - 00000000000000000000000000000000000000000000EDA55800FFFFFF00FFFF - FF00FFFFFF00EDA55800E48A2800EDA55800FFFFFF00FFFFFF00FFFFFF00EDA5 - 5800000000000000000000000000000000000000000000000000000000000000 - 000019E3D20028E3D90028E3D90028E3D90028E3D90028E3D90019E3D20012D0 - C00011B5AC0011ADA5000B9C9300000000000000000000000000000000000000 - 000000000000000000000000000019E3D20028E3D900000000000000000028E3 - D90028E3D90019E3D200000000000000000011ADA5000B9C9300000000000000 - 000000000000000000000000000000000000000000000000000019E3D20028E3 - D90028E3D90028E3D90028E3D90028E3D90019E3D20012D0C00011B5AC0011AD - A5000B9C93000000000000000000000000000000000000000000000000000000 - 000000000000E47C1B00EDA55800EDA55800EDA55800E48A2800E47C1B00E47C - 1B00EDA55800EDA55800EDA558009C4F0B000000000000000000000000000000 - 0000000000000000000000000000000000000000000019E3D20019E3D20028E3 - D90019E3D20019E3D20012D1C70011BEB50011B5AC0012A49B00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000019E3D20019E3D20028E3D90019E3D20019E3D20012D1C70011BEB50011B5 - AC0012A49B000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000019E3D20019E3D20028E3D90019E3D20019E3 - D20012D1C70011BEB50011B5AC0012A49B000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000E47C1B00E47C - 1B00E47C1B00E47C1B00E47C1B00D1701200C0681200AD601200A55812000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000012D1C70012D0C00012D0C00011BEB50011B5 - AC00000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000000000000000000012D1C70012D0 - C00012D0C00011BEB50011B5AC00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000000000012D1C70012D0C00012D0C00011BEB50011B5AC00000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000D1701200D1701200D1701200C068 - 1200C06812000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 000000000000000000000000000000000000424D3E000000000000003E000000 - 280000004C000000E40000000100010000000000B00A00000000000000000000 - 000000000000000000000000FFFFFF00FE207FC1FFF83F8000000000F830FF00 - 7FE00F8000000000F071FE003FC0078000000000E063FC001F80038000000000 - E03FFC001F80038000000000C01FF8000F00018000000000C00078000F000180 - 00000000C00078000F00018000000000C00078000F00018000000000C0007800 - 0F00018000000000E000FC001F80038000000000E000FC001F80038000000000 - F001FE003FC0078000000000F803FF007FE00F8000000000FE0FFFC1FFF83F80 - 00000000FFFFFFFFFFFFFF8000000000FFFFFFFFFFFFFF8000000000FFFFFFFF - FFFFFF8000000000FFFFFFFFFFFFFF8000000000FC03FFFC7FFE0FFC1FF00000 - F001FFF83FF803F007F00000C001FFF83FF001E003F00000C000FFF83E0000C0 - 01F00000C000FFFC3C0000C001F00000C0007C001C00000000F00000C0007800 - 0C00000000F00000C00078000C00000000F00000C00078000C00000000F00000 - E000F8000C00000000F00000F0FFFC000E0000C001F00000F07FFC000F0000C0 - 01F00000F07FFE000F0001E003F00000F07FFE003F0803F007700000F8FFFF00 - FF9E0FFC1FF00000FFFFFFFFFFFFFFFFFF700000FFFFFFFFFFFFFFFFFFB00000 - FFFFFFFFFFFFFFFFFEB00000FFFFFFFFFFFFFFFFFF700000FF83FFF07FF83F87 - 07000000FE00FFC01FE00F8000000000FC007F800FC0078000000000F8003F00 - 078003C00010000080003F00078003C00010000000001C00030001C000100000 - 00001E00030001C00010000000001E00030001C00010000000001E00020000C0 - 0010000000001E00020000C00010000000003E00060000C00010000000003C00 - 060000C000100000000078000E0000C0001000000000F0001E0000C000100000 - 0083E0007E0000E00030000000FFFFDFFE0000F000700000FFFFFFEFFF0009FC - 01F00000FFFFFFFFFF8007FFFFF00000FFFFFFFFFFCC47FFFFF00000FF83FF80 - 7FF83FFF07F00000FE00FF001FE00FFC01F00000FC007E000FC007F800F00000 - F8003C00078003F00070000080003800078003F00070000000001000030001E0 - 0030000000000000030001E00030000000000000030001E00030000000000000 - 030001E000300000F0000000030001E000300000B8003000078003F000700000 - D8003800078003F000700000DC007F800FC007F800F00000D600FFC01FE00FFC - 01F00000B783FFF07FF83FFF07F00000AFFFFFFFFFFFFFFFFFF00000AFFFFFFF - FFFFFFFFFFF00000FBFFFFFFFFFFFFFFFFF00000FBFFFFFFFFFFFFFFFFF00000 - FE0FFFC1FFFE0FFC1FF00000F803FF007FF803F007F00000F001FE003FF001E0 - 03F00000E000FC001C6000C001F00000E000FC001C0000C001F00000C0007800 - 0C00000000F00000800038000C00000000F00000000018000C00000000F00000 - 000010000E00000000F00000000000000E00000000F00000A000A000020000C0 - 01F00000E000F000060000C001F00000F001F000060001E003F00000F803F800 - 070003F004F00000FE0FFC000F0E0FFC0CD00000FFFFFE001FFFFFFFF8700000 - FFFFFF003FFFFFFFD0200000FFFFFFC0FFFFFFFFF8700000FFFFFFFFFFFFFFFF - ECD00000FF83FFF07FFC1FFF07F00000FE00FFC01FF007FC01F00000FC007F80 - 0F8003F800F00000F0003E00070001F000700000E0003C00070001F000700000 - E0001C00030000E00030000080001000038000E00030000080001000038000E0 - 0030000030000600038000E000300000F0001E00038000E000300000E0003C00 - 07C001F000700000C000380007C001F000700000C00078000FE003F800F00000 - 8000F0001FF007FC01F000008083F0107FFC1FFF07F00000C1FFF83FFFFFFFFF - FFF00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFF - FFFFFFFFFFF00000FE0FFFC1FFFE0FFC1FF00000F803FF007FF803F007F00000 - F001FE003FF001E003F00000E000FC001FE000C001F00000E000FC001FE000C0 - 01F00000C00078000F80000000F00000C00078000C00000000F00000C0007800 - 0C00000000F00000C00078000C00000000F00000C00078000C00000000F00000 - E000FC001C0000C001F00000E000FC001C0000C001F00000F001FE003C0001E0 - 03F00000F803FF007C0003F006100000FE0FFFC1FC000FFC1E100000FFFFFFFF - FC01FFFFFF900000FFFFFFFFFC01FFFFFF900000FFFFFFFFFC01FFFFFF800000 - FFFFFFFFFC01FFFFFF8000000783FF00FFF83FFC1FF000000600FE007FE00FF0 - 07F0000004007C003FC007E003F0000000003C003F8003C001F0000000003C00 - 3F8003C001F0000000001C003F00018000F0000000001C003F00018000F00000 - 00001C003F00018000F00000000000000700018000F0000000000C0037000180 - 00F0000000002C00378003C001F0000000003E007F8003C001F0000004007800 - 1E0000E0020000000600F0000C000070077000000783F1E78C00007C1FB00000 - FFFFF3FFCC07C07FFFD00000FFFFF9FF9E0FE0FFFE000000FFFFFDFFBF1FF1FF - FFF00000FFFFFFFFFFFFFFFFFFF00000FE0FFFC1FFF07FFE0FF00000F803FF00 - 7FC01FF803F00000F001FE003F800FF001F00000E000FC001F0007E000F00000 - E000FC001F0007E000F00000C00078000E0003C000700000C00078000E0003C0 - 00700000C00078000E0003C000700000C00078000E0003C000700000C0007800 - 0E0003C000700000E000FC001F0007E000F00000E000FC001F0007E000F00000 - E000FE003F800FF001F00000C0007F007FC01FF803F00000DE0F7FC1FFF07BFE - 0F700000FFFFFFFFFFFFF1FFFEB00000FFFFFFFFFFFFE0FFFC900000FFFFFFFF - FFFFE0FFFC900000FFFFFFFFFFFFF5FFFEB00000FE0FFFC1FFF83FFF07F00000 - F803FF007FE00FFC01F00000F001FE003FC007F800F00000E000FC001F8003F0 - 00700000E000FC001F8003F000700000C00078000F0001E000300000C0007800 - 0F0001E000300000C00078000F0001E000300000C00078000F0001E000300000 - C00078000F0001E000300000E000FC001F8003F000700000E000FC001F8003F0 - 00700000F001FE003FC007F800F00000F803FF007FE00FFC01F00000FE0FFFC1 - FFF83FFF07F00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000 - FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000FE0FFFC1FFF83FFF - 07F00000F803FF007FE00FFC01F00000F001FE003FC007F800F00000E000FC00 - 1F8003F000700000E000FC001F8003F000700000C00078000F0001E000300000 - C00078000F0001E000300000C00078000F0001E000300000C00078000F0001E0 - 00300000C00078000F0001E000300000E000FC001F8003F000700000E000FC00 - 1F8003F000700000F001FE003FC007F800F00000F803FF007FE00FFC01F00000 - FE0FFFC1FFF83FFF07F00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFF - FFF00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000FE0FFFC1 - FFF83FFF07F00000F803FF007FE00FFC01F00000F001FE003FC007F800F00000 - E000FC001F8003F000700000E000FC001F8003F000700000C00078000F0001E0 - 00300000C00078000F0001E000300000C00078000F0001E000300000C0007800 - 0F0001E000300000C00078000F0001E000300000E000FC001F8003F000700000 - E000FC001F8003F000700000F001FE003FC007F800F00000F803FF007FE00FFC - 01F00000FE0FFFC1FFF83FFF07F00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFF - FFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFFFFF00000 - 00000000000000000000000000000000000000000000} - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/14 - RichEditWB_Demo/Unit1.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/14 - RichEditWB_Demo/Unit1.pas deleted file mode 100644 index 8b801ae9dd..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/14 - RichEditWB_Demo/Unit1.pas +++ /dev/null @@ -1,446 +0,0 @@ -//**************************************************** -// EwbRichEdit Demo * -// * -// * -// By: * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DocUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -//I used 2 method to get the info : -//1. StringList (So you can saveToFile) -//2. String so you use it simple Add procedure -// Both of them do the job for every parsed item. - -unit Unit1; - -interface - -uses - SysUtils, Classes, Graphics, Forms, Dialogs, Menus, RichEditBrowser, - EmbeddedWB, ImgList, Controls, ComCtrls, StdCtrls, OleCtrls, ExtCtrls, - SHDocVw_EWB, EwbCore; - -type - TForm2 = class(TForm) - Panel1: TPanel; - Panel2: TPanel; - StatusBar1: TStatusBar; - MainMenu1: TMainMenu; - Fonts1: TMenuItem; - SelectFonts1: TMenuItem; - SetFontColor1: TMenuItem; - SetSize1: TMenuItem; - SetBold1: TMenuItem; - SetItalic1: TMenuItem; - SetUnderLine1: TMenuItem; - AddBackroundColor1: TMenuItem; - ResetFontsFormat1: TMenuItem; - File1: TMenuItem; - New1: TMenuItem; - Open3: TMenuItem; - Save1: TMenuItem; - SaveAs2: TMenuItem; - N20: TMenuItem; - Print2: TMenuItem; - Tools1: TMenuItem; - CreateASnapshot1: TMenuItem; - PreviewRichEditLinesInTheBrowser1: TMenuItem; - LoadCodeFromBrowserStream1: TMenuItem; - N21: TMenuItem; - MailSelectedText1: TMenuItem; - Mail1: TMenuItem; - N22: TMenuItem; - HighlighHTML1: TMenuItem; - HighLightXML1: TMenuItem; - HighLightURL1: TMenuItem; - N23: TMenuItem; - SetColor1: TMenuItem; - Themes1: TMenuItem; - Edit1: TMenuItem; - Find1: TMenuItem; - Replace1: TMenuItem; - GoToLineNumber1: TMenuItem; - SetSelectionAsAHyperLink1: TMenuItem; - SetWordAsAHyperLink1: TMenuItem; - WrapLongLines1: TMenuItem; - Add1: TMenuItem; - InsertFromImageList1: TMenuItem; - InsertFile1: TMenuItem; - InsertBitmap1: TMenuItem; - N24: TMenuItem; - AddDateAndTime1: TMenuItem; - N25: TMenuItem; - AddBullets1: TMenuItem; - AddRomanNumbers1: TMenuItem; - AddLineNumbers1: TMenuItem; - N26: TMenuItem; - AddAButton1: TMenuItem; - AddTEditBox1: TMenuItem; - AddARadioButton1: TMenuItem; - AddACheckBox1: TMenuItem; - OpenDialog1: TOpenDialog; - RichEditWB1: TRichEditWB; - ilsSmilies: TImageList; - Demo: TMenuItem; - N1: TMenuItem; - Exit1: TMenuItem; - EmbeddedWB1: TEmbeddedWB; - StatusBar2: TStatusBar; - N2: TMenuItem; - DesignMode: TMenuItem; - procedure EmbeddedWB1CommandStateChange(ASender: TObject; Command: Integer; - Enable: WordBool); - procedure DesignModeClick(Sender: TObject); - procedure EmbeddedWB1StatusTextChange(ASender: TObject; - const Text: WideString); - procedure Exit1Click(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure Themes1Click(Sender: TObject); - procedure SetColor1Click(Sender: TObject); - procedure HighLightURL1Click(Sender: TObject); - procedure HighLightXML1Click(Sender: TObject); - procedure HighlighHTML1Click(Sender: TObject); - procedure Mail1Click(Sender: TObject); - procedure MailSelectedText1Click(Sender: TObject); - procedure LoadCodeFromBrowserStream1Click(Sender: TObject); - procedure PreviewRichEditLinesInTheBrowser1Click(Sender: TObject); - procedure CreateASnapshot1Click(Sender: TObject); - procedure AddARadioButton1Click(Sender: TObject); - procedure AddACheckBox1Click(Sender: TObject); - procedure AddTEditBox1Click(Sender: TObject); - procedure AddAButton1Click(Sender: TObject); - procedure AddLineNumbers1Click(Sender: TObject); - procedure AddRomanNumbers1Click(Sender: TObject); - procedure AddBullets1Click(Sender: TObject); - procedure InsertBitmap1Click(Sender: TObject); - procedure InsertFile1Click(Sender: TObject); - procedure InsertFromImageList1Click(Sender: TObject); - procedure SetWordAsAHyperLink1Click(Sender: TObject); - procedure SetSelectionAsAHyperLink1Click(Sender: TObject); - procedure Replace1Click(Sender: TObject); - procedure GoToLineNumber1Click(Sender: TObject); - procedure Find1Click(Sender: TObject); - procedure ResetFontsFormat1Click(Sender: TObject); - procedure AddBackroundColor1Click(Sender: TObject); - procedure AddDateAndTime1Click(Sender: TObject); - procedure SetUnderLine1Click(Sender: TObject); - procedure SetSize1Click(Sender: TObject); - procedure SetBold1Click(Sender: TObject); - procedure SetItalic1Click(Sender: TObject); - procedure SetFontColor1Click(Sender: TObject); - procedure SelectFonts1Click(Sender: TObject); - procedure Print2Click(Sender: TObject); - procedure Save1Click(Sender: TObject); - procedure SaveAs2Click(Sender: TObject); - procedure Open3Click(Sender: TObject); - procedure New1Click(Sender: TObject); - private - { Private declarations } - procedure RunDemo(); - public - { Public declarations } - end; - -var - Form2: TForm2; - -implementation - -{$R *.dfm} - -procedure TForm2.RunDemo(); -begin - RichEditWB1.AddBitmapFromImagelist(ilsSmilies, 0); - RichEditWB1.AddEmptyLine; - RichEditWB1.SelAttributes.Color := clYellow; - RichEditWB1.AddEmptyLine; - RichEditWB1.SelText := ' Beatles '; - RichEditWB1.AddEmptyLine; - RichEditWB1.AddBitmapFromImagelist(ilsSmilies, 15); - RichEditWB1.AddEmptyLine; - RichEditWB1.SelAttributes.Color := clPurple; - RichEditWB1.AddEmptyLine; - RichEditWB1.SelText := ' Deep Purple '; - RichEditWB1.AddEmptyLine; - RichEditWB1.AddBitmapFromImagelist(ilsSmilies, 5); - RichEditWB1.AddEmptyLine; - RichEditWB1.AddFormatedText('Led Zepelin', true, true, true, true, clred); - RichEditWB1.AddEmptyLine; - RichEditWB1.AddEmptyLine; - RichEditWB1.AddFormatedText('C U L8r', True, false, false, false, clGreen); - RichEditWB1.AddEmptyLine; - RichEditWB1.RemoveTextFormats; -end; - -procedure TForm2.New1Click(Sender: TObject); -begin - RichEditWB1.New; -end; - -procedure TForm2.Open3Click(Sender: TObject); -begin - RichEditWB1.Open; -end; - -procedure TForm2.SaveAs2Click(Sender: TObject); -begin - RichEditWB1.SaveAs; -end; - -procedure TForm2.Save1Click(Sender: TObject); -begin - RichEditWB1.Save; -end; - -procedure TForm2.Print2Click(Sender: TObject); -begin - RichEditWB1.PrintAll; -end; - -procedure TForm2.SelectFonts1Click(Sender: TObject); -begin - RichEditWB1.SelectFont; -end; - -procedure TForm2.SetFontColor1Click(Sender: TObject); -begin - RichEditWB1.SetFontColor; -end; - -procedure TForm2.SetItalic1Click(Sender: TObject); -begin - RichEditWB1.SetFontItalic; -end; - -procedure TForm2.SetBold1Click(Sender: TObject); -begin - RichEditWB1.SetFontBold; -end; - -procedure TForm2.SetSize1Click(Sender: TObject); -begin - RichEditWB1.SetFontSize; -end; - -procedure TForm2.SetUnderLine1Click(Sender: TObject); -begin - RichEditWB1.SetFontUnderLine; -end; - -procedure TForm2.AddDateAndTime1Click(Sender: TObject); -begin - RichEditWB1.AddDateAndTime; -end; - -procedure TForm2.AddBackroundColor1Click(Sender: TObject); -begin - RichEditWB1.SetSelectedBgColor; -end; - -procedure TForm2.ResetFontsFormat1Click(Sender: TObject); -begin - RichEditWB1.RemoveTextFormats; -end; - -procedure TForm2.Find1Click(Sender: TObject); -begin - RichEditWB1.Find; -end; - -procedure TForm2.GoToLineNumber1Click(Sender: TObject); -var - Value: string; -begin - InputQuery('Select A Line', 'Please Enter a line number to select..', Value); - RichEditWB1.SelectLine(StrToInt(Trim(Value))); -end; - -procedure TForm2.Replace1Click(Sender: TObject); -begin - RichEditWB1.Replace; -end; - -procedure TForm2.SetSelectionAsAHyperLink1Click(Sender: TObject); -begin - RichEditWB1.SetSelectionHyperlink(true); -end; - -procedure TForm2.SetWordAsAHyperLink1Click(Sender: TObject); -begin - RichEditWB1.SetWordHyperlink(true); -end; - -procedure TForm2.InsertFromImageList1Click(Sender: TObject); -begin - RunDemo(); -end; - -procedure TForm2.InsertFile1Click(Sender: TObject); -begin - if OpenDialog1.Execute then - RichEditWB1.AddFile(OpenDialog1.FileName, true, true); -end; - -procedure TForm2.InsertBitmap1Click(Sender: TObject); -begin - if OpenDialog1.Execute then - RichEditWB1.AddFile(OpenDialog1.FileName, false, false); -end; - -procedure TForm2.AddBullets1Click(Sender: TObject); -begin - RichEditWB1.AddBullets; -end; - -procedure TForm2.AddRomanNumbers1Click(Sender: TObject); -begin - RichEditWB1.AddRomanNumbering; -end; - -procedure TForm2.AddLineNumbers1Click(Sender: TObject); -begin - RichEditWB1.AddLineNumbering; -end; - -procedure TForm2.AddAButton1Click(Sender: TObject); -begin - RichEditWB1.AddButton('bsalsa', 'btn', 20, 30, 130); -end; - -procedure TForm2.AddTEditBox1Click(Sender: TObject); -begin - RichEditWB1.AddEditBox('bsalsa', 'edt', 20, 30, 80); -end; - -procedure TForm2.AddACheckBox1Click(Sender: TObject); -begin - RichEditWB1.AddCheckBox(' bsalsa', 'cb', 20, 30, 170, true); -end; - -procedure TForm2.AddARadioButton1Click(Sender: TObject); -begin - RichEditWB1.AddRadioButton('bsalsa', 'rb', 20, 30, 40, true); -end; - -procedure TForm2.CreateASnapshot1Click(Sender: TObject); -var - image1: TImage; -begin - Image1 := Timage.Create(self); - RichEditWB1.CreateSnapShot(Image1.Picture.Bitmap); - Image1.Picture.SaveToFile('Image1'); - image1.free; -end; - -procedure TForm2.DesignModeClick(Sender: TObject); -begin - if EmbeddedWB1.DesignMode then - Statusbar2.Panels[1].Text := 'Design Mode'; -end; - -procedure TForm2.PreviewRichEditLinesInTheBrowser1Click(Sender: TObject); -begin - RichEditWB1.PreviewInBrowser; -end; - -procedure TForm2.LoadCodeFromBrowserStream1Click(Sender: TObject); -begin - RichEditWB1.LoadStreamFromBrowser; -end; - -procedure TForm2.MailSelectedText1Click(Sender: TObject); -begin - RichEditWB1.MailSelected; -end; - -procedure TForm2.Mail1Click(Sender: TObject); -begin - RichEditWB1.MailContext; -end; - -procedure TForm2.HighlighHTML1Click(Sender: TObject); -begin - RichEditWB1.LoadHTMLFromBrowser; - if RichEditWB1.HighlightHTML then - RichEditWB1.DoHighlightHTML; - RichEditWB1.ScrollToTop; -end; - -procedure TForm2.HighLightXML1Click(Sender: TObject); -begin - RichEditWB1.HighLightURL := false; - EmbeddedWB1.Navigate('http://rss.groups.yahoo.com/group/delphi-webbrowser/rss'); - RichEditWB1.LoadAsCopyFromBrowser; - if RichEditWB1.HighlightXML then - RichEditWB1.DoHighlightXML; -end; - -procedure TForm2.HighLightURL1Click(Sender: TObject); -begin - RichEditWB1.HighLightURL := True; - EmbeddedWB1.ViewPageLinksToStrings(RichEditWB1.Lines); - RichEditWB1.AddLineNumbering; -end; - -procedure TForm2.SetColor1Click(Sender: TObject); -begin - RichEditWB1.SetColor; -end; - -procedure TForm2.Themes1Click(Sender: TObject); -begin - RichEditWB1.SetThemes(tBlack); -end; - -procedure TForm2.FormShow(Sender: TObject); -begin - EmbeddedWB1.Navigate('bsalsa.com'); -end; - -procedure TForm2.EmbeddedWB1CommandStateChange(ASender: TObject; - Command: Integer; Enable: WordBool); -begin - if EmbeddedWB1.Modified then - StatusBar2.Panels[2].Text := 'Modified'; -end; - -procedure TForm2.EmbeddedWB1StatusTextChange(ASender: TObject; - const Text: WideString); -begin - StatusBar2.Panels[0].Text := Text; -end; - -procedure TForm2.Exit1Click(Sender: TObject); -begin - Close; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/14 - RichEditWB_Demo/prjProject1Demo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/14 - RichEditWB_Demo/prjProject1Demo.dpr deleted file mode 100644 index 90906a660a..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/14 - RichEditWB_Demo/prjProject1Demo.dpr +++ /dev/null @@ -1,49 +0,0 @@ -//**************************************************** -// EwbRichEdit Demo * -// * -// * -// By: * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DocUMENTATION. [YOUR Name] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -program prjProject1Demo; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form2}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm2, Form2); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/_ZoneDemo.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/_ZoneDemo.dfm deleted file mode 100644 index 25859d20bc..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/_ZoneDemo.dfm +++ /dev/null @@ -1,189 +0,0 @@ -object Form1: TForm1 - Left = 304 - Top = 258 - Width = 854 - Height = 527 - Caption = 'Zones & Security Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnCreate = FormCreate - OnDestroy = FormDestroy - PixelsPerInch = 96 - TextHeight = 13 - object Label1: TLabel - Left = 7 - Top = 413 - Width = 98 - Height = 13 - Caption = 'Current template:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object Label3: TLabel - Left = 7 - Top = 434 - Width = 105 - Height = 13 - Caption = 'Minimum template:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object Label6: TLabel - Left = 7 - Top = 456 - Width = 109 - Height = 13 - Caption = 'Recomm. template:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object StringGrid1: TStringGrid - Left = 0 - Top = 0 - Width = 589 - Height = 397 - ColCount = 2 - DefaultColWidth = 265 - DefaultRowHeight = 16 - FixedCols = 0 - FixedRows = 0 - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSelect] - ParentFont = False - TabOrder = 0 - end - object Panel1: TPanel - Left = 118 - Top = 409 - Width = 297 - Height = 22 - BevelInner = bvLowered - TabOrder = 1 - object CurrentImage: TImage - Left = 5 - Top = 3 - Width = 16 - Height = 16 - end - object CurrentDisplay: TLabel - Left = 28 - Top = 5 - Width = 3 - Height = 13 - end - end - object Panel2: TPanel - Left = 118 - Top = 431 - Width = 297 - Height = 22 - BevelInner = bvLowered - TabOrder = 2 - object MinimumImage: TImage - Left = 5 - Top = 3 - Width = 16 - Height = 16 - end - object MinimumDisplay: TLabel - Left = 28 - Top = 5 - Width = 3 - Height = 13 - end - end - object Panel3: TPanel - Left = 118 - Top = 453 - Width = 297 - Height = 22 - BevelInner = bvLowered - TabOrder = 3 - object RecommImage: TImage - Left = 5 - Top = 3 - Width = 16 - Height = 16 - end - object RecommDisplay: TLabel - Left = 27 - Top = 5 - Width = 3 - Height = 13 - end - end - object Panel4: TPanel - Left = 600 - Top = 0 - Width = 246 - Height = 493 - Align = alRight - BevelOuter = bvNone - TabOrder = 4 - object Label2: TLabel - Left = 11 - Top = 219 - Width = 204 - Height = 13 - Caption = 'Sites or urlpatterns added to selected zone:' - end - object Label4: TLabel - Left = 13 - Top = 8 - Width = 176 - Height = 13 - Caption = 'Select an Urlzone from the list:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clRed - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object MemoURLPatterns: TMemo - Left = 11 - Top = 237 - Width = 221 - Height = 244 - ReadOnly = True - TabOrder = 0 - end - object ListView1: TListView - Left = 11 - Top = 24 - Width = 220 - Height = 177 - Columns = < - item - AutoSize = True - end> - ReadOnly = True - TabOrder = 1 - ViewStyle = vsReport - OnSelectItem = ListView1SelectItem - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/_ZoneDemo.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/_ZoneDemo.pas deleted file mode 100644 index 4e6001e317..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/_ZoneDemo.pas +++ /dev/null @@ -1,248 +0,0 @@ -//************************************************************* -// Zones & Security Demo * -// * -// For Delphi * -// by * -// Per Linds Larsen * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit _ZoneDemo; - -interface - -uses - Windows, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, IEConst, - Registry, ActiveX, SecurityManager, ShellApi, Imglist, Urlmon, StdCtrls, - shdocvw_EWB, ComCtrls, OleCtrls, Grids, ExtCtrls; - -type - TForm1 = class(TForm) - StringGrid1: TStringGrid; - Panel1: TPanel; - Label1: TLabel; - CurrentImage: TImage; - CurrentDisplay: TLabel; - Label3: TLabel; - Panel2: TPanel; - MinimumImage: TImage; - MinimumDisplay: TLabel; - Label6: TLabel; - Panel3: TPanel; - RecommImage: TImage; - RecommDisplay: TLabel; - Panel4: TPanel; - MemoURLPatterns: TMemo; - Label2: TLabel; - Label4: TLabel; - ListView1: TListView; - procedure ListView1SelectItem(Sender: TObject; Item: TListItem; - Selected: Boolean); - procedure FormDestroy(Sender: TObject); - procedure FormCreate(Sender: TObject); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.DFM} - -var - ZoneManager: IInternetZoneManager; - SecManager: IInternetSecurityManager; - ZoneAttrib: TZoneAttributes; - ZoneEnum: DWORD; - ImageList: TImageList; - MinimumIcon: TIcon; - RecommIcon: TIcon; - CurrentIcon: TIcon; - -procedure GetIcon(IconPath: string; var Icon: TIcon); -var - FName, ImageName: string; - h: hInst; -begin - FName := Copy(IconPath, 1, Pos('#', IconPath) - 1); - ImageName := Copy(IconPath, Pos('#', IconPath), Length(IconPath)); - h := LoadLibrary(Pchar(FName)); - try - if h <> 0 then - Icon.Handle := LoadImage(h, Pchar(ImageName), IMAGE_ICON, 16, 16, 0); - finally - FreeLibrary(h); - end; -end; - -procedure GetTemplateInfo(dwTemplate: DWORD; var IconPath: string; var DisplayName: string); -const - KEY_TEMPLATES_POLICIES = 'Software\Microsoft\Windows\CurrentVersion\Internet Settings\TemplatePolicies\'; -var - Reg: TRegistry; - Template: string; -begin - Template := ''; - if dwTemplate = URLTEMPLATE_HIGH then - Template := 'High' - else - if dwTemplate = URLTEMPLATE_MEDLOW then - Template := 'MedLow' - else - if dwTemplate = URLTEMPLATE_LOW then - Template := 'Low' - else - if dwTemplate = URLTEMPLATE_MEDIUM then - Template := 'Medium'; - if Template <> '' then - // We need to use the registry to get information about urltemplates - begin - Reg := TRegistry.Create; - try - Reg.RootKey := HKEY_LOCAL_MACHINE; - Reg.OpenKey(KEY_TEMPLATES_POLICIES + Template, FALSE); - IconPath := Reg.ReadString('Icon'); - DisplayName := Reg.ReadString('DisplayName'); - finally - Reg.Free; - end; - end; -end; - -procedure TForm1.FormCreate(Sender: TObject); -var - Icon: TIcon; - ListItem: TListItem; - Zone, ZoneCounter, TotalZones: DWord; -begin - MinimumIcon := TIcon.Create; - RecommIcon := TIcon.Create; - CurrentIcon := TIcon.Create; - ImageList := TImagelist.Create(self); - ListView1.ViewStyle := vsReport; - // Create instance of InternetSecurityManager - CoInternetCreateSecuritymanager(nil, SecManager, 0); - // Create instance of InternetSecurityZoneManager - CoInternetCreateZoneManager(nil, ZoneManager, 0); - // Enumerate securityzones - ZoneManager.CreateZoneEnumerator(ZoneEnum, TotalZones, 0); - Icon := TIcon.Create; - try - for ZoneCounter := 0 to Pred(TotalZones) do - begin - ZoneManager.GetZoneAt(ZoneEnum, ZoneCounter, Zone); - // GetZoneAttributes retrieves icon and displaytext for the selected zone - ZoneManager.GetZoneAttributes(Zone, ZoneAttrib); - ListItem := Listview1.Items.Add; - ListItem.Caption := ZoneAttrib.szDisplayname; - Listitem.ImageIndex := ZoneCounter; - if ZoneCounter = 0 then - Listview1.Selected := listitem; - GetIcon(ZoneAttrib.szIconPath, Icon); - ImageList.AddIcon(Icon); - end; - finally - Icon.Free; - end; - Listview1.SmallImages := Imagelist; -end; - -procedure TForm1.FormDestroy(Sender: TObject); -begin - ImageList.Free; - MinimumIcon.Free; - RecommIcon.Free; - CurrentIcon.Free; - //Destroy the ZoneEnumerator - ZoneManager.DestroyZoneEnumerator(ZoneEnum); -end; - -procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem; - Selected: Boolean); -var - DisplayName, IconPath: string; - Row: Integer; - cbPolicy, Counter, Policy: Dword; - Enum: IEnumString; - Fetched: UInt; - Zone: DWord; - Pattern: POleStr; -begin - Application.ProcessMessages; - if selected then - begin - ZoneManager.GetZoneAt(ZoneEnum, Listview1.Items.IndexOf(Item), Zone); - MemoURLPatterns.Lines.BeginUpdate; - try - MemoURLPatterns.Lines.Clear; - //GetZoneMappings retrieve urlpatterns or sites added to the selected zone - SecManager.GetZoneMappings(Zone, enum, 0); - while Succeeded(Enum.Next(1, Pattern, @fetched)) and (fetched = 1) do - MemoURLPatterns.lines.Add(Pattern); - finally - MemoURLPatterns.Lines.EndUpdate; - end; - Enum := nil; - Pattern := nil; - Row := 0; - cbPolicy := SizeOf(dWord); - //GetZoneActionPolicy retrieves Urlpolicy for the 25 default UrlActions in each template. - for Counter := 0 to 24 do - begin - ZoneManager.GetZoneActionPolicy(Zone, - DefaultActions[Counter], @policy, cbPolicy, 0); - StringGrid1.RowCount := Row + 1; - Stringgrid1.Cells[0, Row] := DisplayAction(DefaultActions[Counter]); - Stringgrid1.Cells[1, Row] := DisplayPolicy(DefaultActions[Counter], Policy); - Inc(Row); - end; - ZoneManager.GetZoneAttributes(Zone, ZoneAttrib); - // If avaiable then get icon and displaytext for the urltemplate - //Minimum urltemplate - GetTemplateInfo(ZoneAttrib.dwTemplateMinLevel, IconPath, DisplayName); - GetIcon(IconPath, MinimumIcon); - MinimumImage.Picture.Icon := MinimumIcon; - MinimumDisplay.Caption := Displayname; - // Current Urltemplate - GetTemplateInfo(ZoneAttrib.dwTemplateCurrentLevel, IconPath, DisplayName); - GetIcon(IconPath, CurrentIcon); - CurrentImage.Picture.Icon := CurrentIcon; - CurrentDisplay.Caption := Displayname; - //Recommended urltemplate - GetTemplateInfo(ZoneAttrib.dwTemplateRecommended, IconPath, DisplayName); - GetIcon(IconPath, RecommIcon); - RecommImage.Picture.Icon := RecommIcon; - recommDisplay.Caption := Displayname; - end; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/prjZonesSecurityDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/prjZonesSecurityDemo.dpr deleted file mode 100644 index dd8ab8c77d..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/15 - Zones_Security_Demo/prjZonesSecurityDemo.dpr +++ /dev/null @@ -1,46 +0,0 @@ -//************************************************************* -// Zones & Security Demo * -// * -// For Delphi * -// by * -// Per Linds Larsen * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the demo under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program prjZonesSecurityDemo; - -uses - Forms, - _ZoneDemo in '_ZoneDemo.pas' {Form1}; - -{$R *.RES} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/prjUIParser_Demo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/prjUIParser_Demo.dpr deleted file mode 100644 index b83b084afb..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/prjUIParser_Demo.dpr +++ /dev/null @@ -1,49 +0,0 @@ -//**************************************************** -// Extended IEParser Demo * -// * -// * -// By: * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DocUMENTATION. [YOUR Name] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -program prjUIParser_Demo; - -uses - Forms, - utParser in 'utParser.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/utParser.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/utParser.dfm deleted file mode 100644 index 6570402c8f..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/utParser.dfm +++ /dev/null @@ -1,195 +0,0 @@ -object Form1: TForm1 - Left = 314 - Top = 312 - BorderIcons = [biSystemMenu, biMinimize] - BorderStyle = bsSingle - Caption = 'Text IE Parser Demo' - ClientHeight = 440 - ClientWidth = 688 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 688 - Height = 41 - Align = alTop - TabOrder = 0 - object Go: TButton - Left = 640 - Top = 11 - Width = 39 - Height = 22 - Caption = 'Go' - TabOrder = 0 - OnClick = GoClick - end - object IEAddress1: TIEAddress - Left = 8 - Top = 11 - Width = 627 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - ButtonColor = clBlack - ButtonPressedColor = clBlack - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 1 - end - end - object StatusBar1: TStatusBar - Left = 0 - Top = 404 - Width = 688 - Height = 19 - Panels = < - item - Width = 300 - end - item - Width = 50 - end> - end - object Panel2: TPanel - Left = 0 - Top = 41 - Width = 688 - Height = 363 - Align = alClient - TabOrder = 2 - object Label1: TLabel - Left = 8 - Top = 6 - Width = 53 - Height = 13 - Caption = 'Anchor List' - end - object Label2: TLabel - Left = 344 - Top = 6 - Width = 52 - Height = 13 - Caption = 'Links List' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object Label3: TLabel - Left = 344 - Top = 193 - Width = 66 - Height = 13 - Caption = 'Images List' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object MemoLinkList: TMemo - Left = 344 - Top = 20 - Width = 337 - Height = 166 - ScrollBars = ssBoth - TabOrder = 0 - end - object MemoAnchorList: TRichEditWB - Left = 1 - Top = 1 - Width = 337 - Height = 361 - Hint = - 'File Name: Untitled. | '#10#13'Position: Line: 1 Col: 1. | '#10#13'Mod' + - 'ified. | '#10#13'Caps Lock: Off. | '#10#13'NumLock: Off. | '#10#13'Insert: On. | '#10 + - #13'Total Lines Count: 0. |' - Align = alLeft - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlack - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - ParentShowHint = False - ScrollBars = ssBoth - ShowHint = True - TabOrder = 1 - WordWrap = False - AutoNavigate = True - FileName = 'Untitled' - HighlightHTML = True - HighlightURL = True - HighlightXML = True - RTFText = - '{\rtf1\ansi\deff0{\fonttbl{\f0\fnil Tahoma;}}'#13#10'{\colortbl ;\red0' + - '\green0\blue0;}'#13#10'\viewkind4\uc1\pard\cf1\lang2055\f0\fs16\par'#13#10'}' + - #13#10 - SupprtMoreThen64KB = False - TextAlignment = taLeftJustify - HideCaret = False - Themes = tDefault - end - object MemoImageList: TRichEditWB - Left = 344 - Top = 210 - Width = 337 - Height = 152 - Hint = - 'File Name: Untitled. | '#10#13'Position: Line: 1 Col: 1. | '#10#13'Mod' + - 'ified. | '#10#13'Caps Lock: Off. | '#10#13'NumLock: Off. | '#10#13'Insert: On. | '#10 + - #13'Total Lines Count: 0. |' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlack - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - ParentShowHint = False - ScrollBars = ssBoth - ShowHint = True - TabOrder = 2 - WordWrap = False - AutoNavigate = True - FileName = 'Untitled' - HighlightHTML = True - HighlightURL = True - HighlightXML = True - RTFText = - '{\rtf1\ansi\deff0{\fonttbl{\f0\fnil Tahoma;}}'#13#10'{\colortbl ;\red0' + - '\green0\blue0;}'#13#10'\viewkind4\uc1\pard\cf1\lang2055\f0\fs16\par'#13#10'}' + - #13#10 - SupprtMoreThen64KB = False - TextAlignment = taLeftJustify - HideCaret = False - Themes = tDefault - end - end - object ProgressBar1: TProgressBar - Left = 0 - Top = 423 - Width = 688 - Height = 17 - Align = alBottom - TabOrder = 3 - end - object UILess1: TUILess - About = 'TUILess parser - Help & Support: http://www.bsalsa.com/' - Left = 8 - Top = 56 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/utParser.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/utParser.pas deleted file mode 100644 index 1c3cd7dde4..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/16 - UI-Less_Demo/utParser.pas +++ /dev/null @@ -1,90 +0,0 @@ -//**************************************************** -// Extended IEParser Demo * -// * -// * -// By: * -// Eran Bodankin (bsalsa) * -// bsalsa@bsalsa.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DocUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -unit utParser; - -interface - -uses - IEAddress, ExtCtrls, ComCtrls, UI_Less, Controls, Classes, Forms, StdCtrls, - RichEditBrowser, EwbUrl; - -type - TForm1 = class(TForm) - Panel1: TPanel; - Go: TButton; - IEAddress1: TIEAddress; - StatusBar1: TStatusBar; - UILess1: TUILess; - Panel2: TPanel; - MemoLinkList: TMemo; - Label1: TLabel; - Label2: TLabel; - Label3: TLabel; - MemoAnchorList: TRichEditWB; - MemoImageList: TRichEditWB; - ProgressBar1: TProgressBar; - procedure GoClick(Sender: TObject); - private - procedure ClearControls; - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.ClearControls; -begin - MemoAnchorList.Clear; - MemoImageList.Clear; - MemoLinkList.Clear; -end; - -procedure TForm1.GoClick(Sender: TObject); -begin - ClearControls; - UILess1.Go(IEAddress1.Text); - UILess1.GetAnchorList(MemoAnchorList.lines); - UILess1.GetImageList(MemoImageList.lines); - UILess1.GetLinkList(MemoLinkList.lines); -end; - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/frmMain.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/frmMain.dfm deleted file mode 100644 index 39b680aed3..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/frmMain.dfm +++ /dev/null @@ -1,632 +0,0 @@ -object Form1: TForm1 - Left = 340 - Top = 295 - BorderStyle = bsSingle - Caption = 'Url Demo' - ClientHeight = 358 - ClientWidth = 553 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnCreate = FormCreate - OnDestroy = FormDestroy - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object Panel1: TPanel - Left = 0 - Top = 0 - Width = 553 - Height = 33 - Align = alTop - TabOrder = 0 - object IEAddress1: TIEAddress - Left = 0 - Top = 8 - Width = 549 - Height = 22 - About = 'TIEAddress. Help & Support: http://www.bsalsa.com/' - IconLeft = 4 - IconTop = 3 - ItemHeight = 16 - ParentBiDiMode = True - TabOrder = 0 - end - end - object PageControl2: TPageControl - Left = 0 - Top = 33 - Width = 553 - Height = 325 - ActivePage = TabSheet1 - Align = alClient - TabOrder = 1 - object TabSheet1: TTabSheet - Caption = 'Parse Url' - object Panel5: TPanel - Left = 0 - Top = 39 - Width = 545 - Height = 258 - Align = alBottom - TabOrder = 0 - object Label7: TLabel - Left = 7 - Top = 6 - Width = 23 - Height = 13 - Caption = 'URL:' - end - object Label1: TLabel - Left = 8 - Top = 33 - Width = 26 - Height = 13 - Caption = 'Host:' - end - object Label2: TLabel - Left = 10 - Top = 79 - Width = 24 - Height = 13 - Caption = 'Port:' - end - object Label3: TLabel - Left = 8 - Top = 125 - Width = 52 - Height = 13 - Caption = 'Document:' - end - object Label9: TLabel - Left = 10 - Top = 171 - Width = 26 - Height = 13 - Caption = 'User:' - end - object Label5: TLabel - Left = 272 - Top = 79 - Width = 43 - Height = 13 - Caption = 'Protocol:' - end - object Label6: TLabel - Left = 272 - Top = 125 - Width = 50 - Height = 13 - Caption = 'Bookmark:' - end - object Label8: TLabel - Left = 272 - Top = 171 - Width = 50 - Height = 13 - Caption = 'Password:' - end - object Label4: TLabel - Left = 272 - Top = 33 - Width = 26 - Height = 13 - Caption = 'Path:' - end - object Label13: TLabel - Left = 10 - Top = 215 - Width = 59 - Height = 13 - Caption = 'Parameters:' - end - object Label14: TLabel - Left = 272 - Top = 217 - Width = 50 - Height = 13 - Caption = 'ExtraInfo:' - end - object edtURL: TEdit - Left = 35 - Top = 6 - Width = 479 - Height = 21 - TabOrder = 0 - end - object edtHost: TEdit - Left = 8 - Top = 52 - Width = 258 - Height = 21 - TabOrder = 1 - end - object edtPort: TEdit - Left = 7 - Top = 98 - Width = 258 - Height = 21 - TabOrder = 2 - end - object edtDocument: TEdit - Left = 8 - Top = 144 - Width = 258 - Height = 21 - TabOrder = 3 - end - object edtUser: TEdit - Left = 10 - Top = 190 - Width = 256 - Height = 21 - TabOrder = 4 - end - object edtPath: TEdit - Left = 272 - Top = 52 - Width = 242 - Height = 21 - TabOrder = 5 - end - object edtProtocol: TEdit - Left = 271 - Top = 98 - Width = 243 - Height = 21 - TabOrder = 6 - end - object edtBookmark: TEdit - Left = 272 - Top = 144 - Width = 242 - Height = 21 - TabOrder = 7 - end - object edtPass: TEdit - Left = 272 - Top = 190 - Width = 242 - Height = 21 - TabOrder = 8 - end - object edtParameters: TEdit - Left = 10 - Top = 234 - Width = 256 - Height = 21 - TabOrder = 9 - end - object edtExtraInfo: TEdit - Left = 272 - Top = 234 - Width = 242 - Height = 21 - TabOrder = 10 - end - end - object Panel6: TPanel - Left = 0 - Top = 0 - Width = 545 - Height = 31 - Align = alTop - TabOrder = 1 - object btnBuild: TButton - Left = 358 - Top = 2 - Width = 75 - Height = 22 - Caption = 'Build Url' - Enabled = False - TabOrder = 0 - OnClick = btnBuildClick - end - object btnCreate: TButton - Left = 439 - Top = 3 - Width = 75 - Height = 22 - Caption = 'Create Url' - Enabled = False - TabOrder = 1 - OnClick = btnCreateClick - end - object btnAnalize: TButton - Left = 3 - Top = 3 - Width = 66 - Height = 22 - Caption = 'Analize Url' - TabOrder = 2 - OnClick = btnAnalizeClick - end - object btnCrack: TButton - Left = 75 - Top = 3 - Width = 67 - Height = 22 - Caption = 'Crack Url' - TabOrder = 3 - OnClick = btnCrackClick - end - object cbCrack: TCheckBox - Left = 149 - Top = 6 - Width = 111 - Height = 17 - Caption = 'ICU_DECODE' - TabOrder = 4 - end - end - end - object TabSheet2: TTabSheet - Caption = 'Url Utils' - ImageIndex = 1 - object Panel2: TPanel - Left = 0 - Top = 200 - Width = 545 - Height = 72 - Align = alTop - TabOrder = 0 - object Label12: TLabel - Left = 109 - Top = 14 - Width = 93 - Height = 13 - Caption = 'String To Compare:' - end - object Button2: TButton - Left = 8 - Top = 8 - Width = 75 - Height = 21 - Caption = 'Compare Url' - TabOrder = 0 - OnClick = Button2Click - end - object edtComp1: TEdit - Left = 109 - Top = 33 - Width = 411 - Height = 21 - TabOrder = 1 - Text = 'http://www.bsalsa.com/forum/' - end - object edtResult: TEdit - Left = 10 - Top = 35 - Width = 73 - Height = 21 - TabOrder = 2 - Text = 'Result:' - end - end - object Panel4: TPanel - Left = 0 - Top = 0 - Width = 545 - Height = 105 - Align = alTop - TabOrder = 1 - object btnCan: TButton - Left = 8 - Top = 9 - Width = 89 - Height = 25 - Caption = 'Canonicalize Url' - TabOrder = 0 - OnClick = btnCanClick - end - object edtCan: TEdit - Left = 8 - Top = 40 - Width = 512 - Height = 21 - TabOrder = 1 - Text = 'http://www.bsalsa.com/downloads/demo folder.html?option=test' - end - object edtCano: TEdit - Left = 8 - Top = 67 - Width = 512 - Height = 21 - TabOrder = 2 - end - object cbCFlag: TCheckBox - Left = 105 - Top = 13 - Width = 114 - Height = 17 - Caption = ' ICU_NO_ENCODE' - TabOrder = 3 - end - end - object Panel3: TPanel - Left = 0 - Top = 105 - Width = 545 - Height = 95 - Align = alTop - TabOrder = 2 - object Label10: TLabel - Left = 352 - Top = 8 - Width = 55 - Height = 13 - Caption = 'Reletive Url' - end - object Label11: TLabel - Left = 206 - Top = 6 - Width = 39 - Height = 13 - Caption = 'Base Url' - end - object btnCombine: TButton - Left = 8 - Top = 6 - Width = 75 - Height = 25 - Caption = 'Combine Url' - TabOrder = 0 - OnClick = btnCombineClick - end - object edtCombine: TEdit - Left = 8 - Top = 68 - Width = 513 - Height = 21 - TabOrder = 1 - end - object edtReletive: TEdit - Left = 352 - Top = 25 - Width = 169 - Height = 21 - TabOrder = 2 - Text = 'downloads/demo folder.html?option=test' - end - object edtBase: TEdit - Left = 206 - Top = 25 - Width = 140 - Height = 21 - TabOrder = 3 - Text = ' http://www.bsalsa.com/' - end - object cbFlag: TCheckBox - Left = 10 - Top = 37 - Width = 111 - Height = 17 - Caption = ' ICU_NO_ENCODE' - TabOrder = 4 - end - end - end - object TabSheet3: TTabSheet - Caption = 'Url / Server' - ImageIndex = 2 - object Panel7: TPanel - Left = 0 - Top = 0 - Width = 545 - Height = 297 - Align = alClient - TabOrder = 0 - object Label15: TLabel - Left = 8 - Top = 12 - Width = 499 - Height = 23 - Caption = 'Note: Every server OS supports different properties!' - Font.Charset = DEFAULT_CHARSET - Font.Color = clRed - Font.Height = -19 - Font.Name = 'Tahoma' - Font.Style = [fsBold] - ParentFont = False - end - object Label16: TLabel - Left = 8 - Top = 41 - Width = 119 - Height = 13 - Caption = 'For avaliable flags go to:' - end - object LinkLabel1: TLinkLabel - Left = 133 - Top = 41 - Width = 109 - Height = 29 - AutoSize = False - Launch.AsHttp.Address = 'http://msdn2.microsoft.com/en-us/library/aa385351.aspx' - Caption = 'Query HttpQueryFlags' - Font.Charset = DEFAULT_CHARSET - Font.Color = clBlue - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [fsUnderline] - Transparent = True - end - object btnValid: TButton - Left = 8 - Top = 192 - Width = 72 - Height = 23 - Caption = 'Valid Url' - TabOrder = 0 - OnClick = btnValidClick - end - object btnSize: TButton - Left = 86 - Top = 192 - Width = 72 - Height = 23 - Caption = 'Url File Size' - TabOrder = 1 - OnClick = btnSizeClick - end - object btnProtocol: TButton - Left = 8 - Top = 163 - Width = 72 - Height = 23 - Caption = 'Protocol' - TabOrder = 2 - OnClick = btnProtocolClick - end - object EdtRes: TEdit - Left = 8 - Top = 251 - Width = 150 - Height = 21 - TabOrder = 3 - end - object btnCharSet: TButton - Left = 8 - Top = 221 - Width = 72 - Height = 23 - Caption = 'Charset' - TabOrder = 4 - OnClick = btnCharSetClick - end - object btnEntity: TButton - Left = 86 - Top = 221 - Width = 72 - Height = 23 - Caption = 'EntityTag' - TabOrder = 5 - OnClick = btnEntityClick - end - object btnServer: TButton - Left = 86 - Top = 134 - Width = 72 - Height = 23 - Caption = 'Server' - TabOrder = 6 - OnClick = btnServerClick - end - object btnStatusCode: TButton - Left = 8 - Top = 134 - Width = 72 - Height = 23 - Caption = 'Status Code' - TabOrder = 7 - OnClick = btnStatusCodeClick - end - object btnModified: TButton - Left = 8 - Top = 105 - Width = 72 - Height = 23 - Caption = 'Modified' - TabOrder = 8 - OnClick = btnModifiedClick - end - object btnUrlDate: TButton - Left = 86 - Top = 105 - Width = 72 - Height = 23 - Caption = 'Url Date' - TabOrder = 9 - OnClick = btnUrlDateClick - end - object btnUrlType: TButton - Left = 86 - Top = 163 - Width = 72 - Height = 23 - Caption = 'Url Type' - TabOrder = 10 - OnClick = btnUrlTypeClick - end - object Memo1: TMemo - Left = 164 - Top = 104 - Width = 365 - Height = 169 - ScrollBars = ssBoth - TabOrder = 11 - end - object btnDetails: TButton - Left = 375 - Top = 73 - Width = 73 - Height = 23 - Caption = 'Details' - TabOrder = 12 - OnClick = btnDetailsClick - end - object btnQueryAll: TButton - Left = 454 - Top = 73 - Width = 75 - Height = 23 - Caption = 'Query All' - TabOrder = 13 - OnClick = btnQueryAllClick - end - end - end - object TabSheet4: TTabSheet - Caption = 'Url Preview' - ImageIndex = 3 - object Memo2: TMemo - Left = 0 - Top = 41 - Width = 545 - Height = 256 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - object Panel8: TPanel - Left = 0 - Top = 0 - Width = 545 - Height = 41 - Align = alTop - TabOrder = 1 - object btnRead: TButton - Left = 0 - Top = 10 - Width = 75 - Height = 25 - Caption = 'Read File' - TabOrder = 0 - OnClick = btnReadClick - end - object btnCache: TButton - Left = 81 - Top = 10 - Width = 75 - Height = 25 - Caption = 'Is Url Cached' - TabOrder = 1 - OnClick = btnCacheClick - end - object edtCache: TEdit - Left = 162 - Top = 14 - Width = 121 - Height = 21 - TabOrder = 2 - end - end - end - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/frmMain.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/frmMain.pas deleted file mode 100644 index 102f5602fd..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/frmMain.pas +++ /dev/null @@ -1,342 +0,0 @@ -//*********************************************************** -// URL Tools demo * -// (Uniform Resource identifier) * -// * -// For Delphi 5 - 2009 * -// Freeware demo * -// By: Eran Bodankin (bsalsa) bsalsa@bsalsa.com * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -unit frmMain; - -interface - -uses - EwbUrl, SysUtils, StdCtrls, Forms, IEAddress, ExtCtrls, - IEConst, WinInet, Classes, Controls, Windows, ComCtrls, LinkLabel; - -type - TForm1 = class(TForm) - Panel1: TPanel; - IEAddress1: TIEAddress; - PageControl2: TPageControl; - TabSheet1: TTabSheet; - TabSheet2: TTabSheet; - Panel5: TPanel; - Label7: TLabel; - Label1: TLabel; - Label2: TLabel; - Label3: TLabel; - Label9: TLabel; - Label5: TLabel; - Label6: TLabel; - Label8: TLabel; - Label4: TLabel; - Label13: TLabel; - Label14: TLabel; - edtURL: TEdit; - edtHost: TEdit; - edtPort: TEdit; - edtDocument: TEdit; - edtUser: TEdit; - edtPath: TEdit; - edtProtocol: TEdit; - edtBookmark: TEdit; - edtPass: TEdit; - edtParameters: TEdit; - edtExtraInfo: TEdit; - Panel2: TPanel; - Label12: TLabel; - Button2: TButton; - edtComp1: TEdit; - edtResult: TEdit; - Panel4: TPanel; - btnCan: TButton; - edtCan: TEdit; - edtCano: TEdit; - cbCFlag: TCheckBox; - Panel3: TPanel; - Label10: TLabel; - Label11: TLabel; - btnCombine: TButton; - edtCombine: TEdit; - edtReletive: TEdit; - edtBase: TEdit; - cbFlag: TCheckBox; - TabSheet3: TTabSheet; - Panel7: TPanel; - btnValid: TButton; - btnSize: TButton; - btnProtocol: TButton; - Panel6: TPanel; - btnBuild: TButton; - btnCreate: TButton; - btnAnalize: TButton; - btnCrack: TButton; - cbCrack: TCheckBox; - EdtRes: TEdit; - btnCharSet: TButton; - btnEntity: TButton; - btnServer: TButton; - btnStatusCode: TButton; - btnModified: TButton; - btnUrlDate: TButton; - btnUrlType: TButton; - Memo1: TMemo; - btnDetails: TButton; - Label15: TLabel; - btnQueryAll: TButton; - Label16: TLabel; - LinkLabel1: TLinkLabel; - TabSheet4: TTabSheet; - Memo2: TMemo; - Panel8: TPanel; - btnRead: TButton; - btnCache: TButton; - edtCache: TEdit; - procedure btnCacheClick(Sender: TObject); - procedure btnReadClick(Sender: TObject); - procedure btnQueryAllClick(Sender: TObject); - procedure btnDetailsClick(Sender: TObject); - procedure btnUrlTypeClick(Sender: TObject); - procedure btnModifiedClick(Sender: TObject); - procedure btnUrlDateClick(Sender: TObject); - procedure btnStatusCodeClick(Sender: TObject); - procedure btnServerClick(Sender: TObject); - procedure btnEntityClick(Sender: TObject); - procedure btnCharSetClick(Sender: TObject); - procedure btnLangClick(Sender: TObject); - procedure btnProtocolClick(Sender: TObject); - procedure btnSizeClick(Sender: TObject); - procedure btnValidClick(Sender: TObject); - procedure btnBuildClick(Sender: TObject); - procedure Button2Click(Sender: TObject); - procedure btnCreateClick(Sender: TObject); - procedure btnCanClick(Sender: TObject); - procedure btnCombineClick(Sender: TObject); - procedure btnCrackClick(Sender: TObject); - procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure btnAnalizeClick(Sender: TObject); - procedure FormDestroy(Sender: TObject); - private - procedure InsertData; - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - UP: TUrl; - -implementation - -{$R *.dfm} - -procedure TForm1.FormCreate(Sender: TObject); -begin - UP := TUrl.Create(IEAddress1.Text); -end; - -procedure TForm1.FormDestroy(Sender: TObject); -begin - UP.Free; -end; - -procedure TForm1.FormShow(Sender: TObject); -begin - IEAddress1.Text := 'http://username:password@hostname:port/path/document.html#bookmark'; -end; - -procedure TForm1.InsertData; -begin - edtUrl.Text := UP.Url; - edtDocument.Text := UP.Document; - edtProtocol.Text := UP.Protocol; - edtPort.Text := IntToStr(UP.Port); - edtPath.Text := UP.UrlPath; - edtHost.Text := UP.HostName; - edtExtraInfo.Text := UP.ExtraInfo; - edtPass.Text := UP.Password; - edtUser.Text := UP.UserName; - edtParameters.Text := UP.Parameters; - edtBookmark.Text := UP.Bookmark; -end; - -procedure TForm1.btnAnalizeClick(Sender: TObject); -begin - UP.QueryUrl(IEAddress1.Text); - InsertData; - btnCreate.Enabled := True; - btnBuild.Enabled := True; -end; - -procedure TForm1.btnCrackClick(Sender: TObject); -begin - if cbCrack.Checked then - edtUrl.Text := UP.CrackUrl(IEAddress1.Text, ICU_DECODE) - else - edtUrl.Text := UP.CrackUrl(IEAddress1.Text, ICU_ESCAPE); - - InsertData; - btnCreate.Enabled := True; - btnBuild.Enabled := True; -end; - -procedure TForm1.btnCreateClick(Sender: TObject); -begin - edtUrl.Text := Up.CreateUrl(ICU_USERNAME); -end; - -procedure TForm1.btnCharSetClick(Sender: TObject); -begin - edtRes.Text := Up.GetUrlCharset(IEAddress1.Text); -end; - -procedure TForm1.btnLangClick(Sender: TObject); -begin - edtRes.Text := Up.GetUrlServer(IEAddress1.Text); -end; - -procedure TForm1.btnModifiedClick(Sender: TObject); -begin - edtRes.Text := Up.GetUrlLastModified(IEAddress1.Text); -end; - -procedure TForm1.btnValidClick(Sender: TObject); -begin - if Up.IsUrlValid(IEAddress1.Text) then - edtRes.Text := 'A valid url' - else - edtRes.Text := 'Not a valid url!' -end; - -procedure TForm1.btnSizeClick(Sender: TObject); -begin - edtRes.Text := Up.GetUrlSize(IEAddress1.Text); -end; - -procedure TForm1.btnStatusCodeClick(Sender: TObject); -begin - edtRes.Text := Up.GetUrlStatusCode(IEAddress1.Text); -end; - -procedure TForm1.btnServerClick(Sender: TObject); -begin - edtRes.Text := Up.GetUrlServer(IEAddress1.Text); -end; - -procedure TForm1.btnUrlDateClick(Sender: TObject); -begin - edtRes.Text := Up.GetUrlDate(IEAddress1.Text); -end; - -procedure TForm1.btnUrlTypeClick(Sender: TObject); -begin - edtRes.Text := Up.GetUrlType(IEAddress1.Text); -end; - -procedure TForm1.btnEntityClick(Sender: TObject); -begin - edtRes.Text := Up.GetUrlEntityTag(IEAddress1.Text); -end; - -procedure TForm1.btnProtocolClick(Sender: TObject); -begin - edtRes.Text := Up.GetUrlProtocolVersion(IEAddress1.Text); -end; - -procedure TForm1.btnQueryAllClick(Sender: TObject); -var - i: Integer; - st: string; -begin - for i := 1 to 75 do - begin - st := (UP.QueryInfo(IEAddress1.Text, i)); - if st <> '' then - begin - Memo1.Lines.Add('Flag' + '# ' + IntToStr(i) + ': '); - Memo1.Lines.Add(st); - end; - end; -end; - -procedure TForm1.btnReadClick(Sender: TObject); -begin - Memo2.Lines.Add(UP.ReadFile(IEAddress1.Text, 50)); -end; - -procedure TForm1.btnDetailsClick(Sender: TObject); -var - st: string; -begin - st := UP.GetUrlServerDetails(IEAddress1.Text); - if Trim(st) <> '' then - Memo1.Lines.Add(st); -end; - -procedure TForm1.btnCacheClick(Sender: TObject); -begin - if Up.isUrlCached(IEAddress1.Text) then - edtCache.Text := 'Url is Cached.' - else - edtCache.Text := 'Url is not Cached.' -end; - -procedure TForm1.Button2Click(Sender: TObject); -begin - if Up.CompareUrl(IEAddress1.Text, edtComp1.Text) = S_OK then - edtResult.Text := 'Equal' - else - edtResult.Text := 'Not Equal' -end; - -procedure TForm1.btnBuildClick(Sender: TObject); -begin - edtUrl.Text := Up.BuildUrl; -end; - -procedure TForm1.btnCanClick(Sender: TObject); -begin - if cbCFlag.Checked then - edtCano.Text := UP.CanonicalizeUrl(edtCan.Text, ICU_NO_ENCODE) - else - edtCano.Text := UP.CanonicalizeUrl(edtCan.Text, ICU_DECODE); -end; - -procedure TForm1.btnCombineClick(Sender: TObject); -begin - if cbFlag.Checked then - edtCombine.Text := UP.CombineUrl(edtBase.Text, edtReletive.Text, ICU_DECODE) - else - edtCombine.Text := UP.CombineUrl(edtBase.Text, edtReletive.Text, ICU_NO_ENCODE); -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/prjMainDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/prjMainDemo.dpr deleted file mode 100644 index c9a40d1ac3..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/17 - URL_Demo/prjMainDemo.dpr +++ /dev/null @@ -1,46 +0,0 @@ -//*********************************************************** -// URL Tools demo * -// (Uniform Resource identifier) * -// * -// For Delphi 5,6, 7 , 2005, 2006 * -// Freeware demo * -// By: Eran Bodankin (bsalsa) bsalsa@bsalsa.com * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -program prjMainDemo; - -uses - Forms, - frmMain in 'frmMain.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/UrlhistoryDemo_U.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/UrlhistoryDemo_U.dfm deleted file mode 100644 index eb372a369a..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/UrlhistoryDemo_U.dfm +++ /dev/null @@ -1,127 +0,0 @@ -object Form1: TForm1 - Left = 87 - Top = 121 - Width = 836 - Height = 511 - Caption = 'TUrlHistory Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object Label1: TLabel - Left = 480 - Top = 397 - Width = 25 - Height = 13 - Caption = 'Filter:' - end - object Label2: TLabel - Left = 232 - Top = 376 - Width = 36 - Height = 13 - Caption = 'Sort by:' - end - object StringGrid1: TStringGrid - Left = 0 - Top = 37 - Width = 820 - Height = 404 - Align = alClient - DefaultColWidth = 75 - DefaultRowHeight = 16 - FixedCols = 0 - TabOrder = 0 - ColWidths = ( - 114 - 234 - 222 - 112 - 107) - end - object Panel1: TPanel - Left = 0 - Top = 441 - Width = 820 - Height = 34 - Align = alBottom - TabOrder = 1 - object CheckBox1: TCheckBox - Left = 675 - Top = 10 - Width = 137 - Height = 15 - Alignment = taLeftJustify - Caption = 'Only sites visited today' - TabOrder = 0 - end - end - object Panel2: TPanel - Left = 0 - Top = 0 - Width = 820 - Height = 37 - Align = alTop - TabOrder = 2 - object Label4: TLabel - Left = 604 - Top = 11 - Width = 33 - Height = 13 - Caption = 'Sort by' - end - object Label3: TLabel - Left = 8 - Top = 12 - Width = 58 - Height = 13 - Caption = 'Search Text' - end - object ComboSortBy: TComboBox - Left = 648 - Top = 8 - Width = 145 - Height = 21 - Style = csDropDownList - ItemHeight = 13 - TabOrder = 0 - Items.Strings = ( - 'Last visted' - 'Title' - 'Url' - 'Last updated' - 'Expires') - end - object Button1: TButton - Left = 245 - Top = 6 - Width = 153 - Height = 25 - Caption = 'Enumerate !' - TabOrder = 1 - OnClick = Button1Click - end - object edSearchText: TEdit - Left = 80 - Top = 8 - Width = 153 - Height = 21 - TabOrder = 2 - end - end - object UrlHistory1: TUrlHistory - OnAccept = UrlHistory1Accept - SortField = sfLastVisited - SearchField = seBoth - SortDirection = sdAscending - Left = 40 - Top = 136 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/UrlhistoryDemo_U.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/UrlhistoryDemo_U.pas deleted file mode 100644 index 7377ac5ae8..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/UrlhistoryDemo_U.pas +++ /dev/null @@ -1,122 +0,0 @@ -//*********************************************************** -// URL History demo * -// * -// For Delphi 5 - 2009 * -// Freeware demo * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -unit UrlhistoryDemo_U; - -interface - -uses - Windows, Messages, EwbAcc, SysUtils, Forms, StdCtrls, Grids, UrlHistory, - Controls, Classes, ExtCtrls; - -type - TForm1 = class(TForm) - StringGrid1: TStringGrid; - Label1: TLabel; - Label2: TLabel; - Panel1: TPanel; - UrlHistory1: TUrlHistory; - CheckBox1: TCheckBox; - Panel2: TPanel; - ComboSortBy: TComboBox; - Label4: TLabel; - Button1: TButton; - Label3: TLabel; - edSearchText: TEdit; - procedure Button1Click(Sender: TObject); - procedure UrlHistory1Accept(Title, Url: string; LastVisited, - LastUpdated, Expires: TDateTime; var Accept: Boolean); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.DFM} - -procedure TForm1.Button1Click(Sender: TObject); -var - iTotalURLs: Integer; - iRow: Integer; -begin - with UrlHistory1 do begin - case ComboSortBy.ItemIndex of - 0: SortField := sfLastvisited; - 1: SortField := sfTitle; - 2: SortField := sfUrl; - 3: SortField := sfLastUpdated; - 4: SortField := sfExpires; - end; - end; - - with StringGrid1 do - begin - Perform(WM_SETREDRAW, 0, 0); // prevent updating - RowCount := 2; - try - UrlHistory1.Search := edSearchText.text; - Cells[0, 0] := 'Last Visited'; - Cells[1, 0] := 'Title'; - Cells[2, 0] := 'Url'; - Cells[3, 0] := 'Last Updated'; - Cells[4, 0] := 'Expires'; - - iTotalURLs := UrlHistory1.Enumerate; - for iRow := 0 to iTotalURLs - 1 do - begin - RowCount := iRow + 2; - Cells[0, iRow + 1] := DateTimeToStr(PEntry(Urlhistory1.Items[iRow]).LastVisited); - Cells[1, iRow + 1] := PEntry(Urlhistory1.Items[iRow]).Title; - Cells[2, iRow + 1] := PEntry(Urlhistory1.Items[iRow]).Url; - Cells[3, iRow + 1] := DateTimeToStr(PEntry(Urlhistory1.Items[iRow]).LastUpdated); - Cells[4, iRow + 1] := DateTimeToStr(PEntry(Urlhistory1.Items[iRow]).Expires); - end; - finally - Perform(WM_SETREDRAW, 1, 0); - Invalidate; - end; - end; -end; - -procedure TForm1.UrlHistory1Accept(Title, Url: string; LastVisited, - LastUpdated, Expires: TDateTime; var Accept: Boolean); -begin - if Checkbox1.checked and (LastVisited < Now - 1) then Accept := False; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/prjUrlHistoryDemo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/prjUrlHistoryDemo.dpr deleted file mode 100644 index 81105be886..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/18 - URL_History_Demo/prjUrlHistoryDemo.dpr +++ /dev/null @@ -1,45 +0,0 @@ -//*********************************************************** -// URL History demo * -// * -// For Delphi 5,6, 7 , 2005, 2006 * -// Freeware demo * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -program prjUrlhistoryDemo; - -uses - Forms, - UrlhistoryDemo_U in 'UrlhistoryDemo_U.pas' {Form1}; - -{$R *.RES} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/19 - URLSearchHook/Searchhook.tlb b/windows/src/ext/embeddedwb/Demos/Various Demos/19 - URLSearchHook/Searchhook.tlb deleted file mode 100644 index 52b7b8df5e8af7e1b0fd4a6722cff70d727abfbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1036 zcmeYbb_-!*U}OLRP8Kl55D4T#L?C=*5+u$A75EPY3P64X5QDft3QQxj`O)Nv;d=lr zYJlnksXqbaOCa$dfE>aEu?r;sfEiW(2aqpBFr5@}FaEu?r;sfSG|o0ZE<#=oc9zKBev - -
- project1 - bsalsa - bsalsa Productions - 2 - 2 - 2 - 2 -
- - - - - - - - - - - - - - - -
diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/Unit1.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/Unit1.dfm deleted file mode 100644 index f95e6f4b9d..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/Unit1.dfm +++ /dev/null @@ -1,95 +0,0 @@ -object Form1: TForm1 - Left = 385 - Top = 133 - Width = 482 - Height = 370 - Caption = 'Webupdater Demo' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - PixelsPerInch = 96 - TextHeight = 13 - object ProgressBar1: TProgressBar - Left = 0 - Top = 298 - Width = 466 - Height = 17 - Align = alBottom - Min = 0 - Max = 100 - TabOrder = 0 - end - object StatusBar1: TStatusBar - Left = 0 - Top = 315 - Width = 466 - Height = 19 - Panels = <> - SimplePanel = False - end - object Memo1: TMemo - Left = 0 - Top = 0 - Width = 466 - Height = 257 - Align = alClient - Lines.Strings = ( - 'This demo demonstrates the TWebUpdater.' - - 'The TWebUpdater will download a remote XML file, parse its data ' + - 'sections' - 'and will do the update procedure automatically.' - '' - '') - TabOrder = 2 - end - object Panel1: TPanel - Left = 0 - Top = 257 - Width = 466 - Height = 41 - Align = alBottom - TabOrder = 3 - object Button1: TButton - Left = 8 - Top = 10 - Width = 121 - Height = 25 - Caption = 'Start WebUpdater' - TabOrder = 0 - OnClick = Button1Click - end - end - object WebUpdater1: TWebUpdater - About = 'Application Updater by bsalsa : bsalsa@gmail.com' - AbortMessage = 'Aborted! (User request).' - ApplicationName = 'project1' - Author = 'bsalsa' - BackupFolder = 'Backup\' - Caption = 'Updating the application... Please wait.' - Company = 'bsalsa Productions' - DeleteLogOnComplete = False - DeleteWebInfoFileOnComplete = False - ApplicationVersion.BuildVersion = 1 - EMail = 'bsalsa@bsalsa.com' - ErrorMessage = 'An error ocurred while ' - LogAddTime = True - LogFileName = 'Updater.txt' - MailErrorReport = False - OpenAppFolderOnComplete = True - ProgressBar = ProgressBar1 - StatusBar = StatusBar1 - SuccessMessageText = 'Update is done.' - UpdatesFolder = 'Updates\' - WebInfoFileName = 'NewUpdate.xml' - WebURL = 'http://bsalsa.com/webupdate' - Left = 392 - Top = 16 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/Unit1.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/Unit1.pas deleted file mode 100644 index 09af217055..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/Unit1.pas +++ /dev/null @@ -1,69 +0,0 @@ -//*********************************************************** -// TWebUpdater demo * -// * -// For Delphi 5 - 2009 * -// Freeware demo * -// By: Eran Bodankin (bsalsa) bsalsa@gmail.com * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -unit Unit1; - -interface - -uses - Classes, Controls, Forms, AppWebUpdater, ComCtrls, StdCtrls, OleCtrls, - ExtCtrls; - -type - TForm1 = class(TForm) - WebUpdater1: TWebUpdater; - ProgressBar1: TProgressBar; - StatusBar1: TStatusBar; - Memo1: TMemo; - Panel1: TPanel; - Button1: TButton; - procedure Button1Click(Sender: TObject); - private - { Private declarations } - public - { Public declarations } - end; - -var - Form1: TForm1; - -implementation - -{$R *.dfm} - -procedure TForm1.Button1Click(Sender: TObject); -begin - WebUpdater1.Start; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/project1.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/project1.dpr deleted file mode 100644 index 63aabd4eff..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_Demo/project1.dpr +++ /dev/null @@ -1,45 +0,0 @@ -//*********************************************************** -// WebUpdater demo * -// * -// For Delphi 5,6, 7 , 2005, 2006 * -// Freeware demo * -// By: Eran Bodankin (bsalsa) bsalsa@bsalsa.com * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -program project1; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/Unit1.dfm b/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/Unit1.dfm deleted file mode 100644 index dc0313145f..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/Unit1.dfm +++ /dev/null @@ -1,973 +0,0 @@ -object Form1: TForm1 - Left = 374 - Top = 125 - Width = 625 - Height = 593 - Caption = 'Updater_XML_File_Creator' - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - Icon.Data = { - 0000010002002020100000000000E80200002600000010101000000000002801 - 00000E0300002800000020000000400000000100040000000000800200000000 - 0000000000000000000000000000000000000000800000800000008080008000 - 00008000800080800000C0C0C000808080000000FF0000FF000000FFFF00FF00 - 0000FF00FF00FFFF0000FFFFFF00000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000999000000999000000000000000000009999 - 0000999900000000000000000000099990099990000000000000000000000999 - 9009999000000000000000000000009999999900000000000000000000000009 - 9999900000000000000000000000000099990000000000000000000000000000 - 9999000000000000000000000000000999999000000000000000000000000099 - 9999990000000000000000000000099990099990000000000000000000000999 - 9009999000000000000000000000999900009999000000000000000000009990 - 0000099900000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFF1F871E000F060E0086060E0086060E1FC006 - 061FE044461FF0C4461FF0C4621FE044E21FC004E21F8600F01F8600F01F0F01 - F81F1F81F81FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF - FFFFFFFFFFFFFFFFFFFFFFFFFFFF280000001000000020000000010004000000 - 0000C00000000000000000000000000000000000000000000000000080000080 - 000000808000800000008000800080800000C0C0C000808080000000FF0000FF - 000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000009900 - 9900000000009900990000000000099990000000000000990000000000000999 - 9000000000009900990000000000990099000000000000000000000000000000 - 00000000000000000000000000000000000000000000FFFF0000FFFF0000FFFF - 0000FFFF0000FFFF0000312000003120000080070000C80700008087000030C7 - 000030C70000FFFF0000FFFF0000FFFF0000FFFF0000} - OldCreateOrder = False - Position = poScreenCenter - Scaled = False - OnResize = FormResize - OnShow = FormShow - PixelsPerInch = 96 - TextHeight = 13 - object PageControl1: TPageControl - Left = 0 - Top = 0 - Width = 609 - Height = 557 - ActivePage = TabSheet1 - Align = alClient - TabOrder = 0 - object TabSheet1: TTabSheet - Caption = 'Programming' - object Label2: TLabel - Left = 1 - Top = 110 - Width = 371 - Height = 23 - Caption = '1. Press the Demo button below, then Save.' - Font.Charset = DEFAULT_CHARSET - Font.Color = clMaroon - Font.Height = -19 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - end - object Label5: TLabel - Left = 1 - Top = 132 - Width = 597 - Height = 23 - Caption = - '2. After you know the structure, enter your own values and then' + - ' save.' - Font.Charset = DEFAULT_CHARSET - Font.Color = clMaroon - Font.Height = -19 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - end - object Panel1: TPanel - Left = 0 - Top = 160 - Width = 601 - Height = 112 - Align = alBottom - TabOrder = 0 - object memInfo: TMemo - Left = 1 - Top = 22 - Width = 599 - Height = 89 - Align = alClient - ScrollBars = ssBoth - TabOrder = 0 - end - object Panel3: TPanel - Left = 1 - Top = 1 - Width = 599 - Height = 21 - Align = alTop - Caption = 'Update Information (Text):' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object SpeedButton1: TSpeedButton - Left = 8 - Top = 0 - Width = 17 - Height = 17 - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 20000000000000040000C30E0000C30E00000000000000000000000000000000 - 0000000000002424234A939182B49A9380B899907CB89B9783B87170659C2F30 - 2E600102030B0000000000000000000000000000000000000000000000000000 - 00003C3C3751E2E1C3FDFFFDD3FFFFF2C6FFFFEDBEFFFFF1C4FFFFEEC4FFF6E4 - C1FFC3BEA5E0636359950000000D000000000000000000000000000000000000 - 0000887B608DFFFFDCFFFFE7BEFFFFDEB1FFFFD8AAFFE2DDAAFFF4EBC1FFF9F4 - D0FFFFFFE7FFFFFFE6FFA8A694D21D1D1D470000000000000000000000000D09 - 050DDAA665E9FCDFAAFFFFEBC3FFFFDFB3FFFFD7ABFFA6CA7CFF32AE31FF1EA5 - 1FFF2AA72DFFB4E1A6FFFFFFF5FFA2A394E50000000A00000000000000003528 - 1A38F1B773FDF5BB76FFF6CB91FFFBD9A7FFFFE6C0FF9AC670FF009000FF24A7 - 23FF6EC46BFF26AA28FFE1ECBBFFD2B796F30406070F00000000000000006851 - 386BFECD8EFFF8C185FFF7BE81FFF8BE82FFFFD4A4FFA2CA78FF049504FF2BAA - 29FFF9FCECFFC1E4AFFF8CC86CFFE4BC94FB2B2B2B610000000006060406B994 - 6DBAFFD39BFFFDC994FFFEC994FFFEC792FFF0D19EFFBED899FFCDE6AFFF9AD6 - 8FFFC5E7C0FFFCFCEAFFDBECBCFFEED1A5FF3C3A38810000000014110D14F9CD - 9DF9FFD5A4FFFFD2A2FFFFD2A2FFFFD2A1FFF6D6A6FF93CC7BFFFAF7D3FFECF7 - D3FF25A827FF23A624FFCAE1A8FFFFDDB5FF514E4A9C0000000041372B41FEDF - B2FEFFE2B6FFFFE0B4FFFFE0B4FFFFE0B4FFFFE3BDFFAECF84FF33AE30FF89CF - 81FF20A620FF009300FFB7D998FFFFEBC3FF757267BB0000000064574865FFF5 - CDFFFFEFC8FFFFEEC7FFFFEEC7FFFFEEC7FFFFEEC8FFFCF0CBFF75C262FF0095 - 00FF019803FF0FA014FFB6DC9DFFFFFCDAFF918E7DBB0000000182776584FFFF - E7FFFFFCD9FFFFFCDAFFFFFCDAFFFFFDDAFFFFFDDBFFFFFFDEFFFFFFE4FFD4F1 - C1FFCCEDC0FFD7F0C8FFDCEEC2FFFFFFE6FFB4B2A0ED0000000E83786585FFFF - F0FFFFFFE3FFFFFFE3FFFFFFE5FFFFFFE5FFFFFFDDFFFEF5D0FFFCE9BDFFFFE6 - BBFFFFF4CEFFFFFFE1FFFFFFE5FFFFFFE9FFBDBDA9F10000010F3A31283AEDDA - B8EEFFF6D2FFFCEFCBFCECDCB8F0E7C694F0F3C280FFFFC37AFFF6B872FFF4B7 - 72FFF4BB7BFFF7C78DFFFBDCADFFFFFEE2FFC6C9B4F00303040F000000001D16 - 101D483E3048382F24380E0A070F10090213422F1A487B5C3783DEA96AEAFBC0 - 7DFFFFC584FFF7BF81FFF9C083FFFFD7A1FFD1C5A8F10608090F000000000000 - 0000000000000000000000000000000000000000000000000000100C0711513E - 2954B58C61B9FFD294FFFFCD93FFFFD197FFD5B18DF80507080E000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000403030465523C66C49B70BDE3BA88D84E41345900000001} - OnClick = SpeedButton1Click - end - end - end - object Panel2: TPanel - Left = 0 - Top = 0 - Width = 601 - Height = 81 - Align = alTop - TabOrder = 1 - object GroupBox1: TGroupBox - Left = 1 - Top = 1 - Width = 599 - Height = 79 - Align = alClient - Caption = 'Details' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 0 - object SpeedButton3: TSpeedButton - Left = 8 - Top = 12 - Width = 17 - Height = 17 - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 20000000000000040000C30E0000C30E00000000000000000000000000000000 - 0000000000002424234A939182B49A9380B899907CB89B9783B87170659C2F30 - 2E600102030B0000000000000000000000000000000000000000000000000000 - 00003C3C3751E2E1C3FDFFFDD3FFFFF2C6FFFFEDBEFFFFF1C4FFFFEEC4FFF6E4 - C1FFC3BEA5E0636359950000000D000000000000000000000000000000000000 - 0000887B608DFFFFDCFFFFE7BEFFFFDEB1FFFFD8AAFFE2DDAAFFF4EBC1FFF9F4 - D0FFFFFFE7FFFFFFE6FFA8A694D21D1D1D470000000000000000000000000D09 - 050DDAA665E9FCDFAAFFFFEBC3FFFFDFB3FFFFD7ABFFA6CA7CFF32AE31FF1EA5 - 1FFF2AA72DFFB4E1A6FFFFFFF5FFA2A394E50000000A00000000000000003528 - 1A38F1B773FDF5BB76FFF6CB91FFFBD9A7FFFFE6C0FF9AC670FF009000FF24A7 - 23FF6EC46BFF26AA28FFE1ECBBFFD2B796F30406070F00000000000000006851 - 386BFECD8EFFF8C185FFF7BE81FFF8BE82FFFFD4A4FFA2CA78FF049504FF2BAA - 29FFF9FCECFFC1E4AFFF8CC86CFFE4BC94FB2B2B2B610000000006060406B994 - 6DBAFFD39BFFFDC994FFFEC994FFFEC792FFF0D19EFFBED899FFCDE6AFFF9AD6 - 8FFFC5E7C0FFFCFCEAFFDBECBCFFEED1A5FF3C3A38810000000014110D14F9CD - 9DF9FFD5A4FFFFD2A2FFFFD2A2FFFFD2A1FFF6D6A6FF93CC7BFFFAF7D3FFECF7 - D3FF25A827FF23A624FFCAE1A8FFFFDDB5FF514E4A9C0000000041372B41FEDF - B2FEFFE2B6FFFFE0B4FFFFE0B4FFFFE0B4FFFFE3BDFFAECF84FF33AE30FF89CF - 81FF20A620FF009300FFB7D998FFFFEBC3FF757267BB0000000064574865FFF5 - CDFFFFEFC8FFFFEEC7FFFFEEC7FFFFEEC7FFFFEEC8FFFCF0CBFF75C262FF0095 - 00FF019803FF0FA014FFB6DC9DFFFFFCDAFF918E7DBB0000000182776584FFFF - E7FFFFFCD9FFFFFCDAFFFFFCDAFFFFFDDAFFFFFDDBFFFFFFDEFFFFFFE4FFD4F1 - C1FFCCEDC0FFD7F0C8FFDCEEC2FFFFFFE6FFB4B2A0ED0000000E83786585FFFF - F0FFFFFFE3FFFFFFE3FFFFFFE5FFFFFFE5FFFFFFDDFFFEF5D0FFFCE9BDFFFFE6 - BBFFFFF4CEFFFFFFE1FFFFFFE5FFFFFFE9FFBDBDA9F10000010F3A31283AEDDA - B8EEFFF6D2FFFCEFCBFCECDCB8F0E7C694F0F3C280FFFFC37AFFF6B872FFF4B7 - 72FFF4BB7BFFF7C78DFFFBDCADFFFFFEE2FFC6C9B4F00303040F000000001D16 - 101D483E3048382F24380E0A070F10090213422F1A487B5C3783DEA96AEAFBC0 - 7DFFFFC584FFF7BF81FFF9C083FFFFD7A1FFD1C5A8F10608090F000000000000 - 0000000000000000000000000000000000000000000000000000100C0711513E - 2954B58C61B9FFD294FFFFCD93FFFFD197FFD5B18DF80507080E000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000403030465523C66C49B70BDE3BA88D84E41345900000001} - OnClick = SpeedButton3Click - end - object Label1: TLabel - Left = 48 - Top = 3 - Width = 82 - Height = 13 - Caption = 'Application Name' - end - object Label3: TLabel - Left = 49 - Top = 42 - Width = 65 - Height = 13 - Caption = 'Major Version' - end - object Author: TLabel - Left = 353 - Top = 3 - Width = 33 - Height = 13 - Caption = 'Author' - end - object Label4: TLabel - Left = 193 - Top = 3 - Width = 45 - Height = 13 - Caption = 'Company' - end - object Label6: TLabel - Left = 193 - Top = 42 - Width = 64 - Height = 13 - Caption = 'Minor Version' - end - object Label7: TLabel - Left = 353 - Top = 42 - Width = 76 - Height = 13 - Caption = 'Release Version' - end - object Label8: TLabel - Left = 497 - Top = 42 - Width = 60 - Height = 13 - Caption = 'Build Version' - end - object edtName: TEdit - Left = 48 - Top = 19 - Width = 121 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 0 - end - object edtMajor: TEdit - Left = 48 - Top = 55 - Width = 34 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 1 - end - object edtAuthor: TEdit - Left = 353 - Top = 15 - Width = 129 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 2 - end - object edtCompany: TEdit - Left = 193 - Top = 15 - Width = 129 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 3 - end - object edtMinor: TEdit - Left = 193 - Top = 55 - Width = 34 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 4 - end - object edtRelease: TEdit - Left = 353 - Top = 55 - Width = 34 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 5 - end - object edtBuild: TEdit - Left = 497 - Top = 55 - Width = 34 - Height = 21 - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 6 - end - end - end - object Panel4: TPanel - Left = 0 - Top = 272 - Width = 601 - Height = 168 - Align = alBottom - Caption = 'Panel4' - TabOrder = 2 - object stgrInst: TStringGrid - Left = 1 - Top = 21 - Width = 599 - Height = 146 - Align = alClient - ColCount = 4 - DefaultRowHeight = 16 - FixedCols = 0 - RowCount = 51 - Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowMoving, goEditing, goTabs, goAlwaysShowEditor] - TabOrder = 0 - OnKeyPress = stgrInstKeyPress - ColWidths = ( - 20 - 70 - 393 - 91) - end - object Panel5: TPanel - Left = 1 - Top = 1 - Width = 599 - Height = 20 - Align = alTop - Caption = 'Update Instructions' - Font.Charset = DEFAULT_CHARSET - Font.Color = clHighlight - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 1 - object SpeedButton2: TSpeedButton - Left = 8 - Top = 0 - Width = 17 - Height = 17 - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 20000000000000040000C30E0000C30E00000000000000000000000000000000 - 0000000000002424234A939182B49A9380B899907CB89B9783B87170659C2F30 - 2E600102030B0000000000000000000000000000000000000000000000000000 - 00003C3C3751E2E1C3FDFFFDD3FFFFF2C6FFFFEDBEFFFFF1C4FFFFEEC4FFF6E4 - C1FFC3BEA5E0636359950000000D000000000000000000000000000000000000 - 0000887B608DFFFFDCFFFFE7BEFFFFDEB1FFFFD8AAFFE2DDAAFFF4EBC1FFF9F4 - D0FFFFFFE7FFFFFFE6FFA8A694D21D1D1D470000000000000000000000000D09 - 050DDAA665E9FCDFAAFFFFEBC3FFFFDFB3FFFFD7ABFFA6CA7CFF32AE31FF1EA5 - 1FFF2AA72DFFB4E1A6FFFFFFF5FFA2A394E50000000A00000000000000003528 - 1A38F1B773FDF5BB76FFF6CB91FFFBD9A7FFFFE6C0FF9AC670FF009000FF24A7 - 23FF6EC46BFF26AA28FFE1ECBBFFD2B796F30406070F00000000000000006851 - 386BFECD8EFFF8C185FFF7BE81FFF8BE82FFFFD4A4FFA2CA78FF049504FF2BAA - 29FFF9FCECFFC1E4AFFF8CC86CFFE4BC94FB2B2B2B610000000006060406B994 - 6DBAFFD39BFFFDC994FFFEC994FFFEC792FFF0D19EFFBED899FFCDE6AFFF9AD6 - 8FFFC5E7C0FFFCFCEAFFDBECBCFFEED1A5FF3C3A38810000000014110D14F9CD - 9DF9FFD5A4FFFFD2A2FFFFD2A2FFFFD2A1FFF6D6A6FF93CC7BFFFAF7D3FFECF7 - D3FF25A827FF23A624FFCAE1A8FFFFDDB5FF514E4A9C0000000041372B41FEDF - B2FEFFE2B6FFFFE0B4FFFFE0B4FFFFE0B4FFFFE3BDFFAECF84FF33AE30FF89CF - 81FF20A620FF009300FFB7D998FFFFEBC3FF757267BB0000000064574865FFF5 - CDFFFFEFC8FFFFEEC7FFFFEEC7FFFFEEC7FFFFEEC8FFFCF0CBFF75C262FF0095 - 00FF019803FF0FA014FFB6DC9DFFFFFCDAFF918E7DBB0000000182776584FFFF - E7FFFFFCD9FFFFFCDAFFFFFCDAFFFFFDDAFFFFFDDBFFFFFFDEFFFFFFE4FFD4F1 - C1FFCCEDC0FFD7F0C8FFDCEEC2FFFFFFE6FFB4B2A0ED0000000E83786585FFFF - F0FFFFFFE3FFFFFFE3FFFFFFE5FFFFFFE5FFFFFFDDFFFEF5D0FFFCE9BDFFFFE6 - BBFFFFF4CEFFFFFFE1FFFFFFE5FFFFFFE9FFBDBDA9F10000010F3A31283AEDDA - B8EEFFF6D2FFFCEFCBFCECDCB8F0E7C694F0F3C280FFFFC37AFFF6B872FFF4B7 - 72FFF4BB7BFFF7C78DFFFBDCADFFFFFEE2FFC6C9B4F00303040F000000001D16 - 101D483E3048382F24380E0A070F10090213422F1A487B5C3783DEA96AEAFBC0 - 7DFFFFC584FFF7BF81FFF9C083FFFFD7A1FFD1C5A8F10608090F000000000000 - 0000000000000000000000000000000000000000000000000000100C0711513E - 2954B58C61B9FFD294FFFFCD93FFFFD197FFD5B18DF80507080E000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000403030465523C66C49B70BDE3BA88D84E41345900000001} - OnClick = SpeedButton2Click - end - end - end - object Panel6: TPanel - Left = 0 - Top = 440 - Width = 601 - Height = 89 - Align = alBottom - TabOrder = 3 - object GroupBox2: TGroupBox - Left = 1 - Top = 1 - Width = 248 - Height = 87 - Align = alLeft - Caption = 'XML Menu:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 0 - object cbOverWrite: TCheckBox - Left = 8 - Top = 48 - Width = 113 - Height = 17 - Caption = 'OverWrite warning' - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 0 - end - object BitBtn2: TBitBtn - Left = 120 - Top = 16 - Width = 57 - Height = 26 - Caption = 'All' - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 1 - OnClick = btnClearClick - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 20000000000000040000C30E0000C30E00000000000000000000000000000000 - 0000000000002424234A939182B49A9380B899907CB89B9783B87170659C2F30 - 2E600102030B0000000000000000000000000000000000000000000000000000 - 00003C3C3751E2E1C3FDFFFDD3FFFFF2C6FFFFEDBEFFFFF1C4FFFFEEC4FFF6E4 - C1FFC3BEA5E0636359950000000D000000000000000000000000000000000000 - 0000887B608DFFFFDCFFFFE7BEFFFFDEB1FFFFD8AAFFE2DDAAFFF4EBC1FFF9F4 - D0FFFFFFE7FFFFFFE6FFA8A694D21D1D1D470000000000000000000000000D09 - 050DDAA665E9FCDFAAFFFFEBC3FFFFDFB3FFFFD7ABFFA6CA7CFF32AE31FF1EA5 - 1FFF2AA72DFFB4E1A6FFFFFFF5FFA2A394E50000000A00000000000000003528 - 1A38F1B773FDF5BB76FFF6CB91FFFBD9A7FFFFE6C0FF9AC670FF009000FF24A7 - 23FF6EC46BFF26AA28FFE1ECBBFFD2B796F30406070F00000000000000006851 - 386BFECD8EFFF8C185FFF7BE81FFF8BE82FFFFD4A4FFA2CA78FF049504FF2BAA - 29FFF9FCECFFC1E4AFFF8CC86CFFE4BC94FB2B2B2B610000000006060406B994 - 6DBAFFD39BFFFDC994FFFEC994FFFEC792FFF0D19EFFBED899FFCDE6AFFF9AD6 - 8FFFC5E7C0FFFCFCEAFFDBECBCFFEED1A5FF3C3A38810000000014110D14F9CD - 9DF9FFD5A4FFFFD2A2FFFFD2A2FFFFD2A1FFF6D6A6FF93CC7BFFFAF7D3FFECF7 - D3FF25A827FF23A624FFCAE1A8FFFFDDB5FF514E4A9C0000000041372B41FEDF - B2FEFFE2B6FFFFE0B4FFFFE0B4FFFFE0B4FFFFE3BDFFAECF84FF33AE30FF89CF - 81FF20A620FF009300FFB7D998FFFFEBC3FF757267BB0000000064574865FFF5 - CDFFFFEFC8FFFFEEC7FFFFEEC7FFFFEEC7FFFFEEC8FFFCF0CBFF75C262FF0095 - 00FF019803FF0FA014FFB6DC9DFFFFFCDAFF918E7DBB0000000182776584FFFF - E7FFFFFCD9FFFFFCDAFFFFFCDAFFFFFDDAFFFFFDDBFFFFFFDEFFFFFFE4FFD4F1 - C1FFCCEDC0FFD7F0C8FFDCEEC2FFFFFFE6FFB4B2A0ED0000000E83786585FFFF - F0FFFFFFE3FFFFFFE3FFFFFFE5FFFFFFE5FFFFFFDDFFFEF5D0FFFCE9BDFFFFE6 - BBFFFFF4CEFFFFFFE1FFFFFFE5FFFFFFE9FFBDBDA9F10000010F3A31283AEDDA - B8EEFFF6D2FFFCEFCBFCECDCB8F0E7C694F0F3C280FFFFC37AFFF6B872FFF4B7 - 72FFF4BB7BFFF7C78DFFFBDCADFFFFFEE2FFC6C9B4F00303040F000000001D16 - 101D483E3048382F24380E0A070F10090213422F1A487B5C3783DEA96AEAFBC0 - 7DFFFFC584FFF7BF81FFF9C083FFFFD7A1FFD1C5A8F10608090F000000000000 - 0000000000000000000000000000000000000000000000000000100C0711513E - 2954B58C61B9FFD294FFFFCD93FFFFD197FFD5B18DF80507080E000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00000403030465523C66C49B70BDE3BA88D84E41345900000001} - Layout = blGlyphRight - end - object BitBtn3: TBitBtn - Left = 66 - Top = 17 - Width = 57 - Height = 25 - Caption = 'Open' - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 2 - OnClick = btnLoadClick - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 20000000000000040000C30E0000C30E00000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000915 - 19271945548006212A490000020B000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000001A56 - 6B8292E9FFFF4BBCE4FF389ABEE0166C8AB40F475A8309212A480000020B0000 - 0000000000000000000000000000000000000000000000000000000000000F54 - 708089E2FFFF86E9FFFF76E5FFFF6DE2FFFF61DBFFFF54C4E8FF45A3C1E02074 - 8EB416475883091E254200000000000000000000000000000000000000001758 - 737F74D7FEFF97E9FFFF7CE4FFFF80E5FFFF82E6FFFF84E9FFFF85EDFFFF7CEB - FFFF76E7FFFF48B0D2ED061E26420000000000000000000000000005070B2690 - B8D15FC8F5FFBAF4FDFF85F0FFFF89F0FFFF89F0FFFF89F0FFFF89F0FFFF8AF0 - FFFF8FF4FFFF7FF2FFFF206C83B300000000000000000000000000060A1031AA - D7F54DC0F7FF9BE1F5FF9BFCFFFF90F9FFFF91F9FFFF92F9FFFF92F9FFFF92F9 - FFFF91FAFFFF9BFAFFFF6DC9DDF7071C2545000000000000000000060A0F3BAB - D5F05FCDFFFF78CFF0FFBDFFFEFFAEFFFFFFA7FFFFFFA0FFFFFFA0FFFFFFA0FF - FFFFA0FFFFFFA3F7FFFFB0F9FFFF1D647BB3000000000000000000050A0F46B1 - D7F07EE2FFFF6CD4FAFF7CD2EFFF83D6ECFFB3EBF7FFD1FBFDFFC4FFFFFFBDFF - FFFFBFFFFFFFB3F5FFFFE0FFFFFF79C0D2F7051B2445000000000004090F51B7 - D8F090F3FFFF81EBFFFF73E3FCFF6DDEF9FF6FDDF6FF75D6F0FFC9EEF7FFDEF9 - FDFFDCFAFDFFD0F6FFFFFFFFFFFFE1FEFFFF246277B8000000010003090F5FC1 - DCF2A6FFFFFF95FBFFFF97FCFFFF96FDFFFF97FFFFFF8BF8FEFF83EAF6FF94EC - F7FF9FEDF7FF80D2E8FB7BBFD8F07FC6DDF02889A9E10104060D0003080E62BD - D7EEAFFFFFFF99FFFFFF9AFFFFFFAEFFFFFFB8FFFFFFADFFFFFFA6FFFFFFA9FF - FFFFB6FFFFFF4BA8B6C20002090F00030A0F00080C100001010100000101264F - 5E6BC5FCFFFFBCFFFFFFBDFFFFFF9AE0F1FD1E495D6D305C6C78437E909F51B9 - D6F063C8E1F03073839300000000000000000000000000000000000000000007 - 0A0E1B45556435637580446C7880183A47520000000000000000000000000004 - 0A0F00040B0F0000010400000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000} - Layout = blGlyphRight - end - object BitBtn1: TBitBtn - Left = 176 - Top = 16 - Width = 65 - Height = 26 - Caption = 'Save' - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 3 - OnClick = btnCreateXMLClick - Glyph.Data = { - 36030000424D3603000000000000360000002800000010000000100000000100 - 18000000000000030000120B0000120B00000000000000000000FF00FFFF00FF - FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 - FFFF00FFFF00FFFF00FFFF00FFFF00FF51272751272779797977777774747471 - 71716E6E6E6A6A6A676768646464512727512727512727FF00FFFF00FF512727 - C1550ABD500AF6F6F6B2480AAC450AD4D4D4C7C7C7B9B9B9ACACACA1A0A09330 - 0A8E2E0A512727FF00FFFF00FF512727C7590AC2550AFBFBFBB74C0AB1480ADD - DDDDD0D0CFC2C2C1B5B5B6A8A9A896340A92300A512727FF00FFFF00FF512727 - CC5E0AC7590AFCFCFCBD500AB74D0AE4E4E4D8D8D8CACBCBBEBDBDB0B0B09936 - 0A96330A512727FF00FFFF00FF512727D2620ACB5D0AE8BD8FFCFCFCF5F5F5EB - EBEBE0E0E0D2D3D2C6C5C5B0876A9E390A9A360A512727FF00FFFF00FF512727 - D6640AD1620ACC5D0AC7590AC1550ABC4F0AB64C0AB2480AAC440AA7400AA23C - 0A9E3A0A512727FF00FFFF00FF512727DB6A0AD6650AD1610ACC5D0AC6590AC1 - 540ABC4F0AB74C0AB1480AAC440AA7400AA23C0A512727FF00FFFF00FF512727 - E16E0AFCF4E4FBF1DDFCEDD7FBE9D0FCE8C9FCE4C2FBE2BCFBDFB5FBDDB0FBDB - ABA73F0A512727FF00FFFF00FF512727E4710AE8E4DFE4DFD6DFD8CED8D1C6D3 - CCBDD0C5B5CCC0ADC9BCA7C5B7A1C1B29AAC440A512727FF00FFFF00FF512727 - E9740AFCF7EDFCF5E7FCF2E1FCEED9FCECD3FBE8CCFBE5C5FCE4BEFCE0B7FBDF - B1B1480A512727FF00FFFF00FF512727ED780AEDEBE7E8E4E0E4DFD8DFD8CFD9 - D2C6D4CCBED0C6B7CCC0AEC9BCA8C4B7A2B64B0A512727FF00FFFF00FF512727 - F17B0AFCF9F5FCF7F0FCF6E9FCF4E4FCF0DDFCEDD4FCE9CFFBE7C7FCE4C1FCE1 - B9BB4F0A512727FF00FFFF00FF512727F57E0A9995FB8A8CF97D84F8717BF764 - 74F55A6CF44F65F2485FF03F5AEE3A54ECC0540A512727FF00FFFF00FF512727 - 5127271C1BA1191AA11718A11517A11316A11014A10F13A10D12A10C11A10B10 - A1512727512727FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF - 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} - Layout = blGlyphRight - end - object BitBtn4: TBitBtn - Left = 8 - Top = 17 - Width = 57 - Height = 25 - Caption = 'Demo' - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 4 - OnClick = btnLoadDemoClick - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 20000000000000040000C30E0000C30E00000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 0000020200000302000000000000000000000000000000000000000000000000 - 0000000000000000000000000000000000000000000000000000010100000808 - 0D57080B2DB811121CA80E0C0947000000000000000000000000000000000000 - 000000000000000000001414142E484847802424244800000000070603380B11 - 73FB0019D2FF022BDAFF163EB1FD142346AB0D0A054200000000000000000000 - 0000000000035B5B5B99CACACAF6B6B6B6FFAFAFAFFD54544C9F0C0C48D3010F - D0FF0028F7FF0840FFFF2667FFFF4285F8FF38597FF212110F53000000000000 - 0002686868A6FCFCFCFFD3D3D3FF3F3F40FFA1A1A1FFBBB9B7FF324451FF1831 - 75FF122FCFFF1C54FFFF387CFFFF549CFDFF4875A6F610111468000000002C2C - 2C54B3B3B3FFE8E8E8FF858585FF202020FFA8A8A8FFD4CFD2FF587A69FF078D - 4EFF199169FF31619CFF4A7CD3FF313F51A80705022A000000000404040B6464 - 64D8343535FFA6A6A5FF969696FF747474FFD9D9D9FFDFDADCFF6D8B80FF009B - 61FF00F99CFF1CBA7DF81A14195B010000010000000000000000323132599090 - 90FF3D3E3EFFD5D5D5FFD6D6D6FFBCBCBCFF767676FFD3CDCFFF749184FF00B3 - 6FFF08F7A3FF48826DEF08010103000000000000000000000000737171BDC8C8 - C8FFBCBCBCFF989898FFB8B8B8FF6F6F6FFF171717FFA8A3A3FF6C848AFF2593 - 79FF3CC293FFA09799F00C0B0C0F000000000000000000000000A3A2A2F89A9A - 9AFF999898FF7A7A7AFFB6B6B5FF5E5E5DFF474545FFCAC6C5FF287C93FF1BB6 - DEFF8CA9B0FFC0BAB9F407060710000000000000000000000000989897F23838 - 38FF6B6B6BFFCACACAFF999899FFCBCACBFFE2E1E1FFA9BCC2FF008EB0FF37CE - EFFFB5C1C4FFAAA7A6D502010208000000000000000000000000949494EB7A7A - 7AFFB3B3B3FF5A5B5BFF434343FFC0C0C1FFF0F2F3FF7B6967FF65919BFF7CC2 - D0FFE4E0E0FF7B7A79B90000000000000000000000000000000050505084FFFF - FFFFE3E3E3FF2E2E2EFF545454FFA6A8A9FF968482FFB2513BFFEC7A5BFFBDB2 - AFFFE3E5E6FA2523244B000000000000000000000000000000000B0B0B20B4B4 - B4EFFFFFFFFFC3C3C3FFACADADFF8E8F90FF7F473CFFC4644BFFB39187FFF6F9 - F9FF858485C50000000000000000000000000000000000000000000000001515 - 152D7676769EA7A7A7E946464673747474BAD5D1CFFFCDCAC9FFF3F9FAFFA5A5 - A5DA0E0E0E280000000000000000000000000000000000000000000000000000 - 0000000000000000000E000000000B0B0B187E7F7F9EC2C3C4F0868686B71212 - 1232000000000000000000000000000000000000000000000000} - Layout = blGlyphRight - end - object cbNumerator: TCheckBox - Left = 7 - Top = 64 - Width = 185 - Height = 17 - Caption = 'Add Numerator to the ChangeLog' - Font.Charset = DEFAULT_CHARSET - Font.Color = clMenuText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 5 - end - end - object gbFile: TGroupBox - Left = 249 - Top = 1 - Width = 351 - Height = 87 - Align = alClient - Caption = 'Output File Menu:' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 1 - Visible = False - object BitBtn5: TBitBtn - Left = 8 - Top = 16 - Width = 81 - Height = 25 - Caption = 'Open With' - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 0 - OnClick = btnOpenIEClick - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 20000000000000040000C30E0000C30E0000000000000000000000000107563C - 1C8C855823B2664829A53D2C1C7F060504130000000000000000000000000000 - 00000000000000000000000000000000000000000000000000005B3F1368C788 - 2CF033210A3A0E0A0514402E1C6F88653EDC4C38259C3A2B1B803D2D1D80291D - 12600000000B0000000000000000000000000000000000000000895D16928C61 - 27C300000000100C0A2B7D572DB9DA9240FFE69D43FFE6AA4BFFE9B95FFFD9BB - 74FFA0895CE0483622950000000A000000000000000000000000855C17889F70 - 28DB2E211761C98C3DF4FCA83EFFF59E37FFF49B36FFF8A238FFFBB13FFFFFCB - 5DFFFFEB91FFEDDF9DFF766141BF0000000D0000000000000000573E1258DC9F - 34FFCB8D34FFFCAE39FFEC9C31FFE9942EFFEB9330FFD5812DFFD7842CFFF19D - 32FFF7B644FFFFE889FFF8ECA8FF5A472EA500000000000000001A13061DEFB0 - 36F6FEB638FFEB9F30FFE7982AFFE3922CFF774F23B920160D4521160D458956 - 22BAF99F34FFFEB242FFFFF090FFDCC487FF21170F4D00000000010101029671 - 289FFFC03AFFE9A12BFFE99A27FFBF7F29F50C0A0B350000010400000104100C - 092E623C1A8F68421A8F71542B8F78654691251C125000000000000000001E16 - 0821F2BB3DFDF2B230FFE89F27FFD38E27FEB17628EEB6792BF2B6782BF2B274 - 2CEBA56C29DEA86C2BDEAC702DDEB78943DE4A361E6F00000000100E06113029 - 13356B562275FFCF46FFEFAF2EFFE7A128FFE49927FFE69829FFE6972AFFE796 - 2BFFF19B2FFFF49B33FFFCA33AFFFFC458FF6549268A0000000013110515CFB5 - 61D9483F2E4F9D8532A9FFDC4AFFC8902CF634200B542B1A05362B1A073B7850 - 1DABEC9B2DFFE8962DFFF29E36FFEDA545FC3325134900000000000000008D80 - 4992EDE59FF046402C4D9F8C33A5F3C647FF624320BB2A1E17743D2D1F87B97F - 2EEFEB9C29FFE7982BFFFCAA39FFBC8235D50000000000000000000000002822 - 102BF5ED9CF9E6E1A2E7665A366AAC963EB2F6CB49FFD29B34FFDC9D2FFFEAA4 - 29FFE59D28FFEFA42FFFFEB33FFF654721850000000000000000000000000000 - 00003C351B40F7EEA1FBFFFFB6FFA39C64A6C6B853C8FFE452FFF9BF36FFEEAE - 2CFFF4B330FFFAB43DFF865F28A60503020934281843100C0815000000000000 - 000000000000362F1639B3A767BAFDF398FDF2EA8FF3FEF273FFFBD950FFFFD6 - 4CFFE1AF4CFC755326980000000000000000604A2D791E160D24000000000000 - 00000000000000000000000000002A240F2C4941214A433C1C48473F1B4B937F - 399DB89B58EB4233207700000111251C0F3F98773EB80B08050E000000000000 - 0000000000000000000000000000000000000000000000000000000000000000 - 00003F37183E73612E8BB29145DEAC873FCD4F3D1B5800000100} - Layout = blGlyphRight - end - object BitBtn6: TBitBtn - Left = 88 - Top = 16 - Width = 81 - Height = 25 - Caption = 'Open With' - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 1 - OnClick = btnOpenNotepadClick - Glyph.Data = { - 36040000424D3604000000000000360000002800000010000000100000000100 - 20000000000000040000C30E0000C30E00000000000000000000000000002927 - 274F645853B8544945A8423F3F801F2325480004070F00000100000000000000 - 00000000000000000000000000000000000000000000000000000806040BA47D - 74D8E8C7AEFFDDBA9AFFCE9A74FFBF8365FF9F705DEC5E4B46BB4A3F3DA83531 - 31790506081100000000000000000000000000000000000000000C080510C092 - 86F5D8F8DAFFD6FBD6FFDEF1C6FFD0E29FFFAFCE77FFDBCD9AFFDFBF9CFFCFA5 - 7FFF896147D700000002000000000000000000000000000000000B08050FBA8E - 83F0DAF1D4FFDDF9E0FFDEDCA2FFC7AF54FFBEBD5DFFDBD181FFDCDA8AFFE4EB - A0FFB69F72FF433C3BA11E1F20480001030B00000000000000000B07050FBC8F - 85F0E4F3DFFFCFF3C9FFD1BE69FFC4923EFFBB8F3BFFCF944BFFD3964AFFD7A0 - 55FFD29152FFCF9C6EFFCCA372FF977D5FD90404050C000000000B08050FBC8F - 84F0C5EDC4FFBCE7A4FFE1B35BFFD3A04DFFBF993EFFCE9B4CFFCB954CFFC290 - 46FFBC8041FFCE8C63FFE6A46FFFC19868DE03040408000000000B08060FB98E - 81F0C2EEC3FFDEE3AAFFEBB355FFDBAB4BFFC9A53EFFDBA64DFFD6A24CFFC89C - 43FFC48A41FFD39262FFECAE73FF73614AA000000000000000000B08050FBB90 - 85F0DFF4DFFFE6D58EFFEFB94DFFE7B64AFFD7AE40FFE5AE4DFFD6A945FFCAA4 - 3DFFD49645FFE7A363FFE1AD73FB2624234500000000000000000B07050FBB90 - 86F0DCEBCBFFEDC56EFFF1C461FFEFC058FFDCB741FFE5B748FFD9B13DFFDBB0 - 42FFE2A147FFFAB769FFBA9363D70000000000000000000000000B07050FB991 - 87F0E2E1B5FFF3CA77FFF4CE79FFECC768FFD4BC47FFE2BD4DFFE7BB4AFFECBC - 4AFFF0AE46FFFFC470FF78624AA00000000000000000000000000B08050FBB92 - 8AF0EDDAA9FFF1D489FFEAD384FFE0CB6DFFD4C55BFFEAC86AFFF3C666FFEFC3 - 5CFFF6B44DFFEEB570FB262423450000000000000000000000000B08070FBC8C - 7EF0E9CD82FFE1DE93FFE2DA90FFE5D789FFDDD178FFF0D383FFEFCE77FFEECC - 70FFFBC264FFBB9060D7000001000000000000000000000000000A08070FBF8A - 78F1F4CE95FFF5EEC3FFF4E6B7FFF3E3AAFFDFD98DFFF7DE9CFFF8DC96FFF6D7 - 84FFFFC56DFF735A4099000000000000000000000000000000000A09070FC58D - 7DF6CEABA0FFACCACBFFDCCEBEFFB5CCC6FFC4B3A9FFCDBCA5FFC5B6AAFFE6CB - A9FFBFAD96FF3C403E7D00000000000000000000000000000000030302045149 - 478178B3C4FF468995CE6AA0ACF45DA0B0F988A8BAFF77A1B1FF90A3AFFFAD9F - A5FF8795A4FF0F1C202E00000000000000000000000000000000000000000003 - 04012E484B6317201F33083C464C112225301C626C7C15404A59194F57641933 - 3A4D214048630000000000000000000000000000000000000000} - Layout = blGlyphRight - end - object BitBtn7: TBitBtn - Left = 168 - Top = 16 - Width = 81 - Height = 25 - Caption = 'Explorer' - Font.Charset = DEFAULT_CHARSET - Font.Color = clInfoText - Font.Height = -11 - Font.Name = 'Tahoma' - Font.Style = [] - ParentFont = False - TabOrder = 2 - OnClick = btnExploreClick - Glyph.Data = { - BA040000424DBA04000000000000360000002800000011000000110000000100 - 20000000000084040000120B0000120B00000000000000000000FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FAFAFA00EAEAEA00E9E9E900FFFFFF00FFFFFF00FFFF - FF00FFFFFF00F5F5F500E8E8E800E8E8E800E8E8E800E8E8E800E8E8E800E8E8 - E800E8E8E800E8E8E800E3E3E300BBBBBB007171710073737300E8E8E800FFFF - FF00FFFFFF00F5F5F500A5A5A500666666005959590059595900595959005959 - 5900595959005959590059595900746867008E80A0006183A90059595900DEDE - DE00FFFFFF00FFFFFF008CBAD1001D82B5001B81B300187EB000167CAE001379 - AB001076A8000D73A5000B71A3003B799E008E81A0004A8DDC00359CDE004E50 - 5100B1B1B100F7F7F700FFFFFF001F84B70045AADD00D5F8FF007AD7FF006FD4 - FF006FD4FF006FD4FF006FD4FF007FC9ED009488A8004C8CD80052BBFF000B71 - A6002C5265007D7D7D00EDEDED00FFFFFF002489BC002A8FC200D9FCFF00AFEC - FF0096C8D800CACCC100C5C7B600ADB9B80093A5B2005E93D00054BDFF0075DA - FF00147AAC00105F87005E5E5E00E1E1E100FFFFFF00288DC0002E93C60086CF - F300CCC7C900F4EEE500FFFFEA00FFFFD900FFF5C300DCB5990090C5DA007FE6 - FF0085EBFF00379CCF001B81AB0052525200B7B7B700FFFFFF002A8FC2004CB1 - E4003C9FD100DAC8B200FFFFFC00FFFFF900FFFFE000FFF4C000FFE9B700B0CE - CD0091F7FF0091F7FF0057BCEF00157BA70035515F0075757500FFFFFF002D92 - C5006CD1FC002489BC00E3D2B200FFFFE600FFFFE800FFFFD900FFEDB800FFED - BE00D9D2BB0099FFFF0099FFFF0060C5F80047ACC800155E82004E4E4E00FFFF - FF002F94C7007BE0FF0046ABD500DEC5A500FFFFD000FFF9C900FFF4C200FFE9 - C200FFF7D100E8CFC300FFFFFF00FFFFFF0081E6FF0079DEE900066697005A5A - 5A00FFFFFF003196C90085EBFF006FD4F200828B9400FCE8B600FFEDB600FFF0 - C000FFFFF700EBDCD100518FB4002489BC002085B8001C81B4001B81B300056B - 9D00DBE1E300FFFFFF003398CB0091F7FF008EF4FF0090EAF400B9BFB800EBCD - AD00E6CCA900DDC5B800E8D9D900FFFFFF00FFFFFF00FFFFFF00167CAE007171 - 7100E8E8E800FFFFFF00FFFFFF003499CC00FFFFFF0099FFFF0099FFFF0099FF - FF0099FFFF00FFFFFF00258ABD002287BA001F84B7001D82B5001B81B300187E - B000E8E8E800FFFFFF00FFFFFF00FFFFFF00FFFFFF003499CC00FFFFFF00FFFF - FF00FFFFFF00FFFFFF002A8FC200D0D0D000FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003499 - CC003398CB003196C9002F94C700E8E8E800FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF - FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00} - Layout = blGlyphRight - end - object edtPath: TEdit - Left = 6 - Top = 47 - Width = 335 - Height = 21 - Anchors = [akLeft, akTop, akRight, akBottom] - Color = clWhite - TabOrder = 3 - end - end - end - end - object TabSheet2: TTabSheet - Caption = 'XML Tree View' - ImageIndex = 1 - object TreeView: TTreeView - Left = 0 - Top = 41 - Width = 601 - Height = 488 - Align = alClient - Indent = 19 - TabOrder = 0 - end - object Panel7: TPanel - Left = 0 - Top = 0 - Width = 601 - Height = 41 - Align = alTop - TabOrder = 1 - object Button1: TButton - Left = 0 - Top = 8 - Width = 75 - Height = 25 - Caption = 'Expand All' - TabOrder = 0 - OnClick = Button1Click - end - object Button2: TButton - Left = 80 - Top = 8 - Width = 75 - Height = 25 - Caption = 'Collapse All' - TabOrder = 1 - OnClick = Button2Click - end - end - end - object TabSheet4: TTabSheet - Caption = 'XMl Browser View' - ImageIndex = 3 - object EmbeddedWB1: TEmbeddedWB - Left = 0 - Top = 0 - Width = 601 - Height = 529 - Align = alClient - TabOrder = 0 - Silent = False - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - PrintOptions.Margins.Left = 19.05 - PrintOptions.Margins.Right = 19.05 - PrintOptions.Margins.Top = 19.05 - PrintOptions.Margins.Bottom = 19.05 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - UserAgent = 'EmbeddedWB 14.55 from: http://www.bsalsa.com/' - ControlData = { - 4C0000001D3E0000D93500000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - end - end - object XmlScanner1: TXmlScanner - Normalize = True - OnXmlProlog = XmlScanner1XmlProlog - OnComment = XmlScanner1Comment - OnPI = XmlScanner1PI - OnDtdRead = XmlScanner1DtdRead - OnStartTag = XmlScanner1StartTag - OnEmptyTag = XmlScanner1EmptyTag - OnEndTag = XmlScanner1EndTag - OnContent = XmlScanner1Content - OnCData = XmlScanner1CData - Left = 48 - Top = 224 - end -end diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/Unit1.pas b/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/Unit1.pas deleted file mode 100644 index 541a152575..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/Unit1.pas +++ /dev/null @@ -1,687 +0,0 @@ -//*********************************************************** -// WebUpdater demo * -// * -// For Delphi 6 - 2009 * -// Freeware demo * -// By: Eran Bodankin (bsalsa) bsalsa@bsalsa.com * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -unit Unit1; - -interface - -uses - Windows, SysUtils, Classes, Controls, forms, Dialogs, ShellAPI, Grids, - LibXmlParser, LibXmlComps, StdCtrls, ComCtrls, ExtCtrls, RichEditBrowser, - OleCtrls, EmbeddedWB, Buttons, SHDocVw_EWB, EwbCore; - -type - Tform1 = class(Tform) - PageControl1: TPageControl; - TabSheet1: TTabSheet; - TabSheet2: TTabSheet; - XmlScanner1: TXmlScanner; - TreeView: TTreeView; - Panel1: TPanel; - memInfo: TMemo; - Panel2: TPanel; - GroupBox1: TGroupBox; - Panel3: TPanel; - Panel4: TPanel; - stgrInst: TStringGrid; - Panel5: TPanel; - Panel6: TPanel; - GroupBox2: TGroupBox; - cbOverWrite: TCheckBox; - Panel7: TPanel; - Button1: TButton; - Button2: TButton; - TabSheet4: TTabSheet; - EmbeddedWB1: TEmbeddedWB; - BitBtn2: TBitBtn; - BitBtn3: TBitBtn; - BitBtn1: TBitBtn; - BitBtn4: TBitBtn; - gbFile: TGroupBox; - BitBtn5: TBitBtn; - BitBtn6: TBitBtn; - BitBtn7: TBitBtn; - edtPath: TEdit; - cbNumerator: TCheckBox; - SpeedButton1: TSpeedButton; - SpeedButton2: TSpeedButton; - SpeedButton3: TSpeedButton; - edtName: TEdit; - edtMajor: TEdit; - edtAuthor: TEdit; - edtCompany: TEdit; - Label1: TLabel; - Label3: TLabel; - Author: TLabel; - Label4: TLabel; - Label2: TLabel; - Label5: TLabel; - edtMinor: TEdit; - edtRelease: TEdit; - edtBuild: TEdit; - Label6: TLabel; - Label7: TLabel; - Label8: TLabel; - procedure SpeedButton2Click(Sender: TObject); - procedure SpeedButton1Click(Sender: TObject); - procedure SpeedButton3Click(Sender: TObject); - procedure FormResize(Sender: TObject); - procedure Button2Click(Sender: TObject); - procedure Button1Click(Sender: TObject); - procedure XmlScanner1XmlProlog(Sender: TObject; XmlVersion, - Encoding: string; Standalone: Boolean); - procedure XmlScanner1StartTag(Sender: TObject; TagName: string; - Attributes: TAttrList); - procedure XmlScanner1PI(Sender: TObject; Target, Content: string; - Attributes: TAttrList); - procedure XmlScanner1EndTag(Sender: TObject; TagName: string); - procedure XmlScanner1EmptyTag(Sender: TObject; TagName: string; - Attributes: TAttrList); - procedure XmlScanner1DtdRead(Sender: TObject; RootElementName: string); - procedure XmlScanner1Content(Sender: TObject; Content: string); - procedure XmlScanner1Comment(Sender: TObject; Comment: string); - procedure XmlScanner1CData(Sender: TObject; Content: string); - procedure btnLoadClick(Sender: TObject); - procedure btnExploreClick(Sender: TObject); - procedure stgrInstKeyPress(Sender: TObject; var Key: Char); - procedure btnOpenIEClick(Sender: TObject); - procedure btnOpenNotepadClick(Sender: TObject); - procedure ledtVersionKeyPress(Sender: TObject; var Key: Char); - procedure ledtCompanyKeyPress(Sender: TObject; var Key: Char); - procedure ledtAuthorKeyPress(Sender: TObject; var Key: Char); - procedure ledtNameKeyPress(Sender: TObject; var Key: Char); - procedure btnLoadDemoClick(Sender: TObject); - procedure btnClearClick(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure btnCreateXMLClick(Sender: TObject); - private - CurNode: TTreeNode; - fXmlParser: TXmlParser; - procedure HideControls(); - procedure UpdateControls(Name: string); - procedure UpdateComponents(); - procedure ParseInit(XmlFile: string); - procedure SetAttr(AttrName: string; var st: string); - { Private declarations } - public - { Public declarations } - end; - -var - form1: Tform1; - -implementation - -{$R *.dfm} - -procedure Tform1.UpdateComponents(); -begin - TreeView.Items.BeginUpdate; - TreeView.Items.Clear; - CurNode := nil; - XmlScanner1.Filename := edtPath.Text; - XmlScanner1.Execute; - TreeView.Items.EndUpdate; - TreeView.FullExpand; - EmbeddedWB1.Go(edtPath.Text); -end; - -procedure Tform1.UpdateControls(Name: string); -var - i: integer; -begin - edtPath.Text := Name; - gbFile.Visible := true; - Caption := 'Updates XML creator : ' + Name; - for i := 1 to PageControl1.PageCount - 1 do - PageControl1.Pages[i].TabVisible := true; -end; - -procedure Tform1.HideControls(); -var - i: integer; -begin - gbFile.Visible := false; - TreeView.Items.Clear; - Caption := 'XML creator : by bsalsa'; - EmbeddedWB1.GoAboutBlank; - for i := 1 to PageControl1.PageCount - 1 do - PageControl1.Pages[i].TabVisible := false; -end; - -procedure Tform1.FormShow(Sender: TObject); -var - i: integer; -begin - Caption := 'Updates XML creator : by bsalsa'; - stgrInst.Cols[0].Text := '#'; - for i := 1 to stgrInst.RowCount - 1 do - begin - stgrInst.Cells[0, i] := IntToStr(i); - end; - with stgrInst do - begin - Cols[1].Text := 'File Name'; - Cols[2].Text := 'Destination folder (Include SubFolders if needed)'; - Cols[3].Text := 'Terminate (yes/no)'; - end; - memInfo.Lines.Text := 'The Change Log: '; - PageControl1.ActivePageIndex := 0; - HideControls(); -end; - -procedure Tform1.btnClearClick(Sender: TObject); -var - i, j: integer; -begin - for i := 1 to stgrInst.RowCount - 1 do - for j := 1 to stgrInst.ColCount - 1 do - stgrInst.Cells[j, i] := ''; - memInfo.Lines.Clear; - edtName.Text := ''; - edtMajor.Text := ''; - edtMinor.Text := ''; - edtRelease.Text := ''; - edtBuild.Text := ''; - edtCompany.Text := ''; - edtAuthor.Text := ''; - TreeView.Items.Clear; - HideControls(); -end; - -procedure Tform1.btnLoadDemoClick(Sender: TObject); -begin - edtName.Text := 'project1'; - edtMajor.Text := '1'; - edtMinor.Text := '0'; - edtRelease.Text := '0'; - edtBuild.Text := '0'; - edtCompany.Text := 'bsalsa Productions'; - edtAuthor.Text := 'bsalsa'; - with memInfo.Lines do - begin - Add('*Added new demo for the updater.'); - Add('*Added an option to create XML files.'); - Add('*Cleaned up the code.'); - Add('*Faster update procedures.'); - Add('*Option to add personal details.'); - Add('*Option to match details (application and remote file).'); - Add('and so on...'); - end; - with stgrInst do - begin - Cells[1, 1] := 'Test.txt'; - Cells[2, 1] := 'Application new folder'; - Cells[3, 1] := 'no'; - Cells[1, 2] := 'Credits.txt'; - Cells[2, 2] := 'Updater_Test'; - Cells[3, 2] := 'no'; - Cells[1, 3] := 'ReadMe.txt'; - Cells[2, 3] := 'Updater_Test'; - Cells[3, 3] := 'yes'; - Cells[1, 4] := 'Project1.exe'; - Cells[2, 4] := ''; - Cells[3, 4] := 'yes'; - end; -end; - -procedure Tform1.ledtNameKeyPress(Sender: TObject; var Key: Char); -begin - if (key = #13) or (key = #09) then EdtMajor.SetFocus; -end; - -procedure Tform1.ledtVersionKeyPress(Sender: TObject; var Key: Char); -begin - if (key = #13) or (key = #09) then EdtAuthor.SetFocus; -end; - -procedure Tform1.ledtAuthorKeyPress(Sender: TObject; var Key: Char); -begin - if (key = #13) or (key = #09) then EdtCompany.SetFocus; -end; - -procedure Tform1.ledtCompanyKeyPress(Sender: TObject; var Key: Char); -begin - if (key = #13) or (key = #09) then memInfo.SetFocus; -end; - -procedure Tform1.btnOpenNotepadClick(Sender: TObject); -begin - if edtPath.Text <> '' then - ShellExecute(Handle, 'open', 'notepad.exe', Pchar(edtPath.Text), nil, SW_SHOWNORMAL) - else - MessageDlg('What file exactly you want to open?', - mtError, [mbCancel], 0); -end; - -procedure Tform1.btnOpenIEClick(Sender: TObject); -begin - if edtPath.Text <> '' then - ShellExecute(Handle, 'open', 'Explorer', Pchar(edtPath.Text), nil, SW_SHOWNORMAL) - else - MessageDlg('What file exactly do you want to open?', mtError, [mbCancel], 0); -end; - -procedure Tform1.btnExploreClick(Sender: TObject); -begin - if edtPath.Text <> '' then - ShellExecute(Application.Handle, PChar('explore'), - Pchar(ExtractFilePath(edtPath.Text)), nil, nil, SW_SHOWNORMAL) - else - MessageDlg('What file exactly do you want to open?', - mtError, [mbCancel], 0); -end; ///ExtractFilePath - -procedure Tform1.stgrInstKeyPress(Sender: TObject; var Key: Char); -begin - if (key = #13) or (key = #09) then - if stgrInst.Col < stgrInst.ColCount - 1 then - with stgrInst do - begin - if col < 3 then - begin - Col := Col + 1; - SetFocus; - end - end - else - with stgrInst do - begin - Row := Row + 1; - Col := 1; - SetFocus; - end; - if stgrInst.Row = stgrInst.RowCount - 1 then - MessageDlg('You have reached the limit of 50 lines (You can change it ' + - 'to what ever, if you need more).', mtError, [mbCancel], 0); -end; - -procedure Tform1.btnLoadClick(Sender: TObject); -var - Container: string; - od: TOpenDialog; - i: integer; - Node: TNvpNode; - function GetXmlHead(): boolean; - begin - Result := false; - while fXmlParser.Scan() do - begin - if fXmlParser.CurPartType = ptXmlProlog then - begin - Result := true; - exit; - end; - end; - end; - - function GetXmlTag(const TagName: string): boolean; - begin - Result := false; - while fXmlParser.Scan() do - begin - if ((fXmlParser.CurPartType = ptStartTag) - or (fXmlParser.CurPartType = ptEmptyTag)) - and (fXmlParser.CurName = TagName) then - begin - Result := true; - Exit; - end; - end; - end; - - function GetXmlData(): boolean; - begin - Result := false; - while fXmlParser.Scan() do - begin - if ((fXmlParser.CurPartType = ptContent) or (fXmlParser.CurPartType = ptCData)) then - begin - Result := true; - exit; - end - end; - end; - -begin - OD := TOpenDialog.Create(Self); - with OD do - begin - Title := 'Load XML file'; - Filter := 'XML files (*.xml)|*.XML'; - DefaultExt := 'xml'; - end; - if OD.Execute then - begin - edtPath.Text := OD.Filename; - Caption := 'XML creator : ' + OD.Filename; - UpdateComponents(); - ParseInit(OD.Filename); - try - if not GetXmlHead() then exit; - if not GetXmlTag('Updates') then Exit; - if not GetXmlTag('Details') then Exit; - if not GetXmlTag('ApplicationName') then Exit; - if not GetXmlData() then Exit; - edtName.Text := fXmlParser.CurContent; - if not GetXmlTag('Author') then Exit; - if not GetXmlData() then Exit; - edtAuthor.Text := fXmlParser.CurContent; - if not GetXmlTag('Company') then Exit; - if not GetXmlData() then Exit; - edtCompany.Text := fXmlParser.CurContent; - - if not GetXmlTag('MajorVersion') then Exit; - if not GetXmlData() then Exit; - EdtMajor.Text := fXmlParser.CurContent; - - if not GetXmlTag('MinorVersion') then Exit; - if not GetXmlData() then Exit; - EdtMinor.Text := fXmlParser.CurContent; - - if not GetXmlTag('ReleaseVersion') then Exit; - if not GetXmlData() then Exit; - EdtRelease.Text := fXmlParser.CurContent; - - if not GetXmlTag('BuildVersion') then Exit; - if not GetXmlData() then Exit; - EdtBuild.Text := fXmlParser.CurContent; - - - if not GetXmlTag('ChangeLog') then Exit; - while GetXmlTag('Info') do - begin - for i := 0 to fXmlParser.CurAttr.Count - 1 do - begin - Node := TNvpNode(fXmlParser.CurAttr[i]); - if Node.Name = 'Text' then - memInfo.Lines.Add(Node.Value) - end; - end; - fXmlParser.StartScan; - i := 0; - if not GetXmlTag('Instructions') then Exit; - while GetXmlTag('File') do - begin - if (FXmlParser.CurAttr.Count > 0) then - begin - inc(i); - SetAttr('Name', Container); - stgrInst.Cells[1, i] := Container; - SetAttr('Destination', Container); - stgrInst.Cells[2, i] := Container; - SetAttr('Terminate', Container); - stgrInst.Cells[3, i] := Container; - end; - end; - finally - UpdateControls(OD.FileName); - OD.Free; - end; - end; -end; - -procedure Tform1.ParseInit(XmlFile: string); -begin - fXmlParser := TXmlParser.Create; - with fXmlParser do - begin - LoadFromFile(PChar(XmlFile)); - Normalize := True; - StartScan; - end; -end; - -procedure Tform1.btnCreateXMLClick(Sender: TObject); -var - SD: TSaveDialog; - i: integer; - MS: TMemoryStream; - st: string; - procedure WriteString(const str: string); - var - Temp: Utf8String; - begin - if str <> '' then - begin - Temp := Utf8Encode(Str); - MS.Write(Pointer(Temp)^, Length(Temp)); - end; - end; - -begin - edtPath.Text := ''; - MS := TMemoryStream.Create; - MS.Position := 0; - try - WriteString(''#13#10); - // WriteString(''#13#10); - WriteString(''#13#10); - WriteString('
'#13#10); - WriteString(#9'' + edtName.Text + ''#13#10); - WriteString(#9'' + edtAuthor.Text + ''#13#10); - WriteString(#9'' + edtCompany.Text + ''#13#10); - - WriteString(#9'' + edtMajor.Text + ''#13#10); - WriteString(#9'' + edtMinor.Text + ''#13#10); - WriteString(#9'' + edtRelease.Text + ''#13#10); - WriteString(#9'' + edtBuild.Text + ''#13#10); - - WriteString('
'#13#10); - WriteString(' '#13#10); - for i := 1 to memInfo.Lines.Count - 1 do - begin - if cbNumerator.Checked then - st := IntToStr(i) + '. ' + memInfo.Lines.Strings[i] + '' - else - st := memInfo.Lines.Strings[i] + ''; - WriteString(#9 + '' + #13#10); - end; - WriteString(' '#13#10); - WriteString(' '#13#10); - for i := 1 to stgrInst.RowCount - 1 do - begin - if stgrInst.Cells[1, 1] <> '' then - begin - if stgrInst.Cells[1, i] <> '' then - begin - if ((stgrInst.Cells[3, i] = 'yes') or (stgrInst.Cells[3, i] = 'no')) then - begin - WriteString(#9''#13#10) - end - else - begin - MessageDlg('The Terminame field must contain "yes" or "no" only.' - , mtError, [mbCancel], 0); - end; - end; - end - else - begin - MessageDlg('You must enter at least one file to update :).' - , mtError, [mbCancel], 0); - Exit; - end; - end; - WriteString(' '#13#10); - WriteString('
'#13#10); - - SD := TSaveDialog.Create(Self); - with SD do - begin - Title := 'Save XML file'; - DefaultExt := 'xml'; - Filter := 'XML files (*.xml)|*.XML'; - FileName := 'NewUpdate.xml'; - if cbOverWrite.Checked then - Options := [ofHideReadOnly, ofEnableSizing, ofOverWritePrompt]; - end; - if SD.Execute then - begin - ms.SaveToFile(SD.FileName); - UpdateControls(SD.FileName); - UpdateComponents; - ShowMessage('You have ceated the proper XML file.' + #10 + #13 + - 'The file is stored in: ' + #10 + #13 + edtPath.Text + #10 + #13 + - 'Now, upload the file to the web site remote folder using ftp.'); - end; - finally - EmbeddedWB1.Go(edtPath.Text); - ms.Free; - end; -end; - -procedure Tform1.SetAttr(AttrName: string; var st: string); -var - Node: TNvpNode; -begin - Node := FXmlParser.CurAttr.Node(AttrName); - if Node <> nil then - st := Node.Value; -end; - -procedure Tform1.XmlScanner1CData(Sender: TObject; Content: string); -begin - Content := StringReplace(Content, #13, ' ', [rfReplaceAll]); - Content := StringReplace(Content, #10, '', [rfReplaceAll]); - TreeView.Items.AddChild(CurNode, Content); -end; - -procedure Tform1.XmlScanner1Comment(Sender: TObject; Comment: string); -begin - TreeView.Items.AddChild(CurNode, 'Comment'); -end; - -procedure Tform1.XmlScanner1Content(Sender: TObject; Content: string); -begin - Content := StringReplace(Content, #13, ' ', [rfReplaceAll]); - Content := StringReplace(Content, #10, '', [rfReplaceAll]); - TreeView.Items.AddChild(CurNode, Content); -end; - -procedure Tform1.XmlScanner1DtdRead(Sender: TObject; RootElementName: string); -begin - TreeView.Items.AddChild(CurNode, 'DTD: ' + RootElementName); -end; - -procedure Tform1.XmlScanner1EmptyTag(Sender: TObject; TagName: string; - Attributes: TAttrList); -var - i: integer; -begin - CurNode := TreeView.Items.AddChild(CurNode, 'Element "' + TagName + '" (Empty)'); - for i := 0 to Attributes.Count - 1 do - TreeView.Items.AddChild(CurNode, ' * Attribute ' + Attributes.Name(i) + '=' + Attributes.Value(i)); - CurNode := CurNode.Parent; -end; - -procedure Tform1.XmlScanner1EndTag(Sender: TObject; TagName: string); -begin - if CurNode <> nil then - CurNode := CurNode.Parent; -end; - -procedure Tform1.XmlScanner1PI(Sender: TObject; Target, Content: string; - Attributes: TAttrList); -begin - TreeView.Items.AddChild(CurNode, 'Processing Instruction: ' + Content); -end; - -procedure Tform1.XmlScanner1StartTag(Sender: TObject; TagName: string; - Attributes: TAttrList); -var - i: integer; -begin - CurNode := TreeView.Items.AddChild(CurNode, 'Element "' + TagName + '"'); - for i := 0 to Attributes.Count - 1 do - TreeView.Items.AddChild(CurNode, ' * Attribute ' + Attributes.Name(i) + '=' + Attributes.Value(i)); -end; - -procedure TForm1.XmlScanner1XmlProlog(Sender: TObject; XmlVersion, - Encoding: string; Standalone: Boolean); -begin - TreeView.Items.AddChild(CurNode, 'XML Prolog: Version=' + XmlVersion + ' Encoding=' + Encoding); -end; - -procedure Tform1.Button1Click(Sender: TObject); -begin - TreeView.FullExpand; -end; - -procedure Tform1.Button2Click(Sender: TObject); -begin - TreeView.FullCollapse; -end; - -procedure Tform1.FormResize(Sender: TObject); -begin - with stgrInst do - begin - ColWidths[1] := Round(100 * Self.Width / 580); - ColWidths[2] := Round(335 * Self.Width / 580); - end; -end; - -procedure Tform1.SpeedButton3Click(Sender: TObject); -begin - edtName.Text := ''; - edtMajor.Text := ''; - edtMinor.Text := ''; - edtRelease.Text := ''; - edtBuild.Text := ''; - edtCompany.Text := ''; - edtAuthor.Text := ''; - HideControls(); -end; - -procedure Tform1.SpeedButton1Click(Sender: TObject); -begin - memInfo.Lines.Clear; - HideControls(); -end; - -procedure Tform1.SpeedButton2Click(Sender: TObject); -var - i, j: integer; -begin - for i := 1 to stgrInst.RowCount - 1 do - for j := 1 to stgrInst.ColCount - 1 do - stgrInst.Cells[j, i] := ''; - HideControls(); -end; - - - -end. - diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/prjProject1Demo.dpr b/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/prjProject1Demo.dpr deleted file mode 100644 index b8e98d290b..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/20 - WebUpdater_Demo/Updater_XML_File_Creator/prjProject1Demo.dpr +++ /dev/null @@ -1,45 +0,0 @@ -//*********************************************************** -// WebUpdater demo * -// * -// For Delphi 5,6, 7 , 2005, 2006 * -// Freeware demo * -// By: Eran Bodankin (bsalsa) bsalsa@bsalsa.com * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -program prjProject1Demo; - -uses - Forms, - Unit1 in 'Unit1.pas' {Form1}; - -{$R *.res} - -begin - Application.Initialize; - Application.CreateForm(TForm1, Form1); - Application.Run; -end. diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/VariousDemos.bpg b/windows/src/ext/embeddedwb/Demos/Various Demos/VariousDemos.bpg deleted file mode 100644 index 0a5aede589..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/VariousDemos.bpg +++ /dev/null @@ -1,102 +0,0 @@ -#------------------------------------------------------------------------------ -VERSION = BWS.01 -#------------------------------------------------------------------------------ -!ifndef ROOT -ROOT = $(MAKEDIR)\.. -!endif -#------------------------------------------------------------------------------ -MAKE = $(ROOT)\bin\make.exe -$(MAKEFLAGS) -f$** -DCC = $(ROOT)\bin\dcc32.exe $** -BRCC = $(ROOT)\bin\brcc32.exe $** -#------------------------------------------------------------------------------ -PROJECTS = prjEditDDemo.exe prjExportFavoritesDemo.exe prjFile_AssDemo.exe \ - prjGuidCreatorDemo.exe prjIEGuidDemo.exe prjIEAddressDemo.exe \ - prjCacheDemo.exe prjDownloaderDemo.exe \ - prjDownloadMgrDemo.exe prjDownloadMgrDemo.exe \ - prjMultiDLDemo.exe prjIEParserDemo.exe prjTravellogDemo.exe \ - prjLinksDemo.exe prjProject1Demo.exe prjMimeDemo.exe prjProject1Demo.exe \ - prjZonesSecurityDemo.exe prjUIParser_Demo.exe prjMainDemo.exe \ - prjUrlHistoryDemo.exe prjSearchhookDemo.exe prjProject1Demo.exe \ - prjProject1Demo.exe - -#------------------------------------------------------------------------------ -default: $(PROJECTS) -#------------------------------------------------------------------------------ - -prjEditDDemo.exe: 01 - EditDesigner_Demo\prjEditDDemo.dpr - $(DCC) - -prjExportFavoritesDemo.exe: 02 - ExportFavorites_Demo\prjExportFavoritesDemo.dpr - $(DCC) - -prjFile_AssDemo.exe: 03 - FileAssociate_Demo\prjFile_AssDemo.dpr - $(DCC) - -prjGuidCreatorDemo.exe: 04 - GUID_Demo\GUID_Creator\prjGuidCreatorDemo.dpr - $(DCC) - -prjIEGuidDemo.exe: 04 - GUID_Demo\IEGuid\prjIEGuidDemo.dpr - $(DCC) - -prjIEAddressDemo.exe: 05 - IEAddress_Demo\prjIEAddressDemo.dpr - $(DCC) - -prjCacheDemo.exe: 06 - IECache_Demo\prjCacheDemo.dpr - $(DCC) - -prjDownloaderDemo.exe: 07 - IEDownload_Demo\IEDownload_Creating_Dynamically (at Run-Time)\prjDownloaderDemo.dpr - $(DCC) - -#prjDownloadManagerDemo.dll: 07 - IEDownload_Demo\IEDownload_DownloadManager_Demo\Internet Explorer_OutOfDate\prjDownloadManagerDemo.dpr -# $(DCC) - -prjDownloadMgrDemo.exe: 07 - IEDownload_Demo\IEDownload_DownloadManager_Demo\Webbrowser\prjDownloadMgrDemo.dpr - $(DCC) - -#prjDownloadDemo.exe: 07 - IEDownload_Demo\IEDownload_Mega_Demo\prjDownloadDemo.dpr -# $(DCC) - -prjDownloadMgrDemo.exe: 07 - IEDownload_Demo\IEDownload_Multiple Files_Simultaneous_Downloading\prjDownloadMgrDemo.dpr - $(DCC) - -prjMultiDLDemo.exe: 08 - IEMultiDownload\prjMultiDLDemo.dpr - $(DCC) - -prjIEParserDemo.exe: 09 - IEParser_Demo\prjIEParserDemo.dpr - $(DCC) - -prjTravellogDemo.exe: 10 - IETravellog_Demo\prjTravellogDemo.dpr - $(DCC) - -prjLinksDemo.exe: 11 - LabelLink_Demo\prjLinksDemo.dpr - $(DCC) - -prjProject1Demo.exe: 12 - LinksBar_Demo\prjProject1Demo.dpr - $(DCC) - -prjMimeDemo.exe: 13 - MimeFilter_Demo\prjMimeDemo.dpr - $(DCC) - -prjProject1Demo.exe: 14 - RichEditWB_Demo\prjProject1Demo.dpr - $(DCC) - -prjZonesSecurityDemo.exe: 15 - Zones_Security_Demo\prjZonesSecurityDemo.dpr - $(DCC) - -prjUIParser_Demo.exe: 16 - UI-Less_Demo\prjUIParser_Demo.dpr - $(DCC) - -prjMainDemo.exe: 17 - URL_Demo\prjMainDemo.dpr - $(DCC) - -prjUrlHistoryDemo.exe: 18 - URL_History_Demo\prjUrlHistoryDemo.dpr - $(DCC) - -prjSearchhookDemo.exe: 19 - URLSearchHook\prjSearchhookDemo.dpr - $(DCC) - -prjProject1Demo.exe: 20 - WebUpdater_Demo\Updater_Demo\prjProject1Demo.dpr - $(DCC) - -prjProject1Demo.exe: 20 - WebUpdater_Demo\Updater_XML_File_Creator\prjProject1Demo.dpr - $(DCC) diff --git a/windows/src/ext/embeddedwb/Demos/Various Demos/VariousDemos.groupproj b/windows/src/ext/embeddedwb/Demos/Various Demos/VariousDemos.groupproj deleted file mode 100644 index f5d0c90090..0000000000 --- a/windows/src/ext/embeddedwb/Demos/Various Demos/VariousDemos.groupproj +++ /dev/null @@ -1,264 +0,0 @@ - - - {45F7C09F-A0B5-4E82-B687-275E2A4C62B4} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Default.Personality.12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/windows/src/ext/embeddedwb/EmbeddedWB_D5-XE_Version_14.70.0.zip b/windows/src/ext/embeddedwb/EmbeddedWB_D5-XE_Version_14.70.0.zip deleted file mode 100644 index e3c90cfdc8477307133ddc2872672053b1c29bde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1232070 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%0Amw=|Zx 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%0DK-vei9Xiw|`qgp}vG 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� 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

Ewd^pMKva7|$tX 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 &6sH;JvfGhqkn2O>JG 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 z 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%0D2`^TO3hS=1L-XJ>*-EwLEtL=lKG6hqU7m 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
WjJ={SP|5g8k2FQ|#W${1g9Hm>Z3@RWj36%Yti! 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 z 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�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

v? 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 diff --git a/windows/src/ext/embeddedwb/Licence.txt b/windows/src/ext/embeddedwb/Licence.txt deleted file mode 100644 index 0152349261..0000000000 --- a/windows/src/ext/embeddedwb/Licence.txt +++ /dev/null @@ -1,22 +0,0 @@ -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} \ No newline at end of file diff --git a/windows/src/ext/embeddedwb/Makefile b/windows/src/ext/embeddedwb/Makefile deleted file mode 100644 index 6e4d7c7a6e..0000000000 --- a/windows/src/ext/embeddedwb/Makefile +++ /dev/null @@ -1,19 +0,0 @@ -# -# Embeddedwb Makefile (Tavultesoft) -# - -!include ..\..\Defines.mak - -build: dirs - cd Source - $(DCC32DPK) ..\Packages\EmbeddedWebBrowser_XE.dpk - cd .. - $(MAKE) install - -install: - $(DEVTOOLS) -ip $(OUTLIB)\EmbeddedWebBrowser_XE.bpl - $(DEVTOOLS) -ai $(EXT)\embeddedwb\source - -clean: def-clean - -!include ..\..\Target.mak diff --git a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2006.dpk b/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2006.dpk deleted file mode 100644 index 3799cada43..0000000000 --- a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2006.dpk +++ /dev/null @@ -1,130 +0,0 @@ -{*******************************************************} -{ Embedded Web Browser package Delphi 2006 } -{ } -{ For Delphi 5 - XE } -{ Freeware Components } -{ Please note our uses terms } -{ } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -package EmbeddedWebBrowser_D2006; -{$R *.res} -{$R '..\Source\EWB.dcr'} -{$ALIGN 8} -{$ASSERTIONS OFF} -{$BOOLEVAL OFF} -{$DEBUGINFO OFF} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS OFF} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION ON} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO OFF} -{$SAFEDIVIDE OFF} -{$STACKFRAMES OFF} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DESCRIPTION 'Internet Embedded Web Browser Components'} -{$IMPLICITBUILD ON} -{%File 'EWB.inc'} - -requires - designide, - vcljpg, - rtl, - vcl; - -contains - EmbeddedWB in '..\Source\EmbeddedWB.pas', - AppWebUpdater in '..\Source\AppWebUpdater.pas', - AppWUStrings in '..\Source\AppWUStrings.pas', - ExportFavorites in '..\Source\ExportFavorites.pas', - IEParser in '..\Source\IEParser.pas', - FavMenu in '..\Source\FavMenu.pas', - FavoritesListView in '..\Source\FavoritesListView.pas', - FavoritesTree in '..\Source\FavoritesTree.pas', - HistoryListView in '..\Source\HistoryListView.pas', - HistoryMenu in '..\Source\HistoryMenu.pas', - IECache in '..\Source\IECache.pas', - IEDownload in '..\Source\IEDownload.pas', - IEMultiDownload in '..\Source\IEMultiDownload.pas', - IEDownloadStrings in '..\Source\IEDownloadStrings.pas', - IEDownloadAcc in '..\Source\IEDownloadAcc.pas', - IETravelLog in '..\Source\IETravelLog.pas', - ImportFavorites in '..\Source\ImportFavorites.pas', - LibXmlComps in '..\Source\LibXmlComps.pas', - LibXmlParser in '..\Source\LibXmlParser.pas', - LinksBar in '..\Source\LinksBar.pas', - RichEditBrowser in '..\Source\RichEditBrowser.pas', - SecurityManager in '..\Source\SecurityManager.pas', - SendMail_For_Ewb in '..\Source\SendMail_For_Ewb.pas', - UrlHistory in '..\Source\UrlHistory.pas', - Edithost in '..\Source\Edithost.pas', - EditDesigner in '..\Source\EditDesigner.pas', - IEAddress in '..\Source\IEAddress.pas', - EwbEditors in '..\Source\EwbEditors.pas', - EwbReg in '..\Source\EwbReg.pas', - Browse4Folder in '..\Source\Browse4Folder.pas', - FileExtAssociate in '..\Source\FileExtAssociate.pas', - LinksLabel in '..\Source\LinksLabel.pas', - IeConst in '..\Source\IeConst.pas', - EwbAcc in '..\Source\EwbAcc.pas', - EwbTools in '..\Source\EwbTools.pas', - DirMonitor in '..\Source\DirMonitor.pas', - HighLightXML in '..\Source\HighLightXML.pas', - HighLightHTML in '..\Source\HighLightHTML.pas', - Mshtml_Ewb in '..\Source\Mshtml_Ewb.pas', - HighLightRichSyntax in '..\Source\HighLightRichSyntax.pas', - SHDocVw_EWB in '..\Source\SHDocVw_EWB.pas', - UI_Less in '..\Source\UI_Less.pas', - EwbCore in '..\Source\EwbCore.pas', - MenuContext in '..\Source\MenuContext.pas', - FavoritesPopup in '..\Source\FavoritesPopup.pas', - EwbDDE in '..\Source\EwbDDE.pas', - EwbCoreTools in '..\Source\EwbCoreTools.pas', - EwbClasses in '..\Source\EwbClasses.pas', - EwbBehaviorsComp in '..\Source\EwbBehaviorsComp.pas', - EwbEvents in '..\Source\EwbEvents.pas', - EwbEventsComp in '..\Source\EwbEventsComp.pas', - EwbActns in '..\Source\EwbActns.pas', - EwbUrl in '..\Source\EwbUrl.pas', - IEDownloadTools in '..\Source\IEDownloadTools.pas', - wbhFixes in '..\Source\wbhFixes.pas', - MSHTMLEvents in '..\Source\MSHTMLEvents.pas', - EwbControlComponent in '..\Source\EwbControlComponent.pas', - EwbMouseHook in '..\Source\EwbMouseHook.pas', - EwbFocusControl in '..\Source\EwbFocusControl.pas'; - - -end. diff --git a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2007.dpk b/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2007.dpk deleted file mode 100644 index ebd84e1b8b..0000000000 --- a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2007.dpk +++ /dev/null @@ -1,129 +0,0 @@ -{*******************************************************} -{ Embedded Web Browser package Delphi 2007 } -{ } -{ For Delphi 5 - XE } -{ Freeware Components } -{ Please note our uses terms } -{ } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -package EmbeddedWebBrowser_D2007; -{$R *.res} -{$R '..\Source\EWB.dcr'} -{$ALIGN 8} -{$ASSERTIONS OFF} -{$BOOLEVAL OFF} -{$DEBUGINFO ON} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS OFF} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION ON} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO OFF} -{$SAFEDIVIDE OFF} -{$STACKFRAMES OFF} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DESCRIPTION 'Internet Embedded Web Browser Components'} -{$IMPLICITBUILD ON} - -requires - designide, - vcljpg, - rtl, - vcl; - -contains - EmbeddedWB in '..\Source\EmbeddedWB.pas', - AppWebUpdater in '..\Source\AppWebUpdater.pas', - AppWUStrings in '..\Source\AppWUStrings.pas', - ExportFavorites in '..\Source\ExportFavorites.pas', - IEParser in '..\Source\IEParser.pas', - FavMenu in '..\Source\FavMenu.pas', - FavoritesListView in '..\Source\FavoritesListView.pas', - FavoritesTree in '..\Source\FavoritesTree.pas', - HistoryListView in '..\Source\HistoryListView.pas', - HistoryMenu in '..\Source\HistoryMenu.pas', - IECache in '..\Source\IECache.pas', - IEDownload in '..\Source\IEDownload.pas', - IEMultiDownload in '..\Source\IEMultiDownload.pas', - IEDownloadStrings in '..\Source\IEDownloadStrings.pas', - IEDownloadAcc in '..\Source\IEDownloadAcc.pas', - IETravelLog in '..\Source\IETravelLog.pas', - ImportFavorites in '..\Source\ImportFavorites.pas', - LibXmlComps in '..\Source\LibXmlComps.pas', - LibXmlParser in '..\Source\LibXmlParser.pas', - LinksBar in '..\Source\LinksBar.pas', - RichEditBrowser in '..\Source\RichEditBrowser.pas', - SecurityManager in '..\Source\SecurityManager.pas', - SendMail_For_Ewb in '..\Source\SendMail_For_Ewb.pas', - UrlHistory in '..\Source\UrlHistory.pas', - Edithost in '..\Source\Edithost.pas', - EditDesigner in '..\Source\EditDesigner.pas', - IEAddress in '..\Source\IEAddress.pas', - EwbEditors in '..\Source\EwbEditors.pas', - EwbReg in '..\Source\EwbReg.pas', - Browse4Folder in '..\Source\Browse4Folder.pas', - FileExtAssociate in '..\Source\FileExtAssociate.pas', - LinksLabel in '..\Source\LinksLabel.pas', - IeConst in '..\Source\IeConst.pas', - EwbAcc in '..\Source\EwbAcc.pas', - EwbTools in '..\Source\EwbTools.pas', - DirMonitor in '..\Source\DirMonitor.pas', - HighLightXML in '..\Source\HighLightXML.pas', - HighLightHTML in '..\Source\HighLightHTML.pas', - Mshtml_Ewb in '..\Source\Mshtml_Ewb.pas', - HighLightRichSyntax in '..\Source\HighLightRichSyntax.pas', - SHDocVw_EWB in '..\Source\SHDocVw_EWB.pas', - UI_Less in '..\Source\UI_Less.pas', - EwbCore in '..\Source\EwbCore.pas', - MenuContext in '..\Source\MenuContext.pas', - FavoritesPopup in '..\Source\FavoritesPopup.pas', - EwbDDE in '..\Source\EwbDDE.pas', - EwbCoreTools in '..\Source\EwbCoreTools.pas', - EwbClasses in '..\Source\EwbClasses.pas', - EwbBehaviorsComp in '..\Source\EwbBehaviorsComp.pas', - EwbEvents in '..\Source\EwbEvents.pas', - EwbEventsComp in '..\Source\EwbEventsComp.pas', - EwbActns in '..\Source\EwbActns.pas', - EwbUrl in '..\Source\EwbUrl.pas', - IEDownloadTools in '..\Source\IEDownloadTools.pas', - wbhFixes in '..\Source\wbhFixes.pas', - MSHTMLEvents in '..\Source\MSHTMLEvents.pas', - EwbControlComponent in '..\Source\EwbControlComponent.pas', - EwbMouseHook in '..\Source\EwbMouseHook.pas', - EwbFocusControl in '..\Source\EwbFocusControl.pas'; - - -end. diff --git a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2009.dpk b/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2009.dpk deleted file mode 100644 index ced03ef0bb..0000000000 --- a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2009.dpk +++ /dev/null @@ -1,128 +0,0 @@ -{*******************************************************} -{ Embedded Web Browser package Delphi 2009 } -{ } -{ For Delphi 5 - XE } -{ Freeware Components } -{ Please note our uses terms } -{ } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -package EmbeddedWebBrowser_D2009; -{$R *.res} -{$R '..\Source\EWB.dcr'} -{$ALIGN 8} -{$ASSERTIONS OFF} -{$BOOLEVAL OFF} -{$DEBUGINFO OFF} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS OFF} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION ON} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO OFF} -{$SAFEDIVIDE OFF} -{$STACKFRAMES OFF} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DESCRIPTION 'Internet Embedded Web Browser Components'} -{$IMPLICITBUILD ON} - -requires - designide, - rtl, - vcl, - vclimg; - -contains - EmbeddedWB in '..\Source\EmbeddedWB.pas', - AppWebUpdater in '..\Source\AppWebUpdater.pas', - AppWUStrings in '..\Source\AppWUStrings.pas', - ExportFavorites in '..\Source\ExportFavorites.pas', - IEParser in '..\Source\IEParser.pas', - FavMenu in '..\Source\FavMenu.pas', - FavoritesListView in '..\Source\FavoritesListView.pas', - FavoritesTree in '..\Source\FavoritesTree.pas', - HistoryListView in '..\Source\HistoryListView.pas', - HistoryMenu in '..\Source\HistoryMenu.pas', - IECache in '..\Source\IECache.pas', - IEDownload in '..\Source\IEDownload.pas', - IEMultiDownload in '..\Source\IEMultiDownload.pas', - IEDownloadStrings in '..\Source\IEDownloadStrings.pas', - IEDownloadAcc in '..\Source\IEDownloadAcc.pas', - IETravelLog in '..\Source\IETravelLog.pas', - ImportFavorites in '..\Source\ImportFavorites.pas', - LibXmlComps in '..\Source\LibXmlComps.pas', - LibXmlParser in '..\Source\LibXmlParser.pas', - LinksBar in '..\Source\LinksBar.pas', - RichEditBrowser in '..\Source\RichEditBrowser.pas', - SecurityManager in '..\Source\SecurityManager.pas', - SendMail_For_Ewb in '..\Source\SendMail_For_Ewb.pas', - UrlHistory in '..\Source\UrlHistory.pas', - Edithost in '..\Source\Edithost.pas', - EditDesigner in '..\Source\EditDesigner.pas', - IEAddress in '..\Source\IEAddress.pas', - EwbEditors in '..\Source\EwbEditors.pas', - EwbReg in '..\Source\EwbReg.pas', - Browse4Folder in '..\Source\Browse4Folder.pas', - FileExtAssociate in '..\Source\FileExtAssociate.pas', - LinksLabel in '..\Source\LinksLabel.pas', - IeConst in '..\Source\IeConst.pas', - EwbAcc in '..\Source\EwbAcc.pas', - EwbTools in '..\Source\EwbTools.pas', - DirMonitor in '..\Source\DirMonitor.pas', - HighLightXML in '..\Source\HighLightXML.pas', - HighLightHTML in '..\Source\HighLightHTML.pas', - Mshtml_Ewb in '..\Source\Mshtml_Ewb.pas', - HighLightRichSyntax in '..\Source\HighLightRichSyntax.pas', - SHDocVw_EWB in '..\Source\SHDocVw_EWB.pas', - UI_Less in '..\Source\UI_Less.pas', - EwbCore in '..\Source\EwbCore.pas', - MenuContext in '..\Source\MenuContext.pas', - FavoritesPopup in '..\Source\FavoritesPopup.pas', - EwbDDE in '..\Source\EwbDDE.pas', - EwbCoreTools in '..\Source\EwbCoreTools.pas', - EwbClasses in '..\Source\EwbClasses.pas', - EwbBehaviorsComp in '..\Source\EwbBehaviorsComp.pas', - EwbEvents in '..\Source\EwbEvents.pas', - EwbEventsComp in '..\Source\EwbEventsComp.pas', - EwbActns in '..\Source\EwbActns.pas', - EwbUrl in '..\Source\EwbUrl.pas', - IEDownloadTools in '..\Source\IEDownloadTools.pas', - wbhFixes in '..\Source\wbhFixes.pas', - MSHTMLEvents in '..\Source\MSHTMLEvents.pas', - EwbControlComponent in '..\Source\EwbControlComponent.pas', - EwbMouseHook in '..\Source\EwbMouseHook.pas', - EwbFocusControl in '..\Source\EwbFocusControl.pas'; - -end. diff --git a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2010.dpk b/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2010.dpk deleted file mode 100644 index 9584a9ce01..0000000000 --- a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D2010.dpk +++ /dev/null @@ -1,130 +0,0 @@ -{*******************************************************} -{ Embedded Web Browser package Delphi 2010 } -{ } -{ For Delphi 5 - XE } -{ Freeware Components } -{ Please note our uses terms } -{ } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -{$IMPLICITBUILD OFF} - -package EmbeddedWebBrowser_D2010; -{$R *.res} -{$R '..\Source\EWB.dcr'} -{$ALIGN 8} -{$ASSERTIONS OFF} -{$BOOLEVAL OFF} -{$DEBUGINFO OFF} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS OFF} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION ON} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO OFF} -{$SAFEDIVIDE OFF} -{$STACKFRAMES OFF} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DESCRIPTION 'Internet Embedded Web Browser Components'} -{$IMPLICITBUILD ON} - -requires - designide, - rtl, - vcl, - vclimg; - -contains - EmbeddedWB in '..\Source\EmbeddedWB.pas', - AppWebUpdater in '..\Source\AppWebUpdater.pas', - AppWUStrings in '..\Source\AppWUStrings.pas', - ExportFavorites in '..\Source\ExportFavorites.pas', - IEParser in '..\Source\IEParser.pas', - FavMenu in '..\Source\FavMenu.pas', - FavoritesListView in '..\Source\FavoritesListView.pas', - FavoritesTree in '..\Source\FavoritesTree.pas', - HistoryListView in '..\Source\HistoryListView.pas', - HistoryMenu in '..\Source\HistoryMenu.pas', - IECache in '..\Source\IECache.pas', - IEDownload in '..\Source\IEDownload.pas', - IEMultiDownload in '..\Source\IEMultiDownload.pas', - IEDownloadStrings in '..\Source\IEDownloadStrings.pas', - IEDownloadAcc in '..\Source\IEDownloadAcc.pas', - IETravelLog in '..\Source\IETravelLog.pas', - ImportFavorites in '..\Source\ImportFavorites.pas', - LibXmlComps in '..\Source\LibXmlComps.pas', - LibXmlParser in '..\Source\LibXmlParser.pas', - LinksBar in '..\Source\LinksBar.pas', - RichEditBrowser in '..\Source\RichEditBrowser.pas', - SecurityManager in '..\Source\SecurityManager.pas', - SendMail_For_Ewb in '..\Source\SendMail_For_Ewb.pas', - UrlHistory in '..\Source\UrlHistory.pas', - Edithost in '..\Source\Edithost.pas', - EditDesigner in '..\Source\EditDesigner.pas', - IEAddress in '..\Source\IEAddress.pas', - EwbEditors in '..\Source\EwbEditors.pas', - EwbReg in '..\Source\EwbReg.pas', - Browse4Folder in '..\Source\Browse4Folder.pas', - FileExtAssociate in '..\Source\FileExtAssociate.pas', - LinksLabel in '..\Source\LinksLabel.pas', - IeConst in '..\Source\IeConst.pas', - EwbAcc in '..\Source\EwbAcc.pas', - EwbTools in '..\Source\EwbTools.pas', - DirMonitor in '..\Source\DirMonitor.pas', - HighLightXML in '..\Source\HighLightXML.pas', - HighLightHTML in '..\Source\HighLightHTML.pas', - Mshtml_Ewb in '..\Source\Mshtml_Ewb.pas', - HighLightRichSyntax in '..\Source\HighLightRichSyntax.pas', - SHDocVw_EWB in '..\Source\SHDocVw_EWB.pas', - UI_Less in '..\Source\UI_Less.pas', - EwbCore in '..\Source\EwbCore.pas', - MenuContext in '..\Source\MenuContext.pas', - FavoritesPopup in '..\Source\FavoritesPopup.pas', - EwbDDE in '..\Source\EwbDDE.pas', - EwbCoreTools in '..\Source\EwbCoreTools.pas', - EwbClasses in '..\Source\EwbClasses.pas', - EwbBehaviorsComp in '..\Source\EwbBehaviorsComp.pas', - EwbEvents in '..\Source\EwbEvents.pas', - EwbEventsComp in '..\Source\EwbEventsComp.pas', - EwbActns in '..\Source\EwbActns.pas', - EwbUrl in '..\Source\EwbUrl.pas', - IEDownloadTools in '..\Source\IEDownloadTools.pas', - wbhFixes in '..\Source\wbhFixes.pas', - MSHTMLEvents in '..\Source\MSHTMLEvents.pas', - EwbControlComponent in '..\Source\EwbControlComponent.pas', - EwbMouseHook in '..\Source\EwbMouseHook.pas', - EwbFocusControl in '..\Source\EwbFocusControl.pas'; - -end. diff --git a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D5.dpk b/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D5.dpk deleted file mode 100644 index 7c17487d6f..0000000000 --- a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D5.dpk +++ /dev/null @@ -1,129 +0,0 @@ -{*******************************************************} -{ Embedded Web Browser package Delphi 5 } -{ } -{ For Delphi 5, 6, 7, 2005, 2006, 2007, 2009 } -{ Freeware Components } -{ Please note our uses terms } -{ } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -{$B-} - -package EmbeddedWebBrowser_D5; -{$R *.RES} -{$R '..\Source\EWB.dcr'} -{$ALIGN ON} -{$ASSERTIONS ON} -{$BOOLEVAL ON} -{$DEBUGINFO ON} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS ON} -{$LONGSTRINGS ON} -{$OPENSTRINGS OFF} -{$OPTIMIZATION ON} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO ON} -{$SAFEDIVIDE OFF} -{$STACKFRAMES OFF} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS OFF} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DESCRIPTION 'Internet Embedded Web Browser Components'} -{$IMPLICITBUILD ON} - -requires - Vclx50, - vcljpg50, - vclie50; - -contains - EmbeddedWB in '..\Source\EmbeddedWB.pas', - ExportFavorites in '..\Source\ExportFavorites.pas', - FavMenu in '..\Source\FavMenu.pas', - FavoritesListView in '..\Source\FavoritesListView.pas', - FavoritesTree in '..\Source\FavoritesTree.pas', - HighLightHTML in '..\Source\HighLightHTML.pas', - HighLightRichSyntax in '..\Source\HighLightRichSyntax.pas', - HighLightXML in '..\Source\HighLightXML.pas', - HistoryListView in '..\Source\HistoryListView.pas', - HistoryMenu in '..\Source\HistoryMenu.pas', - IEAddress in '..\Source\IEAddress.pas', - IECache in '..\Source\IECache.pas', - IEDownload in '..\Source\IEDownload.pas', - IEMultiDownload in '..\Source\IEMultiDownload.pas', - IEDownloadStrings in '..\Source\IEDownloadStrings.pas', - IEDownloadAcc in '..\Source\IEDownloadAcc.pas', - IEGuid in '..\Source\IEGuid.pas', - IETravelLog in '..\Source\IETravelLog.pas', - ImportFavorites in '..\Source\ImportFavorites.pas', - LibXmlComps in '..\Source\LibXmlComps.pas', - LibXmlParser in '..\Source\LibXmlParser.pas', - LinksBar in '..\Source\LinksBar.pas', - RichEditBrowser in '..\Source\RichEditBrowser.pas', - SecurityManager in '..\Source\SecurityManager.pas', - UrlHistory in '..\Source\UrlHistory.pas', - Edithost in '..\Source\Edithost.pas', - EditDesigner in '..\Source\EditDesigner.pas', - EwbEditors in '..\Source\EwbEditors.pas', - EwbReg in '..\Source\EwbReg.pas', - SendMail_For_Ewb in '..\Source\SendMail_For_Ewb.pas', - Browse4Folder in '..\Source\Browse4Folder.pas', - IEParser in '..\Source\IEParser.pas', - LinksLabel in '..\Source\LinksLabel.pas', - DIRMonitor in '..\Source\DirMonitor.pas', - EwbAcc in '..\Source\EwbAcc.pas', - EwbCore in '..\Source\EwbCore.pas', - EWBTools in '..\Source\EwbTools.pas', - FavoritesPopup in '..\Source\FavoritesPopup.pas', - wcrypt2 in '..\Source\Wcrypt2.pas', - FileExtAssociate in '..\Source\FileExtAssociate.pas', - IEConst in '..\Source\IeConst.pas', - MenuContext in '..\Source\MenuContext.pas', - Mshtml_Ewb in '..\Source\Mshtml_Ewb.pas', - SHDocVw_EWB in '..\Source\SHDocVw_EWB.pas', - UI_Less in '..\Source\UI_Less.pas', - AppWebUpdater in '..\Source\AppWebUpdater.pas', - AppWUStrings in '..\Source\AppWUStrings.pas', - EwbDDE in '..\Source\EwbDDE.pas', - EwbClasses in '..\Source\EwbClasses.pas', - EwbActns in '..\Source\EwbActns.pas', - EwbCoreTools in '..\Source\EwbCoreTools.pas', - EwbEvents in '..\Source\EwbEvents.pas', - EwbUrl in '..\Source\EwbUrl.pas', - IEDownloadTools in '..\Source\IEDownloadTools.pas', - wbhFixes in '..\Source\wbhFixes.pas', - MSHTMLEvents in '..\Source\MSHTMLEvents.pas', - EwbControlComponent in '..\Source\EwbControlComponent.pas', - EwbMouseHook in '..\Source\EwbMouseHook.pas', - EwbFocusControl in '..\Source\EwbFocusControl.pas'; - - -end. diff --git a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D6.dpk b/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D6.dpk deleted file mode 100644 index 0700f142f2..0000000000 --- a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D6.dpk +++ /dev/null @@ -1,128 +0,0 @@ -{*******************************************************} -{ Embedded Web Browser package Delphi 6 } -{ } -{ For Delphi 5, 6, 7, 2005, 2006, 2007, 2009 } -{ Freeware Components } -{ Please note our uses terms } -{ } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -package EmbeddedWebBrowser_D6; -{$R *.res} -{$R '..\Source\EWB.dcr'} -{$ALIGN 8} -{$ASSERTIONS ON} -{$BOOLEVAL OFF} -{$DEBUGINFO ON} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS ON} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION ON} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO ON} -{$SAFEDIVIDE OFF} -{$STACKFRAMES OFF} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DESCRIPTION 'Internet Embedded Web Browser Components'} -{$IMPLICITBUILD ON} - -requires - vcljpg, - designide, - vclx; - -contains - EmbeddedWB in '..\Source\EmbeddedWB.pas', - AppWebUpdater in '..\Source\AppWebUpdater.pas', - AppWUStrings in '..\Source\AppWUStrings.pas', - ExportFavorites in '..\Source\ExportFavorites.pas', - IEParser in '..\Source\IEParser.pas', - FavMenu in '..\Source\FavMenu.pas', - FavoritesListView in '..\Source\FavoritesListView.pas', - FavoritesTree in '..\Source\FavoritesTree.pas', - HistoryListView in '..\Source\HistoryListView.pas', - HistoryMenu in '..\Source\HistoryMenu.pas', - IECache in '..\Source\IECache.pas', - IEDownload in '..\Source\IEDownload.pas', - IEMultiDownload in '..\Source\IEMultiDownload.pas', - IEDownloadStrings in '..\Source\IEDownloadStrings.pas', - IEDownloadAcc in '..\Source\IEDownloadAcc.pas', - IETravelLog in '..\Source\IETravelLog.pas', - ImportFavorites in '..\Source\ImportFavorites.pas', - LibXmlComps in '..\Source\LibXmlComps.pas', - LibXmlParser in '..\Source\LibXmlParser.pas', - LinksBar in '..\Source\LinksBar.pas', - RichEditBrowser in '..\Source\RichEditBrowser.pas', - SecurityManager in '..\Source\SecurityManager.pas', - SendMail_For_Ewb in '..\Source\SendMail_For_Ewb.pas', - UrlHistory in '..\Source\UrlHistory.pas', - Edithost in '..\Source\Edithost.pas', - EditDesigner in '..\Source\EditDesigner.pas', - IEAddress in '..\Source\IEAddress.pas', - EwbEditors in '..\Source\EwbEditors.pas', - EwbReg in '..\Source\EwbReg.pas', - Browse4Folder in '..\Source\Browse4Folder.pas', - FileExtAssociate in '..\Source\FileExtAssociate.pas', - LinksLabel in '..\Source\LinksLabel.pas', - IeConst in '..\Source\IeConst.pas', - EwbAcc in '..\Source\EwbAcc.pas', - EwbTools in '..\Source\EwbTools.pas', - DirMonitor in '..\Source\DirMonitor.pas', - HighLightXML in '..\Source\HighLightXML.pas', - HighLightHTML in '..\Source\HighLightHTML.pas', - Mshtml_Ewb in '..\Source\Mshtml_Ewb.pas', - HighLightRichSyntax in '..\Source\HighLightRichSyntax.pas', - SHDocVw_EWB in '..\Source\SHDocVw_EWB.pas', - UI_Less in '..\Source\UI_Less.pas', - EwbCore in '..\Source\EwbCore.pas', - MenuContext in '..\Source\MenuContext.pas', - FavoritesPopup in '..\Source\FavoritesPopup.pas', - EwbDDE in '..\Source\EwbDDE.pas', - EwbCoreTools in '..\Source\EwbCoreTools.pas', - EwbClasses in '..\Source\EwbClasses.pas', - EwbBehaviorsComp in '..\Source\EwbBehaviorsComp.pas', - EwbEvents in '..\Source\EwbEvents.pas', - EwbEventsComp in '..\Source\EwbEventsComp.pas', - EwbActns in '..\Source\EwbActns.pas', - EwbUrl in '..\Source\EwbUrl.pas', - IEDownloadTools in '..\Source\IEDownloadTools.pas', - wbhFixes in '..\Source\wbhFixes.pas', - MSHTMLEvents in '..\Source\MSHTMLEvents.pas', - EwbControlComponent in '..\Source\EwbControlComponent.pas', - EwbMouseHook in '..\Source\EwbMouseHook.pas', - EwbFocusControl in '..\Source\EwbFocusControl.pas'; - -end. diff --git a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D7.dpk b/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D7.dpk deleted file mode 100644 index 933fc6dc7b..0000000000 --- a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_D7.dpk +++ /dev/null @@ -1,131 +0,0 @@ -{*******************************************************} -{ Embedded Web Browser package Delphi 7 } -{ } -{ For Delphi 5, 6, 7, 2005, 2006, 2007, 2009 } -{ Freeware Components } -{ Please note our uses terms } -{ } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -package EmbeddedWebBrowser_D7; -{$R *.res} -{$R '..\Source\EWB.dcr'} -{$ALIGN 8} -{$ASSERTIONS OFF} -{$BOOLEVAL OFF} -{$DEBUGINFO OFF} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS OFF} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION ON} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO OFF} -{$SAFEDIVIDE OFF} -{$STACKFRAMES OFF} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DESCRIPTION 'Internet Embedded Web Browser Components'} -{$IMPLICITBUILD OFF} - -requires - designide, - vcljpg, - rtl, - vcl; - -contains - AppWebUpdater in '..\Source\AppWebUpdater.pas', - AppWUStrings in '..\Source\AppWUStrings.pas', - EmbeddedWB in '..\Source\EmbeddedWB.pas', - ExportFavorites in '..\Source\ExportFavorites.pas', - FavMenu in '..\Source\FavMenu.pas', - FavoritesListView in '..\Source\FavoritesListView.pas', - FavoritesTree in '..\Source\FavoritesTree.pas', - HistoryListView in '..\Source\HistoryListView.pas', - HistoryMenu in '..\Source\HistoryMenu.pas', - IECache in '..\Source\IECache.pas', - IEDownload in '..\Source\IEDownload.pas', - IEMultiDownload in '..\Source\IEMultiDownload.pas', - IEDownloadStrings in '..\Source\IEDownloadStrings.pas', - IEDownloadAcc in '..\Source\IEDownloadAcc.pas', - IETravelLog in '..\Source\IETravelLog.pas', - ImportFavorites in '..\Source\ImportFavorites.pas', - LibXmlComps in '..\Source\LibXmlComps.pas', - LibXmlParser in '..\Source\LibXmlParser.pas', - LinksBar in '..\Source\LinksBar.pas', - RichEditBrowser in '..\Source\RichEditBrowser.pas', - SecurityManager in '..\Source\SecurityManager.pas', - SendMail_For_Ewb in '..\Source\SendMail_For_Ewb.pas', - UrlHistory in '..\Source\UrlHistory.pas', - Edithost in '..\Source\Edithost.pas', - EditDesigner in '..\Source\EditDesigner.pas', - IEAddress in '..\Source\IEAddress.pas', - EwbEditors in '..\Source\EwbEditors.pas', - EwbReg in '..\Source\EwbReg.pas', - Browse4Folder in '..\Source\Browse4Folder.pas', - IEParser in '..\Source\IEParser.pas', - LinksLabel in '..\Source\LinksLabel.pas', - EwbCore in '..\Source\EwbCore.pas', - DIRMonitor in '..\Source\DirMonitor.pas', - wcrypt2 in '..\Source\Wcrypt2.pas', - EwbAcc in '..\Source\EwbAcc.pas', - EWBTools in '..\Source\EwbTools.pas', - FavoritesPopup in '..\Source\FavoritesPopup.pas', - FileExtAssociate in '..\Source\FileExtAssociate.pas', - HighLightHTML in '..\Source\HighLightHTML.pas', - HighLightRichSyntax in '..\Source\HighLightRichSyntax.pas', - HighLightXML in '..\Source\HighLightXML.pas', - IEConst in '..\Source\IeConst.pas', - IEGuid in '..\Source\IEGuid.pas', - MenuContext in '..\Source\MenuContext.pas', - Mshtml_Ewb in '..\Source\Mshtml_Ewb.pas', - SHDocVw_EWB in '..\Source\SHDocVw_EWB.pas', - UI_Less in '..\Source\UI_Less.pas', - EwbDDE in '..\Source\EwbDDE.pas', - EwbEventsComp in '..\Source\EwbEventsComp.pas', - EwbBehaviorsComp in '..\Source\EwbBehaviorsComp.pas', - EwbClasses in '..\Source\EwbClasses.pas', - EwbActns in '..\Source\EwbActns.pas', - EwbCoreTools in '..\Source\EwbCoreTools.pas', - EwbEvents in '..\Source\EwbEvents.pas', - EwbUrl in '..\Source\EwbUrl.pas', - wbhFixes in '..\Source\wbhFixes.pas', - MSHTMLEvents in '..\Source\MSHTMLEvents.pas', - IEDownloadTools in '..\Source\IEDownloadTools.pas', - EwbControlComponent in '..\Source\EwbControlComponent.pas', - EwbMouseHook in '..\Source\EwbMouseHook.pas', - EwbFocusControl in '..\Source\EwbFocusControl.pas'; - -end. diff --git a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.dpk b/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.dpk deleted file mode 100644 index c432e80da0..0000000000 --- a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.dpk +++ /dev/null @@ -1,132 +0,0 @@ -{*******************************************************} -{ Embedded Web Browser package Delphi XE } -{ } -{ For Delphi 5 - XE } -{ Freeware Components } -{ Please note our uses terms } -{ } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -package EmbeddedWebBrowser_XE; -{$R *.res} -{$R '..\source\ewb.dcr'} -{$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} -{$ALIGN 8} -{$ASSERTIONS OFF} -{$BOOLEVAL OFF} -{$DEBUGINFO OFF} -{$EXTENDEDSYNTAX ON} -{$IMPORTEDDATA ON} -{$IOCHECKS ON} -{$LOCALSYMBOLS OFF} -{$LONGSTRINGS ON} -{$OPENSTRINGS ON} -{$OPTIMIZATION OFF} -{$OVERFLOWCHECKS OFF} -{$RANGECHECKS OFF} -{$REFERENCEINFO OFF} -{$SAFEDIVIDE OFF} -{$STACKFRAMES ON} -{$TYPEDADDRESS OFF} -{$VARSTRINGCHECKS ON} -{$WRITEABLECONST OFF} -{$MINENUMSIZE 1} -{$IMAGEBASE $400000} -{$DEFINE DEBUG} -{$ENDIF IMPLICITBUILDING} -{$DESCRIPTION 'Internet Embedded Web Browser Components'} -{$IMPLICITBUILD ON} - -requires - designide, - rtl, - vcl, - vclimg; - -contains - EmbeddedWB in '..\Source\EmbeddedWB.pas', - AppWebUpdater in '..\Source\AppWebUpdater.pas', - AppWUStrings in '..\Source\AppWUStrings.pas', - ExportFavorites in '..\Source\ExportFavorites.pas', - IEParser in '..\Source\IEParser.pas', - FavMenu in '..\Source\FavMenu.pas', - FavoritesListView in '..\Source\FavoritesListView.pas', - FavoritesTree in '..\Source\FavoritesTree.pas', - HistoryListView in '..\Source\HistoryListView.pas', - HistoryMenu in '..\Source\HistoryMenu.pas', - IECache in '..\Source\IECache.pas', - IEDownload in '..\Source\IEDownload.pas', - IEMultiDownload in '..\Source\IEMultiDownload.pas', - IEDownloadStrings in '..\Source\IEDownloadStrings.pas', - IEDownloadAcc in '..\Source\IEDownloadAcc.pas', - IETravelLog in '..\Source\IETravelLog.pas', - ImportFavorites in '..\Source\ImportFavorites.pas', - LibXmlComps in '..\Source\LibXmlComps.pas', - LibXmlParser in '..\Source\LibXmlParser.pas', - LinksBar in '..\Source\LinksBar.pas', - RichEditBrowser in '..\Source\RichEditBrowser.pas', - SecurityManager in '..\Source\SecurityManager.pas', - SendMail_For_Ewb in '..\Source\SendMail_For_Ewb.pas', - UrlHistory in '..\Source\UrlHistory.pas', - Edithost in '..\Source\Edithost.pas', - EditDesigner in '..\Source\EditDesigner.pas', - IEAddress in '..\Source\IEAddress.pas', - EwbEditors in '..\Source\EwbEditors.pas', - EwbReg in '..\Source\EwbReg.pas', - Browse4Folder in '..\Source\Browse4Folder.pas', - FileExtAssociate in '..\Source\FileExtAssociate.pas', - LinksLabel in '..\Source\LinksLabel.pas', - EwbIeConst in '..\Source\EwbIeConst.pas', - EwbAcc in '..\Source\EwbAcc.pas', - EwbTools in '..\Source\EwbTools.pas', - DirMonitor in '..\Source\DirMonitor.pas', - HighLightXML in '..\Source\HighLightXML.pas', - HighLightHTML in '..\Source\HighLightHTML.pas', - Mshtml_Ewb in '..\Source\Mshtml_Ewb.pas', - HighLightRichSyntax in '..\Source\HighLightRichSyntax.pas', - SHDocVw_EWB in '..\Source\SHDocVw_EWB.pas', - UI_Less in '..\Source\UI_Less.pas', - EwbCore in '..\Source\EwbCore.pas', - MenuContext in '..\Source\MenuContext.pas', - FavoritesPopup in '..\Source\FavoritesPopup.pas', - EwbDDE in '..\Source\EwbDDE.pas', - EwbCoreTools in '..\Source\EwbCoreTools.pas', - EwbClasses in '..\Source\EwbClasses.pas', - EwbBehaviorsComp in '..\Source\EwbBehaviorsComp.pas', - EwbEvents in '..\Source\EwbEvents.pas', - EwbEventsComp in '..\Source\EwbEventsComp.pas', - EwbActns in '..\Source\EwbActns.pas', - EwbUrl in '..\Source\EwbUrl.pas', - IEDownloadTools in '..\Source\IEDownloadTools.pas', - wbhFixes in '..\Source\wbhFixes.pas', - MSHTMLEvents in '..\Source\MSHTMLEvents.pas', - EwbControlComponent in '..\Source\EwbControlComponent.pas', - EwbMouseHook in '..\Source\EwbMouseHook.pas', - EwbFocusControl in '..\Source\EwbFocusControl.pas', - Wcrypt2 in '..\Source\Wcrypt2.pas'; - -end. diff --git a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.dproj b/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.dproj deleted file mode 100644 index cf161e705b..0000000000 --- a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.dproj +++ /dev/null @@ -1,221 +0,0 @@ - - - {5C177931-F586-401D-A651-2A85FC71CAAC} - EmbeddedWebBrowser_XE.dpk - True - Debug - 1 - Package - VCL - 18.2 - Win32 - - - true - - - true - Base - true - - - true - Base - true - - - true - Base - true - - - true - Cfg_2 - true - true - - - EmbeddedWebBrowser_XE - CompanyName=;FileDescription=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductName=;ProductVersion=1.0.0.0;Comments= - 00400000 - 0 - true - Internet Embedded Web Browser Components - 0 - false - Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;Winapi;System.Win;$(DCC_Namespace) - false - false - true - false - 3081 - false - false - false - - - true - Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) - 1033 - - - false - 0 - RELEASE;$(DCC_Define) - - - 0 - DEBUG;$(DCC_Define) - false - true - - - ..\..\..\..\lib - ..\..\..\..\lib - true - 1033 - - - - MainSource - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Cfg_2 - Base - - - Base - - - Cfg_1 - Base - - - - Delphi.Personality.12 - Package - - - - EmbeddedWebBrowser_XE.dpk - - - False - False - 1 - 0 - 0 - 0 - False - False - False - False - False - 3081 - 1252 - - - - - 1.0.0.0 - - - - - - 1.0.0.0 - - - - File c:\keyman\windows\lib\PMemo6DXE2.bpl not found - File c:\keyman\windows\lib\DCPdelphi2009.bpl not found - File c:\keyman\windows\lib\mbColorLibD10.bpl not found - File c:\keyman\windows\lib\scFontCombo.bpl not found - File c:\keyman\windows\lib\keyman_components.bpl not found - File c:\keyman\windows\lib\JvCoreDesign250.bpl not found - File C:\keyman\windows\lib\JclVcl250.bpl not found - File C:\keyman\windows\lib\Jcl250.bpl not found - File C:\keyman\windows\lib\JvCore250.bpl not found - File c:\keyman\windows\lib\JvDockingDesign250.bpl not found - File C:\keyman\windows\lib\JvDocking250.bpl not found - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - File c:\keyman\windows\lib\JvCoreDesign240.bpl not found - File c:\keyman\windows\lib\JvDockingDesign240.bpl not found - - - - True - False - - - 12 - - - - diff --git a/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.res b/windows/src/ext/embeddedwb/Packages/EmbeddedWebBrowser_XE.res deleted file mode 100644 index a64cea33b7bbf9c30d10d7750693ab849f870abc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 448 zcmZ9IO-chn5QV>ySr}Iy!G&uXVK#zb0{#&2k7USJhD0SG8Ax>JVZ4a9aqkTrzwWV# zNkPq2cfI%ObpafhZQG^gM)b4P-xuS-DCp%0)Xz%G31c4oUNEv6a>uRbq2EjE5TE(? z4+MUvk^X0~3qde-{;v3lcVk{zGH1cFYI9zARC&P@js5qCDJXSyVwQRcjtX|wOZbVL zB`evD%n-*MiAjl^fWH^jFyoD>Q@2^$oO5+DQMIfzY3&RS 0) or - (pos(':', FLogFileName) > 0) or - (pos('/', FLogFileName) > 0) then - begin - Result := LogFileName; - end - else - begin - Result := ExtractFilePath(Application.Exename) + LogFileName; - end; -end; - -procedure TWebUpdater.WriteLog; -var - i: Integer; -begin - try - OpenLog; - UpdateProgressControls(100, 20); - if FLogDateStamp then - begin - WriteLn(logFile, DateToStr(Date) + ' ' + TimeToStr(Now)); - end; - if (FLogHeader > '') then - begin - WriteLn(logFile, FLogHeader); - end; - for i := 0 to (FLogData.Count - 1) do - begin - WriteLn(logFile, FLogData[i]); - end; - finally - CloseLog; - end; -end; - -procedure TWebUpdater.ClearLog; -begin - AssignFile(logFile, FullLogFileName); - try - ReWrite(logFile); - finally - CloseFile(logFile); - end; -end; - -procedure TWebUpdater.OpenLog; -begin - AssignFile(LogFile, FullLogFileName); -{$I-} - Append(LogFile); -{$I+} - if (IOResult <> 0) then - begin - try - ReWrite(LogFile); - except - on E: Exception do - begin - E.Message := sUnableCreateErrorLog + LineBrk + FLogFileName + - LineBrk + E.Message; - raise; - end; - end; - end; -end; - -procedure TWebUpdater.CloseLog; -begin - CloseFile(LogFile); -end; - -procedure TWebUpdater.AddLog(text: string); -var - Data: TStrings; - i: Integer; -begin - OpenLog; - Data := TStringList.Create; - try - if FLogDateStamp then - Data.Add(DateToStr(Date) + ' ' + TimeToStr(Now)); - if (FLogHeader > '') then - Data.Add(FLogHeader); - Data.Add(text); - Data.Add(''); - for i := 0 to (Data.Count - 1) do - WriteLn(logFile, Data[i]); - finally - Data.Free; - end; - CloseLog; -end; -///////////---End of Logger Part --------/////////// - -///////////---Messages Part --------/////////// - -procedure TWebUpdater.ErrMessagesHandler(pErrCode: TErrorMessage; Parameter: string); -var - EM, st: string; -begin - case pErrCode of - emBusy: EM := sBusy; - emCreateSubBackup: EM := FErrorMessage + sCreateSubBackup; - emCreateFolder: EM := FErrorMessage + sCreateFolder; - emFileCopyError: EM := FErrorMessage + sFileCopyError; - emXMLError: EM := FErrorMessage + sXMLError; - emUpdateVersion: EM := FErrorMessage + sUpdateVersion; - emLocateCurrentVersion: EM := FErrorMessage + sLocateCurrentVersion; - emDownloadInfo: EM := FErrorMessage + sDownloadInfo; - emDownloadFiles: EM := FErrorMessage + sDownloadFiles; - emDelete: EM := FErrorMessage + sDelete; - emFileNotExist: EM := FErrorMessage + smFileNotExist; - emExit: EM := FAbortMessage; - emError: EM := sErrorCanceled; - emMatch: EM := sSecurityAlert + LineBrk + FErrorMessage + sSiteError; - end; - if Parameter = '' then - st := EM - else - st := EM + LineBrk + Parameter; - UpdateTextControls(st); - if Assigned(FOnError) then - FOnError(Self, pErrCode, Parameter, EM); - if FShowMessages then - MessageDlg(st, mtError, [mbAbort], 0); - if FErrorReport then - SendErrorReport; -end; - -procedure TWebUpdater.SuccessMessagesHandler(pSuccessCode: TSuccessMessage; Parameter: string); -var - SM: string; - Name: string; -begin - Name := ExtractFileName(Application.ExeName); - case pSuccessCode of - smDone: SM := FSuccessMessageText; - smUpdateNeeded: SM := sUpdateAvailable + Name; - smUpdateNotNeeded: SM := sUpdateNotNeeded; - smChecking: SM := sChecking; - end; - UpdateTextControls(SM); - if FShowMessages then - MessageDlg(SM, mtInformation, [mbOK], 0); - if Assigned(FOnSuccess) then - FOnSuccess(Self, pSuccessCode, Parameter, SM); -end; -///////////---End Of Messages Part --------/////////// - -///////////---Component Part --------/////////// - -constructor TWebUpdater.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - FVersion:= TVersion.Create; - with FVersion do - begin - FAppMajorVer:= 0; - FAppMinorVer:= 0; - FAppReleaseVer:= 0; - FAppBuildVer:= 0; - end; - FNewsor := crAppStart; - FAbortMessage := sAbortMessage; - FAbout := 'Application Updater by bsalsa : bsalsa@gmail.com'; - Busy := False; - FBackupFolder := 'Backup\'; - FLogDateStamp := True; - FWebURL := 'http://'; - FEnabled := True; - // FFilesToUpdate := TStringList.Create; -// FFilesToUpdate.Duplicates := dupIgnore; -{$IFDEF DELPHI6_UP} -// FFilesToUpdate.CaseSensitive := False; -{$ENDIF} - FLogData := TStringList.Create; - FUpdateText := TStringList.Create; - OnProgressStatusList := TStringList.Create; - FDeleteUpdates := True; - FDeleteWebInfo := True; - FDeleteLog := True; - FDeleteBatch := True; - FErrorMessage := sErrorMessage; - FErrorReport := True; - FMatchDetails := True; - FQuitOnError := True; - FSaveBackup := True; - FShowMessages := True; - FShowChanges := True; - FShowPersonalDetails := True; - FShowUpdateFiles := False; - FSuccessMessageText := sSuccessMessageText; - FUpdateInfoText := TStringList.Create; - FUpdateInfoText.Duplicates := dupIgnore; - FUpdatesFolder := 'Updates\'; - FOpenAppFolder := False; - XmlParser := TXMLParser.Create; - FLogFileName := 'Updater.txt'; - FWebInfoFileName := 'Update.xml'; - FCaption := sCaption; - Quit := False; - UpdateRec.NoRestartList := TStringList.Create; - UpdateRec.NoRestartList.Duplicates := dupIgnore; - UpdateRec.WithRestartList := TStringList.Create; - UpdateRec.WithRestartList.Duplicates := dupIgnore; -end; - -destructor TWebUpdater.Destroy; -var - I: Integer; -begin - Stop; - while Busy do - begin - Application.ProcessMessages; - end; - OnProgressStatusList.Free; - FUpdateInfoText.Free; - FUpdateText.Free; - XmlParser.Free; - FLogData.Free; - for I := 0 to UpdateRec.WithRestartList.Count - 1 do - Dispose(PUpRec(UpdateRec.WithRestartList.Objects[I])); - for I := 0 to UpdateRec.NoRestartList.Count - 1 do - Dispose(PUpRec(UpdateRec.NoRestartList.Objects[I])); - FreeAndNil(UpdateRec.WithRestartList); // global variable - FreeAndNil(UpdateRec.NoRestartList); // global variable - FVersion.Free; - inherited Destroy; -end; - -procedure TWebUpdater.SetAbout(Value: string); -begin - Exit; -end; - -procedure TWebUpdater.SetUpdateInfoText(Value: TstringList); -begin - FUpdateInfoText.Assign(Value); -end; - -///////////---End Of Component Part --------/////////// - -///////////////// private Updates procedures ////////////// - -procedure TWebUpdater.UpdateInfo; -begin - if Quit then - begin - ExitUser; - Exit; - end; - FUpdateInfoText.Add(sUpdateAvailable + FApplicationName + '!' + LineBrk); - if FShowPersonalDetails then - begin - if Trim(fAuthor) <> '' then - FUpdateInfoText.Add(sUpdateBy + LineBrk + - LineBrk + sAuthor + Trim(fAuthor)); - if Trim(fCompany) <> '' then - FUpdateInfoText.Add(sCompany + Trim(fCompany)); - if Trim(fEMail) <> '' then - FUpdateInfoText.Add(sEmail + Trim(fEMail)); - end; - if FShowChanges then - begin - if FUpdateText.Text <> '' then - FUpdateInfoText.Add(LineBrk + sUpdateChanges + FUpdateText.Text); - end; - if FShowUpdateFiles then - begin - FUpdateInfoText.Add(LineBrk + sFileList + LineBrk - + LineBrk + UpdateRec.NoRestartList.Text + UpdateRec.WithRestartList.Text) - end; - FUpdateInfoText.Add(LineBrk + sConfirm + FApplicationName + sAbortOption); -end; - -procedure TWebUpdater.UpdateProgressControls(ProgMax, Pos: integer); -begin - if Assigned(FProgressBar) then - begin - FProgressBar.Max := ProgMax; - FProgressBar.Position := Pos; - end; - if Assigned(FOnProgress) then - FOnProgress(ProgMax, Pos); -end; - -procedure TWebUpdater.UpdateTextControls(txt: string); -begin - AddLog(txt); - if Assigned(fOnChangeText) then - FOnChangeText(Self, txt); - if Assigned(fStatusbar) then - FStatusbar.SimpleText := txt; -end; - -procedure TWebUpdater.UpdateAppControls; -begin - AddLog(sUpdatingControls); - OldCaption := Forms.Application.MainForm.Caption; - Forms.Application.MainForm.Caption := FCaption; - OldCursor := Screen.Cursor; - Screen.Cursor := FNewsor; -end; - -procedure TWebUpdater.RestoreAppControls; -begin - Screen.Cursor := OldCursor; - Forms.Application.MainForm.Caption := OldCaption; -end; - -///////////////// End of private Updates procedures ////////////// - -///////////////// private procedures ////////////// - -function TWebUpdater.CheckVersions: boolean; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - if (FVersion.FNewMajorVer > FVersion.FAppMajorVer) or - - (FVersion.FNewMajorVer = FVersion.FAppMajorVer) and - (FVersion.FNewMinorVer > FVersion.FAppMinorVer) or - - (FVersion.FNewMajorVer = FVersion.FAppMajorVer) and - (FVersion.FNewMinorVer = FVersion.FAppMinorVer) and - (FVersion.FNewReleaseVer > FVersion.FAppReleaseVer) or - - (FVersion.FNewMajorVer = FVersion.FAppMajorVer) and - (FVersion.FNewMinorVer = FVersion.FAppMinorVer) and - (FVersion.FNewReleaseVer = FVersion.FAppReleaseVer) and - (FVersion.FNewBuildVer > FVersion.FAppBuildVer) then - begin - AddLog(sUpdateAvailable); - UpdateTextControls(sUpdateAvailable); - Result := True; - end - else - UpdateTextControls(sUpdateNotNeeded); - AddLog('New Major Version: ' + IntToStr(FVersion.FNewMajorVer)); - AddLog('App Major Version: ' + IntToStr(FVersion.FAppMajorVer)); - AddLog('New Minor Version: ' + IntToStr(FVersion.FNewMinorVer)); - AddLog('App Minor Version: ' + IntToStr(FVersion.FAppMinorVer)); - AddLog('New Release Version: ' + IntToStr(FVersion.FNewReleaseVer)); - AddLog('App Release Version: ' + IntToStr(FVersion.FAppReleaseVer)); - AddLog('New Build Version: ' + IntToStr(FVersion.FNewBuildVer)); - AddLog('App Build Version: ' + IntToStr(FVersion.FAppBuildVer)); -end; - -function TWebUpdater.Check_CreateFolder(FolderName: string): boolean; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; -{$IFDEF DELPHI6_UP} - if not (DirectoryExists(FolderName)) then -{$ENDIF} - begin - if not (CreateDir(FolderName)) then - begin - AddLog(sErrorCreating + FolderName + sFolder); - ErrMessagesHandler(emCreateFolder, FolderName); - Result := True; - end - else - AddLog(sCreating + FolderName + sFolder); - end -{$IFDEF DELPHI6_UP} - else - AddLog(sCheckingFolder + FolderName + sExists); -{$ENDIF} -end; - -function TWebUpdater.CopyFiles(Source, Destination, FileName: string): boolean; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - UpdateProgressControls(100, 40); - Source := (ApplicationFolder + Source); - Destination := (ApplicationFolder + Destination); - Check_CreateFolder(Destination); - if FileExists(Source + FileName) then - begin - if not (CopyFile(PChar(Source + FileName), - PChar(Destination + FileName), False)) then - begin - AddLog(sErrorCopyFileName + Source + FileName + - sTo + Destination + FileName); - ErrMessagesHandler(emFileCopyError, FileName); - Result := True; - end - else - AddLog(sFile + Source + FileName + - LineBrk + sCopiedTo + Destination + FileName); - end - else - begin - ErrMessagesHandler(emFileNotExist, FileName); - AddLog(sFileNotExist + Source + FileName + ' !'); - end; -end; - -function TWebUpdater.CreateSubBackupFolder: boolean; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - FBackupFolder := FBackupFolder + FormatDateTime('yyyy_MM_dd_HH_mm_ss', Now) + '\'; - if FSaveBackup then - if not CreateDir(fBackupFolder) then - begin - ErrMessagesHandler(emCreateSubBackup, FBackupFolder); - AddLog(sErrorCreating + FBackupFolder + sFolder); - Result := True; - end - else - AddLog(sCreating + FBackupFolder + sFolderOK); -end; - -function TWebUpdater.GetXmlHead: boolean; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - while XmlParser.Scan do - begin - if XmlParser.CurPartType = ptXmlProlog then - begin - AddLog(sXmlParsingHead); - Result := True; - exit; - end - else - begin - AddLog(sXmlParsingHead); - ErrMessagesHandler(emXMLError, sXmlHead); - end; - end; -end; - -function TWebUpdater.GetXmlTag(const TagName: string): boolean; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - while XmlParser.Scan do - begin - if ((XmlParser.CurPartType = ptStartTag) - or (XmlParser.CurPartType = ptEmptyTag)) - and (XmlParser.CurName = TagName) then - begin - AddLog(sXmlParsingTag + TagName); - Result := True; - Exit; - end; - end; -end; - -function TWebUpdater.GetXmlData: boolean; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - while XmlParser.Scan do - begin - if ((XmlParser.CurPartType = ptContent) or (XmlParser.CurPartType = ptCData)) then - begin - AddLog(sXmlParsingData); - Result := True; - Exit; - end - else - begin - ErrMessagesHandler(emXMLError, sXmlData); - AddLog(sXmlErrorParsingData); - end; - end; -end; - -function TWebUpdater.DownloadFile(SourceFile, DestFile: string): Boolean; -var - st: string; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - Dcb := TDownloadCallback.Create; - Dcb.ProgressMax := 100; - try - st := ApplicationFolder + DestFile; //bs - AddLog(sTrying + SourceFile + sDest + st); - AddLog(sDest + st); - if UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, dcb) = 0 then - begin - UpdateProgressControls(100, Dcb.Position); - Result := True; - AddLog(OnProgressStatusList.Text + LineBrk + sDownloading + SourceFile + LineBrk - + sDest + st + sSuccess) - end - else - begin - Result := False; - ErrMessagesHandler(emDownloadInfo, SourceFile); - end; - except - begin - Result := False; - ErrMessagesHandler(emDownloadInfo, SourceFile); - end; - end; -end; - -function TWebUpdater.DeleteFiles(FileName: string): Boolean; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - if not FileExists(FileName) then - FileName := (GetCurrentDir + '\' + TrimLeft(FileName)); - begin - FileName := TrimLeft(FileName); - if DeleteFile(FileName) then - begin - if FileName <> FLogFileName then - begin - AddLog(sFileDeleted + FileName); - Result := True; - end; - end; - end; -end; - -function TWebUpdater.DeleteFolder(FolderName: string): Boolean; -var - st: string; - i: integer; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - st := GetCurrentDir + '\' + FolderName; - if FolderName = FUpdatesFolder then - try - for i := 0 to UpdateRec.NoRestartList.Count - 1 do - begin - DeleteFiles(st + TrimLeft(UpdateRec.NoRestartList[i])); - Addlog(sFileDeleted + st + TrimLeft(UpdateRec.NoRestartList[i])); - end; - for i := 0 to UpdateRec.WithRestartList.Count - 1 do - begin - DeleteFiles(st + TrimLeft(UpdateRec.WithRestartList[i])); - Addlog(sFileDeleted + st + TrimLeft(UpdateRec.WithRestartList[i])); - end; - except - end; - i := Length(st) - 1; - SetLength(st, i); - if RemoveDir(st) then - begin - Addlog(sFolderDeleted + st); - Result := True; - end; -end; - -function TWebUpdater.OpenFolder(FolderName: string): Boolean; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - ShellExecute(Forms.Application.Handle, PChar(sExplore), PChar(FolderName), nil, - nil, SW_SHOWNORMAL); - Addlog(sOpenFolder + FolderName); - Result := True; -end; - -procedure TWebUpdater.ProcessFolderNames; -begin - if Quit then - begin - ExitUser; - Exit; - end; - AddLog(sStartProcessing); - UpdateProgressControls(100, 20); -{$IFDEF DELPHI6_UP} -{$WARN SYMBOL_PLATFORM OFF} -{$ENDIF} - XmlFile := FWebURL + '/' + (fWebInfoFileName); - FBatFileName := ChangeFileExt(Application.ExeName, '.bat'); - FExeName := ExtractFileName(Application.ExeName); - FUpdatesFolder := IncludeTrailingBackslash(fUpdatesFolder); - ApplicationFolder := IncludeTrailingBackslash(ExtractFilePath(Application.ExeName)); - if Trim(fBackupFolder) = '' - then - FBackupFolder := ApplicationFolder + FBackupFolder - else - FBackupFolder := IncludeTrailingBackslash(fBackupFolder); - AddLog(sFinshedProcessing); -{$IFDEF DELPHI6_UP} -{$WARN SYMBOL_PLATFORM ON} -{$ENDIF} -end; - -procedure TWebUpdater.InitialUpdating; -begin - ClearLog; - WriteLog; - AddLog(sInitialing); - if FAutoGetExeVersion then - GetFileVersion; - NeedTerminate := False; - FUpdateText.Clear; - UpdateAppControls; - UpdateProgressControls(100, 10); - UpdateTextControls(sChecking); - ProcessFolderNames; - if FDeleteBackups then - if DeleteFile(fBackUpFolder + '\*.*') then - DeleteFolder(Trim(fBackUpFolder)); -end; - -function TWebUpdater.ParseXML: boolean; -var - Node: TNvpNode; - i: integer; - UpdRec: PUpRec; - MS: TMemoryStream; - Zero: Char; - Container, tmpFileName: string; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - AddLog(sStartDownloadingXml); - if DownloadFile(XmlFile, FWebInfoFileName) then - begin - tmpFileName := ExtractFilePath(ParamStr(0)) + FWebInfoFileName; - if not FileExists(tmpFileName) then - begin - ErrMessagesHandler(emFileNotExist, tmpFileName); - ExitError(fErrorMessage + sTryingToLocate); - Exit; - end - else - begin - Zero := #0; - MS := TMemoryStream.Create; - try - MS.Write(Zero, 1); - MS.LoadFromFile(fWebInfoFileName); - XmlParser.SetBuffer(MS.Memory); - XmlParser.Normalize := False; - XmlParser.StartScan; - AddLog('Start Scanning ' + tmpFileName); - if not GetXmlHead then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlHead); - Exit; - end; - if not GetXmlTag(sXmlUpdates) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlUpdatesSection); - Exit; - end; - if not GetXmlTag(sXmlDetails) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlDetails); - Exit; - end; - if not GetXmlTag(sXmlAppName) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlAppName); - Exit; - end; - if not GetXmlData then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlAppName); - Exit; - end; - if MatchDetails then - if not PerformMatchDetails(Trim(fApplicationName), - Trim(XmlParser.CurContent)) then - begin - ExitMatch; - Exit; - end; - FApplicationName := XmlParser.CurContent; - if not GetXmlTag(sXmlAuthor) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlAuthor); - Exit; - end; - if not GetXmlData then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlAuthor); - Exit; - end; - if MatchDetails then - if not PerformMatchDetails(Trim(fAuthor), - Trim(XmlParser.CurContent)) then - begin - ExitMatch; - Exit; - end; - FAuthor := XmlParser.CurContent; - if not GetXmlTag(sXmlCompany) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlCompany); - Exit; - end; - if not GetXmlData then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlCompany); - Exit; - end; - if MatchDetails then - if not PerformMatchDetails(Trim(fCompany), - Trim(XmlParser.CurContent)) then - begin - ExitMatch; - Exit; - end; - FCompany := XmlParser.CurContent; - - if not GetXmlTag(sXmlMajorVer)or (not GetXmlData) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlVersion); - Exit; - end; - FVersion.FNewMajorVer := StrToInt(XmlParser.CurContent); - - if not GetXmlTag(sXmlMinorVer)or (not GetXmlData) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlVersion); - Exit; - end; - FVersion.FNewMinorVer := StrToInt(XmlParser.CurContent); - - if not GetXmlTag(sXmlReleaseVer)or (not GetXmlData) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlVersion); - Exit; - end; - FVersion.FNewReleaseVer := StrToInt(XmlParser.CurContent); - - if not GetXmlTag(sXmlBuildVer)or (not GetXmlData) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlVersion); - Exit; - end; - FVersion.FNewBuildVer := StrToInt(XmlParser.CurContent); - - if not GetXmlTag(sXmlChangeLog) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlChangeLog + sSection); - Exit; - end; - FUpdateText.Add(LineBrk); - while GetXmlTag(sXmlInfo) do - begin - for i := 0 to XmlParser.CurAttr.Count - 1 do - begin - Node := TNvpNode(XmlParser.CurAttr[i]); - if Node.Name = sXmlText then - FUpdateText.Add(TrimLeft(Node.Value)); - end; - end; - XmlParser.StartScan; - if not GetXmlTag(sXmlInstructions) then - if FQuitOnError then - begin - ExitError(sXMLFileError + sXmlInstructions + sSection); - Exit; - end; - while GetXmlTag(sXmlFile) do - begin - New(UpdRec); - UpdRec.dlFileName := ''; - UpdRec.dlDestination := ''; - UpdRec.dlTerminate := False; - for i := 0 to XmlParser.CurAttr.Count - 1 do - begin - Node := TNvpNode(XmlParser.CurAttr[i]); - Container := Trim(Node.Name); - if Container = sXmlName then - UpdRec.dlFileName := Trim(Node.Value) - else - if (Container = sXmlDestination) then - begin - UpdRec.dlDestination := Trim(Node.Value) + '\'; - if (UpdRec.dlDestination = ApplicationFolder) or - (UpdRec.dlDestination = '\') then - UpdRec.dlDestination := ''; - end - else - if (Container = sTerminate) then - begin - if Trim(Node.Value) = sYes then - begin - UpdRec.dlTerminate := True; - UpdateRec.WithRestartList.AddObject(UpdRec.dlFileName, Pointer(UpdRec)); - AddLog(sAddingRestartFiles + UpdRec.dlFileName); - Result := True; - end - else - if Trim(Node.Value) = sNo then - begin - UpdRec.dlTerminate := False; - UpdateRec.NoRestartList.AddObject(UpdRec.dlFileName, Pointer(UpdRec)); - AddLog(sAddingFilesToList + UpdRec.dlFileName); - Result := True; - end; - end; - end; - end; - finally - MS.Free; - end; - end; - end; -end; - -function TWebUpdater.ProcessBatch: boolean; -var - slBatchFile: TStringList; - Destination, FileName: string; - i: integer; - UpdRecRestart: PUpRec; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - AddLog(sCreatingBatch + FBatFileName); - slBatchFile := TStringList.Create; - try - slBatchFile.Add('@Echo On'); // Dos commands. - slBatchFile.Add(':again'); - for i := 0 to UpdateRec.WithRestartList.Count - 1 do - begin - UpdRecRestart := PUpRec(UpdateRec.WithRestartList.Objects[i]); - FileName := Trim(UpdRecRestart.dlFileName); - Destination := Trim(UpdRecRestart.dlDestination); - if Destination <> '' then - slBatchFile.Add('if not exist "' + Destination + '" MD " ' + Destination + '"'); - slBatchFile.Add('del "' + Destination + FileName + '"'); - slBatchFile.Add('if exist "' + Destination + FileName + '" goto again'); - slBatchFile.Add('copy "' + FUpdatesFolder + FileName + '" "' + Destination + FileName + '"'); - slBatchFile.Add('if not exist "' + Destination + FileName + '" ' + ' copy "' + FBackupFolder + '" "' + Destination + FileName + '"'); - end; - slBatchFile.Add('call "' + Application.ExeName + '"'); - if FDeleteUpdates then - slBatchFile.Add('RMDIR /S /Q "' + FUpdatesFolder + '"'); - if FDeleteBatch then - slBatchFile.Add('del "' + fBatFileName + '"'); - slBatchFile.SaveToFile(fBatFileName); - AddLog(sBatchCommands + LineBrk + LineBrk + slBatchFile.Text); - finally - slBatchFile.Free; - end; - Result := True; -end; - -function TWebUpdater.PerformMatchDetails(aString, bString: string): boolean; -begin - Result := True; - AddLog(sMatchingDetails + aString + sInTo + bString); - if aString = bString then - AddLog(sResultMatch) - else - begin - AddLog(sResultNoMatch); - Result := False; - end; -end; - -procedure TWebUpdater.RestartApplication; -var - ProcessInfo: TProcessInformation; - StartupInfo: TStartupInfo; - Res: DWORD; -begin - if Quit then - begin - ExitUser; - Exit; - end; - AddLog(sCreateProcess); - FillChar(StartupInfo, SizeOf(TStartupInfo), 0); - StartupInfo.dwFlags := STARTF_USESHOWWINDOW; - StartupInfo.wShowWindow := SW_HIDE; - if CreateProcess(nil, PChar(fBatFileName), nil, nil, False, - IDLE_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo) then - begin - AddLog(sRestarting); - Application.ProcessMessages; - CloseHandle(ProcessInfo.hThread); - GetExitCodeProcess(ProcessInfo.hProcess, Res); - CloseHandle(ProcessInfo.hProcess); - PostMessage(Application.Handle, WM_CLOSE, 0, 0); - end - else - begin - AddLog(sErrorRunningCmd); - raise - Exception.CreateFmt(sErrorRunningCmd, [GetLastError]); - end; -end; - -procedure TWebUpdater.FinishHandler; -begin - RestoreAppControls; - UpdateProgressControls(100, 0); - FUpdateInfoText.Clear; - CleanUp; - Busy := False; -end; - -procedure TWebUpdater.ExitOK; -begin - SuccessMessagesHandler(smDone); - if FOpenAppFolder then - OpenFolder(ApplicationFolder); - FinishHandler; -end; - -procedure TWebUpdater.ExitError(ErrString: string); -begin - ErrMessagesHandler(emError, ErrString); - FinishHandler; -end; - -procedure TWebUpdater.ExitMatch; -begin - ErrMessagesHandler(emMatch); - FinishHandler; -end; - -procedure TWebUpdater.ExitUser; -begin - ErrMessagesHandler(emExit); - FinishHandler; -end; - -procedure TWebUpdater.ExitNoUpdateFound; -begin - UpdateTextControls(sNoAvailableUpdates); - FinishHandler; -end; - -///////////////// End of private procedures////////////// - -///////////////// public procedures////////////// - -function TWebUpdater.CheckBusyState: boolean; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - if Busy then - begin - ErrMessagesHandler(emBusy); - Result := True; - end - else - AddLog(sUpdaterRunning); -end; - -procedure TWebUpdater.CleanUp; -begin - Addlog(sCleaning); - if FDeleteWebInfo then - DeleteFiles(Trim(fWebInfoFileName)); - if (fDeleteUpdates and not NeedTerminate) then - DeleteFolder(Trim(fUpdatesFolder)); - if FDeleteLog then - DeleteFiles(Trim(fLogFileName)); -end; - -function TWebUpdater.DownloadWebUpdates: boolean; -var - i: Integer; - DLfilename, dest: string; - UpdRec, UpdRecRestart: PUpRec; -begin - Result := False; - if Quit then - begin - ExitUser; - Exit; - end; - if UpdateRec.NoRestartList.Count > 0 then - begin - for i := 0 to UpdateRec.NoRestartList.Count - 1 do - begin - UpdRec := PUpRec(UpdateRec.NoRestartList.Objects[i]); - if (Trim(UpdRec.dlFileName) <> '') then - begin - if not FileExists(fUpdatesFolder + Trim(UpdateRec.NoRestartList[i])) then - begin - DLfilename := FWebURL + '/' + (Trim(UpdateRec.NoRestartList[i])); - Dest := FUpdatesFolder + Trim(UpdateRec.NoRestartList[i]); - DownloadFile(DLfilename, Dest); - end - else - begin - if Dest = '' then - Dest := FUpdatesFolder + sFolder; - AddLog(sFileName + Trim(UpdateRec.NoRestartList[i]) + - sAlredayExists + Dest + sOverWriting); - end; - end; - end; - end; - if UpdateRec.WithRestartList.Count > 0 then - begin - for i := 0 to UpdateRec.WithRestartList.Count - 1 do - begin - UpdRecRestart := PUpRec(UpdateRec.WithRestartList.Objects[i]); - if (Trim(UpdRecRestart.dlFileName) <> '') then - begin - if not FileExists(fUpdatesFolder + Trim(UpdateRec.WithRestartList[i])) then - begin - DLfilename := FWebURL + '/' + (Trim(UpdateRec.WithRestartList[i])); - Dest := FUpdatesFolder + Trim(UpdateRec.WithRestartList[i]); - DownloadFile(DLfilename, Dest); - end - else - begin - if Dest = '' then - Dest := FUpdatesFolder + sFolder; - AddLog(sFileName + Trim(UpdateRec.WithRestartList[i]) + - sAlredayExists + Dest + sOverWriting); - end; - end; - end; - end; -end; - -function TWebUpdater.Start: boolean; -var - i: integer; - SM, st: string; - UpdRec, UpdRecRestart: PUpRec; -begin - Result := False; - if not Enabled then - Exit; - CheckBusyState; - Busy := True; - InitialUpdating; - if not ParseXML then - ExitError(fErrorMessage + sXMLError) - else - begin - if (not CheckVersions) then - begin - ExitNoUpdateFound; - Exit; - end; - - UpdateInfo; - AddLog(sXMLInformation + LineBrk + FUpdateInfoText.Text); - if FShowMessages then - begin - SM := FUpdateInfoText.Text; - if MessageDlg(SM, mtCustom, [mbOK, mbAbort], 0) <> 1 then - begin - ExitUser; - Exit; - end; - end; - - if Check_CreateFolder(fUpdatesFolder) then - if FQuitOnError then - begin - ExitError(fErrorMessage + sErrorCreating + sCreateFolder); - Exit; - end; - if Check_CreateFolder(fBackupFolder) then - if FQuitOnError then - begin - ExitError(fErrorMessage + sErrorCreating + sCreateFolder); - Exit; - end; - if CreateSubBackupFolder then - if FQuitOnError then - begin - ExitError(fErrorMessage + sErrorCreating + sCreateFolder); - Exit; - end; - - DownloadWebUpdates; - end; - - if UpdateRec.NoRestartList.Count > 0 then - begin - for i := 0 to UpdateRec.NoRestartList.Count - 1 do - begin - UpdRec := PUpRec(UpdateRec.NoRestartList.Objects[i]); - if ((Trim(UpdRec.dlFileName) <> '') and (UpdRec.dlTerminate = False)) then - begin - if FSaveBackup then - begin - if FileExists(UpdRec.dlDestination + UpdRec.dlFileName) then - CopyFiles(UpdRec.dlDestination, FBackUpFolder, - UpdRec.dlFileName); - end; - - if Trim(UpdRec.dlFileName) <> '' then - begin - CopyFiles(fUpdatesFolder, UpdRec.dlDestination, - UpdRec.dlFileName); - end; - end; - end; - end; - - if UpdateRec.WithRestartList.Count > 0 then - begin - NeedTerminate := True; - st := sRestartMessage1 + LineBrk + sRestartMessage2; - UpdateTextControls(st); - if MessageDlg(st, mtCustom, [mbYes, mbAbort], 0) = 6 then - begin - for i := 0 to UpdateRec.WithRestartList.Count - 1 do - begin - UpdRecRestart := PUpRec(UpdateRec.WithRestartList.Objects[i]); - if ((Trim(UpdRecRestart.dlFileName) <> '') and - (UpdRecRestart.dlTerminate = True)) then - begin - if FSaveBackup then - begin - if FileExists(UpdRecRestart.dlDestination + - UpdRecRestart.dlFileName) then - CopyFiles(UpdRecRestart.dlDestination, FBackUpFolder, - UpdRecRestart.dlFileName); - end; - end; - end; - if ProcessBatch then - begin - RestartApplication; - ExitOK; - end; - end - else - ExitUser; - end; - if ((UpdateRec.NoRestartList.Count > 0) and not (NeedTerminate)) then - ExitOK; - Busy := False; - Result := not Busy; -end; - -function TWebUpdater.GetFileVersion: boolean; -var - InfoSize: DWORD; - pInfo: Pointer; - ValueSize: DWORD; - FixedFileInfo: PVSFixedFileInfo; - dwHandle: DWORD; -begin - Result:= False; - InfoSize := GetFileVersionInfoSize(PChar(ParamStr(0)), dwHandle); - GetMem(pInfo, InfoSize); - GetFileVersionInfo(PChar(ParamStr(0)), 0, InfoSize, pInfo); - VerQueryValue(pInfo, '', Pointer(FixedFileInfo), ValueSize); - with FixedFileInfo^ do - begin - FVersion.FAppMajorVer := dwFileVersionMS shr 16; - FVersion.FAppMinorVer := dwFileVersionMS and $FFFF; - FVersion.FAppReleaseVer := dwFileVersionLS shr 16; - FVersion.FAppBuildVer := dwFileVersionLS and $FFFF; - end; - FreeMem(pInfo, InfoSize); -end; - - -procedure TWebUpdater.SendErrorReport; -var - emMail, emSubject: string; - emBody: TStringList; -begin - if FileExists(GetFullLogFileName) then - begin - embody := TStringList.Create; - try - emBody.Clear; - emBody.LoadFromFile(GetFullLogFileName); - emSubject := sUpdaterErrorReport; - emMail := 'mailto:' + FEmail + '?subject=' + emSubject + '&body=' + emBody.Text; - AddLog(sMailingReport); - ShellExecute(Forms.Application.Handle, 'open', PChar(emMail), nil, nil, SW_SHOWNORMAL); - finally - emBody.Free; - end; - end; -end; - -procedure TWebUpdater.Stop; -begin - if Busy then - begin - Quit := True; - UpdateTextControls(sStopped); - end; -end; - -///////////////// End of public procedures////////////// - -end. - diff --git a/windows/src/ext/embeddedwb/Source/Browse4Folder.pas b/windows/src/ext/embeddedwb/Source/Browse4Folder.pas deleted file mode 100644 index 18a70dd3cc..0000000000 --- a/windows/src/ext/embeddedwb/Source/Browse4Folder.pas +++ /dev/null @@ -1,295 +0,0 @@ -//*********************************************************** -// TBrowse4Folder * -// * -// For Delphi 5 to 2010 * -// Freeware Component * -// by * -// Eran Bodankin (bsalsa) * // per.lindsoe@larsen.dk * -// bsalsa@gmail.com * -// Based on idea by brian@cryer.co.uk * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -//$Id: Browse4Folder.pas,v 1.2 2006/11/15 21:01:38 sergev Exp $ - -unit Browse4Folder; - -interface - -uses - Classes, ShellApi, shlobj, sysutils, Windows, Dialogs, ActiveX; - -type - TOption = (OnlySelectFileSysDir, NoNetDirBelowDomain, ShowStatusText, - OnlySelectFileSysAncestors, ShowEditBox, ValidateEditBox, UseNewDialogStyle, - HideNewUserInterface, ShowAlsoURLs, ShowUsageHint, - HideNewFolderButton, DontTranslateShortcuts, OnlySelectComputers, - OnlySelectPrinters, ShowAlsoFiles, ShowShareableRes); - TOptions = set of TOption; - -type - TWinPaths = (Desktop, StartMenu, - StartMenuPrograms, Startup, MyDocuments, ApplicationData, - Fonts, SendTo, MyRecentDocuments, Favorites, Cache, - Cookies, History, NetHood, PrintHood, - Templates, LocalAppData, WindowsRoot, WindowsSystem, - TempFolder, PCRootDrive, ProgramFiles, CommonFiles, - Media, DownloadFolder); - - TBrowse4Folder = class(TComponent) - - private - FRoot: TWinPaths; - FTitle: string; - FInitialDir: WideString; - FOptions: TOptions; - FShowTitle: Boolean; - FAbout: string; - function Browse4Folder: WideString; - procedure SetAbout(const Value: string); - protected - function UpdateOptionsValue: LongInt; - public - FileName: WideString; - function Execute: Boolean; - function Execute2: WideString; - constructor Create(Owner: Tcomponent); override; - procedure Loaded; override; - published - property About: string read FAbout write SetAbout; - property InitialDir: WideString read FInitialDir write FInitialDir; - property Options: TOptions read FOptions write FOptions default - [UseNewDialogStyle, ShowEditBox]; - property Root: TWinPaths read FRoot write FRoot; - property Title: string read FTitle write FTitle; - property ShowTitle: Boolean read FShowTitle write FShowTitle default True; - end; - -implementation - -uses - TypInfo, Registry, Forms, ComObj; - -var - lg_StartFolder: string; - -function GetPath(Path: TWinPaths): string; -var - ph: PChar; -begin - with TRegistry.Create do - try - RootKey := HKEY_CURRENT_USER; - OpenKey('\Software\Microsoft\Windows\CurrentVersion\' + - 'Explorer\Shell Folders', True); - case Path of - Desktop: Result := ReadString('Desktop'); - StartMenu: Result := ReadString('Start Menu'); - StartMenuPrograms: Result := ReadString('Programs'); - Startup: Result := ReadString('Startup'); - MyDocuments: Result := ReadString('Personal'); - ApplicationData: Result := ReadString('AppData'); - Fonts: Result := ReadString('Fonts'); - SendTo: Result := ReadString('SendTo'); - MyRecentDocuments: Result := ReadString('Recent'); - Favorites: Result := ReadString('Favorites'); - Cache: Result := ReadString('Cache'); - Cookies: Result := ReadString('Cookies'); - History: Result := ReadString('History'); - NetHood: Result := ReadString('NetHood'); - PrintHood: Result := ReadString('PrintHood'); - Templates: Result := ReadString('Templates'); - LocalAppData: Result := ReadString('Local AppData'); - WindowsRoot: - begin - GetMem(ph, (MAX_PATH + 1) * SizeOf(Char)); - GetWindowsDirectory(ph, MAX_PATH); - Result := StrPas(ph); - FreeMem(ph); - end; - WindowsSystem: - begin - GetMem(ph, (MAX_PATH + 1) * SizeOf(Char)); - GetWindowsDirectory(ph, MAX_PATH); - Result := StrPas(ph); - FreeMem(ph); - end; - TempFolder: - begin - GetMem(ph, (MAX_PATH + 1) * SizeOf(Char)); - GetWindowsDirectory(ph, MAX_PATH); - Result := StrPas(ph); - FreeMem(ph); - end; - PCRootDrive: - begin - GetMem(ph, (MAX_PATH + 1) * SizeOf(Char)); - GetWindowsDirectory(ph, MAX_PATH); - Result := (Copy(StrPas(ph), 1, 2)); - FreeMem(ph); - end; - DownloadFolder: - begin - if OpenKey('Software\Microsoft\Internet Explorer', True) then - Result := Readstring('Download Directory'); - end; - end; - RootKey := HKEY_LOCAL_MACHINE; - OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion', True); - case Path of - ProgramFiles: Result := ReadString('ProgramFilesDir'); - CommonFiles: Result := ReadString('CommonFilesDir'); - Media: Result := ReadString('MediaPath'); - end; - finally - CloseKey; - Free; - end; - if (Result <> '') and (Result[Length(Result)] <> '\') then - Result := Result + '\'; -end; - -function BrowseForFolderCallBack(Wnd: HWND; uMsg: UINT; - lParam, lpData: LPARAM): Integer stdcall; -{$IFDEF DELPHI7_UP} -var - wa, rect: TRect; - dialogPT: TPoint; -{$ENDIF} -begin - if uMsg = BFFM_INITIALIZED then - begin - SendMessage(Wnd, BFFM_SETSELECTION, 1, Integer(@lg_StartFolder[1])); -{$IFDEF DELPHI7_UP} - wa := Screen.WorkAreaRect; - GetWindowRect(Wnd, Rect); - dialogPT.X := ((wa.Right - wa.Left) div 2) - - ((rect.Right - rect.Left) div 2); - dialogPT.Y := ((wa.Bottom - wa.Top) div 2) - - ((rect.Bottom - rect.Top) div 2); - MoveWindow(Wnd, dialogPT.X, dialogPT.Y, Rect.Right - Rect.Left, - Rect.Bottom - Rect.Top, True); -{$ENDIF} - end; - Result := 0; -end; - -procedure TBrowse4Folder.SetAbout(const Value: string); -begin - Exit; -end; - -function TBrowse4Folder.Browse4Folder: Widestring; -var - Browse_info: TBrowseInfo; - Folder: array[0..MAX_PATH] of char; - find_context: PItemIDList; -begin - FillChar(Browse_info, SizeOf(Browse_info), #0); - lg_StartFolder := FInitialDir; - Browse_info.pszDisplayName := @Folder[0]; - if FShowTitle then - Browse_info.lpszTitle := PChar(FTitle); - Browse_info.ulFlags := UpdateOptionsValue; - Browse_info.hwndOwner := Application.Handle; - Browse_info.lpfn := BrowseForFolderCallBack; - find_context := SHBrowseForFolder(Browse_info); - if Assigned(find_context) then - begin - if SHGetPathFromIDList(find_context, Folder) then - Result := Folder - else - Result := ''; - GlobalFreePtr(find_context); - end - else - Result := ''; -end; - -function TBrowse4Folder.UpdateOptionsValue: LongInt; -const - AcardOptionsControlValues: array[TOption] of Cardinal = - ($0001, $0002, $0004, - $0008, $00010, $0020, - $0040, $0040 or $0010, - $0080, $100, $200, $400, - $1000, $2000, $4000, $8000); -var - i: TOption; - j: Longint; -begin - j := 0; - if (FOptions <> []) then - for i := Low(TOption) to High(TOption) do - if (i in FOptions) then - Inc(j, AcardOptionsControlValues[i]); - Result := j; -end; - -function TBrowse4Folder.Execute2: WideString; -begin - try - Result := Browse4Folder; - except - Result := ''; - end; -end; - -function TBrowse4Folder.Execute: Boolean; -begin - try - FileName := Browse4Folder; - Result := True; - except - Result := False; - end; -end; - -constructor TBrowse4Folder.Create(Owner: Tcomponent); -begin - inherited Create(Owner); - FOptions := [UseNewDialogStyle, ShowEditBox]; - FShowTitle := True; -end; - -procedure TBrowse4Folder.Loaded; -begin - inherited Loaded; - if FInitialDir = '' then - FInitialDir := GetPath(FRoot); -end; - -initialization - OleInitialize(nil); - -finalization - try - OleUninitialize; - except - end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/CryptFuncDll.txt b/windows/src/ext/embeddedwb/Source/CryptFuncDll.txt deleted file mode 100644 index 1b11baf4c5..0000000000 --- a/windows/src/ext/embeddedwb/Source/CryptFuncDll.txt +++ /dev/null @@ -1,622 +0,0 @@ --------------------------------------------------------- -This document is Copyright 1997-98 Project JEDI. -Visit the JEDI home page at:http://www.delphi-jedi.org/ --------------------------------------------------------- - --------------------------------------------------------- -CryptoApi version 2 (sdk date 12/1997) -Delphi binding version 1.0.2 -DLL Dump From Windows NT 4 sp 3. --------------------------------------------------------- - - -LIST OF EXPORTED FUNCTION FROM CRYPTOAPI DLLs - - - -Exports from ADVAPI32.dll - 397 exported name(s), 397 export addresse(s). Ordinal base is 1. - Ordinal RVA Name - ------- -------- ---- - 0000 000195bb AbortSystemShutdownA - 0001 00019586 AbortSystemShutdownW - 0002 00001fd9 AccessCheck - 0003 00002225 AccessCheckAndAuditAlarmA - 0004 00002191 AccessCheckAndAuditAlarmW - 0005 00002984 AddAccessAllowedAce - 0006 000029b1 AddAccessDeniedAce - 0007 00002908 AddAce - 0008 000029de AddAuditAccessAce - 0009 00002122 AdjustTokenGroups - 0010 000020eb AdjustTokenPrivileges - 0011 0000279b AllocateAndInitializeSid - 0012 00001fb9 AllocateLocallyUniqueId - 0013 0000283d AreAllAccessesGranted - 0014 00002851 AreAnyAccessesGranted - 0015 000017a7 BackupEventLogA - 0016 000012ce BackupEventLogW - 0017 0000fcd7 BuildAccessRequestA - 0018 0000fcbb BuildAccessRequestW - 0019 0000fd1c BuildExplicitAccessWithNameA - 0020 0000fcf3 BuildExplicitAccessWithNameW - 0021 0000fd79 BuildImpersonateExplicitAccessWithNameA - 0022 0000fd45 BuildImpersonateExplicitAccessWithNameW - 0023 0000fdff BuildImpersonateTrusteeA - 0024 0000fdeb BuildImpersonateTrusteeW - 0025 000106de BuildSecurityDescriptorA - 0026 000104a2 BuildSecurityDescriptorW - 0027 0000fdcc BuildTrusteeWithNameA - 0028 0000fdad BuildTrusteeWithNameW - 0029 0000fe2e BuildTrusteeWithSidA - 0030 0000fe13 BuildTrusteeWithSidW - 0031 0001759a ChangeServiceConfigA - 0032 0001774a ChangeServiceConfigW - 0033 00001743 ClearEventLogA - 0034 000011a6 ClearEventLogW - 0035 000010ff CloseEventLog - 0036 00016c80 CloseServiceHandle - 0037 00016a46 ControlService - 0038 00002815 CopySid - 0039 00002c44 CreatePrivateObjectSecurity - 0040 00006c7b CreateProcessAsUserA - 0041 00006ce2 CreateProcessAsUserW - 0042 0001784d CreateServiceA - 0043 00017a0f CreateServiceW - 0044 00006e3c CryptAcquireContextA - 0045 00006d49 CryptAcquireContextW - 0046 00008440 CryptCreateHash - 0047 00008316 CryptDecrypt - 0048 000077e0 CryptDeriveKey - 0049 000087ed CryptDestroyHash - 0050 000079c5 CryptDestroyKey - 0051 000081e9 CryptEncrypt - 0052 00007eb0 CryptExportKey - 0053 000076ae CryptGenKey - 0054 00007d0e CryptGenRandom - 0055 00008f67 CryptGetHashParam - 0056 00007c36 CryptGetKeyParam - 0057 00008d93 CryptGetProvParam - 0058 00007da6 CryptGetUserKey - 0059 000085fe CryptHashData - 0060 000086d3 CryptHashSessionKey - 0061 00007fda CryptImportKey - 0062 000075b9 CryptReleaseContext - 0063 00008e31 CryptSetHashParam - 0064 00007b00 CryptSetKeyParam - 0065 00008c8f CryptSetProvParam - 0066 000090e6 CryptSetProviderA - 0067 0000903f CryptSetProviderW - 0068 00008a03 CryptSignHashA - 0069 00008928 CryptSignHashW - 0070 00008bdc CryptVerifySignatureA - 0071 00008ab6 CryptVerifySignatureW - 0072 00002938 DeleteAce - 0073 00017b1f DeleteService - 0074 00010cbc DenyAccessRightsA - 0075 00010ca0 DenyAccessRightsW - 0076 0000111e DeregisterEventSource - 0077 00002cd7 DestroyPrivateObjectSecurity - 0078 00001f17 DuplicateToken - 0079 00001f31 DuplicateTokenEx - 0080 0000a75c ElfBackupEventLogFileA - 0081 0000a1f9 ElfBackupEventLogFileW - 0082 00009edd ElfChangeNotify - 0083 0000a6e7 ElfClearEventLogFileA - 0084 0000a184 ElfClearEventLogFileW - 0085 0000a27d ElfCloseEventLog - 0086 0000a2f0 ElfDeregisterEventSource - 0087 00009ddb ElfNumberOfRecords - 0088 00009e5c ElfOldestRecord - 0089 0000a642 ElfOpenBackupEventLogA - 0090 0000a0dc ElfOpenBackupEventLogW - 0091 0000a4cc ElfOpenEventLogA - 0092 00009f68 ElfOpenEventLogW - 0093 0000a7e0 ElfReadEventLogA - 0094 0000a363 ElfReadEventLogW - 0095 0000a587 ElfRegisterEventSourceA - 0096 0000a022 ElfRegisterEventSourceW - 0097 0000a895 ElfReportEventA - 0098 0000a418 ElfReportEventW - 0099 00017ba6 EnumDependentServicesA - 0100 00017c74 EnumDependentServicesW - 0101 00016af9 EnumServiceGroupW - 0102 000172ff EnumServicesStatusA - 0103 00016ad3 EnumServicesStatusW - 0104 00002743 EqualPrefixSid - 0105 0000272f EqualSid - 0106 00002a11 FindFirstFreeAce - 0107 0000278e FreeSid - 0108 0000295c GetAce - 0109 000028ae GetAclInformation - 0110 000114d4 GetAuditedPermissionsFromAclA - 0111 0001146a GetAuditedPermissionsFromAclW - 0112 00010b97 GetAuditedPermissionsFromSDA - 0113 00010b89 GetAuditedPermissionsFromSDW - 0114 00001d65 GetCurrentHwProfileA - 0115 00001aee GetCurrentHwProfileW - 0116 00011008 GetEffectiveAccessRightsA - 0117 00010f70 GetEffectiveAccessRightsW - 0118 0001140c GetEffectiveRightsFromAclA - 0119 000113a6 GetEffectiveRightsFromAclW - 0120 00010b2b GetEffectiveRightsFromSDA - 0121 00010b1d GetEffectiveRightsFromSDW - 0122 0001112f GetExplicitAccessRightsA - 0123 00011097 GetExplicitAccessRightsW - 0124 00011357 GetExplicitEntriesFromAclA - 0125 000112c5 GetExplicitEntriesFromAclW - 0126 00002fc9 GetFileSecurityA - 0127 00002ede GetFileSecurityW - 0128 00003047 GetKernelObjectSecurity - 0129 00002808 GetLengthSid - 0130 0000feb2 GetMultipleTrusteeA - 0131 0000fe9f GetMultipleTrusteeOperationA - 0132 0000fe95 GetMultipleTrusteeOperationW - 0133 0000fea9 GetMultipleTrusteeW - 0134 00011619 GetNamedSecurityInfoA - 0135 00011535 GetNamedSecurityInfoW - 0136 00001160 GetNumberOfEventLogRecords - 0137 00001183 GetOldestEventLogRecord - 0138 00002ca7 GetPrivateObjectSecurity - 0139 00002a78 GetSecurityDescriptorControl - 0140 00002acd GetSecurityDescriptorDacl - 0141 00002c0c GetSecurityDescriptorGroup - 0142 00002a6b GetSecurityDescriptorLength - 0143 00002bac GetSecurityDescriptorOwner - 0144 00002b3f GetSecurityDescriptorSacl - 0145 0001167e GetSecurityInfo - 0146 00017d42 GetServiceDisplayNameA - 0147 00017df7 GetServiceDisplayNameW - 0148 00017ead GetServiceKeyNameA - 0149 00017f62 GetServiceKeyNameW - 0150 000027dd GetSidIdentifierAuthority - 0151 00002757 GetSidLengthRequired - 0152 000027ea GetSidSubAuthority - 0153 000027fb GetSidSubAuthorityCount - 0154 0000208e GetTokenInformation - 0155 0000fe60 GetTrusteeNameA - 0156 0000fe49 GetTrusteeNameW - 0157 0000fe81 GetTrusteeTypeA - 0158 0000fe77 GetTrusteeTypeW - 0159 00003e53 GetUserNameA - 0160 00003dbd GetUserNameW - 0161 00010c14 GrantAccessRightsA - 0162 00010bf8 GrantAccessRightsW - 0163 00017090 I_ScGetCurrentGroupStateW - 0164 00016f40 I_ScSetServiceBitsA - 0165 00016fe8 I_ScSetServiceBitsW - 0166 000067d9 ImpersonateLoggedOnUser - 0167 00003077 ImpersonateNamedPipeClient - 0168 000030b2 ImpersonateSelf - 0169 00002886 InitializeAcl - 0170 00002a25 InitializeSecurityDescriptor - 0171 00002766 InitializeSid - 0172 000194eb InitiateSystemShutdownA - 0173 0001948b InitiateSystemShutdownW - 0174 00010f32 IsAccessPermittedA - 0175 00010d9e IsAccessPermittedW - 0176 00005df6 IsTextUnicode - 0177 00002876 IsValidAcl - 0178 00002a49 IsValidSecurityDescriptor - 0179 0000271f IsValidSid - 0180 0001801b LockServiceDatabase - 0181 00006567 LogonUserA - 0182 00006636 LogonUserW - 0183 0000313e LookupAccountNameA - 0184 00003289 LookupAccountNameW - 0185 00003469 LookupAccountSidA - 0186 000035c2 LookupAccountSidW - 0187 00003b12 LookupPrivilegeDisplayNameA - 0188 00003c97 LookupPrivilegeDisplayNameW - 0189 000038ea LookupPrivilegeNameA - 0190 00003a07 LookupPrivilegeNameW - 0191 000037b2 LookupPrivilegeValueA - 0192 00003846 LookupPrivilegeValueW - 0193 000109a2 LookupSecurityDescriptorPartsA - 0194 000107d5 LookupSecurityDescriptorPartsW - 0195 0000b9e5 LsaAddAccountRights - 0196 0000d5eb LsaAddPrivilegesToAccount - 0197 0000c838 LsaClearAuditLog - 0198 0000ca8a LsaClose - 0199 0000cd6e LsaCreateAccount - 0200 0000d20d LsaCreateSecret - 0201 0000ce96 LsaCreateTrustedDomain - 0202 0000cb23 LsaDelete - 0203 0000bf73 LsaDeleteTrustedDomain - 0204 0000b91b LsaEnumerateAccountRights - 0205 0000cdef LsaEnumerateAccounts - 0206 0000b851 LsaEnumerateAccountsWithUserRight - 0207 0000d166 LsaEnumeratePrivileges - 0208 0000d56f LsaEnumeratePrivilegesOfAccount - 0209 0000d0b0 LsaEnumerateTrustedDomains - 0210 0000d8e8 LsaFreeMemory - 0211 0000d6e4 LsaGetQuotasForAccount - 0212 0000d7da LsaGetSystemAccessAccount - 0213 0000dcf3 LsaGetUserName - 0214 0000d2e0 LsaICLookupNames - 0215 0000d3ee LsaICLookupSids - 0216 0000d2b3 LsaLookupNames - 0217 0000c9d9 LsaLookupPrivilegeDisplayName - 0218 0000c940 LsaLookupPrivilegeName - 0219 0000c8b0 LsaLookupPrivilegeValue - 0220 0000d3c1 LsaLookupSids - 0221 0000c5c5 LsaNtStatusToWinError - 0222 0000d4ee LsaOpenAccount - 0223 0000c5d2 LsaOpenPolicy - 0224 0000d971 LsaOpenSecret - 0225 0000cf18 LsaOpenTrustedDomain - 0226 0000cf99 LsaQueryInfoTrustedDomain - 0227 0000c721 LsaQueryInformationPolicy - 0228 0000db39 LsaQuerySecret - 0229 0000cbea LsaQuerySecurityObject - 0230 0000bb4d LsaQueryTrustedDomainInfo - 0231 0000ba96 LsaRemoveAccountRights - 0232 0000d666 LsaRemovePrivilegesFromAccount - 0233 0000c13d LsaRetrievePrivateData - 0234 0000c7ba LsaSetInformationPolicy - 0235 0000d032 LsaSetInformationTrustedDomain - 0236 0000d75f LsaSetQuotasForAccount - 0237 0000d9f2 LsaSetSecret - 0238 0000cc8d LsaSetSecurityObject - 0239 0000d861 LsaSetSystemAccessAccount - 0240 0000bdc5 LsaSetTrustedDomainInformation - 0241 0000c00e LsaStorePrivateData - 0242 00002d1f MakeAbsoluteSD - 0243 00002cf7 MakeSelfRelativeSD - 0244 00002865 MapGenericMask - 0245 00011e2f NTAccessMaskToProvAccessRights - 0246 0001840c NotifyBootConfigStatus - 0247 0000113d NotifyChangeEventLog - 0248 00002528 ObjectCloseAuditAlarmA - 0249 00002578 ObjectCloseAuditAlarmW - 0250 000025b4 ObjectDeleteAuditAlarmA - 0251 00002604 ObjectDeleteAuditAlarmW - 0252 0000231e ObjectOpenAuditAlarmA - 0253 0000241a ObjectOpenAuditAlarmW - 0254 0000248a ObjectPrivilegeAuditAlarmA - 0255 000024e3 ObjectPrivilegeAuditAlarmW - 0256 0000189b OpenBackupEventLogA - 0257 00001487 OpenBackupEventLogW - 0258 0000180b OpenEventLogA - 0259 000013f7 OpenEventLogW - 0260 00002039 OpenProcessToken - 0261 00017149 OpenSCManagerA - 0262 00016d08 OpenSCManagerW - 0263 000171e0 OpenServiceA - 0264 00016bee OpenServiceW - 0265 00002061 OpenThreadToken - 0266 00002159 PrivilegeCheck - 0267 00002640 PrivilegedServiceAuditAlarmA - 0268 000026cf PrivilegedServiceAuditAlarmW - 0269 00011e8f ProvAccessRightsToNTAccessMask - 0270 000180a7 QueryServiceConfigA - 0271 00018167 QueryServiceConfigW - 0272 0001823f QueryServiceLockStatusA - 0273 000182e0 QueryServiceLockStatusW - 0274 000173d3 QueryServiceObjectSecurity - 0275 00016d9f QueryServiceStatus - 0276 0000413d QueryWindows31FilesMigration - 0277 00001951 ReadEventLogA - 0278 000015ab ReadEventLogW - 0279 00019723 RegCloseKey - 0280 0001a0a8 RegConnectRegistryA - 0281 00019f9c RegConnectRegistryW - 0282 000197c4 RegCreateKeyA - 0283 00019876 RegCreateKeyExA - 0284 000199e5 RegCreateKeyExW - 0285 00019856 RegCreateKeyW - 0286 0001a0f7 RegDeleteKeyA - 0287 0001a17d RegDeleteKeyW - 0288 0001a1df RegDeleteValueA - 0289 0001a265 RegDeleteValueW - 0290 0001a2c7 RegEnumKeyA - 0291 0001a323 RegEnumKeyExA - 0292 0001a456 RegEnumKeyExW - 0293 0001a2f5 RegEnumKeyW - 0294 0001a536 RegEnumValueA - 0295 0001a97e RegEnumValueW - 0296 00019b03 RegFlushKey - 0297 0001ab6a RegGetKeySecurity - 0298 0001adbd RegLoadKeyA - 0299 0001aea0 RegLoadKeyW - 0300 0001b1ea RegNotifyChangeKeyValue - 0301 00019b48 RegOpenKeyA - 0302 00019c6a RegOpenKeyExA - 0303 00019dc6 RegOpenKeyExW - 0304 00019bdd RegOpenKeyW - 0305 0001b270 RegQueryInfoKeyA - 0306 0001b44a RegQueryInfoKeyW - 0307 0001b5d6 RegQueryMultipleValuesA - 0308 0001b943 RegQueryMultipleValuesW - 0309 0001bb90 RegQueryValueA - 0310 0001bd2c RegQueryValueExA - 0311 0001bfa2 RegQueryValueExW - 0312 0001bc5d RegQueryValueW - 0313 0001b020 RegReplaceKeyA - 0314 0001b14b RegReplaceKeyW - 0315 0001c092 RegRestoreKeyA - 0316 0001c126 RegRestoreKeyW - 0317 0001c192 RegSaveKeyA - 0318 0001c242 RegSaveKeyW - 0319 0001ac7f RegSetKeySecurity - 0320 0001c2c7 RegSetValueA - 0321 0001c409 RegSetValueExA - 0322 0001c5c6 RegSetValueExW - 0323 0001c363 RegSetValueW - 0324 0001af26 RegUnLoadKeyA - 0325 0001afb7 RegUnLoadKeyW - 0326 00001853 RegisterEventSourceA - 0327 0000143f RegisterEventSourceW - 0328 00018a44 RegisterServiceCtrlHandlerA - 0329 0001899c RegisterServiceCtrlHandlerW - 0330 00010c4c ReplaceAllAccessRightsA - 0331 00010c30 ReplaceAllAccessRightsW - 0332 00001986 ReportEventA - 0333 000015e0 ReportEventW - 0334 000030d2 RevertToSelf - 0335 00010d3b RevokeExplicitAccessRightsA - 0336 00010cd8 RevokeExplicitAccessRightsW - 0337 00010c84 SetAccessRightsA - 0338 00010c68 SetAccessRightsW - 0339 000028db SetAclInformation - 0340 00011275 SetEntriesInAclA - 0341 000111cb SetEntriesInAclW - 0342 00002e8e SetFileSecurityA - 0343 00002daf SetFileSecurityW - 0344 0000301f SetKernelObjectSecurity - 0345 00011876 SetNamedSecurityInfoA - 0346 0001173b SetNamedSecurityInfoW - 0347 00002c77 SetPrivateObjectSecurity - 0348 00002aa0 SetSecurityDescriptorDacl - 0349 00002be4 SetSecurityDescriptorGroup - 0350 00002b84 SetSecurityDescriptorOwner - 0351 00002b12 SetSecurityDescriptorSacl - 0352 000118d8 SetSecurityInfo - 0353 00017119 SetServiceBits - 0354 00017466 SetServiceObjectSecurity - 0355 00016eb6 SetServiceStatus - 0356 00003107 SetThreadToken - 0357 000020be SetTokenInformation - 0358 00017272 StartServiceA - 0359 0001858a StartServiceCtrlDispatcherA - 0360 0001866b StartServiceCtrlDispatcherW - 0361 00016e29 StartServiceW - 0362 00004264 SynchronizeWindows31FilesAndWindowsNTRegistry - 0363 0000e3a4 SystemFunction001 - 0364 0000e3e6 SystemFunction002 - 0365 0000e428 SystemFunction003 - 0366 0000e701 SystemFunction004 - 0367 0000e7c2 SystemFunction005 - 0368 0000e87b SystemFunction006 - 0369 0000e8f0 SystemFunction007 - 0370 0000e972 SystemFunction008 - 0371 0000e9ee SystemFunction009 - 0372 0000ea02 SystemFunction010 - 0373 0000ea4b SystemFunction011 - 0374 0000ee7e SystemFunction012 - 0375 0000eeb0 SystemFunction013 - 0376 0000eee2 SystemFunction014 - 0377 0000eef6 SystemFunction015 - 0378 0000ef0a SystemFunction016 - 0379 0000ef39 SystemFunction017 - 0380 0000ef68 SystemFunction018 - 0381 0000ef7c SystemFunction019 - 0382 0000f069 SystemFunction020 - 0383 0000f07d SystemFunction021 - 0384 0000f091 SystemFunction022 - 0385 0000f0a5 SystemFunction023 - 0386 0000efbd SystemFunction024 - 0387 0000efff SystemFunction025 - 0388 0000f041 SystemFunction026 - 0389 0000f055 SystemFunction027 - 0390 0000ea5f SystemFunction028 - 0391 0000eca1 SystemFunction029 - 0392 0000e934 SystemFunction030 - 0393 0000e953 SystemFunction031 - 0394 0000f0b9 SystemFunction032 - 0395 0000f0f9 SystemFunction033 - 0396 00018381 UnlockServiceDatabase - -Exports from CRYPT32.dll - 172 exported name(s), 172 export addresse(s). Ordinal base is 1. - Ordinal RVA Name - ------- -------- ---- - 0003 00007fa6 CertAddCRLContextToStore - 0004 00008af2 CertAddCTLContextToStore - 0005 00007b9b CertAddCertificateContextToStore - 0006 00007d7d CertAddEncodedCRLToStore - 0007 00008832 CertAddEncodedCTLToStore - 0008 000079ab CertAddEncodedCertificateToStore - 0009 0000a33a CertAddEncodedCertificateToSystemStoreA - 0010 0000a37c CertAddEncodedCertificateToSystemStoreW - 0011 0000a4f8 CertAddEnhancedKeyUsageIdentifier - 0012 00008cba CertAddSerializedElementToStore - 0013 0000b735 CertAlgIdToOID - 0014 00006613 CertCloseStore - 0015 0000add8 CertCompareCertificate - 0016 0000ae15 CertCompareCertificateName - 0017 0000ad47 CertCompareIntegerBlob - 0018 0000aff2 CertComparePublicKeyInfo - 0019 000078e1 CertCreateCRLContext - 0020 00008187 CertCreateCTLContext - 0021 0000771b CertCreateCertificateContext - 0022 000080c2 CertDeleteCRLFromStore - 0023 00008c0e CertDeleteCTLFromStore - 0024 00007cb7 CertDeleteCertificateFromStore - 0025 000078c8 CertDuplicateCRLContext - 0026 0000816e CertDuplicateCTLContext - 0027 000078c8 CertDuplicateCertificateContext - 0028 000065fe CertDuplicateStore - 0029 00007994 CertEnumCRLContextProperties - 0030 0000823a CertEnumCTLContextProperties - 0031 00008251 CertEnumCTLsInStore - 0032 000077ce CertEnumCertificateContextProperties - 0033 0000703a CertEnumCertificatesInStore - 0034 0000b7af CertFindAttribute - 0035 0000851e CertFindCTLInStore - 0036 000070bc CertFindCertificateInStore - 0037 0000b77c CertFindExtension - 0038 0000b7e2 CertFindRDNAttr - 0039 000082d3 CertFindSubjectInCTL - 0040 00007901 CertFreeCRLContext - 0041 000081a7 CertFreeCTLContext - 0042 0000773b CertFreeCertificateContext - 0043 00007958 CertGetCRLContextProperty - 0044 000077e5 CertGetCRLFromStore - 0045 000081fe CertGetCTLContextProperty - 0046 00007792 CertGetCertificateContextProperty - 0047 0000a3be CertGetEnhancedKeyUsage - 0048 0000b82e CertGetIntendedKeyUsage - 0049 000075dd CertGetIssuerCertificateFromStore - 0050 0000bf60 CertGetPublicKeyLength - 0051 00006fa0 CertGetSubjectCertificateFromStore - 0052 0000ae3d CertIsRDNAttrsInCertificateName - 0053 0000d6f0 CertNameToStrA - 0054 0000d301 CertNameToStrW - 0055 0000b759 CertOIDToAlgId - 0056 00006543 CertOpenStore - 0057 0000a2d7 CertOpenSystemStoreA - 0058 0000a308 CertOpenSystemStoreW - 0059 0000c86e CertRDNValueToStrA - 0060 0000c8ef CertRDNValueToStrW - 0061 0000a5ef CertRemoveEnhancedKeyUsageIdentifier - 0062 000068b3 CertSaveStore - 0063 00008045 CertSerializeCRLStoreElement - 0064 00008b91 CertSerializeCTLStoreElement - 0065 00007c3a CertSerializeCertificateStoreElement - 0066 00007936 CertSetCRLContextProperty - 0067 000081dc CertSetCTLContextProperty - 0068 00007770 CertSetCertificateContextProperty - 0069 0000a4b2 CertSetEnhancedKeyUsage - 0070 0000df24 CertStrToNameA - 0071 0000d777 CertStrToNameW - 0072 0000b6d2 CertVerifyCRLRevocation - 0073 0000b62f CertVerifyCRLTimeValidity - 0074 0000dfff CertVerifyCTLUsage - 0075 0000e2e8 CertVerifyRevocation - 0076 000076e0 CertVerifySubjectCertificateContext - 0077 0000b5d4 CertVerifyTimeValidity - 0078 0000b698 CertVerifyValidityNesting - 0079 00004d1b CreateFileU - 0080 00005237 CryptAcquireContextU - 0081 0000e5b5 CryptCloseAsyncHandle - 0082 0000e54b CryptCreateAsyncHandle - 0083 0000ee99 CryptDecodeMessage - 0084 0000ff86 CryptDecodeObject - 0085 0000eb43 CryptDecryptAndVerifyMessageSignature - 0086 0000ea58 CryptDecryptMessage - 0087 0000ff32 CryptEncodeObject - 0088 0000e9e5 CryptEncryptMessage - 0089 00015a3a CryptEnumOIDFunction - 0090 00005415 CryptEnumProvidersU - 0091 0000c2e6 CryptExportPKCS8 - 0092 0000b90f CryptExportPublicKeyInfo - 0093 0000b94d CryptExportPublicKeyInfoEx - 0094 00016551 CryptFindOIDInfo - 0095 00016b59 CryptFormatObject - 0096 00016315 CryptFreeOIDFunctionAddress - 0097 0000e59d CryptGetAsyncParam - 0098 00016275 CryptGetDefaultOIDDllList - 0099 00016290 CryptGetDefaultOIDFunctionAddress - 0100 0000e9bc CryptGetMessageCertificates - 0101 0000e959 CryptGetMessageSignerCount - 0102 00015ea9 CryptGetOIDFunctionAddress - 0103 00015547 CryptGetOIDFunctionValue - 0104 0000b22a CryptHashCertificate - 0105 0000ec34 CryptHashMessage - 0106 0000c07d CryptHashPublicKeyInfo - 0107 0000b2c3 CryptHashToBeSigned - 0108 0000c0dc CryptImportPKCS8 - 0109 0000b930 CryptImportPublicKeyInfo - 0110 0000b9a9 CryptImportPublicKeyInfoEx - 0111 00014fe4 CryptInitOIDFunctionSet - 0112 0001509a CryptInstallOIDFunctionAddress - 0000 00021957 CryptLoadSip - 0113 00016bd6 CryptMemAlloc - 0114 00016bf8 CryptMemFree - 0115 00016be5 CryptMemRealloc - 0116 00019032 CryptMsgCalculateEncodedLength - 0117 0001abcf CryptMsgClose - 0118 0001d592 CryptMsgControl - 0119 0001df82 CryptMsgCountersign - 0120 0001dd40 CryptMsgCountersignEncoded - 0121 0001f94a CryptMsgEncodeAndSignCTL - 0122 0001f7b2 CryptMsgGetAndVerifySigner - 0123 0001ef73 CryptMsgGetParam - 0124 0001ab29 CryptMsgOpenToDecode - 0125 0001aa9e CryptMsgOpenToEncode - 0126 0001f856 CryptMsgSignCTL - 0127 0001c3ce CryptMsgUpdate - 0128 0001e099 CryptMsgVerifyCountersignatureEncoded - 0129 000156ef CryptRegisterDefaultOIDFunction - 0130 000155db CryptRegisterOIDFunction - 0131 000163ca CryptRegisterOIDInfo - 0132 00021d6c CryptSIPAddProvider - 0133 0002196b CryptSIPLoad - 0134 00022063 CryptSIPRemoveProvider - 0135 0002212a CryptSIPRetrieveSubjectGuid - 0136 0000e585 CryptSetAsyncParam - 0137 00015389 CryptSetOIDFunctionValue - 0138 000053b2 CryptSetProviderU - 0139 0000b4a9 CryptSignAndEncodeCertificate - 0140 0000ea83 CryptSignAndEncryptMessage - 0141 0000b383 CryptSignCertificate - 0142 000052bc CryptSignHashU - 0143 0000e889 CryptSignMessage - 0144 0000eed1 CryptSignMessageWithKey - 0145 00015924 CryptUnregisterDefaultOIDFunction - 0146 00015662 CryptUnregisterOIDFunction - 0147 0001651e CryptUnregisterOIDInfo - 0148 0000b07c CryptVerifyCertificateSignature - 0149 0000ee71 CryptVerifyDetachedMessageHash - 0150 0000e92a CryptVerifyDetachedMessageSignature - 0151 0000ee4b CryptVerifyMessageHash - 0152 0000e8fd CryptVerifyMessageSignature - 0153 0000f064 CryptVerifyMessageSignatureWithKey - 0154 00005337 CryptVerifySignatureU - 0155 00016d15 I_CryptAllocTls - 0156 00016ed4 I_CryptDetachTls - 0157 0000ac08 I_CryptGetDefaultCryptProv - 0158 0000acaa I_CryptGetDefaultCryptProvForEncrypt - 0159 00016f3a I_CryptGetOssGlobal - 0160 00016d8e I_CryptGetTls - 0161 00016f05 I_CryptInstallOssGlobal - 0162 00016eb1 I_CryptSetTls - 0001 00022c70 PFXExportCertStore - 0002 00022b34 PFXImportCertStore - 0163 00005f8b RegCreateHKCUKeyExU - 0164 00005704 RegCreateKeyExU - 0165 00005bfb RegDeleteValueU - 0166 0000599f RegEnumValueU - 0167 00006003 RegOpenHKCUKeyExU - 0168 00005f13 RegOpenKeyExU - 0169 00005e67 RegQueryInfoKeyU - 0170 00005c5e RegQueryValueExU - 0171 00005d8b RegSetValueExU - -Exports from SOFTPUB.dll - 22 exported name(s), 22 export addresse(s). Ordinal base is 1. - Ordinal RVA Name - ------- -------- ---- - 0003 0000b3c6 AddPersonalTrustDBPages - 0004 00005fb8 DllRegisterServer - 0005 00006246 DllUnregisterServer - 0006 000064ed DriverCleanupPolicy - 0007 00006730 DriverFinalPolicy - 0008 00006387 DriverInitializePolicy - 0009 00006d05 FindCertsByIssuer - 0010 0000930a HTTPSCheckCertProv - 0011 00009437 HTTPSFinalProv - 0012 00008585 OfficeCleanupPolicy - 0013 00008340 OfficeInitializePolicy - 0014 0000b451 OpenPersonalTrustDBDialog - 0015 00005060 SoftpubAuthenticode - 0016 00005cb2 SoftpubCheckCert - 0017 00005e7e SoftpubCleanup - 0000 0000541a SoftpubDefCertInit - 0018 00009769 SoftpubDumpStructure - 0001 00005f61 SoftpubFreeDefUsageCallData - 0019 00007711 SoftpubInitialize - 0002 00005e83 SoftpubLoadDefUsageCallData - 0020 00007831 SoftpubLoadMessage - 0021 00008672 SoftpubLoadSignature - diff --git a/windows/src/ext/embeddedwb/Source/DirMonitor.pas b/windows/src/ext/embeddedwb/Source/DirMonitor.pas deleted file mode 100644 index 954c072456..0000000000 --- a/windows/src/ext/embeddedwb/Source/DirMonitor.pas +++ /dev/null @@ -1,158 +0,0 @@ -unit DirMonitor; -//************************************************************************** -// DirMonitor unit * -// by Peter Morris (Cubud) * -// For Delphi 5 to XE * -// Freeware Unit * -// * -// Contributor: * -// Eran Bodankin (bsalsa) bsalsa@gmail.com - D2005 update * -// Robert Marquardt Clean the code and Update * -// I got Permition to add the DirMonitor unit and to change * -// the code by my needs from Peter Morris (Pete@StuckIndoors.com) * -// We thank him for that. * -// Regards, * -// bsalsa * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -// * -// Ps, to get your own FREE events page, go to * -// www.stuckindoors.com * -//************************************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -{*******************************************************************************} -//$Id: DirMonitor.pas,v 1.2 2006/11/15 21:01:38 sergev Exp $ - -interface - -{$I EWB.inc} - -{$IFDEF DELPHI6_UP} -{$WARN UNIT_PLATFORM OFF} -{$ENDIF} - -uses - Windows, SysUtils, Classes, FileCtrl; - -type - TDirMonitor = class(TThread) - private - FCallback: TNotifyEvent; - FDirectoryPath: string; - FSubDirs: Boolean; - procedure DoCallback; - protected - procedure Execute; override; - public - constructor Create(ADirectoryPath: string; ASubDirs: Boolean; ACallback: TNotifyEvent); - property DirectoryPath: string read FDirectoryPath; - property SubDirs: Boolean read FSubDirs; - end; - -implementation - -constructor TDirMonitor.Create(ADirectoryPath: string; - ASubDirs: Boolean; ACallback: TNotifyEvent); -begin - inherited Create(True); - if not {$IFDEF DELPHI6_UP}SysUtils.{$ENDIF}DirectoryExists(ADirectoryPath) then - raise Exception.Create('Path does not exist'); - if not Assigned(ACallback) then - raise Exception.Create('No callback has been set'); - FSubDirs := ASubDirs; - FDirectoryPath := ADirectoryPath; - FCallback := ACallback; - FreeOnTerminate := True; - {$IFDEF DELPHI2010_UP} - Start; - {$ELSE} - Resume; - {$ENDIF} -end; - -procedure TDirMonitor.DoCallback; -begin - FCallback(Self); -end; - -procedure TDirMonitor.Execute; -var - Event: THandle; - WaitResult: DWORD; -begin - Event := FindFirstChangeNotification(PChar(DirectoryPath), SubDirs, - FILE_NOTIFY_CHANGE_FILE_NAME or FILE_NOTIFY_CHANGE_DIR_NAME or - FILE_NOTIFY_CHANGE_SIZE or FILE_NOTIFY_CHANGE_LAST_WRITE); - if Event = INVALID_HANDLE_VALUE then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Terminate; - end - else - repeat - WaitResult := WaitForSingleObject(Event, 100); - case WaitResult of - WAIT_FAILED or WAIT_ABANDONED: - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Terminate; - end; - WAIT_OBJECT_0: - if Assigned(FCallback) then - try - Synchronize(DoCallback); - finally - Terminate; - end; - end; - until Terminated or (WaitResult = WAIT_OBJECT_0); - if not FindCloseChangeNotification(Event) then -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} -end; -(* -procedure TDirMonitor.Execute; -var - Event: THandle; - Finished: Boolean; - WaitResult: DWORD; -begin - Event := FindFirstChangeNotification(PChar(DirectoryPath), SubDirs, - FILE_NOTIFY_CHANGE_FILE_NAME or FILE_NOTIFY_CHANGE_DIR_NAME or - FILE_NOTIFY_CHANGE_SIZE or FILE_NOTIFY_CHANGE_LAST_WRITE); - if Event = INVALID_HANDLE_VALUE then Exit; - repeat - WaitResult := WaitForSingleObject(Event, 100); - Finished := (WaitResult = WAIT_OBJECT_0); - if Finished and Assigned(FCallback) then - Synchronize(DoCallback); - until Terminated or Finished; - FindCloseChangeNotification(Event); -end; -*) -end. diff --git a/windows/src/ext/embeddedwb/Source/EWB.dcr b/windows/src/ext/embeddedwb/Source/EWB.dcr deleted file mode 100644 index fad3b5af3918461e60fa557aaec55ab45e7fff48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51872 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 Screen.ActiveForm; - end; - end; - - if not bCancel then - if hwndFromPoint <> 0 then - begin - hwndCurrentFocus := GetFocus; - if hwndCurrentFocus <> 0 then - begin - hwndWFPShellEmbedding := GetParentWinByClass(hwndFromPoint, - 'Shell Embedding'); - if (hwndWFPShellEmbedding <> 0) then - // Parent of WindowFromPoint is WB - begin - hwndFocusShellEmbedding := - GetParentWinByClass(hwndCurrentFocus, - 'Shell Embedding'); - if (hwndWFPShellEmbedding <> hwndFocusShellEmbedding) or - (GetWinClass(hwndCurrentFocus) = - 'Shell DocObject View') then - // Only handle if WB has not the focus or other WB has the focus - begin - // nState := GetKeyState(VK_CONTROL); - // if (nState and $80000000) = $80000000 then - begin - bHandled := True; - Windows.SetFocus(hwndFromPoint); - end; - end; - end; - end; - end; - end; - if bHandled then - Result := HC_SKIP - else - Result := CallNextHookEx(FMouseHook, nCode, wp, lp); - end; -end; - -class function TEWBMouseHook.NewInstance: TObject; -begin - if not Assigned(GEWBMouseHook) then - begin - GEWBMouseHook := TEWBMouseHook(inherited NewInstance); - GEWBMouseHook.FActiveFormOnly := False; - end; - Result := GEWBMouseHook; - Inc(GRefCount); -end; - -procedure TEWBMouseHook.FreeInstance; -begin - Dec(GRefCount); - if GRefCount = 0 then - begin - GEWBMouseHook := nil; - inherited FreeInstance; - end; -end; - -procedure TEWBMouseHook.Activate; -begin - if (FMouseHook = 0) and EWBEnableMouseWheelFix then - begin - FMouseHookMethod := LocalMouseProc; - FMouseHookProc := - TFNMouseProc(MakeStdcallCallback(TMethod(FMouseHookMethod))); - FMouseHook := SetWindowsHookEx(WH_MOUSE, TFNHookProc(FMouseHookProc), 0, - GetCurrentThreadID); - end; -end; - -procedure TEWBMouseHook.Deactivate; -begin - if FMouseHook <> 0 then - begin - if UnhookWindowsHookEx(FMouseHook) then - FMouseHook := 0; - end; - if Assigned(FMouseHookProc) then - begin - FreeCallback(Addr(FMouseHookProc)); - FMouseHookProc := nil; - end; -end; - -constructor TEWBMouseHook.Create; -begin - inherited; - // if (GRefCount = 1) then -end; - -destructor TEWBMouseHook.Destroy; -begin - inherited; - // if ((GRefCount <= 1)) then -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EWB_jedi.inc b/windows/src/ext/embeddedwb/Source/EWB_jedi.inc deleted file mode 100644 index 4e6114b5b2..0000000000 --- a/windows/src/ext/embeddedwb/Source/EWB_jedi.inc +++ /dev/null @@ -1,1335 +0,0 @@ -{$IFNDEF JEDI_INC} -{$DEFINE JEDI_INC} - -{**************************************************************************************************} -{ } -{ The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License");} -{ you may not use this file except in compliance with the License. You may obtain a copy of the } -{ License at http://www.mozilla.org/MPL/ } -{ } -{ 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. } -{ } -{ The Original Code is: jedi.inc. } -{ The Initial Developer of the Original Code is Project JEDI http://www.delphi-jedi.org } -{ } -{ Alternatively, the contents of this file may be used under the terms of the GNU Lesser General } -{ Public License (the "LGPL License"), in which case the provisions of the LGPL License are } -{ applicable instead of those above. If you wish to allow use of your version of this file only } -{ under the terms of the LGPL License and not to allow others to use your version of this file } -{ under the MPL, indicate your decision by deleting the provisions above and replace them with } -{ the notice and other provisions required by the LGPL License. If you do not delete the } -{ provisions above, a recipient may use your version of this file under either the MPL or the } -{ LGPL License. } -{ } -{ For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html } -{ } -{**************************************************************************************************} -{ } -{ This file defines various generic compiler directives used in different libraries, e.g. in the } -{ JEDI Code Library (JCL) and JEDI Visual Component Library Library (JVCL). The directives in } -{ this file are of generic nature and consist mostly of mappings from the VERXXX directives } -{ defined by Delphi, C++Builder and FPC to friendly names such as DELPHI5 and } -{ SUPPORTS_WIDESTRING. These friendly names are subsequently used in the libraries to test for } -{ compiler versions and/or whether the compiler supports certain features (such as widestrings or } -{ 64 bit integers. The libraries provide an additional, library specific, include file. For the } -{ JCL e.g. this is jcl.inc. These files should be included in source files instead of this file } -{ (which is pulled in automatically). } -{ } -{**************************************************************************************************} -{ } -{ Last modified: $Date:: $ } -{ Revision: $Rev:: $ } -{ Author: $Author:: $ } -{ } -{**************************************************************************************************} - -(* - -- Development environment directives - - This file defines two directives to indicate which development environment the - library is being compiled with. Currently this can either be Delphi, Kylix, - C++Builder or FPC. - - Directive Description - ------------------------------------------------------------------------------ - DELPHI Defined if compiled with Delphi - KYLIX Defined if compiled with Kylix - DELPHICOMPILER Defined if compiled with Delphi or Kylix/Delphi - BCB Defined if compiled with C++Builder - CPPBUILDER Defined if compiled with C++Builder (alias for BCB) - BCBCOMPILER Defined if compiled with C++Builder or Kylix/C++ - DELPHILANGUAGE Defined if compiled with Delphi, Kylix or C++Builder - BORLAND Defined if compiled with Delphi, Kylix or C++Builder - FPC Defined if compiled with FPC - -- Platform Directives - - Platform directives are not all explicitly defined in this file, some are - defined by the compiler itself. They are listed here only for completeness. - - Directive Description - ------------------------------------------------------------------------------ - WIN32 Defined when target platform is 32 bit Windows - WIN64 Defined when target platform is 64 bit Windows - MSWINDOWS Defined when target platform is 32 bit Windows - LINUX Defined when target platform is Linux - UNIX Defined when target platform is Unix-like (including Linux) - CLR Defined when target platform is .NET - -- Architecture directives. These are auto-defined by FPC - CPU32 and CPU64 are mostly for generic pointer size dependant differences rather - than for a specific architecture. - - CPU386 Defined when target platform is native x86 (win32) - CPUx86_64 Defined when target platform is native x86_64 (win64) - CPU32 Defined when target is 32-bit - CPU64 Defined when target is 64-bit - CPUASM Defined when target assembler is available - -- Visual library Directives - - The following directives indicate for a visual library. In a Delphi/BCB - (Win32) application you need to define the VisualCLX symbol in the project - options, if you want to use the VisualCLX library. Alternatively you can use - the IDE expert, which is distributed with the JCL to do this automatically. - - Directive Description - ------------------------------------------------------------------------------ - VCL Defined for Delphi/BCB (Win32) exactly if VisualCLX is not defined - VisualCLX Defined for Kylix; needs to be defined for Delphi/BCB to - use JCL with VisualCLX applications. - - -- Other cross-platform related defines - - These symbols are intended to help in writing portable code. - - Directive Description - ------------------------------------------------------------------------------ - PUREPASCAL Code is machine-independent (as opposed to assembler code) - Win32API Code is specific for the Win32 API; - use instead of "{$IFNDEF CLR} {$IFDEF MSWINDOWS}" constructs - - -- Delphi Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is Delphi (ie DELPHI is defined). - - Directive Description - ------------------------------------------------------------------------------ - DELPHI1 Defined when compiling with Delphi 1 (Codename WASABI/MANGO) - DELPHI2 Defined when compiling with Delphi 2 (Codename POLARIS) - DELPHI3 Defined when compiling with Delphi 3 (Codename IVORY) - DELPHI4 Defined when compiling with Delphi 4 (Codename ALLEGRO) - DELPHI5 Defined when compiling with Delphi 5 (Codename ARGUS) - DELPHI6 Defined when compiling with Delphi 6 (Codename ILLIAD) - DELPHI7 Defined when compiling with Delphi 7 (Codename AURORA) - DELPHI8 Defined when compiling with Delphi 8 (Codename OCTANE) - DELPHI2005 Defined when compiling with Delphi 2005 (Codename DIAMONDBACK) - DELPHI9 Alias for DELPHI2005 - DELPHI10 Defined when compiling with Delphi 2006 (Codename DEXTER) - DELPHI2006 Alias for DELPHI10 - DELPHI11 Defined when compiling with Delphi 2007 for Win32 (Codename SPACELY) - DELPHI2007 Alias for DELPHI11 - DELPHI12 Defined when compiling with Delphi 2009 for Win32 (Codename TIBURON) - DELPHI2009 Alias for DELPHI12 - DELPHI14 Defined when compiling with Delphi 2010 for Win32 (Codename WEAVER) - DELPHI2010 Alias for DELPHI14 - DELPHI15 Defined when compiling with Delphi XE for Win32 (Codename FULCRUM) - DELPHIXE Alias for DELPHI15 - DELPHI1_UP Defined when compiling with Delphi 1 or higher - DELPHI2_UP Defined when compiling with Delphi 2 or higher - DELPHI3_UP Defined when compiling with Delphi 3 or higher - DELPHI4_UP Defined when compiling with Delphi 4 or higher - DELPHI5_UP Defined when compiling with Delphi 5 or higher - DELPHI6_UP Defined when compiling with Delphi 6 or higher - DELPHI7_UP Defined when compiling with Delphi 7 or higher - DELPHI8_UP Defined when compiling with Delphi 8 or higher - DELPHI2005_UP Defined when compiling with Delphi 2005 or higher - DELPHI9_UP Alias for DELPHI2005_UP - DELPHI10_UP Defined when compiling with Delphi 2006 or higher - DELPHI2006_UP Alias for DELPHI10_UP - DELPHI11_UP Defined when compiling with Delphi 2007 for Win32 or higher - DELPHI2007_UP Alias for DELPHI11_UP - DELPHI12_UP Defined when compiling with Delphi 2009 for Win32 or higher - DELPHI2009_UP Alias for DELPHI12_UP - DELPHI14_UP Defined when compiling with Delphi 2010 for Win32 or higher - DELPHI2010_UP Alias for DELPHI14_UP - DELPHI15_UP Defined when compiling with Delphi XE for Win32 or higher - DELPHIXE_UP Alias for DELPHI15_UP - - -- Kylix Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is Kylix (ie KYLIX is defined). - - Directive Description - ------------------------------------------------------------------------------ - KYLIX1 Defined when compiling with Kylix 1 - KYLIX2 Defined when compiling with Kylix 2 - KYLIX3 Defined when compiling with Kylix 3 (Codename CORTEZ) - KYLIX1_UP Defined when compiling with Kylix 1 or higher - KYLIX2_UP Defined when compiling with Kylix 2 or higher - KYLIX3_UP Defined when compiling with Kylix 3 or higher - - -- Delphi Compiler Versions (Delphi / Kylix, not in BCB mode) - - Directive Description - ------------------------------------------------------------------------------ - DELPHICOMPILER1 Defined when compiling with Delphi 1 - DELPHICOMPILER2 Defined when compiling with Delphi 2 - DELPHICOMPILER3 Defined when compiling with Delphi 3 - DELPHICOMPILER4 Defined when compiling with Delphi 4 - DELPHICOMPILER5 Defined when compiling with Delphi 5 - DELPHICOMPILER6 Defined when compiling with Delphi 6 or Kylix 1, 2 or 3 - DELPHICOMPILER7 Defined when compiling with Delphi 7 - DELPHICOMPILER8 Defined when compiling with Delphi 8 - DELPHICOMPILER9 Defined when compiling with Delphi 2005 - DELPHICOMPILER10 Defined when compiling with Delphi Personality of BDS 4.0 - DELPHICOMPILER11 Defined when compiling with Delphi 2007 for Win32 - DELPHICOMPILER12 Defined when compiling with Delphi Personality of BDS 6.0 - DELPHICOMPILER14 Defined when compiling with Delphi Personality of BDS 7.0 - DELPHICOMPILER15 Defined when compiling with Delphi Personality of BDS 8.0 - DELPHICOMPILER1_UP Defined when compiling with Delphi 1 or higher - DELPHICOMPILER2_UP Defined when compiling with Delphi 2 or higher - DELPHICOMPILER3_UP Defined when compiling with Delphi 3 or higher - DELPHICOMPILER4_UP Defined when compiling with Delphi 4 or higher - DELPHICOMPILER5_UP Defined when compiling with Delphi 5 or higher - DELPHICOMPILER6_UP Defined when compiling with Delphi 6 or Kylix 1, 2 or 3 or higher - DELPHICOMPILER7_UP Defined when compiling with Delphi 7 or higher - DELPHICOMPILER8_UP Defined when compiling with Delphi 8 or higher - DELPHICOMPILER9_UP Defined when compiling with Delphi 2005 - DELPHICOMPILER10_UP Defined when compiling with Delphi 2006 or higher - DELPHICOMPILER11_UP Defined when compiling with Delphi 2007 for Win32 or higher - DELPHICOMPILER12_UP Defined when compiling with Delphi 2009 for Win32 or higher - DELPHICOMPILER14_UP Defined when compiling with Delphi 2010 for Win32 or higher - DELPHICOMPILER15_UP Defined when compiling with Delphi XE for Win32 or higher - - -- C++Builder Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. These directives are only defined if - the compiler is C++Builder (ie BCB is defined). - - Directive Description - ------------------------------------------------------------------------------ - BCB1 Defined when compiling with C++Builder 1 - BCB3 Defined when compiling with C++Builder 3 - BCB4 Defined when compiling with C++Builder 4 - BCB5 Defined when compiling with C++Builder 5 (Codename RAMPAGE) - BCB6 Defined when compiling with C++Builder 6 (Codename RIPTIDE) - BCB10 Defined when compiling with C++Builder Personality of BDS 4.0 (also known as C++Builder 2006) (Codename DEXTER) - BCB11 Defined when compiling with C++Builder Personality of RAD Studio 2007 (also known as C++Builder 2007) (Codename COGSWELL) - BCB12 Defined when compiling with C++Builder Personality of RAD Studio 2009 (also known as C++Builder 2009) (Codename TIBURON) - BCB14 Defined when compiling with C++Builder Personality of RAD Studio 2010 (also known as C++Builder 2010) (Codename WEAVER) - BCB1_UP Defined when compiling with C++Builder 1 or higher - BCB3_UP Defined when compiling with C++Builder 3 or higher - BCB4_UP Defined when compiling with C++Builder 4 or higher - BCB5_UP Defined when compiling with C++Builder 5 or higher - BCB6_UP Defined when compiling with C++Builder 6 or higher - BCB10_UP Defined when compiling with C++Builder Personality of BDS 4.0 or higher - BCB11_UP Defined when compiling with C++Builder Personality of RAD Studio 2007 or higher - BCB12_UP Defined when compiling with C++Builder Personality of RAD Studio 2009 or higher - BCB14_UP Defined when compiling with C++Builder Personality of RAD Studio 2010 or higher - BCB15_UP Defined when compiling with C++Builder Personality of RAD Studio XE or higher - - -- RAD Studio / Borland Developer Studio Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated IDE. These directives are only defined if - the IDE is Borland Developer Studio Version 2 or above. - - Note: Borland Developer Studio 2006 is marketed as Delphi 2006 or C++Builder 2006, - but those provide only different labels for identical content. - - Directive Description - ------------------------------------------------------------------------------ - BDS Defined when compiling with BDS version of dcc32.exe (Codename SIDEWINDER) - BDS2 Defined when compiling with BDS 2.0 (Delphi 8) (Codename OCTANE) - BDS3 Defined when compiling with BDS 3.0 (Delphi 2005) (Codename DIAMONDBACK) - BDS4 Defined when compiling with BDS 4.0 (Borland Developer Studio 2006) (Codename DEXTER) - BDS5 Defined when compiling with BDS 5.0 (CodeGear RAD Studio 2007) (Codename HIGHLANDER) - BDS6 Defined when compiling with BDS 6.0 (CodeGear RAD Studio 2009) (Codename TIBURON) - BDS7 Defined when compiling with BDS 7.0 (Embarcadero RAD Studio 2010) (Codename WEAVER) - BDS8 Defined when compiling with BDS 8.0 (Embarcadero RAD Studio XE) (Codename FULCRUM) - BDS2_UP Defined when compiling with BDS 2.0 or higher - BDS3_UP Defined when compiling with BDS 3.0 or higher - BDS4_UP Defined when compiling with BDS 4.0 or higher - BDS5_UP Defined when compiling with BDS 5.0 or higher - BDS6_UP Defined when compiling with BDS 6.0 or higher - BDS7_UP Defined when compiling with BDS 7.0 or higher - BDS8_UP Defined when compiling with BDS 8.0 or higher - -- Compiler Versions - - The following directives are direct mappings from the VERXXX directives to a - friendly name of the associated compiler. Unlike the DELPHI_X and BCB_X - directives, these directives are indepedent of the development environment. - That is, they are defined regardless of whether compilation takes place using - Delphi or C++Builder. - - Directive Description - ------------------------------------------------------------------------------ - COMPILER1 Defined when compiling with Delphi 1 - COMPILER2 Defined when compiling with Delphi 2 or C++Builder 1 - COMPILER3 Defined when compiling with Delphi 3 - COMPILER35 Defined when compiling with C++Builder 3 - COMPILER4 Defined when compiling with Delphi 4 or C++Builder 4 - COMPILER5 Defined when compiling with Delphi 5 or C++Builder 5 - COMPILER6 Defined when compiling with Delphi 6 or C++Builder 6 - COMPILER7 Defined when compiling with Delphi 7 - COMPILER8 Defined when compiling with Delphi 8 - COMPILER9 Defined when compiling with Delphi 9 - COMPILER10 Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 - COMPILER11 Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 - COMPILER12 Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 - COMPILER14 Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 - COMPILER15 Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 - COMPILER1_UP Defined when compiling with Delphi 1 or higher - COMPILER2_UP Defined when compiling with Delphi 2 or C++Builder 1 or higher - COMPILER3_UP Defined when compiling with Delphi 3 or higher - COMPILER35_UP Defined when compiling with C++Builder 3 or higher - COMPILER4_UP Defined when compiling with Delphi 4 or C++Builder 4 or higher - COMPILER5_UP Defined when compiling with Delphi 5 or C++Builder 5 or higher - COMPILER6_UP Defined when compiling with Delphi 6 or C++Builder 6 or higher - COMPILER7_UP Defined when compiling with Delphi 7 - COMPILER8_UP Defined when compiling with Delphi 8 - COMPILER9_UP Defined when compiling with Delphi Personalities of BDS 3.0 - COMPILER10_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 or higher - COMPILER11_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 or higher - COMPILER12_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 or higher - COMPILER14_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 or higher - COMPILER15_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 or higher - - -- RTL Versions - - Use e.g. following to determine the exact RTL version since version 14.0: - {$IFDEF CONDITIONALEXPRESSIONS} - {$IF Declared(RTLVersion) and (RTLVersion >= 14.2)} - // code for Delphi 6.02 or higher, Kylix 2 or higher, C++Builder 6 or higher - ... - {$IFEND} - {$ENDIF} - - Directive Description - ------------------------------------------------------------------------------ - RTL80_UP Defined when compiling with Delphi 1 or higher - RTL90_UP Defined when compiling with Delphi 2 or higher - RTL93_UP Defined when compiling with C++Builder 1 or higher - RTL100_UP Defined when compiling with Delphi 3 or higher - RTL110_UP Defined when compiling with C++Builder 3 or higher - RTL120_UP Defined when compiling with Delphi 4 or higher - RTL125_UP Defined when compiling with C++Builder 4 or higher - RTL130_UP Defined when compiling with Delphi 5 or C++Builder 5 or higher - RTL140_UP Defined when compiling with Delphi 6, Kylix 1, 2 or 3 or C++Builder 6 or higher - RTL150_UP Defined when compiling with Delphi 7 or higher - RTL160_UP Defined when compiling with Delphi 8 or higher - RTL170_UP Defined when compiling with Delphi Personalities of BDS 3.0 or higher - RTL180_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 4.0 or higher - RTL185_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 5.0 or higher - RTL190_UP Defined when compiling with Delphi.NET of BDS 5.0 or higher - RTL200_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 6.0 or higher - RTL210_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 7.0 or higher - RTL220_UP Defined when compiling with Delphi or C++Builder Personalities of BDS 8.0 or higher - - -- CLR Versions - - Directive Description - ------------------------------------------------------------------------------ - CLR Defined when compiling for .NET - CLR10 Defined when compiling for .NET 1.0 (may be overriden by FORCE_CLR10) - CLR10_UP Defined when compiling for .NET 1.0 or higher - CLR11 Defined when compiling for .NET 1.1 (may be overriden by FORCE_CLR11) - CLR11_UP Defined when compiling for .NET 1.1 or higher - CLR20 Defined when compiling for .NET 2.0 (may be overriden by FORCE_CLR20) - CLR20_UP Defined when compiling for .NET 2.0 or higher - - -- Feature Directives - - The features directives are used to test if the compiler supports specific - features, such as method overloading, and adjust the sources accordingly. Use - of these directives is preferred over the use of the DELPHI and COMPILER - directives. - - Directive Description - ------------------------------------------------------------------------------ - SUPPORTS_CONSTPARAMS Compiler supports const parameters (D1+) - SUPPORTS_SINGLE Compiler supports the Single type (D1+) - SUPPORTS_DOUBLE Compiler supports the Double type (D1+) - SUPPORTS_EXTENDED Compiler supports the Extended type (D1+) - SUPPORTS_CURRENCY Compiler supports the Currency type (D2+) - SUPPORTS_THREADVAR Compiler supports threadvar declarations (D2+) - SUPPORTS_OUTPARAMS Compiler supports out parameters (D3+) - SUPPORTS_VARIANT Compiler supports variant (D2+) - SUPPORTS_WIDECHAR Compiler supports the WideChar type (D2+) - SUPPORTS_WIDESTRING Compiler supports the WideString type (D3+/BCB3+) - SUPPORTS_INTERFACE Compiler supports interfaces (D3+/BCB3+) - SUPPORTS_DISPINTERFACE Compiler supports dispatch interfaces (D3+/BCB3+) - SUPPORTS_DISPID Compiler supports dispatch ids (D3+/BCB3+/FPC) - SUPPORTS_EXTSYM Compiler supports the $EXTERNALSYM directive (D4+/BCB3+) - SUPPORTS_NODEFINE Compiler supports the $NODEFINE directive (D4+/BCB3+) - SUPPORTS_LONGWORD Compiler supports the LongWord type (unsigned 32 bit) (D4+/BCB4+) - SUPPORTS_INT64 Compiler supports the Int64 type (D4+/BCB4+) - SUPPORTS_DYNAMICARRAYS Compiler supports dynamic arrays (D4+/BCB4+) - SUPPORTS_DEFAULTPARAMS Compiler supports default parameters (D4+/BCB4+) - SUPPORTS_OVERLOAD Compiler supports overloading (D4+/BCB4+) - SUPPORTS_IMPLEMENTS Compiler supports implements (D4+/BCB4+) - SUPPORTS_DEPRECATED Compiler supports the deprecated directive (D6+/BCB6+) - SUPPORTS_PLATFORM Compiler supports the platform directive (D6+/BCB6+) - SUPPORTS_LIBRARY Compiler supports the library directive (D6+/BCB6+/FPC) - SUPPORTS_LOCAL Compiler supports the local directive (D6+/BCB6+) - SUPPORTS_SETPEFLAGS Compiler supports the SetPEFlags directive (D6+/BCB6+) - SUPPORTS_EXPERIMENTAL_WARNINGS Compiler supports the WARN SYMBOL_EXPERIMENTAL and WARN UNIT_EXPERIMENTAL directives (D6+/BCB6+) - SUPPORTS_INLINE Compiler supports the inline directive (D9+/FPC) - SUPPORTS_FOR_IN Compiler supports for in loops (D9+) - SUPPORTS_NESTED_CONSTANTS Compiler supports nested constants (D9+) - SUPPORTS_NESTED_TYPES Compiler supports nested types (D9+) - SUPPORTS_REGION Compiler supports the REGION and ENDREGION directives (D9+) - SUPPORTS_ENHANCED_RECORDS Compiler supports class [operator|function|procedure] for record types (D9.NET, D10+) - SUPPORTS_CLASS_FIELDS Compiler supports class fields (D9.NET, D10+) - SUPPORTS_CLASS_HELPERS Compiler supports class helpers (D9.NET, D10+) - SUPPORTS_CLASS_OPERATORS Compiler supports class operators (D9.NET, D10+) - SUPPORTS_CLASS_CTORDTORS Compiler supports class contructors/destructors (D14+) - SUPPORTS_STRICT Compiler supports strict keyword (D9.NET, D10+) - SUPPORTS_STATIC Compiler supports static keyword (D9.NET, D10+) - SUPPORTS_FINAL Compiler supports final keyword (D9.NET, D10+) - SUPPORTS_METHODINFO Compiler supports the METHODINFO directives (D10+) - SUPPORTS_GENERICS Compiler supports generic implementations (D11.NET, D12+) - SUPPORTS_DEPRECATED_DETAILS Compiler supports additional text for the deprecated directive (D11.NET, D12+) - ACCEPT_DEPRECATED Compiler supports or ignores the deprecated directive (D6+/BCB6+/FPC) - ACCEPT_PLATFORM Compiler supports or ignores the platform directive (D6+/BCB6+/FPC) - ACCEPT_LIBRARY Compiler supports or ignores the library directive (D6+/BCB6+) - SUPPORTS_CUSTOMVARIANTS Compiler supports custom variants (D6+/BCB6+) - SUPPORTS_VARARGS Compiler supports varargs (D6+/BCB6+) - SUPPORTS_ENUMVALUE Compiler supports assigning ordinalities to values of enums (D6+/BCB6+) - SUPPORTS_DEPRECATED_WARNINGS Compiler supports deprecated warnings (D6+/BCB6+) - SUPPORTS_LIBRARY_WARNINGS Compiler supports library warnings (D6+/BCB6+) - SUPPORTS_PLATFORM_WARNINGS Compiler supports platform warnings (D6+/BCB6+) - SUPPORTS_UNSAFE_WARNINGS Compiler supports unsafe warnings (D7) - SUPPORTS_WEAKPACKAGEUNIT Compiler supports the WEAKPACKAGEUNIT directive - SUPPORTS_COMPILETIME_MESSAGES Compiler supports the MESSAGE directive - SUPPORTS_PACKAGES Compiler supports Packages - HAS_UNIT_LIBC Unit Libc exists (Kylix, FPC on Linux/x86) - HAS_UNIT_RTLCONSTS Unit RTLConsts exists (D6+/BCB6+/FPC) - HAS_UNIT_TYPES Unit Types exists (D6+/BCB6+/FPC) - HAS_UNIT_VARIANTS Unit Variants exists (D6+/BCB6+/FPC) - HAS_UNIT_STRUTILS Unit StrUtils exists (D6+/BCB6+/FPC) - HAS_UNIT_DATEUTILS Unit DateUtils exists (D6+/BCB6+/FPC) - HAS_UNIT_CONTNRS Unit contnrs exists (D6+/BCB6+/FPC) - HAS_UNIT_HTTPPROD Unit HTTPProd exists (D9+) - HAS_UNIT_GIFIMG Unit GifImg exists (D11+) - HAS_UNIT_ANSISTRINGS Unit AnsiStrings exists (D12+) - HAS_UNIT_PNGIMAGE Unit PngImage exists (D12+) - XPLATFORM_RTL The RTL supports crossplatform function names (e.g. RaiseLastOSError) (D6+/BCB6+/FPC) - SUPPORTS_UNICODE string type is aliased to an unicode string (WideString or UnicodeString) (DX.NET, D12+) - SUPPORTS_UNICODE_STRING Compiler supports UnicodeString (D12+) - SUPPORTS_INT_ALIASES Types Int8, Int16, Int32, UInt8, UInt16 and UInt32 are defined in the unit System (D12+) - HAS_UNIT_RTTI Unit RTTI is available (D14+) - SUPPORTS_CAST_INTERFACE_TO_OBJ The compiler supports casts from interfaces to objects (D14+) - SUPPORTS_DELAYED_LOADING The compiler generates stubs for delaying imported function loads (D14+) - - -- Compiler Settings - - The compiler settings directives indicate whether a specific compiler setting - is in effect. This facilitates changing compiler settings locally in a more - compact and readible manner. - - Directive Description - ------------------------------------------------------------------------------ - ALIGN_ON Compiling in the A+ state (no alignment) - BOOLEVAL_ON Compiling in the B+ state (complete boolean evaluation) - ASSERTIONS_ON Compiling in the C+ state (assertions on) - DEBUGINFO_ON Compiling in the D+ state (debug info generation on) - IMPORTEDDATA_ON Compiling in the G+ state (creation of imported data references) - LONGSTRINGS_ON Compiling in the H+ state (string defined as AnsiString) - IOCHECKS_ON Compiling in the I+ state (I/O checking enabled) - WRITEABLECONST_ON Compiling in the J+ state (typed constants can be modified) - LOCALSYMBOLS Compiling in the L+ state (local symbol generation) - LOCALSYMBOLS_ON Alias of LOCALSYMBOLS - TYPEINFO_ON Compiling in the M+ state (RTTI generation on) - OPTIMIZATION_ON Compiling in the O+ state (code optimization on) - OPENSTRINGS_ON Compiling in the P+ state (variable string parameters are openstrings) - OVERFLOWCHECKS_ON Compiling in the Q+ state (overflow checing on) - RANGECHECKS_ON Compiling in the R+ state (range checking on) - TYPEDADDRESS_ON Compiling in the T+ state (pointers obtained using the @ operator are typed) - SAFEDIVIDE_ON Compiling in the U+ state (save FDIV instruction through RTL emulation) - VARSTRINGCHECKS_ON Compiling in the V+ state (type checking of shortstrings) - STACKFRAMES_ON Compiling in the W+ state (generation of stack frames) - EXTENDEDSYNTAX_ON Compiling in the X+ state (Delphi extended syntax enabled) -*) - -{$DEFINE BORLAND} - -{ Set FreePascal to Delphi mode } -{$IFDEF FPC} - {$MODE DELPHI} - {$ASMMODE Intel} - {$UNDEF BORLAND} - {$DEFINE CPUASM} - // FPC defines CPU32, CPU64 and Unix automatically -{$ENDIF} - -{$IFDEF BORLAND} - {$IFDEF LINUX} - {$DEFINE KYLIX} - {$ENDIF LINUX} - {$IFNDEF CLR} - {$DEFINE CPU386} // For Borland compilers select the x86 compat assembler by default - {$DEFINE CPU32} // Assume Borland compilers are 32-bit (rather than 64-bit) - {$DEFINE CPUASM} - {$ENDIF ~CLR} -{$ENDIF BORLAND} - -{------------------------------------------------------------------------------} -{ VERXXX to COMPILERX, DELPHIX and BCBX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BORLAND} - {$IFDEF KYLIX} - {$I kylix.inc} // FPC incompatible stuff - {$ELSE ~KYLIX} - - {$DEFINE UNKNOWN_COMPILER_VERSION} - - {$IFDEF VER80} - {$DEFINE COMPILER1} - {$DEFINE DELPHI1} - {$DEFINE DELPHICOMPILER1} - {$DEFINE RTL80_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER90} - {$DEFINE COMPILER2} - {$DEFINE DELPHI2} - {$DEFINE DELPHICOMPILER2} - {$DEFINE RTL90_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER93} - {$DEFINE COMPILER2} - {$DEFINE BCB1} - {$DEFINE BCB} - {$DEFINE RTL93_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER100} - {$DEFINE COMPILER3} - {$DEFINE DELPHI3} - {$DEFINE DELPHICOMPILER3} - {$DEFINE RTL100_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER110} - {$DEFINE COMPILER35} - {$DEFINE BCB3} - {$DEFINE BCB} - {$DEFINE RTL110_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER120} - {$DEFINE COMPILER4} - {$DEFINE DELPHI4} - {$DEFINE DELPHICOMPILER4} - {$DEFINE RTL120_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER125} - {$DEFINE COMPILER4} - {$DEFINE BCB4} - {$DEFINE BCB} - {$DEFINE RTL125_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER130} - {$DEFINE COMPILER5} - {$IFDEF BCB} - {$DEFINE BCB5} - {$ELSE} - {$DEFINE DELPHI5} - {$DEFINE DELPHICOMPILER5} - {$ENDIF} - {$DEFINE RTL130_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER140} - {$DEFINE COMPILER6} - {$IFDEF BCB} - {$DEFINE BCB6} - {$ELSE} - {$DEFINE DELPHI6} - {$DEFINE DELPHICOMPILER6} - {$ENDIF} - {$DEFINE RTL140_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER150} - {$DEFINE COMPILER7} - {$DEFINE DELPHI7} - {$DEFINE DELPHICOMPILER7} - {$DEFINE RTL150_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER160} - {$DEFINE BDS2} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR10} - {$ENDIF CLR} - {$DEFINE COMPILER8} - {$DEFINE DELPHI8} - {$DEFINE DELPHICOMPILER8} - {$DEFINE RTL160_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER170} - {$DEFINE BDS3} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR11} - {$ENDIF CLR} - {$DEFINE COMPILER9} - {$DEFINE DELPHI9} - {$DEFINE DELPHI2005} // synonym to DELPHI9 - {$DEFINE DELPHICOMPILER9} - {$DEFINE RTL170_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER180} - {$DEFINE BDS} - {$IFDEF CLR} - {$DEFINE CLR11} - {$ENDIF CLR} - {$IFDEF VER185} - {$DEFINE BDS5} - {$DEFINE COMPILER11} - {$IFDEF BCB} - {$DEFINE BCB11} - {$ELSE} - {$DEFINE DELPHI11} - {$DEFINE DELPHI2007} // synonym to DELPHI11 - {$DEFINE DELPHICOMPILER11} - {$ENDIF} - {$DEFINE RTL185_UP} - {$ELSE ~~VER185} - {$DEFINE BDS4} - {$DEFINE COMPILER10} - {$IFDEF BCB} - {$DEFINE BCB10} - {$ELSE} - {$DEFINE DELPHI10} - {$DEFINE DELPHI2006} // synonym to DELPHI10 - {$DEFINE DELPHICOMPILER10} - {$ENDIF} - {$DEFINE RTL180_UP} - {$ENDIF ~VER185} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$IFDEF VER190} // Delphi 2007 for .NET - {$DEFINE BDS} - {$DEFINE BDS5} - {$IFDEF CLR} - {$DEFINE CLR20} - {$ENDIF CLR} - {$DEFINE COMPILER11} - {$DEFINE DELPHI11} - {$DEFINE DELPHI2007} // synonym to DELPHI11 - {$DEFINE DELPHICOMPILER11} - {$DEFINE RTL190_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER190} - - {$IFDEF VER200} // RAD Studio 2009 - {$DEFINE BDS} - {$DEFINE BDS6} - {$IFDEF CLR} - {$DEFINE CLR20} - {$ENDIF CLR} - {$DEFINE COMPILER12} - {$IFDEF BCB} - {$DEFINE BCB12} - {$ELSE} - {$DEFINE DELPHI12} - {$DEFINE DELPHI2009} // synonym to DELPHI12 - {$DEFINE DELPHICOMPILER12} - {$ENDIF BCB} - {$IFDEF CLR} - {$DEFINE RTL190_UP} - {$ELSE} - {$DEFINE RTL200_UP} - {$ENDIF} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER200} - - {$IFDEF VER210} // RAD Studio 2010 - {$DEFINE BDS} - {$DEFINE BDS7} - {$DEFINE COMPILER14} - {$IFDEF BCB} - {$DEFINE BCB14} - {$ELSE} - {$DEFINE DELPHI14} - {$DEFINE DELPHI2010} // synonym to DELPHI14 - {$DEFINE DELPHICOMPILER14} - {$ENDIF BCB} - {$DEFINE RTL210_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER210} - - {$IFDEF VER220} // RAD Studio XE - {$DEFINE BDS} - {$DEFINE BDS8} - {$DEFINE COMPILER15} - {$IFDEF BCB} - {$DEFINE BCB15} - {$ELSE} - {$DEFINE DELPHI15} - {$DEFINE DELPHIXE} // synonym to DELPHI15 - {$DEFINE DELPHICOMPILER15} - {$ENDIF BCB} - {$DEFINE RTL220_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER220} - - {$IFDEF VER230} // RAD Studio XE2 - {$DEFINE BDS} - {$DEFINE BDS9} - {$DEFINE COMPILER16} - {$IFDEF BCB} - {$DEFINE BCB16} - {$ELSE} - {$DEFINE DELPHI16} - {$DEFINE DELPHIXE2} // synonym to DELPHI15 - {$DEFINE DELPHICOMPILER16} - {$ENDIF BCB} - {$DEFINE RTL230_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF VER230} - - {$IFDEF UNKNOWN_COMPILER_VERSION} // adjust for newer version (always use latest version) - {$DEFINE BDS} - {$DEFINE BDS9} - {$DEFINE COMPILER16} - {$IFDEF BCB} - {$DEFINE BCB16} - {$ELSE} - {$DEFINE DELPHI16} - {$DEFINE DELPHIXE2} // synonym to DELPHI15 - - {$DEFINE DELPHICOMPILER16} - {$ENDIF BCB} - {$DEFINE RTL230_UP} - {$UNDEF UNKNOWN_COMPILER_VERSION} - {$ENDIF} - - {$ENDIF ~KYLIX} - - {$IFDEF BCB} - {$DEFINE CPPBUILDER} - {$DEFINE BCBCOMPILER} - {$ELSE ~BCB} - {$DEFINE DELPHI} - {$DEFINE DELPHICOMPILER} - {$ENDIF ~BCB} - -{$ENDIF BORLAND} - -{------------------------------------------------------------------------------} -{ DELPHIX_UP from DELPHIX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHI16} {$DEFINE DELPHI16_UP} {$ENDIF} -{$IFDEF DELPHI15} {$DEFINE DELPHI15_UP} {$ENDIF} -{$IFDEF DELPHI14} {$DEFINE DELPHI14_UP} {$ENDIF} -{$IFDEF DELPHI12} {$DEFINE DELPHI12_UP} {$ENDIF} -{$IFDEF DELPHI11} {$DEFINE DELPHI11_UP} {$ENDIF} -{$IFDEF DELPHI10} {$DEFINE DELPHI10_UP} {$ENDIF} -{$IFDEF DELPHI9} {$DEFINE DELPHI9_UP} {$ENDIF} -{$IFDEF DELPHI8} {$DEFINE DELPHI8_UP} {$ENDIF} -{$IFDEF DELPHI7} {$DEFINE DELPHI7_UP} {$ENDIF} -{$IFDEF DELPHI6} {$DEFINE DELPHI6_UP} {$ENDIF} -{$IFDEF DELPHI5} {$DEFINE DELPHI5_UP} {$ENDIF} -{$IFDEF DELPHI4} {$DEFINE DELPHI4_UP} {$ENDIF} -{$IFDEF DELPHI3} {$DEFINE DELPHI3_UP} {$ENDIF} -{$IFDEF DELPHI2} {$DEFINE DELPHI2_UP} {$ENDIF} -{$IFDEF DELPHI1} {$DEFINE DELPHI1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHIX_UP from DELPHIX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHI16_UP} - {$DEFINE DELPHIXE2_UP} // synonym to DELPHI16_UP - {$DEFINE DELPHI15_UP} -{$ENDIF} - -{$IFDEF DELPHI15_UP} - {$DEFINE DELPHIXE_UP} // synonym to DELPHI15_UP - {$DEFINE DELPHI14_UP} -{$ENDIF} - -{$IFDEF DELPHI14_UP} - {$DEFINE DELPHI2010_UP} // synonym to DELPHI14_UP - {$DEFINE DELPHI12_UP} -{$ENDIF} - -{$IFDEF DELPHI12_UP} - {$DEFINE DELPHI2009_UP} // synonym to DELPHI12_UP - {$DEFINE DELPHI11_UP} -{$ENDIF} - -{$IFDEF DELPHI11_UP} - {$DEFINE DELPHI2007_UP} // synonym to DELPHI11_UP - {$DEFINE DELPHI10_UP} -{$ENDIF} - -{$IFDEF DELPHI10_UP} - {$DEFINE DELPHI2006_UP} // synonym to DELPHI10_UP - {$DEFINE DELPHI9_UP} -{$ENDIF} - -{$IFDEF DELPHI9_UP} - {$DEFINE DELPHI2005_UP} // synonym to DELPHI9_UP - {$DEFINE DELPHI8_UP} -{$ENDIF} - -{$IFDEF DELPHI8_UP} {$DEFINE DELPHI7_UP} {$ENDIF} -{$IFDEF DELPHI7_UP} {$DEFINE DELPHI6_UP} {$ENDIF} -{$IFDEF DELPHI6_UP} {$DEFINE DELPHI5_UP} {$ENDIF} -{$IFDEF DELPHI5_UP} {$DEFINE DELPHI4_UP} {$ENDIF} -{$IFDEF DELPHI4_UP} {$DEFINE DELPHI3_UP} {$ENDIF} -{$IFDEF DELPHI3_UP} {$DEFINE DELPHI2_UP} {$ENDIF} -{$IFDEF DELPHI2_UP} {$DEFINE DELPHI1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BCBX_UP from BCBX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BCB15} {$DEFINE BCB15_UP} {$ENDIF} -{$IFDEF BCB14} {$DEFINE BCB14_UP} {$ENDIF} -{$IFDEF BCB12} {$DEFINE BCB12_UP} {$ENDIF} -{$IFDEF BCB11} {$DEFINE BCB11_UP} {$ENDIF} -{$IFDEF BCB10} {$DEFINE BCB10_UP} {$ENDIF} -{$IFDEF BCB6} {$DEFINE BCB6_UP} {$ENDIF} -{$IFDEF BCB5} {$DEFINE BCB5_UP} {$ENDIF} -{$IFDEF BCB4} {$DEFINE BCB4_UP} {$ENDIF} -{$IFDEF BCB3} {$DEFINE BCB3_UP} {$ENDIF} -{$IFDEF BCB1} {$DEFINE BCB1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BCBX_UP from BCBX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BCB15_UP} {$DEFINE BCB15_UP} {$ENDIF} -{$IFDEF BCB14_UP} {$DEFINE BCB12_UP} {$ENDIF} -{$IFDEF BCB12_UP} {$DEFINE BCB11_UP} {$ENDIF} -{$IFDEF BCB11_UP} {$DEFINE BCB10_UP} {$ENDIF} -{$IFDEF BCB10_UP} {$DEFINE BCB6_UP} {$ENDIF} -{$IFDEF BCB6_UP} {$DEFINE BCB5_UP} {$ENDIF} -{$IFDEF BCB5_UP} {$DEFINE BCB4_UP} {$ENDIF} -{$IFDEF BCB4_UP} {$DEFINE BCB3_UP} {$ENDIF} -{$IFDEF BCB3_UP} {$DEFINE BCB1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BDSX_UP from BDSX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BDS8} {$DEFINE BDS8_UP} {$ENDIF} -{$IFDEF BDS7} {$DEFINE BDS7_UP} {$ENDIF} -{$IFDEF BDS6} {$DEFINE BDS6_UP} {$ENDIF} -{$IFDEF BDS5} {$DEFINE BDS5_UP} {$ENDIF} -{$IFDEF BDS4} {$DEFINE BDS4_UP} {$ENDIF} -{$IFDEF BDS3} {$DEFINE BDS3_UP} {$ENDIF} -{$IFDEF BDS2} {$DEFINE BDS2_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ BDSX_UP from BDSX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF BDS8_UP} {$DEFINE BDS7_UP} {$ENDIF} -{$IFDEF BDS7_UP} {$DEFINE BDS6_UP} {$ENDIF} -{$IFDEF BDS6_UP} {$DEFINE BDS5_UP} {$ENDIF} -{$IFDEF BDS5_UP} {$DEFINE BDS4_UP} {$ENDIF} -{$IFDEF BDS4_UP} {$DEFINE BDS3_UP} {$ENDIF} -{$IFDEF BDS3_UP} {$DEFINE BDS2_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHICOMPILERX_UP from DELPHICOMPILERX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER16} {$DEFINE DELPHICOMPILER16_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER15} {$DEFINE DELPHICOMPILER15_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER14} {$DEFINE DELPHICOMPILER14_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER12} {$DEFINE DELPHICOMPILER12_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER11} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER10} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER9} {$DEFINE DELPHICOMPILER9_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8} {$DEFINE DELPHICOMPILER8_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER7} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER6} {$DEFINE DELPHICOMPILER6_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER5} {$DEFINE DELPHICOMPILER5_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER4} {$DEFINE DELPHICOMPILER4_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER3} {$DEFINE DELPHICOMPILER3_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER2} {$DEFINE DELPHICOMPILER2_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER1} {$DEFINE DELPHICOMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ DELPHICOMPILERX_UP from DELPHICOMPILERX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER16_UP} {$DEFINE DELPHICOMPILER15_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER15_UP} {$DEFINE DELPHICOMPILER14_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER14_UP} {$DEFINE DELPHICOMPILER12_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER12_UP} {$DEFINE DELPHICOMPILER11_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER11_UP} {$DEFINE DELPHICOMPILER10_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER10_UP} {$DEFINE DELPHICOMPILER9_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER9_UP} {$DEFINE DELPHICOMPILER8_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8_UP} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER8_UP} {$DEFINE DELPHICOMPILER7_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER7_UP} {$DEFINE DELPHICOMPILER6_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER6_UP} {$DEFINE DELPHICOMPILER5_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER5_UP} {$DEFINE DELPHICOMPILER4_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER4_UP} {$DEFINE DELPHICOMPILER3_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER3_UP} {$DEFINE DELPHICOMPILER2_UP} {$ENDIF} -{$IFDEF DELPHICOMPILER2_UP} {$DEFINE DELPHICOMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ COMPILERX_UP from COMPILERX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF COMPILER16} {$DEFINE COMPILER16_UP} {$ENDIF} -{$IFDEF COMPILER15} {$DEFINE COMPILER15_UP} {$ENDIF} -{$IFDEF COMPILER14} {$DEFINE COMPILER14_UP} {$ENDIF} -{$IFDEF COMPILER12} {$DEFINE COMPILER12_UP} {$ENDIF} -{$IFDEF COMPILER11} {$DEFINE COMPILER11_UP} {$ENDIF} -{$IFDEF COMPILER10} {$DEFINE COMPILER10_UP} {$ENDIF} -{$IFDEF COMPILER9} {$DEFINE COMPILER9_UP} {$ENDIF} -{$IFDEF COMPILER8} {$DEFINE COMPILER8_UP} {$ENDIF} -{$IFDEF COMPILER7} {$DEFINE COMPILER7_UP} {$ENDIF} -{$IFDEF COMPILER6} {$DEFINE COMPILER6_UP} {$ENDIF} -{$IFDEF COMPILER5} {$DEFINE COMPILER5_UP} {$ENDIF} -{$IFDEF COMPILER4} {$DEFINE COMPILER4_UP} {$ENDIF} -{$IFDEF COMPILER35} {$DEFINE COMPILER35_UP} {$ENDIF} -{$IFDEF COMPILER3} {$DEFINE COMPILER3_UP} {$ENDIF} -{$IFDEF COMPILER2} {$DEFINE COMPILER2_UP} {$ENDIF} -{$IFDEF COMPILER1} {$DEFINE COMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ COMPILERX_UP from COMPILERX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF COMPILER16_UP} {$DEFINE COMPILER15_UP} {$ENDIF} -{$IFDEF COMPILER15_UP} {$DEFINE COMPILER14_UP} {$ENDIF} -{$IFDEF COMPILER14_UP} {$DEFINE COMPILER12_UP} {$ENDIF} -{$IFDEF COMPILER12_UP} {$DEFINE COMPILER11_UP} {$ENDIF} -{$IFDEF COMPILER11_UP} {$DEFINE COMPILER10_UP} {$ENDIF} -{$IFDEF COMPILER10_UP} {$DEFINE COMPILER9_UP} {$ENDIF} -{$IFDEF COMPILER9_UP} {$DEFINE COMPILER8_UP} {$ENDIF} -{$IFDEF COMPILER8_UP} {$DEFINE COMPILER7_UP} {$ENDIF} -{$IFDEF COMPILER7_UP} {$DEFINE COMPILER6_UP} {$ENDIF} -{$IFDEF COMPILER6_UP} {$DEFINE COMPILER5_UP} {$ENDIF} -{$IFDEF COMPILER5_UP} {$DEFINE COMPILER4_UP} {$ENDIF} -{$IFDEF COMPILER4_UP} {$DEFINE COMPILER35_UP} {$ENDIF} -{$IFDEF COMPILER35_UP} {$DEFINE COMPILER3_UP} {$ENDIF} -{$IFDEF COMPILER3_UP} {$DEFINE COMPILER2_UP} {$ENDIF} -{$IFDEF COMPILER2_UP} {$DEFINE COMPILER1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ RTLX_UP from RTLX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF RTL230_UP} {$DEFINE RTL220_UP} {$ENDIF} -{$IFDEF RTL220_UP} {$DEFINE RTL210_UP} {$ENDIF} -{$IFDEF RTL210_UP} {$DEFINE RTL200_UP} {$ENDIF} -{$IFDEF RTL200_UP} {$DEFINE RTL190_UP} {$ENDIF} -{$IFDEF RTL190_UP} {$DEFINE RTL185_UP} {$ENDIF} -{$IFDEF RTL185_UP} {$DEFINE RTL180_UP} {$ENDIF} -{$IFDEF RTL180_UP} {$DEFINE RTL170_UP} {$ENDIF} -{$IFDEF RTL170_UP} {$DEFINE RTL160_UP} {$ENDIF} -{$IFDEF RTL160_UP} {$DEFINE RTL150_UP} {$ENDIF} -{$IFDEF RTL150_UP} {$DEFINE RTL145_UP} {$ENDIF} -{$IFDEF RTL145_UP} {$DEFINE RTL142_UP} {$ENDIF} -{$IFDEF RTL142_UP} {$DEFINE RTL140_UP} {$ENDIF} -{$IFDEF RTL140_UP} {$DEFINE RTL130_UP} {$ENDIF} -{$IFDEF RTL130_UP} {$DEFINE RTL125_UP} {$ENDIF} -{$IFDEF RTL125_UP} {$DEFINE RTL120_UP} {$ENDIF} -{$IFDEF RTL120_UP} {$DEFINE RTL110_UP} {$ENDIF} -{$IFDEF RTL110_UP} {$DEFINE RTL100_UP} {$ENDIF} -{$IFDEF RTL100_UP} {$DEFINE RTL93_UP} {$ENDIF} -{$IFDEF RTL93_UP} {$DEFINE RTL90_UP} {$ENDIF} -{$IFDEF RTL90_UP} {$DEFINE RTL80_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ Check for CLR overrides of default detection } -{------------------------------------------------------------------------------} - -{$IFDEF CLR} - {$IFDEF FORCE_CLR10} - {$DEFINE CLR10} - {$UNDEF CLR11} - {$UNDEF CLR20} - {$ENDIF FORCE_CLR10} - - {$IFDEF FORCE_CLR11} - {$UNDEF CLR10} - {$DEFINE CLR11} - {$UNDEF CLR20} - {$ENDIF FORCE_CLR11} - - {$IFDEF FORCE_CLR20} - {$UNDEF CLR10} - {$UNDEF CLR11} - {$DEFINE CLR20} - {$ENDIF FORCE_CLR20} -{$ENDIF CLR} - -{------------------------------------------------------------------------------} -{ CLRX from CLRX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF CLR10} {$DEFINE CLR10_UP} {$ENDIF} -{$IFDEF CLR11} {$DEFINE CLR11_UP} {$ENDIF} -{$IFDEF CLR20} {$DEFINE CLR20_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ CLRX_UP from CLRX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF CLR20_UP} {$DEFINE CLR11_UP} {$ENDIF} -{$IFDEF CLR11_UP} {$DEFINE CLR10_UP} {$ENDIF} - -{------------------------------------------------------------------------------} - -{$IFDEF DELPHICOMPILER} - {$DEFINE DELPHILANGUAGE} -{$ENDIF} - -{$IFDEF BCBCOMPILER} - {$DEFINE DELPHILANGUAGE} -{$ENDIF} - -{------------------------------------------------------------------------------} -{ KYLIXX_UP from KYLIXX mappings } -{------------------------------------------------------------------------------} - -{$IFDEF KYLIX3} {$DEFINE KYLIX3_UP} {$ENDIF} -{$IFDEF KYLIX2} {$DEFINE KYLIX2_UP} {$ENDIF} -{$IFDEF KYLIX1} {$DEFINE KYLIX1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ KYLIXX_UP from KYLIXX_UP mappings } -{------------------------------------------------------------------------------} - -{$IFDEF KYLIX3_UP} {$DEFINE KYLIX2_UP} {$ENDIF} -{$IFDEF KYLIX2_UP} {$DEFINE KYLIX1_UP} {$ENDIF} - -{------------------------------------------------------------------------------} -{ Map COMPILERX_UP to friendly feature names } -{------------------------------------------------------------------------------} - -{$IFDEF FPC} - {$IFDEF VER1_0} - Please use FPC 2.0 or higher to compile this. - {$ELSE} - {$DEFINE SUPPORTS_OUTPARAMS} - {$DEFINE SUPPORTS_WIDECHAR} - {$DEFINE SUPPORTS_WIDESTRING} - {$IFDEF HASINTF} - {$DEFINE SUPPORTS_INTERFACE} - {$ENDIF} - {$IFDEF HASVARIANT} - {$DEFINE SUPPORTS_VARIANT} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_SINGLE} - {$DEFINE SUPPORTS_SINGLE} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_DOUBLE} - {$DEFINE SUPPORTS_DOUBLE} - {$ENDIF} - {$IFDEF FPC_HAS_TYPE_EXTENDED} - {$DEFINE SUPPORTS_EXTENDED} - {$ENDIF} - {$IFDEF HASCURRENCY} - {$DEFINE SUPPORTS_CURRENCY} - {$ENDIF} - {$DEFINE SUPPORTS_THREADVAR} - {$DEFINE SUPPORTS_CONSTPARAMS} - {$DEFINE SUPPORTS_LONGWORD} - {$DEFINE SUPPORTS_INT64} - {$DEFINE SUPPORTS_DYNAMICARRAYS} - {$DEFINE SUPPORTS_DEFAULTPARAMS} - {$DEFINE SUPPORTS_OVERLOAD} - {$DEFINE ACCEPT_DEPRECATED} // 2.2 also gives warnings - {$DEFINE ACCEPT_PLATFORM} // 2.2 also gives warnings - {$DEFINE ACCEPT_LIBRARY} - {$DEFINE SUPPORTS_EXTSYM} - {$DEFINE SUPPORTS_NODEFINE} - - {$DEFINE SUPPORTS_CUSTOMVARIANTS} - {$DEFINE SUPPORTS_VARARGS} - {$DEFINE SUPPORTS_ENUMVALUE} - {$IFDEF LINUX} - {$DEFINE HAS_UNIT_LIBC} - {$ENDIF LINUX} - {$DEFINE HAS_UNIT_CONTNRS} - {$DEFINE HAS_UNIT_TYPES} - {$DEFINE HAS_UNIT_VARIANTS} - {$DEFINE HAS_UNIT_STRUTILS} - {$DEFINE HAS_UNIT_DATEUTILS} - {$DEFINE HAS_UNIT_RTLCONSTS} - - {$DEFINE XPLATFORM_RTL} - - {$IFDEF VER2_2} - {$DEFINE SUPPORTS_DISPINTERFACE} - {$DEFINE SUPPORTS_IMPLEMENTS} - {$DEFINE SUPPORTS_DISPID} - {$ELSE} - {$UNDEF SUPPORTS_DISPINTERFACE} - {$UNDEF SUPPORTS_IMPLEMENTS} - {$endif} - {$UNDEF SUPPORTS_UNSAFE_WARNINGS} - {$ENDIF} -{$ENDIF FPC} - -{$IFDEF CLR} - {$DEFINE SUPPORTS_UNICODE} -{$ENDIF CLR} - -{$IFDEF COMPILER1_UP} - {$DEFINE SUPPORTS_CONSTPARAMS} - {$DEFINE SUPPORTS_SINGLE} - {$DEFINE SUPPORTS_DOUBLE} - {$DEFINE SUPPORTS_EXTENDED} - {$DEFINE SUPPORTS_PACKAGES} -{$ENDIF COMPILER1_UP} - -{$IFDEF COMPILER2_UP} - {$DEFINE SUPPORTS_CURRENCY} - {$DEFINE SUPPORTS_THREADVAR} - {$DEFINE SUPPORTS_VARIANT} - {$DEFINE SUPPORTS_WIDECHAR} -{$ENDIF COMPILER2_UP} - -{$IFDEF COMPILER3_UP} - {$DEFINE SUPPORTS_OUTPARAMS} - {$DEFINE SUPPORTS_WIDESTRING} - {$DEFINE SUPPORTS_INTERFACE} - {$DEFINE SUPPORTS_DISPINTERFACE} - {$DEFINE SUPPORTS_DISPID} - {$DEFINE SUPPORTS_WEAKPACKAGEUNIT} -{$ENDIF COMPILER3_UP} - -{$IFDEF COMPILER35_UP} - {$DEFINE SUPPORTS_EXTSYM} - {$DEFINE SUPPORTS_NODEFINE} -{$ENDIF COMPILER35_UP} - -{$IFDEF COMPILER4_UP} - {$DEFINE SUPPORTS_LONGWORD} - {$DEFINE SUPPORTS_INT64} - {$DEFINE SUPPORTS_DYNAMICARRAYS} - {$DEFINE SUPPORTS_DEFAULTPARAMS} - {$DEFINE SUPPORTS_OVERLOAD} - {$DEFINE SUPPORTS_IMPLEMENTS} -{$ENDIF COMPILER4_UP} - -{$IFDEF COMPILER6_UP} - {$DEFINE SUPPORTS_DEPRECATED} - {$DEFINE SUPPORTS_LIBRARY} - {$DEFINE SUPPORTS_PLATFORM} - {$DEFINE SUPPORTS_LOCAL} - {$DEFINE SUPPORTS_SETPEFLAGS} - {$DEFINE SUPPORTS_EXPERIMENTAL_WARNINGS} - {$DEFINE ACCEPT_DEPRECATED} - {$DEFINE ACCEPT_PLATFORM} - {$DEFINE ACCEPT_LIBRARY} - {$DEFINE SUPPORTS_DEPRECATED_WARNINGS} - {$DEFINE SUPPORTS_LIBRARY_WARNINGS} - {$DEFINE SUPPORTS_PLATFORM_WARNINGS} - {$DEFINE SUPPORTS_CUSTOMVARIANTS} - {$DEFINE SUPPORTS_VARARGS} - {$DEFINE SUPPORTS_ENUMVALUE} - {$DEFINE SUPPORTS_COMPILETIME_MESSAGES} -{$ENDIF COMPILER6_UP} - -{$IFDEF COMPILER7_UP} - {$DEFINE SUPPORTS_UNSAFE_WARNINGS} -{$ENDIF COMPILER7_UP} - -{$IFDEF COMPILER9_UP} - {$DEFINE SUPPORTS_FOR_IN} - {$DEFINE SUPPORTS_INLINE} - {$DEFINE SUPPORTS_NESTED_CONSTANTS} - {$DEFINE SUPPORTS_NESTED_TYPES} - {$DEFINE SUPPORTS_REGION} - {$IFDEF CLR} - {$DEFINE SUPPORTS_ENHANCED_RECORDS} - {$DEFINE SUPPORTS_CLASS_FIELDS} - {$DEFINE SUPPORTS_CLASS_HELPERS} - {$DEFINE SUPPORTS_CLASS_OPERATORS} - {$DEFINE SUPPORTS_STRICT} - {$DEFINE SUPPORTS_STATIC} - {$DEFINE SUPPORTS_FINAL} - {$ENDIF CLR} -{$ENDIF COMPILER9_UP} - -{$IFDEF COMPILER10_UP} - {$DEFINE SUPPORTS_ENHANCED_RECORDS} - {$DEFINE SUPPORTS_CLASS_FIELDS} - {$DEFINE SUPPORTS_CLASS_HELPERS} - {$DEFINE SUPPORTS_CLASS_OPERATORS} - {$DEFINE SUPPORTS_STRICT} - {$DEFINE SUPPORTS_STATIC} - {$DEFINE SUPPORTS_FINAL} - {$DEFINE SUPPORTS_METHODINFO} -{$ENDIF COMPILER10_UP} - -{$IFDEF COMPILER11_UP} - {$IFDEF CLR} - {$DEFINE SUPPORTS_GENERICS} - {$DEFINE SUPPORTS_DEPRECATED_DETAILS} - {$ENDIF CLR} -{$ENDIF COMPILER11_UP} - -{$IFDEF COMPILER12_UP} - {$DEFINE SUPPORTS_GENERICS} - {$DEFINE SUPPORTS_DEPRECATED_DETAILS} - {$DEFINE SUPPORTS_INT_ALIASES} - {$IFNDEF CLR} - {$DEFINE SUPPORTS_UNICODE} - {$DEFINE SUPPORTS_UNICODE_STRING} - {$ENDIF CLR} -{$ENDIF COMPILER12_UP} - -{$IFDEF COMPILER14_UP} - {$DEFINE SUPPORTS_CLASS_CTORDTORS} - {$DEFINE HAS_UNIT_RTTI} - {$DEFINE SUPPORTS_CAST_INTERFACE_TO_OBJ} - {$DEFINE SUPPORTS_DELAYED_LOADING} -{$ENDIF COMPILER14_UP} - -{$IFDEF RTL130_UP} - {$DEFINE HAS_UNIT_CONTNRS} -{$ENDIF RTL130_UP} - -{$IFDEF RTL140_UP} - {$IFDEF LINUX} - {$DEFINE HAS_UNIT_LIBC} - {$ENDIF LINUX} - {$DEFINE HAS_UNIT_RTLCONSTS} - {$DEFINE HAS_UNIT_TYPES} - {$DEFINE HAS_UNIT_VARIANTS} - {$DEFINE HAS_UNIT_STRUTILS} - {$DEFINE HAS_UNIT_DATEUTILS} - {$DEFINE XPLATFORM_RTL} -{$ENDIF RTL140_UP} - -{$IFDEF RTL170_UP} - {$DEFINE HAS_UNIT_HTTPPROD} -{$ENDIF RTL170_UP} - -{$IFDEF RTL185_UP} - {$DEFINE HAS_UNIT_GIFIMG} -{$ENDIF RTL185_UP} - -{$IFDEF RTL200_UP} - {$DEFINE HAS_UNIT_ANSISTRINGS} - {$DEFINE HAS_UNIT_PNGIMAGE} -{$ENDIF RTL200_UP} - -{------------------------------------------------------------------------------} -{ Cross-platform related defines } -{------------------------------------------------------------------------------} - -{$IFNDEF CPUASM} - {$DEFINE PUREPASCAL} -{$ENDIF ~CPUASM} - -{$IFDEF WIN32} - {$DEFINE MSWINDOWS} // predefined for D6+/BCB6+ - {$DEFINE Win32API} -{$ENDIF} - -{$IFDEF DELPHILANGUAGE} - {$IFDEF LINUX} - {$DEFINE UNIX} - {$ENDIF} - - {$IFNDEF CONSOLE} - {$IFDEF LINUX} - {$DEFINE VisualCLX} - {$ENDIF} - {$IFNDEF VisualCLX} - {$DEFINE VCL} - {$ENDIF} - {$ENDIF ~CONSOLE} -{$ENDIF DELPHILANGUAGE} - -{------------------------------------------------------------------------------} -{ Compiler settings } -{------------------------------------------------------------------------------} - -{$IFOPT A+} {$DEFINE ALIGN_ON} {$ENDIF} -{$IFOPT B+} {$DEFINE BOOLEVAL_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT C+} {$DEFINE ASSERTIONS_ON} {$ENDIF} -{$ENDIF} -{$IFOPT D+} {$DEFINE DEBUGINFO_ON} {$ENDIF} -{$IFOPT G+} {$DEFINE IMPORTEDDATA_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT H+} {$DEFINE LONGSTRINGS_ON} {$ENDIF} -{$ENDIF} - -// Hints -{$IFOPT I+} {$DEFINE IOCHECKS_ON} {$ENDIF} -{$IFDEF COMPILER2_UP} - {$IFOPT J+} {$DEFINE WRITEABLECONST_ON} {$ENDIF} -{$ENDIF} -{$IFOPT L+} {$DEFINE LOCALSYMBOLS} {$DEFINE LOCALSYMBOLS_ON} {$ENDIF} -{$IFOPT M+} {$DEFINE TYPEINFO_ON} {$ENDIF} -{$IFOPT O+} {$DEFINE OPTIMIZATION_ON} {$ENDIF} -{$IFOPT P+} {$DEFINE OPENSTRINGS_ON} {$ENDIF} -{$IFOPT Q+} {$DEFINE OVERFLOWCHECKS_ON} {$ENDIF} -{$IFOPT R+} {$DEFINE RANGECHECKS_ON} {$ENDIF} - -// Real compatibility -{$IFOPT T+} {$DEFINE TYPEDADDRESS_ON} {$ENDIF} -{$IFOPT U+} {$DEFINE SAFEDIVIDE_ON} {$ENDIF} -{$IFOPT V+} {$DEFINE VARSTRINGCHECKS_ON} {$ENDIF} -{$IFOPT W+} {$DEFINE STACKFRAMES_ON} {$ENDIF} - -// Warnings -{$IFOPT X+} {$DEFINE EXTENDEDSYNTAX_ON} {$ENDIF} - -// for Delphi/BCB trial versions remove the point from the line below -{.$UNDEF SUPPORTS_WEAKPACKAGEUNIT} - -{$ENDIF ~JEDI_INC} - diff --git a/windows/src/ext/embeddedwb/Source/EditDesigner.pas b/windows/src/ext/embeddedwb/Source/EditDesigner.pas deleted file mode 100644 index 109eb5ce49..0000000000 --- a/windows/src/ext/embeddedwb/Source/EditDesigner.pas +++ /dev/null @@ -1,717 +0,0 @@ -//*********************************************************** -// TEditDesigner * -// * -// For Delphi * -// Freeware Component * -// by * -// Per Lindsø Larsen * -// per.lindsoe@larsen.dk * -// Fixed by bsalsa@gmail.com * -// Documentation and Updated versions: * -// * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, Change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code Change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: EditDesigner.pas,v 1.3.2.1 2006/11/29 22:13:00 sergev Exp $ -{$B-} -unit EditDesigner; - -//Extras---------------------------------------------------------------------- -{To remove the Extras (Events), just add a dot like "{.$DEFINE...USE_Extras" or something. -and re-compile the package.} -{$DEFINE USE_Extras} - -interface - -{$I EWB.inc} - -uses -{$IFDEF USE_Extras}EwbAcc, Graphics, {$ENDIF} - EmbeddedWB, ActiveX, MSHTML_EWB, Classes, Windows; - -const - S_OK = 0; -{$EXTERNALSYM S_OK} - S_FALSE = $00000001; -{$EXTERNALSYM S_FALSE} - E_FAIL = HRESULT($80004005); -{$EXTERNALSYM E_FAIL} - IID_IOleContainer: TGUID = (D1: $0000011B; D2: $0000; D3: $0000; - D4: ($C0, $00, $00, $00, $00, $00, $00, $46)); - SID_SHTMLEditServices: TGUID = (D1: $3050F7F9; D2: $98B5; D3: $11CF; - D4: ($BB, $82, $00, $AA, $00, $BD, $CE, $0B)); - IID_IUnknown: TGUID = (D1: $00000000; D2: $0000; D3: $0000; - D4: ($C0, $00, $00, $00, $00, $00, $00, $46)); - -type - TSnapRect = function(const pIElement: IHTMLElement; var prcNew: TRECT; eHandle: _ELEMENT_CORNER): HRESULT of object; - TPreDrag = function: HRESULT of object; - TPreHandleEvent = function(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT of object; - TPostHandleEvent = function(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT of object; - TTranslateAccelerator = function(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT of object; - TPostEditorEventNotify = function(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT of object; - TErrorEvent = procedure(const ErrorCode: integer; ErrMessage: string) of object; -{$IFDEF USE_Extras} - TMSHTMLEvent = procedure(Event: IHTMLEventObj) of object; - TMousePositionEvent = procedure(const X, Y: integer) of object; - TEvtDispIdEvent = procedure(const inEvtDispId: integer) of object; - TMouseButtonEvent = procedure(const Button: integer) of object; - TKeyStateEvent = procedure(const CapsLock, NumLock, InsertKey, altKey, ctrlKey, shiftKey: Boolean) of object; - TKeyPressEvent = procedure(const Key: integer) of object; - TtypeEvent = procedure(const type_: string) of object; - TtagNameEvent = procedure(const tagName: string) of object; - TtoStringEvent = procedure(const toString: string) of object; - TinnerHtmlEvent = procedure(const innerHtml: string) of object; - TinnerTextEvent = procedure(const innerText: string) of object; -{$ENDIF} -type - IOleContainer = interface(IParseDisplayName) - // The IParseDisplayName interface parses a displayable name string to convert it - // into a moniker for custom moniker implementations. - ['{0000011B-0000-0000-C000-000000000046}'] - function EnumObjects(grfFlags: Longint; out Enum: IEnumUnknown): HRESULT; stdcall; - function LockContainer(fLock: BOOL): HRESULT; stdcall; - end; - -type - TImpIOleContainer = class(TObject, IOleContainer) - protected - m_cRef: DWORD; - public - function _AddRef: Integer; overload; stdcall; - function _Release: Integer; overload; stdcall; - constructor Create; virtual; - destructor Destroy; override; - function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall; - function ParseDisplayName(const bc: IBindCtx; pszDisplayName: POleStr; - out chEaten: Longint; out mkOut: IMoniker): HRESULT; stdcall; - function EnumObjects(grfFlags: Longint; out Enum: IEnumUnknown): HRESULT; stdcall; - function LockContainer(fLock: BOOL): HRESULT; stdcall; - end; - - TEditDesigner = class(TComponent, - IUnknown, // http://msdn.microsoft.com/en-us/library/ms680509.aspx - IHtmlEditDesigner, // Provides methods that enable clients using the editor to intercept Windows Internet Explorer events - // so that they can change the default behavior of the editor. - // http://msdn.microsoft.com/en-us/library/aa704056(VS.85).aspx - IHTMLEditHost, // Provides a method to customize the way that elements are resized and moved. - // http://msdn.microsoft.com/en-us/library/aa704054(VS.85).aspx - IHTMLEditHost2 // Extends IHTMLEditHost with a method that enables you to intercept drag-and-drop operations - // at a stage earlier than the ondragstart event. - // http://msdn.microsoft.com/en-us/library/aa704052(VS.85).aspx - ) - - private - bDesignMode: Boolean; - bConnected: Boolean; - FAbout: string; - FEmbeddedWB: TEmbeddedWB; - FEnable: Boolean; - FOnError: TErrorEvent; -{$IFDEF USE_Extras} - sl: TStringList; - FOnInnerHtml: TinnerHtmlEvent; - FOnInnerText: TinnerTextEvent; - FOnEvtDispId: TEvtDispIdEvent; - FOnKeyState: TKeyStateEvent; - FOnKeyPress: TKeyPressEvent; - FOnMousePosition: TMousePositionEvent; - FOnMouseButton: TMouseButtonEvent; - FonType_: TtypeEvent; - FOnToString: TtoStringEvent; - FOntagName: TtagNameEvent; -{$ENDIF} - FPostEditorEventNotify: TPostEditorEventNotify; - FPostHandleEvent: TPostHandleEvent; - FPreHandleEvent: TPreHandleEvent; - FPreDrag: TPreDrag; - FSnapRect: TSnapRect; - FTranslateAccelerator: TTranslateAccelerator; - procedure SetAbout(Value: string); - protected - {IHTMLEditHost} - function SnapRect(const pIElement: IHTMLElement; var prcNew: TRECT; eHandle: _ELEMENT_CORNER): HRESULT; stdcall; - {IHTMLEditHost2} - function PreDrag: HRESULT; stdcall; - {IHtmlEditDesigner} - function PreHandleEvent(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT; stdcall; - function PostHandleEvent(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT; stdcall; - function TranslateAccelerator(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT; stdcall; - function PostEditorEventNotify(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT; stdcall; - procedure Loaded; override; - - public - procedure SetDesignModeOff; - procedure SetDesignModeOn; - function ConnectDesigner: integer; - function RemoveDesigner: integer; -{$IFDEF USE_Extras} - function SaveToFile(FileName: WideString): HRESULT; - function SaveCompleted(FileName: WideString): HRESULT; - function LoadFromFile(FileName: WideString): HRESULT; - function IsDirty: HRESULT; - function GetHTMLDoc2FromWB: IHTMLDocument2; - function RGBToBGR(RGB: TColor): Integer; - function ColorStr(RGB: TColor): string; - procedure InsertHyperlink; - procedure InsertImage; - procedure InsertRadioButton; - procedure SetFontBold; - procedure SetFontUnderline; - procedure SetFontItalic; - procedure ExecCommand(Command: Widestring; ShowUI: Boolean; Value: Integer); - procedure InsertHTML(HTML: string); - function GetPageProperties: TStrings; -{$ENDIF} - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure BeforeDestruction; override; - function GetContainer(out container: IOleContainer): HRESULT; - published - property About: string read fAbout write SetAbout; - property Enable: Boolean read FEnable write FEnable default True; - property EmbeddedWB: TEmbeddedWB read FEmbeddedWB write FEmbeddedWB; - property OnPreDrag: TPreDrag read FPreDrag write FPreDrag; - property OnPreHandle: TPreHandleEvent read FPreHandleEvent write FPreHandleEvent; - property OnPostHandle: TPostHandleEvent read FPostHandleEvent write FPostHandleEvent; - property OnPostEditorNotify: TPostEditorEventNotify read FPostEditorEventNotify write FPostEditorEventNotify; - property OnError: TErrorEvent read FOnError write FOnError; -{$IFDEF USE_Extras} - property OnInnerText: TInnerTextEvent read FOnInnerText write FOnInnerText; - property OnInnerHtml: TInnerHtmlEvent read FOnInnerHtml write FOnInnerHtml; - property OnKeyPress: TKeyPressEvent read FOnKeyPress write FOnKeyPress; - property OnKeyState: TKeyStateEvent read FOnKeyState write FOnKeyState; - property OnTranslateAccelerator: TTranslateAccelerator read FTranslateAccelerator write FTranslateAccelerator; - property OnMousePosition: TMousePositionEvent read FOnMousePosition write FOnMousePosition; - property OnMouseButton: TMouseButtonEvent read FOnMouseButton write FOnMouseButton; - property OnEvtDispId: TEvtDispIdEvent read FOnEvtDispId write FOnEvtDispId; - property OnSnapRect: TSnapRect read FSnapRect write FSnapRect; - property OnType_: TtypeEvent read FOnType_ write FOnType_; - property OnToString: TtoStringEvent read FOnToString write FOnToString; - property OnTagName: TtagNameEvent read FOnTagName write FOnTagName; -{$ENDIF} - end; - -implementation - -uses - SysUtils; - -var - EditServices: IHTMLEditServices; - -//--{TImpIOleContainer}--------------------------------------------------------- - -constructor TImpIOleContainer.Create; -begin - inherited; - m_cRef := 0; -end; - -destructor TImpIOleContainer.Destroy; -begin - inherited; -end; - -function TImpIOleContainer.EnumObjects(grfFlags: Longint; out Enum: IEnumUnknown): HRESULT; -begin - Result := E_NOINTERFACE; -end; - -function TImpIOleContainer.LockContainer(fLock: BOOL): HRESULT; -begin - Result := E_NOINTERFACE; -end; - -function TImpIOleContainer.ParseDisplayName(const bc: IBindCtx; pszDisplayName: POleStr; - out chEaten: Longint; out mkOut: IMoniker): HRESULT; -begin - Result := E_NOINTERFACE; -end; - -function TImpIOleContainer.QueryInterface(const IID: TGUID; out Obj): HRESULT; -begin - Result := S_FALSE; - if GetInterface(IID, Obj) then - begin - Result := S_OK; - Exit; - end; -{$IFDEF DELPHI7_UP} - if (GUIDToString(IID_IUnknown) = GUIDToString(IID)) or - (GUIDToString(IID_IOleContainer) = GUIDToString(IID)) then - begin - IOleContainer(Obj) := Self; - Result := S_OK; - self._AddRef; - end; -{$ENDIF} -end; - -function TImpIOleContainer._AddRef: Integer; -begin - inc(m_cRef); - Result := m_cRef; -end; - -function TImpIOleContainer._Release: Integer; -begin - Dec(m_cRef); - Result := m_cRef; - if m_cRef = 0 then - Free; -end; - -//--{ TEditDesigner }----------------------------------------------------------- - -function TEditDesigner.GetContainer(out container: IOleContainer): HRESULT; -var - aCntr: TImpIOleContainer; -begin - aCntr := TImpIOleContainer.Create; - Result := aCntr.QueryInterface(IID_IOleContainer, container); -end; - -constructor TEditDesigner.Create; -begin - FAbout := 'TEditDesigner - from http://www.bsalsa.com/'; - FEnable := True; -{$IFDEF USE_Extras} - sl := TStringList.Create; -{$ENDIF} - inherited; -end; - -destructor TEditDesigner.Destroy; -begin -{$IFDEF USE_Extras} - sl.Free; -{$ENDIF} - inherited Destroy; -end; - -procedure TEditDesigner.BeforeDestruction(); -begin - if bConnected then - EditServices.RemoveDesigner(Self); - inherited BeforeDestruction; -end; - -procedure TEditDesigner.Loaded; -begin -{$IFDEF USE_Extras} - sl.Clear; -{$ENDIF} - bConnected := False; - bDesignMode := False; - if not (csDesigning in ComponentState) then - if Assigned(FEmbeddedWB) and FEnable and not FEmbeddedWB.DocumentLoaded then - FEmbeddedWB.AssignEmptyDocument; - inherited; -end; - -function TEditDesigner.SnapRect(const pIElement: IHTMLElement; var prcNew: TRECT; - eHandle: _ELEMENT_CORNER): HRESULT; -begin - Result := S_OK; - if Assigned(FSnapRect) and FEnable then - Result := FSnapRect(pIElement, prcNew, eHandle); -end; - -function TEditDesigner.PreDrag: HRESULT; -begin - Result := S_OK; - if Assigned(FPreDrag) and FEnable then - Result := FPreDrag; -end; - -function TEditDesigner.PostEditorEventNotify(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; -begin - Result := S_FALSE; - if FEnable and not (csDesigning in ComponentState) then - begin -{$IFDEF USE_Extras} - if (inEvtDispId = -606) and Assigned(FOnMousePosition) then - FOnMousePosition(pIEventObj.clientX, pIEventObj.clientY); -{$ENDIF} - if Assigned(FPostEditorEventNotify) then - Result := FPostEditorEventNotify(inEvtDispID, pIEventObj); - end; -end; - -function TEditDesigner.PostHandleEvent(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; -begin - Result := S_FALSE; - if FEnable and not (csDesigning in ComponentState) then - begin - if Assigned(FPostHandleEvent) and FEnable then - Result := FPostHandleEvent(inEvtDispID, pIEventObj); - end; -end; - -function CheckCapsLock: boolean; -begin - if Odd(GetKeyState(VK_CAPITAL)) then - Result := True - else - Result := False; -end; - -function CheckInsertKey: Boolean; -begin - if Odd(GetKeyState(VK_INSERT)) then - Result := True - else - Result := False; -end; - -function CheckNumLock: Boolean; -begin - if Odd(GetKeyState(VK_NUMLOCK)) then - Result := True - else - Result := False; -end; - -function TEditDesigner.PreHandleEvent(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; -{$IFDEF USE_Extras} -var - srcElement: IHTMLElement; -{$ENDIF} -begin - Result := S_FALSE; - if FEnable and not (csDesigning in ComponentState) then - begin - if Assigned(FPreHandleEvent) then - FPreHandleEvent(inEvtDispID, pIEventObj); -{$IFDEF USE_Extras} - srcElement := pIEventObj.srcElement; - if Assigned(srcElement) then - begin - if Assigned(FOnKeyState) then - FOnKeyState(CheckCapsLock, CheckNumLock, CheckInsertKey, pIEventObj.altKey, pIEventObj.ctrlKey, pIEventObj.shiftKey); - if Assigned(FOnEvtDispId) then - FOnEvtDispId(inEvtDispId); - if Assigned(FOnMouseButton) then - FOnMouseButton(pIEventObj.button); - if Assigned(FOnKeyPress) then - FOnKeyPress(pIEventObj.keyCode); - if Assigned(FOnTagName) then - FOnTagName(pIEventObj.srcElement.tagName); - if Assigned(FOnType_) then - FonType_(pIEventObj.type_); - if Assigned(FOnToString) then - FOnToString(pIEventObj.srcElement.toString); - if Assigned(FOnInnerText) then - FOnInnerText(pIEventObj.srcElement.innerText); - if Assigned(FOnInnerHTML) then - FOnInnerHTML(pIEventObj.srcElement.innerHTML); - end; -{$ENDIF} - end; -end; - -function TEditDesigner.TranslateAccelerator(inEvtDispId: Integer; - const pIEventObj: IHTMLEventObj): HRESULT; -begin - Result := S_FALSE; - if FEnable and not (csDesigning in ComponentState) then - begin - if Assigned(FTranslateAccelerator) then - Result := FTranslateAccelerator(inEvtDispID, pIEventObj); - end; -end; - -function TEditDesigner.ConnectDesigner: integer; -begin - Result := S_FALSE; - if FEnable and not (csDesigning in ComponentState) then - begin - if not Assigned(FEmbeddedWB) then - begin - if Assigned(FOnError) then - FOnError(E_FAIL, 'Please assign a TEmbeddedWB!'); - Exit; - end; - FEmbeddedWB.Wait; - SetDesignModeOn; - Result := (FEmbeddedWB.Document as IServiceProvider).Queryservice(SID_SHTMLEDITSERVICES, IID_IHTMLEditServices, EditServices); - if Result = S_OK then - Result := EditServices.AddDesigner(Self); - if ((Result <> S_OK) and Assigned(FOnError)) then - FOnError(E_FAIL, 'Failed loading the designer!') - else - bConnected := True; - end; -end; - -function TEditDesigner.RemoveDesigner: integer; -begin - Result := S_FALSE; - if FEnable and not (csDesigning in ComponentState) then - begin - if not Assigned(FEmbeddedWB) and Assigned(FOnError) and (FEmbeddedWB.Document = nil) then - begin - FOnError(E_FAIL, 'Failed (Document = nil).'); - Exit; - end - else - if FEmbeddedWB.Busy then - begin - FEmbeddedWB.Stop; - FEmbeddedWB.Wait; - end; - Result := EditServices.RemoveDesigner(Self); - if (Result <> S_OK) and (Assigned(FOnError)) then - FOnError(Result, 'Failed to RemoveDesigner.') - else - bConnected := false; - SetDesignModeOff; - end; -end; - -procedure TEditDesigner.SetDesignModeOn; -begin - if not Assigned(FEmbeddedWB) then - begin - if Assigned(FOnError) then - FOnError(E_FAIL, 'Please assign a TEmbeddedWB!'); - Exit; - end; - if not (csDesigning in ComponentState) then - begin - FEmbeddedWB.Wait; - try - (FEmbeddedWB.document as IHTMLDocument2).designMode := 'On'; - bDesignMode := True; - except - if Assigned(FOnError) then - FOnError(E_FAIL, 'Failed to set DesignMode state On.'); - end; - end; -end; - -procedure TEditDesigner.SetDesignModeOff; -begin - if not Assigned(FEmbeddedWB) then - begin - if Assigned(FOnError) then - FOnError(E_FAIL, 'Please assign a TEmbeddedWB!'); - Exit; - end; - if not (csDesigning in ComponentState) then - begin - try - (FEmbeddedWB.document as IHTMLDocument2).designMode := 'Off'; - bDesignMode := False; - except - if Assigned(FOnError) then - FOnError(E_FAIL, 'Failed to set DedignMode state Off.'); - end; - end; -end; - -procedure TEditDesigner.SetAbout(Value: string); -begin - Exit; -end; - -{$IFDEF USE_Extras} - -function TEditDesigner.GetHTMLDoc2FromWB: IHTMLDocument2; -begin - if Assigned(FEmbeddedWB) then - Result := FEmbeddedWB.Document as IHTMLDocument2 - else - Result := nil; -end; - -function TEditDesigner.LoadFromFile(FileName: WideString): HRESULT; -begin - if Assigned(FEmbeddedWB) then - Result := (GetHTMLDoc2FromWB as IPersistFile).Load(PWideChar(FileName), 0) - else - Result := E_FAIL; -end; - -function TEditDesigner.SaveToFile(FileName: WideString): HRESULT; -begin - if Assigned(FEmbeddedWB) then - Result := (GetHTMLDoc2FromWB as IPersistFile).Save(PWideChar(FileName), True) - else - Result := E_FAIL; -end; - -function TEditDesigner.SaveCompleted(FileName: WideString): HRESULT; -begin - if Assigned(FEmbeddedWB) then - Result := (GetHTMLDoc2FromWB as IPersistFile).SaveCompleted(PWideChar(FileName)) - else - Result := E_FAIL; -end; - -function TEditDesigner.IsDirty: HRESULT; -begin - if Assigned(FEmbeddedWB) then - Result := (GetHTMLDoc2FromWB as IPersistFile).IsDirty - else - Result := E_FAIL; -end; - -function TEditDesigner.RGBToBGR(RGB: TColor): Integer; -begin - Result := (RGB and $000000FF) shl 16 + (RGB and $0000FF00) + (RGB and $00FF0000) shr 16; -end; - -function TEditDesigner.ColorStr(RGB: TColor): string; -begin - Result := '#' + IntToHex(RGBToBGR(RGB), 6); -end; - -procedure TEditDesigner.ExecCommand(Command: Widestring; ShowUI: Boolean; Value: Integer); -begin - if Assigned(FEmbeddedWB) then - GetHTMLDoc2FromWB.execCommand(Command, showUI, Value); -end; - -procedure TEditDesigner.InsertHyperlink; -begin - if Assigned(FEmbeddedWB) then - ExecCommand('CreateLink', True, 0); -end; - -procedure TEditDesigner.InsertImage; -begin - if Assigned(FEmbeddedWB) then - ExecCommand('InsertImage', True, 0); -end; - -procedure TEditDesigner.InsertRadioButton; -begin - if Assigned(FEmbeddedWB) then - ExecCommand('InsertInputRadio', True, 0); -end; - -procedure TEditDesigner.SetFontBold; -begin - if Assigned(FEmbeddedWB) then - ExecCommand('Bold', False, 0); -end; - -procedure TEditDesigner.SetFontUnderline; -begin - if Assigned(FEmbeddedWB) then - ExecCommand('Underline', False, 0); -end; - -procedure TEditDesigner.SetFontItalic; -begin - if Assigned(FEmbeddedWB) then - ExecCommand('Italic', False, 0); -end; - -procedure TEditDesigner.InsertHTML(HTML: string); -var - Sel: IHTMLSelectionObject; - Range: IHTMLTxtRange; - Doc: IHTMLDocument2; -begin - if FEnable and Assigned(FEmbeddedWB) and (not (csDesigning in ComponentState)) then - begin - Doc := FEmbeddedWB.Doc2; - if Assigned(Doc) then - begin - Sel := Doc.selection; - if Assigned(Sel) then - begin - if (Sel.type_ = 'None') or (Sel.type_ = 'Text') then - begin - Range := Sel.createRange as IHTMLTxtRange; - Range.pasteHTML(HTML); - end; - end; - end; - end; -end; - -function TEditDesigner.GetPageProperties: TStrings; -var - Doc: IHTMLDocument2; -begin - sl.Clear; - if Assigned(FEmbeddedWB) and FEnable and not (csDesigning in ComponentState) then - begin - FEmbeddedWB.Wait; - Doc := FEmbeddedWB.Doc2; - if (Assigned(Doc)) and (Doc.readyState = 'complete') and (Doc <> nil) then - with sl do - try - Add('URL: ' + Doc.url); - Add('Title: ' + Doc.title); - Add('Protocol: ' + Doc.protocol); - Add('Location: ' + Doc.location.href); - Add('Path Name: ' + Doc.location.pathname); - Add('Port: ' + Doc.location.port); - Add('Protocol: ' + Doc.location.protocol); - Add('Host: ' + Doc.location.host); - Add('Hash: ' + Doc.location.hash); - Add('Search: ' + Doc.location.search); - Add('Last Modified: ' + Doc.lastModified); - Add('Security: ' + Doc.security); - Add('Name Property: ' + Doc.nameProp); - Add('Language: ' + Doc.Body.language); - Add('Lang: ' + Doc.Body.lang); - Add('Design Mode: ' + Doc.designMode); - Add('Charset: ' + Doc.charset); - Add('Default Charset: ' + Doc.defaultCharset); - Add('Cookie: ' + Doc.cookie); - Add('Referrer: ' + Doc.Referrer); - Add('Doc State: ' + Doc.readyState); - except - on E: Exception do - begin - if Assigned(FOnError) then - FOnError(E_Fail, E.Message); - Result := sl; - Exit; - end; - end; - end - else - if Assigned(FOnError) then - FOnError(E_FAIL, 'Please assign a TEmbeddedWB and load a document.'); - Result := sl; -end; -{$ENDIF} - -initialization - OleInitialize(nil); - -finalization - OleUninitialize; - -end. diff --git a/windows/src/ext/embeddedwb/Source/Edithost.pas b/windows/src/ext/embeddedwb/Source/Edithost.pas deleted file mode 100644 index 8e12a0cbe1..0000000000 --- a/windows/src/ext/embeddedwb/Source/Edithost.pas +++ /dev/null @@ -1,130 +0,0 @@ -//*********************************************************** -// TEdithost * -// * -// Freeware Component * -// For Delphi * -// by * -// Per Lindsø Larsen * // per.lindsoe@larsen.dk * -// and bsalsa@gmail.com * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -//$Id: Edithost.pas,v 1.3.2.1 2006/11/29 22:13:00 sergev Exp $ - -unit Edithost; - -interface - -{$I EWB.inc} - -uses - Windows, MSHTML_EWB, Classes, Controls; - -const - S_OK = 0; -{$EXTERNALSYM S_OK} - S_FALSE = $00000001; -{$EXTERNALSYM S_FALSE} - SID_SHTMLEditHost: TGUID = (D1: $3050F6A0; D2: $98B5; D3: $11CF; D4: ($BB, - $82, $00, $AA, $00, $BD, $CE, $0B)); - -type - - TSnapRect = function(const pIElement: IHTMLElement; var prcNew: TRECT; - eHandle: _ELEMENT_CORNER): HResult of object; - TPreDrag = function: HResult of object; - - TEditHost = class(TComponent, - IUnknown, // http://msdn.microsoft.com/en-us/library/ms680509(VS.85).aspx - IHTMLEditHost, // http://msdn.microsoft.com/en-us/library/aa704054.aspx - IHTMLEditHost2 // http://msdn.microsoft.com/en-us/library/aa704052(VS.85).aspx - ) - - private - { Private declarations } - FAbout: string; - FSnapRect: TSnapRect; - FPreDrag: TPreDrag; - FEnabled: Boolean; - procedure SetAbout(const Value: string); - protected - { Protected declarations } - {IHTMLEditHost2} - function PreDrag: HResult; stdcall; - {IHTMLEditHost} - function SnapRect(const pIElement: IHTMLElement; var prcNew: TRECT; eHandle: - _ELEMENT_CORNER): HResult; stdcall; - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - { Public declarations } - published - { Published declarations } - property About: string read FAbout write SetAbout; - property OnSnapRect: TSnapRect read FSnapRect write FSnapRect; - property OnPreDrag: TPreDrag read FPreDrag write FPreDrag; - property Enabled: Boolean read FEnabled write FEnabled default True; - end; - -implementation - -{ TEditHost } - -constructor TEditHost.Create; -begin - FAbout := 'TEditHost - Help & Support http://www.bsalsa.com/'; - FEnabled := True; - inherited; -end; - -destructor TEditHost.Destroy; -begin - inherited Destroy; -end; - -function TEditHost.SnapRect(const pIElement: IHTMLElement; - var prcNew: TRECT; eHandle: _ELEMENT_CORNER): HResult; -begin - Result := S_OK; - if FEnabled then - if Assigned(FSnapRect) and FEnabled then - Result := FSnapRect(pIElement, prcNew, eHandle); -end; - -function TEditHost.PreDrag: HResult; -begin - Result := S_OK; - if FEnabled then - if Assigned(FPreDrag) and FEnabled then - Result := FPreDrag; -end; - -procedure TEditHost.SetAbout(const Value: string); -begin - Exit; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EmbeddedWB.pas b/windows/src/ext/embeddedwb/Source/EmbeddedWB.pas deleted file mode 100644 index 5a539aca07..0000000000 --- a/windows/src/ext/embeddedwb/Source/EmbeddedWB.pas +++ /dev/null @@ -1,3575 +0,0 @@ -(* - Name: EmbeddedWB - Copyright: Copyright (C) 2003-2017 SIL International. - Documentation: - Description: - Create Date: 1 May 2014 - - Modified Date: 1 May 2014 - Authors: mcdurdin - Related Files: - Dependencies: - - Bugs: - Todo: - Notes: - History: 01 May 2014 - mcdurdin - I4214 - V9.0 - Keyman spams message 0x0401 and frequent timer messages too - -*) -//************************************************************* -// TEmbeddedWB * -// * -// Freeware Component * -// For Delphi 5 to Delphi XE * -// by * -// Per Lindso Larsen * -// Developing Team: * -// Eran Bodankin (bsalsa) -(bsalsa@gmail.com) * -// Thomas Stutz -(smot777@yahoo.com) * -// * -// Contributors: * -// Neil Moss (NeilM@BuchananInternational.com) * -// Mathias Walter (mich@matze.tv) * -// Serge Voloshenyuk (SergeV@bsalsa.com) * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/change/modify the component under 4 conditions: -1. In your web site, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit EmbeddedWB; - -interface - -{$I EWB.inc} - -uses - Windows, Messages, - Classes, EwbCore, Dialogs, MSHTML_EWB, EwbAcc, Controls, Graphics, Forms, - ExtCtrls, ActiveX, ShlObj, SysUtils, SHDocVw_EWB, EwbCoreTools, UrlMon -{$IFDEF DELPHI6_UP}, Variants{$ENDIF} -{$IFDEF Enable_EwbMSHTMLEvents}, MSHTMLEvents{$ENDIF} -{$IFDEF AutoUse_EwbControl}, EwbControlComponent{$ENDIF}; - -type - TEmbeddedWB = class; - - {Private events} - TShowDialogEvent = procedure(Sender: TObject; h: THandle; StyleEx: Integer; OldCaption: string; - var NewCaption: WideString; var Cancel: Boolean) of object; - TMsgEvent = procedure(Sender: TObject; var Msg: TMessage; var Handled: Boolean) of object; - TOnBusyWait = procedure(Sender: TEmbeddedWB; AStartTime: Cardinal; var TimeOut: Cardinal; var Cancel: Boolean) of object; - TUserAgentMode = (uaDefault, uaInternal, uaRegistry); - TKeyEventEx = procedure(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState) of object; - THookChildWindowEvent = procedure(Sender: TObject; WinHandle: HWND; WinClass: string; var Handled: Boolean) of object; - THTMLCodeChangeEvent = procedure(Sender: TObject; HTMLCode: TStrings; var Handled: Boolean) of object; - - TScrollIntoView = (sivNoScroll, sivFirstMatch, sivLastMatch); - TSearchFlags = set of (sfMatchWholeWord, sfMatchCase); - TVariantArray = array of OleVariant; - -{$IFDEF USE_EwbTools} - TSearchResult = (srNotFound, srEndOf, srFound); - TSearchResults = set of TSearchResult; - TSearchDirections = (sdDown, sdUp); -{$ENDIF} - - {============================================================================} - // TProxySettings - {============================================================================} - TProxySettings = class(TPersistent) - private - FPort: Integer; - FAddress: string; - FUserName: string; - FPassword: string; - FAutoLoadProxy: Boolean; - FUserAgent: string; - FBypass: string; - public -{$IFDEF USE_EwbTools} - function SetProxy(UserAgent, Address, Bypass: string): Boolean; overload; - function SetProxy(UserAgent, Address, UserName, Password: string; Port: Integer): Boolean; overload; - function SetProxyFromPAC(UserAgent, PACFile: string): Boolean; -{$ENDIF} - published - property AutoLoadProxy: Boolean read FAutoLoadProxy write FAutoLoadProxy default False; - property Port: Integer read FPort write FPort default 80; - property Password: string read FPassword write FPassword; - property Address: string read FAddress write FAddress; - property UserName: string read FUserName write FUserName; - property UserAgent: string read FUserAgent write FUserAgent; - property Bypass: string read FBypass write FBypass; - end; - - {============================================================================} - // TDialogBoxes - {============================================================================} - TDialogBoxes = class(TPersistent) - private - FDisableAll: Boolean; - FReplaceCaption: Boolean; - FReplaceIcon: Boolean; - FNewCaption: WideString; - published - property DisableAll: Boolean read FDisableAll write FDisableAll default False; - property ReplaceCaption: Boolean read FReplaceCaption write FReplaceCaption default True; - property ReplaceIcon: Boolean read FReplaceIcon write FReplaceIcon default True; - property NewCaption: WideString read FNewCaption write FNewCaption; - end; - - {============================================================================} - // TDisableErrors - {============================================================================} - TDisableErrors = class(TPersistent) - private - FEnableDDE: Boolean; - FfpExceptions: Boolean; - FScriptErrorsSuppressed: Boolean; - procedure SetfpExceptions(const Value: Boolean); - published - property EnableDDE: Boolean read FEnableDDE write FEnableDDE default True; - property fpExceptions: Boolean read FfpExceptions write SetfpExceptions default True; - property ScriptErrorsSuppressed: Boolean read FScriptErrorsSuppressed write FScriptErrorsSuppressed default True; - end; - - {============================================================================} - // TVisualEffects - {============================================================================} - TVisualEffects = class(TPersistent) - private - FDisableSounds: Boolean; - FTextSize: Integer; - published - property TextSize: Integer read FTextSize write FTextSize default 2; - property DisableSounds: Boolean read FDisableSounds write FDisableSounds default False; - end; - - {============================================================================} - // TMargins - {============================================================================} - TMeasure = (mMetric, mUS, mUnknown); - TPrintOrientationOption = (poPortrait, poLandScape); - TMargins = class(TPersistent) - private - FLeft: Real; - FRight: Real; - FTop: Real; - FBottom: Real; - published - property Left: Real read FLeft write FLeft; - property Right: Real read FRight write FRight; - property Top: Real read FTop write FTop; - property Bottom: Real read FBottom write FBottom; - end; - - {============================================================================} - // TPrintOptions - {============================================================================} - TPrintOptions = class(TPersistent) - private - FEnabled: Boolean; - FHTMLHeader: TStrings; - FHeader: string; - FFooter: string; - FMargins: TMargins; - FOrientation: TPrintOrientationOption; - FMeasure: TMeasure; - procedure SetHTMLHeader(const Value: Tstrings); - public - HideSetup: Boolean; - property Measure: TMeasure read FMeasure; - published - property Enabled: Boolean read FEnabled write FEnabled default False; - property Margins: TMargins read FMargins write FMargins; - property Header: string read FHeader write FHeader; - property HTMLHeader: TStrings read FHTMLHeader write SetHTMLHeader; - property Footer: string read FFooter write FFooter; - property Orientation: TPrintOrientationOption read FOrientation write FOrientation; - end; - - {============================================================================} - // TEmbeddedWB - {============================================================================} - TEmbeddedWB = class(TCustomEmbeddedWB, - IDocHostUIHandler, // http://msdn.microsoft.com/en-us/library/aa753260(VS.85).aspx - IInternetProtocol, // http://msdn.microsoft.com/en-us/library/aa767883(VS.85).aspx - IInternetProtocolRoot) // http://msdn.microsoft.com/en-us/library/ms835683.aspx - private - FAbout: string; - FBindInfo: IInternetBindInfo; - FDestroying: Boolean; - FDialogBoxes: TDialogBoxes; - FDisabledPopupMenuItems: TIEPopupMenuItems; - FDisableErrors: TDisableErrors; - FEnableMessageHandler: Boolean; - FHostCSS: string; - FHostNS: string; - FHTMLChar: Char; - FHTMLCode: TStringList; - FModified: Boolean; - FName: string; - FPrintOptions: TPrintOptions; - FProtSink: IInternetProtocolSink; - FProxySettings: TProxySettings; - FResizing: Boolean; - FRuntimeMeasure: TMeasure; - FSearchText: string; - FSilent: Boolean; - FTextRange: IHTMLTxtRange; - FUserAgent: string; - FUserAgentInt: string; - FUserAgentMode: TUserAgentMode; - FUserAgentReg: string; - FUserAgentRegSet: Boolean; - FVisible: Boolean; - FVisualEffects: TVisualEffects; - FStopped: Boolean; - FWinXPSP2orLater: Boolean; - FWndProcSubClassed: Boolean; - - FOnBusyWait: TOnBusyWait; - FOnClick: TMouseEvent; - FOnCloseQuery: TCloseQueryEvent; - FOnKeyDown: TKeyEventEx; - FOnKeyUp: TKeyEventEx; - FOnMessage: TMsgEvent; - FOnShowDialog: TShowDialogEvent; - FOnVisible: TEWBOnVisible; - FOnHTMLCodeChange: THTMLCodeChangeEvent; - - {=ParentFormWndProc =============================} - -{$IFDEF Enable_HookParentFormWndProc} - FOldWindowProc: TWndMethod; - FParentForm: TForm; -{$ENDIF} - - {=Mouse Events ==================================} -{$IFDEF Enable_MouseEnterLeaveEvents} - FOnMouseEnter: TNotifyEvent; - FOnMouseLeave: TNotifyEvent; -{$ENDIF} - - {=SubClass ChildWindows =========================} - -{$IFDEF Enable_SubClassChildWindows} - FDefInetExplorerServerProc: Pointer; - FDefShellObjViewProc: Pointer; - FDefSysListViewObjProc: Pointer; - FShellDocObjViewHandle: THandle; - FSysListViewHandle: THandle; - FInetExplorerServerHandle: THandle; - FShellDocObjInstance: Pointer; - FInetExplorerServerInstance: Pointer; - FSysListViewObjInstance: Pointer; -{$ENDIF} - -{$IFDEF Enable_EwbMSHTMLEvents} - FSinkComponent: TMSHTMLHTMLDocumentEvents; -{$ENDIF} - -{$IFDEF USE_EwbTools} - FLastSearchDirection: TSearchDirections; -{$ENDIF} - -{$IFDEF DELPHI12_UP} - FEncoding: TEncoding; -{$ENDIF} - {=UserAgent stuff ===============================} - function OnSetUserAgentEvent(var UserAgent: string): HRESULT; - procedure RestoreUserAgentReg; - procedure SetUserAgent(const Value: string); - procedure SetUserAgentInt; - procedure SetUserAgentMode(Value: TUserAgentMode); - procedure SetUserAgentReg; - procedure UpdateUserAgent; - - {=Misc ==========================================} - function GetDesginMode: Boolean; - function GetModified: Boolean; - function GetPrintValues: Boolean; - procedure HTMLCodeChanged(Sender: TObject); - procedure OnHookChildWindows(Sender: TObject); - procedure SetAbout(Value: string); - procedure SetDesginMode(Value: Boolean); - procedure SetHTMLCode(Value: TStringList); - procedure SetModified(Value: Boolean); - procedure SetActiveControl(ParentForm: TCustomForm = nil); - {=Events ========================================} - procedure CMVisibleChanged(var MSG: TMessage); message CM_VISIBLECHANGED; - procedure WMSetWBFocus(var Msg: TMessage); message WM_SETWBFOCUS; - procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS; - -{$IFDEF Enable_MouseEnterLeaveEvents} - procedure HandleMouseEnterLeaveEvents(var msg: TMessage); -{$ENDIF} - -{$IFDEF Enable_HookParentFormWndProc} - procedure HandleDialogBoxes(var AMsg: TMessage); -{$ENDIF} - -{$IFDEF USE_EwbDDE} - procedure DDEWndProc(var AMsg: TMessage); -{$ENDIF} - -{$IFDEF Enable_HookParentFormWndProc} - procedure UnHookParentFormWndProc; - procedure FormWndProc(var AMsg: TMessage); - procedure HookParentFormWndProc; -{$ENDIF} - -{$IFDEF Enable_SubClassChildWindows} - procedure ShellDocObjWndProc(var Msg: TMessage); - procedure InetExplorerServerWndProc(var Msg: TMessage); - procedure SysListViewWndProc(var Msg: TMessage); - procedure InitEWBChildHook; - procedure HookChildWindows; - procedure UnHookChildWindows; -{$ENDIF} - -{$IFDEF Enable_EwbMSHTMLEvents} - procedure SetSinkComponent(Value: TMSHTMLHTMLDocumentEvents); -{$ENDIF} - protected - FSearchTxtRange: IHTMLTxtRange; - {IDocHostUIHandler Interface} - function GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT; stdcall; - {IInternetProtocolRoot Interface} - function Abort(hrReason: HRESULT; dwOptions: DWORD): HRESULT; stdcall; - function Continue(const ProtocolData: TProtocolData): HRESULT; stdcall; - function Resume: HRESULT; stdcall; - function Start(szUrl: PWideChar; OIProtSink: IInternetProtocolSink; - OIBindInfo: IInternetBindInfo; grfPI, dwReserved: DWORD): HRESULT; stdcall; - function Suspend: HRESULT; stdcall; - function Terminate(dwOptions: DWORD): HRESULT; stdcall; - {IInternetProtocol Interface} - function Read(pv: Pointer; cb: ULONG; out cbRead: ULONG): HResult; stdcall; - function Seek(dlibMove: LARGE_INTEGER; dwOrigin: DWORD; out libNewPosition: ULARGE_INTEGER): HRESULT; stdcall; - function LockRequest(dwOptions: DWORD): HRESULT; stdcall; - function UnlockRequest: HRESULT; stdcall; -{$IFDEF USE_EwbDDE} - function DDEExecute(iwParam: WPARAM; ilParam: LPARAM): LRESULT; - function DDEInitiate(iwParam: WPARAM; ilParam: LPARAM): LRESULT; - function DDETerminate(iwParam: WPARAM; ilParam: LPARAM): BOOL; -{$ENDIF} - function PrintMarginStr(M: Real): string; - function FilterPopupMenu: Boolean; override; - procedure DoFilterPopupMenu(Sender: TObject; ID: DWORD; Menu: HMENU; const Context: IDispatch); override; - function GetVisible: Boolean; - - procedure SetRegisterAsDropTarget(Value: Boolean); reintroduce; - function GetRegisterAsDropTarget: Boolean; reintroduce; - procedure SetRegisterAsBrowser(Value: Boolean); reintroduce; - function GetRegisterAsBrowser: Boolean; reintroduce; - procedure SetSilent(Value: Boolean); reintroduce; - function GetSilent: Boolean; reintroduce; - function GetName: string; reintroduce; - procedure SetName(Value: string); reintroduce; - function GetParent: TWinControl; reintroduce; - procedure SetParent(Control: TWinControl); reintroduce; - function GetHWND: Integer; - procedure SetVisible(AValue: Boolean); - procedure WndProc(var AMsg: TMessage); override; - public - SecurityManager: IInternetSecurityManager; - ZoneManager: IInternetZoneManager; - FResizable: Boolean; - property Name: string read GetName write SetName; - property HWND: Integer read GetHWND; - property Parent: TWinControl read GetParent write SetParent; - property Resizable: Boolean read FResizable write FResizable default True; -{$IFDEF DELPHI12_UP} - property Encoding: TEncoding read FEncoding write FEncoding; -{$ENDIF} - constructor Create(Owner: TComponent); override; - destructor Destroy; override; - procedure SetFocus; override; - function Focused: Boolean; override; - - function LoadFrameFromStream(FrameNo: Integer; AStream: TStream): HRESULT; - function LoadFrameFromStrings(FrameNo: Word; const AStrings: TStrings): HRESULT; - function LoadFromStream(const AStream: TStream): HRESULT; - function LoadFromStrings(const AStrings: TStrings): HRESULT; overload; - function LoadFromStrings(const AStrings: TStrings; AddHtmlTags: Boolean): HRESULT; overload; - function LoadFromString(const St: string): HRESULT; // by M.Grusha - function LoadFromFile(const FileName: string): HRESULT; // by M.Grusha - procedure LoadFromImage(Image: TImage); -{$IFDEF DELPHI6_UP} - function LoadFromWideString(const WideSt: WideString): HRESULT; -{$ENDIF} - function SaveFrameToFile(FrameNo: Word; const FName: string): HRESULT; - function SaveFrameToStream(FrameNo: Integer; AStream: TStream): HRESULT; - function SaveFrameToStrings(FrameNo: Integer; AStrings: TStrings): HRESULT; - function SaveToFile(const FileName: string): HRESULT; - function SaveToStream(AStream: TStream): HRESULT; - function SaveToStrings(AStrings: TStrings): HRESULT; - - function DocumentLoaded: Boolean; overload; - function DocumentLoaded(out Doc2: IHTMLDocument2): Boolean; overload; - procedure AssignEmptyDocument(bWait: Boolean = False); - function GetDocument: IHTMLDocument2; - function GetFrame(FrameNo: Word): IWebbrowser2; - procedure RefreshFrame(FrameNo: Word); - function GetFrameFromDocument(SourceDoc: IHTMLDocument2; FrameNo: Integer): IWebBrowser2; - function GetActiveFrame(): IHTMLDocument2; overload; - function GetActiveFrame(Doc: IHTMLDocument2): IHTMLDocument2; overload; - function GetActiveElement(Doc: IHTMLDocument2 = nil): IHTMLElement; - function GetSelectedText(ReturnAsHTML: Boolean = False; bOnlyTopLevel: Boolean = False): string; - function GetSelLength(bOnlyTopLevel: Boolean = False): Integer; - - function Copy: Boolean; - function Cut: Boolean; - function Paste: Boolean; - function PasteSpecial: Boolean; - function SelectAll: Boolean; - function ClearSelection: Boolean; - function Undo: Boolean; - function Redo: Boolean; - function Delete: Boolean; - - procedure Stop; - procedure GoBack; - procedure GoForward; - function Go(Url: string; TimeOut: LongWord = 0): Boolean; - function NavigateWait(const URL: WideString; TimeOut: LongWord = 0): Boolean; - procedure NavigateFolder(CSIDL: Integer); - procedure NavigatePidl(pidl: PItemIdlist); - function NavigateToFrame(FrameList: string): IHTMLDocument2; - function Wait(TimeOut: Longword = 0): Boolean; - function WaitWhileBusy(TimeOut: Longword = 0): Boolean; - - class function GetIEHandle(WebBrowser: TEmbeddedWB; ClassName: string): HWND; - function DownloadFile(SourceFile, DestFile: string): Boolean; - function GetIEHomePage: string; - function VariantIsObject(const value: OleVariant): Boolean; - function IsCommandEnabled(sCmdId: WideString): Boolean; - function QueryCommandValue(sCmdId: WideString): OleVariant; - function InvokeCMD(InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant): HRESULT; - procedure InvokeIEServerCommand(Cmd: Integer); - procedure Loaded; override; - procedure LoadSettings; - procedure ShowImportExportFavoritesAndCookies; - procedure ShowAboutBox; reintroduce; - -{$IFDEF USE_EwbTools} - function AddHtmlToAboutBlank(StringToHtml: string): Boolean; - function CheckIfInRestricredList(Host: string; SecureSite: Boolean): Boolean; - function CheckIfInTrustedList(const Host: string; SecureSite: Boolean): Boolean; - function CheckOnlineStatus: Boolean; - function DecodeUrl(const InputStr: string): string; - function DocumentSource: string; // By Bitmaker - function DocumentSourceText: string; // By Bitmaker - function EncodeUrl(const InputStr: string; const bQueryStr: Boolean): string; - function ExecScriptEx(MethodName: string; ParamValues: array of const): OleVariant; - function FillForm(FieldName: string; Value: string; ElementNr: Integer = -1): Boolean; - function FrameCount: LongInt; - function FrameCountFromDocument(SourceDoc: IHTMLDocument2): Integer; - function GetBmpFromBrowser(FileName: string): Boolean; - function GetCachedFileFromURL(ItemUrl: string): string; - function GetCookie: string; - function GetCookiesPath: string; - function GetDefaultBrowserFromRegistry: string; - function GetFavoritesPath: string; - function GetFieldValue(FieldName: string): string; - function GetHistoryPath: string; - function GetIPAndHostName(var HostName, IPaddr, WSAErr: string): Boolean; - function GetJpegFromBrowser(FileName: string; SourceHeight, SourceWidth, TargetHeight, TargetWidth: Integer): Boolean; - function GetLastVisitedPage(var LastVisitedPage: string): Boolean; - function GetSpecialFolderPath(CallerHandle: THandle; CSIDL: Integer): PChar; - function GetSSLStatus(var SSLName, SSLDescription: string): Boolean; - function GetURLSecurityZone(var ZoneName, ZoneDescription: string; var Icon: TIcon): Boolean; - function GetWordAtCursor(const X, Y: Integer): string; // by M.Grusha - function GetZoneAttributes(const URL: string): TZoneAttributes; - function GetZoneIconToForm: Boolean; - function HScrollBarPosition: Integer; - function HScrollBarVisible: Boolean; - function ImportCertFile(FileName, StoreType: string): Boolean; - function IsGlobalOffline: Boolean; - function IsValidProtocol(const URL: string): Boolean; - function OpenClient(Client: string): Boolean; - function OpenDialog: Boolean; - - function PageSetup(UsePrintOptions: Boolean = False): Boolean; - function SaveDialog: Boolean; - function SaveDialogEx(AFilter: string = ''; ATitle: string = ''): string; - function SaveLastVisitedPage: Boolean; - function SearchNextText(const Value: string; Direction: TSearchDirections = sdDown; - AutoSelect: Boolean = True): TSearchResults; // by Grusha M.A. - function SearchString(const strText: string): Boolean; - function SearchText(const Value: string; const iPos: Integer = 1): IHTMLTxtRange; //by JJM - function SetCharartersSet(const ACharactersSet: string; Refresh: Boolean = True): Boolean; - function ShowFindDialog: Boolean; - function ShowInternetOptions: Boolean; - function ShowOrganizeFavorites: Boolean; - function ShowPageProperties: Boolean; - function URLFromFavorites(const dotURL: string): string; - function UrlFromHistory(ShellFolder: IShellFolder; pidl: PItemIDList): string; - function ViewPageSourceHtml: Boolean; - function VScrollBarPosition: Integer; - function VScrollBarVisible: Boolean; - procedure AddToFavorites(URL, Title: string); - procedure AddToRestrictedSiteList(URL: string); - procedure AddToTrustedSiteList(URL: string); - procedure ClearCache; - procedure ClearHistory; - procedure ClearTypedUrls; - procedure CreateDesktopShortcut; - procedure CreateNewMail; - procedure DisableNavSound(bDisable: Boolean); - procedure ExecScript(sExpression, sLanguage: string); - procedure ExploreFolder(Path: string); - procedure FillFormAndExcecute; - procedure GetThumbnail(var Image: TImage); - procedure GetZoneIcon(IconPath: string; var Icon: TIcon); - procedure GoAboutBlank; - procedure GoDownloadFile(URL: string); - procedure GoDownloadMaskedFile(SourceFile, TargetFile: string; Notify: Boolean); - procedure GoNoHistory(const URL: string); - procedure GoSearchInGoogle(SearchTerm: string); - procedure GoSearchInMSN(SearchTerm: string); - procedure GoSearchInYahoo(SearchTerm: string); - procedure GoWithQueryDetails(Url, Query: string); - procedure OpenIEBrowserWithAddress; - procedure Print; - procedure PrintPreview; - procedure PrintPreviewExtended(nCMDShow: Integer); - procedure PrintPreviewFromTemplate(const TemplateFileName: string); - procedure PrintSetup; - procedure PrintWithOptions; - procedure RefreshProxy; - procedure RestoreApplicationFormSize; - procedure SaveApplicationFormSize; - procedure SaveImagesDialog; - procedure SavePageTextDialog; - procedure ScrollToBottom; - procedure ScrollToID(ID: Integer); - procedure ScrollToIDEx(ID: string); // by M.Grusha - procedure ScrollToPosition(X, Y: Integer); - procedure ScrollToTop; - procedure SearchAndHighlight(AText: string; const ACaption, APrompt: string; - Flags: TSearchFlags = []; cbackColor: string = 'yellow'; cForeColor: string = ''; - ScrollIntoView: TScrollIntoView = sivNoScroll); overload; - procedure SearchAndHighlight(aText: string; Flags: TSearchFlags = []; - cbackColor: string = 'yellow'; cForeColor: string = ''; - ScrollIntoView: TScrollIntoView = sivNoScroll); overload; - procedure SendPageInMailAsAttachment(aOwner: TComponent; FileName, Subject, Body: string); - procedure SendURLInMail; - procedure SetNewHomePage(HomePage: string); - procedure ShowIEVersionInfo; - procedure ViewPageLinksToStrings(LinksList: TStrings); - procedure ViewPageSourceHtmlToStrings(HtmlList: TStrings); - procedure ViewPageSourceText; - procedure ViewPageSourceTextToStrings(TextList: TStrings); - procedure WorkOffline; - procedure WorkOnline; -{$ENDIF} -{$IFDEF Enable_EwbMSHTMLEvents} - property SinkComponent: TMSHTMLHTMLDocumentEvents read FSinkComponent write SetSinkComponent; -{$ENDIF} - property Modified: Boolean read GetModified write SetModified; - property DesignMode: Boolean read GetDesginMode write SetDesginMode; - published - property Silent: Boolean read GetSilent write SetSilent default True; - property RegisterAsDropTarget: Boolean read GetRegisterAsDropTarget write SetRegisterAsDropTarget default True; - property RegisterAsBrowser: Boolean read GetRegisterAsBrowser write SetRegisterAsBrowser default False; - property About: string read FAbout write SetAbout; - property HostCSS: string read FHostCSS write FHostCSS; - property HostNS: string read FHostNS write FHostNS; - property EnableMessageHandler: Boolean read FEnableMessageHandler write FEnableMessageHandler default True; - property DisabledPopupMenuItems: TIEPopupMenuItems read FDisabledPopupMenuItems - write FDisabledPopupMenuItems default []; - property DisableErrors: TDisableErrors read FDisableErrors write FDisableErrors; - property DialogBoxes: TDialogBoxes read FDialogBoxes write FDialogBoxes; - property HTMLCode: TStringList read FHTMLCode write SetHTMLCode; - property OnCloseQuery: TCloseQueryEvent read FOnCloseQuery write FOnCloseQuery; - property OnMessage: TMsgEvent read FOnMessage write FOnMessage; - property OnShowDialog: TShowDialogEvent read FOnShowDialog write FOnShowDialog; - property PrintOptions: TPrintOptions read FPrintOptions write FPrintOptions; - property ProxySettings: TProxySettings read FProxySettings write FProxySettings; - property VisualEffects: TVisualEffects read FVisualEffects write FVisualEffects; - property Visible: Boolean read GetVisible write SetVisible default True; - property UserAgent: string read FUserAgent write SetUserAgent; - property UserAgentMode: TUserAgentMode read FUserAgentMode write SetUserAgentMode default uaDefault; - property OnBusyWait: TOnBusyWait read FOnBusyWait write FOnBusyWait; - property OnVisible: TEWBOnVisible read FOnVisible write FOnVisible; - property OnKeyDown: TKeyEventEx read FOnKeyDown write FOnKeyDown; - property OnKeyUp: TKeyEventEx read FOnKeyUp write FOnKeyUp; - property OnClick: TMouseEvent read FOnClick write FOnClick; - property OnHTMLCodeChange: THTMLCodeChangeEvent read FOnHTMLCodeChange write FOnHTMLCodeChange; -{$IFDEF Enable_MouseEnterLeaveEvents} - property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; - property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; -{$ENDIF} - end; - -implementation - -uses -{$IFDEF USE_EwbTools} - EWBTools, -{$ENDIF} -{$IFDEF USE_EwbDDE} - EwbDDE, -{$ENDIF} - Registry, CommCtrl, ComObj, ShellAPI, OleServer, EwbIEConst, WinInet; - -var - // Boolean variables that must be global to restore settings for MDI cases - // or multiple EWB instances -{$IFDEF USE_EwbDDE} - HtmlFileApp, HtmlFileTopic: string; //All DDE variables - FHtmlCommand, bDontRespond: Boolean; - FoldersApp, FoldersTopic: string; - DDEHWND: THandle = 0; -{$ENDIF} - bPrintOptionsEnable: Boolean; - wSaved8087CW: Word; - bProxy: Boolean; - bNavSound: Boolean; - bOleInitialize: Boolean; -{$IFDEF Enable_HookParentFormWndProc} - bWndProcHooked: Boolean; - PrintingWithOptions: Boolean; -{$ENDIF} - bInvokingPageSetup: Boolean; -{$IFDEF AutoUse_EwbControl} - EwbControl: TEwbControl; -{$ENDIF} - - //=== Print Options-Persistent ================================================= - -procedure TPrintOptions.SetHTMLHeader(const Value: Tstrings); -begin - FHTMLHeader.Assign(Value); -end; - -//=== DisableErrors-Persistent ================================================= - -procedure TDisableErrors.SetfpExceptions(const Value: Boolean); -begin - if not Value then - Set8087CW($133F) - else - Set8087CW(wSaved8087CW); - FfpExceptions := Value; -end; - -//=== Accesories =============================================================== - -function NextPIDL(IDList: PItemIDList): PItemIDList; -begin - Result := IDList; - Inc(PAnsiChar(Result), IDList^.mkid.cb); -end; - -function GetPIDLSize(IDList: PItemIDList): Integer; -begin - Result := 0; - if Assigned(IDList) then - begin - Result := SizeOf(IDList^.mkid.cb); - while IDList^.mkid.cb <> 0 do - begin - Result := Result + IDList^.mkid.cb; - IDList := NextPIDL(IDList); - end; - end; -end; - -function SaveDocToStrings(Doc: IDispatch; var AStrings: TStrings): HRESULT; -var - IpStream: IPersistStreamInit; - AStream: TMemoryStream; -begin - Result := S_FALSE; - AStream := TMemoryStream.Create; - try - IpStream := doc as IPersistStreamInit; - if Assigned(IpStream) then - if Succeeded(IpStream.Save(TStreamAdapter.Create(AStream), True)) then - begin - AStream.Seek(0, 0); - AStrings.LoadFromStream(AStream); - Result := S_OK; - end; - finally - AStream.Free; - end; -end; - -function SaveDocToStream(Doc: IDispatch; var AStream: TStream): HRESULT; -var - IpStream: IPersistStreamInit; -begin - Result := S_FALSE; - if Assigned(Doc) then - begin - IpStream := Doc as IPersistStreamInit; - if Assigned(IpStream) then - Result := IpStream.Save(TStreamAdapter.Create(AStream), True); - end; -end; - -function SaveDocToFile(Doc: IDispatch; const FName: string): HRESULT; -var - PFile: IPersistFile; -begin - Result := S_FALSE; - if Assigned(Doc) then - begin - PFile := Doc as IPersistFile; - if Assigned(PFile) then - Result := PFile.Save(StringToOleStr(FName), False); - end; -end; - -function GetRunTimeMeasure: TMeasure; -var - Buf: array[1..10] of Char; -begin - Result := mUnknown; - FillChar(Buf, SizeOf(Buf), 0); - if GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_IMEASURE, @Buf[1], SizeOf(Buf)) <> 0 then - begin - if Buf[1] = '1' then - Result := mUS - else - Result := mMetric; - end; -end; - -//=== IInternetProtocolRoot Interface ========================================== - -function TEmbeddedWB.Start(szUrl: PWideChar; OIProtSink: IInternetProtocolSink; - OIBindInfo: IInternetBindInfo; grfPI, dwReserved: DWORD): HRESULT; stdcall; -var - iNeg: IHTTPNegotiate; - szHeaders, szAdditionalHeaders: PWideChar; - SrvProv: IServiceProvider; -begin - FProtSink := OIProtSink; - FBindInfo := OIBindInfo; - - (OIProtSink as iUnknown).QueryInterface(IServiceProvider, SrvProv); - if Assigned(SrvProv) then - begin - SrvProv.QueryService(IID_IHTTPNegotiate, IID_IHTTPNegotiate, iNeg); - if Assigned(iNeg) then - begin - szHeaders := nil; - szAdditionalHeaders := nil; - iNeg.BeginningTransaction(szUrl, szHeaders, 0, szAdditionalHeaders); - end; - end; - Result := INET_E_USE_DEFAULT_PROTOCOLHANDLER; -end; - -function TEmbeddedWB.Terminate(dwOptions: DWORD): HRESULT; stdcall; -begin - Result := S_OK; -end; - -function TEmbeddedWB.Continue(const ProtocolData: TProtocolData): HRESULT; -begin - Result := S_OK; -end; - -function TEmbeddedWB.Abort(hrReason: HRESULT; dwOptions: DWORD): HRESULT; stdcall; -begin - Result := E_NOTIMPL; -end; - -function TEmbeddedWB.Suspend: HRESULT; stdcall; -begin - Result := E_NOTIMPL; -end; - -function TEmbeddedWB.Resume: HRESULT; stdcall; -begin - Result := E_NOTIMPL; -end; - -//=== IInternetProtocol Interface ============================================= - -function TEmbeddedWB.LockRequest(dwOptions: DWORD): HRESULT; stdcall; -begin - Result := S_OK; -end; - -function TEmbeddedWB.Read(pv: Pointer; cb: ULONG; out cbRead: ULONG): HRESULT; -begin - Result := S_OK; -end; - -function TEmbeddedWB.Seek(dlibMove: LARGE_INTEGER; dwOrigin: DWORD; - out libNewPosition: ULARGE_INTEGER): HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TEmbeddedWB.UnlockRequest: HRESULT; -begin - Result := S_OK; -end; - -//=== DDE stuff ================================================================ - -{$IFDEF USE_EwbDDE} - -function TEmbeddedwb.DDETerminate(iwParam: WPARAM; ilParam: LPARAM): BOOL; -begin - Result := PostMessage(THandle(iwParam), WM_DDE_TERMINATE, handle, 0); -end; - -function TEmbeddedWB.DDEInitiate(iwParam: WPARAM; ilParam: LPARAM): LResult; -var - dwThreadID: DWORD; - dwProcessID: DWORD; - hwndClient: Integer; - aInApp, aInTopic, aOutApp, aOutTopic: ATOM; - szInAppName, szInAppTopic: array[0..255] of Char; -begin - FillChar(szInAppName, SizeOf(szInAppName), 0); - FillChar(szInAppTopic, SizeOf(szInAppTopic), 0); - if bDontRespond then - begin - Result := 0; - Exit; - end; - hwndClient := THandle(iwParam); - dwThreadID := GetWindowThreadProcessId(hwndClient, @dwProcessID); - if (GetCurrentProcessId() <> dwProcessID) or (GetCurrentThreadID() <> dwThreadID) then - begin - Result := 0; - Exit; - end; - aInApp := LOWORD(ilParam); - aInTopic := HIWORD(ilParam); - GlobalGetAtomName(aInApp, szInAppName, SizeOf(szInAppName)); - GlobalGetAtomName(aInTopic, szInAppTopic, SizeOf(szInAppTopic)); - if szInAppName = HtmlFileApp then - begin - FHtmlCommand := True; - aOutApp := GlobalAddAtom(PChar(HtmlFileApp)); - aOutTopic := GlobalAddAtom(PChar(HtmlFileTopic)); - if ((aOutApp <> 0) and (aOutTopic <> 0) and (aOutApp = aInApp) and (aOutTopic = aInTopic)) then - SendMessage(hwndClient, WM_DDE_ACK, WPARAM(handle), MAKELPARAM(aOutApp, aOutTopic)); - if (aOutApp <> 0) then - GlobalDeleteAtom(aOutApp); - if (aOutTopic <> 0) then - GlobalDeleteAtom(aOutTopic); - end - else - begin - FHtmlCommand := False; - aOutApp := GlobalAddAtom(PChar(FoldersApp)); - aOutTopic := GlobalAddAtom(PChar(FoldersTopic)); - if ((aOutApp <> 0) and (aOutTopic <> 0) and (aOutApp = aInApp) and (aOutTopic = aInTopic)) then - SendMessage(HWNDClient, WM_DDE_ACK, WPARAM(Handle), MAKELPARAM(aOutApp, aOutTopic)); - if (aOutApp <> 0) then - GlobalDeleteAtom(aOutApp); - if (aOutTopic <> 0) then - GlobalDeleteAtom(aOutTopic); - end; - Result := 0; -end; - -function TEmbeddedwb.DDEExecute(iwParam: WPARAM; ilParam: LPARAM): LResult; -var - szFolder: string; - szCommand: LPTSTR; - uLo: PUINT; - hgMem: HGLOBAL; - ack: DDEACK; - lpTemp: PUINT; - uCommand: Cardinal; - show: Integer; - pidl: PITEMIDLIST; - sei: TShellExecuteInfo; - szTmp: string; -begin - ulo := nil; - if UnpackDDElParam(WM_DDE_EXECUTE, ilParam, uLo, @hgMem) then - begin - szCommand := GlobalLock(hgmem); - ZeroMemory(@Ack, SizeOf(ddeAck)); - if Assigned(szCommand) then - begin - if FHtmlCommand then - begin - szTmp := szCommand; - if Pos('"', szTmp) = 1 then - begin - System.Delete(szTmp, 1, 1); - szTmp := System.Copy(szTmp, 1, Pos('"', szTmp) - 1); - end; - Go(szTmp); - Ack.Flags := 1; - end - else - begin - uCommand := ParseDDECommand(szCommand, szFolder, pidl, Show); - case uCommand of - VIEW_COMMAND: - begin - if (szFolder <> '') then - Go(szFolder) - else if Assigned(pidl) then - NavigatePidl(pidl); - - DisposePidl(pidl); - Ack.flags := 1; - end; - EXPLORE_COMMAND: - begin - bDontRespond := True; - ZeroMemory(@sei, SizeOf(SHELLEXECUTEINFO)); - sei.cbSize := SizeOf(SHELLEXECUTEINFO); - if szFolder <> '' then - begin - sei.fMask := SEE_MASK_CLASSNAME; - sei.lpFile := Pchar(szFolder); - end - else - begin - sei.fMask := SEE_MASK_IDLIST or SEE_MASK_CLASSNAME; - sei.lpIDList := pidl; - end; - sei.lpClass := 'folder'; - sei.Wnd := 0; - sei.nShow := Show; - sei.lpVerb := 'explore'; - ShellExecuteEx(@sei); - bDontRespond := False; - DisposePidl(pidl); - Ack.flags := 1; - end; - FIND_COMMAND: - begin - bDontRespond := True; - ZeroMemory(@sei, SizeOf(SHELLEXECUTEINFO)); - sei.cbSize := SizeOf(SHELLEXECUTEINFO); - if (szFolder <> '') then - begin - sei.fMask := 0; - sei.lpFile := PChar(szFolder); - end - else - begin - sei.fMask := SEE_MASK_IDLIST; - sei.lpIDList := pidl; - end; - sei.wnd := 0; - sei.nShow := Show; - sei.lpVerb := 'find'; - ShellExecuteEx(@sei); - bDontRespond := False; - DisposePidl(pidl); - Ack.flags := 1; - end; - end; - end; - GlobalUnlock(hgMem); - lpTemp := @Ack; - PostMessage(Thandle(iwParam), - WM_DDE_ACK, - WPARAM(handle), - ReuseDDElParam(ilParam, WM_DDE_EXECUTE, WM_DDE_ACK, lpTemp^, hgMem)); - end; - end; - Result := 0; -end; - -procedure TEmbeddedWB.DDEWndProc(var AMsg: Messages.TMessage); -begin - with AMsg do - if (Msg = WM_DDE_INITIATE) and FDisableErrors.FEnableDDE then - begin - try - DDEInitiate(WParam, LParam) - except - end; - end - else - Result := DefWindowProc(DDEHWND, Msg, WParam, LParam); -end; -{$ENDIF} // {$IFDEF USE_EwbDDE} - -//=== TEmbeddedWB ============================================================== - -procedure TEmbeddedWB.CMVisibleChanged(var MSG: TMessage); -begin - inherited; - FVisible := MSG.WParam = 1; - if Assigned(FOnVisible) then - FOnVisible(Self, Self.Visible); -end; - -//=== Hooks & Message Handling ================================================= - -{$IFDEF Enable_SubClassChildWindows} - -procedure TEmbeddedWB.InitEWBChildHook; -begin - FDefInetExplorerServerProc := nil; - FDefShellObjViewProc := nil; - FDefSysListViewObjProc := nil; - - FShellDocObjViewHandle := 0; - FInetExplorerServerHandle := 0; - FSysListViewHandle := 0; - - FShellDocObjInstance := nil; - FInetExplorerServerInstance := nil; - FSysListViewObjInstance := nil; -end; - -procedure TEmbeddedWB.HookChildWindows; -begin - if (csDesigning in ComponentState) or Forms.Application.Terminated then - Exit; - if not Assigned(Self) then - Exit; - - if FSysListViewHandle = 0 then // SysListView32 - begin - FSysListViewHandle := GetIEWin('SysListView32'); - if FSysListViewHandle <> 0 then - begin - FSysListViewObjInstance := {$IFDEF DELPHI6_UP}Classes.{$ENDIF}MakeObjectInstance(SysListViewWndProc); - FDefSysListViewObjProc := Pointer(GetWindowLong(FSysListViewHandle, GWL_WNDPROC)); - SetWindowLongW(FSysListViewHandle, GWL_WNDPROC, Longint(FSysListViewObjInstance)); - Exit; - end; - end; - // Hook child windows to catch WM_DESTROY messages - if (FShellDocObjViewHandle = 0) and (FInetExplorerServerHandle = 0) then - begin - FShellDocObjViewHandle := Windows.GetWindow(Self.Handle, GW_CHILD); - if (FShellDocObjViewHandle <> 0) then - begin - FInetExplorerServerInstance := {$IFDEF DELPHI6_UP}Classes.{$ENDIF}MakeObjectInstance(InetExplorerServerWndProc); - FShellDocObjInstance := {$IFDEF DELPHI6_UP}Classes.{$ENDIF}MakeObjectInstance(ShellDocObjWndProc); - // ShellDocObj - FInetExplorerServerHandle := Windows.GetWindow(FShellDocObjViewHandle, GW_CHILD); - FDefShellObjViewProc := Pointer(GetWindowLong(FShellDocObjViewHandle, GWL_WNDPROC)); - SetWindowLongW(FShellDocObjViewHandle, GWL_WNDPROC, Longint(FShellDocObjInstance)); - // Internet Explorer Server - FDefInetExplorerServerProc := Pointer(GetWindowLong(FInetExplorerServerHandle, GWL_WNDPROC)); - SetWindowLongW(FInetExplorerServerHandle, GWL_WNDPROC, Longint(FInetExplorerServerInstance)); - end; - end; -end; - -procedure TEmbeddedWB.SysListViewWndProc(var Msg: TMessage); -begin - with Msg do - Result := CallWindowProcW(FDefSysListViewObjProc, FSysListViewHandle, Msg, WParam, LParam); - case Msg.Msg of - WM_SETFOCUS: SetActiveControl; - WM_DESTROY: UnHookChildWindows; - end; -end; - -procedure TEmbeddedWB.InetExplorerServerWndProc(var Msg: TMessage); -type - PWMKey = ^TWMKey; -begin - with Msg do - Result := CallWindowProcW(FDefInetExplorerServerProc, FInetExplorerServerHandle, Msg, WParam, LParam); - case Msg.Msg of - WM_SETFOCUS: - // Catching this message allows us to set the Active control to the - // WebBrowser itself which keeps VCL in sync with the real active control - // which makes things like tabbing work correctly. - SetActiveControl; - WM_DESTROY: UnHookChildWindows; - end; -end; - -procedure TEmbeddedWB.ShellDocObjWndProc(var Msg: TMessage); -begin - with Msg do - Result := CallWindowProcW(FDefShellObjViewProc, FShellDocObjViewHandle, Msg, WParam, LParam); - case Msg.Msg of - WM_SETFOCUS: SetActiveControl; - WM_DESTROY: UnHookChildWindows; - end; -end; - -procedure TEmbeddedWB.UnHookChildWindows; -begin - if FSysListViewHandle <> 0 then - begin - SetWindowLongW(FSysListViewHandle, GWL_WNDPROC, Integer(FDefSysListViewObjProc)); -{$IFDEF DELPHI6_UP}Classes.{$ENDIF}FreeObjectInstance(FSysListViewObjInstance); - FSysListViewHandle := 0; - FSysListViewObjInstance := nil; - end; - - if FShellDocObjViewHandle <> 0 then - begin - SetWindowLongW(FShellDocObjViewHandle, GWL_WNDPROC, Integer(FDefShellObjViewProc)); -{$IFDEF DELPHI6_UP}Classes.{$ENDIF}FreeObjectInstance(FShellDocObjInstance); - FShellDocObjViewHandle := 0; - FShellDocObjInstance := nil; - end; - - if FInetExplorerServerHandle <> 0 then - begin - SetWindowLongW(FInetExplorerServerHandle, GWL_WNDPROC, Integer(FDefInetExplorerServerProc)); -{$IFDEF DELPHI6_UP}Classes.{$ENDIF}FreeObjectInstance(FInetExplorerServerInstance); - FInetExplorerServerHandle := 0; - FInetExplorerServerInstance := nil; - end; -end; - -{$ENDIF} // Enable_SubClassChildWindows - -procedure TEmbeddedWB.OnHookChildWindows(Sender: TObject); -begin -{$IFDEF Enable_SubClassChildWindows} - if (FShellDocObjViewHandle = 0) or (FSysListViewHandle = 0) then - HookChildWindows; -{$ENDIF}; -end; - -procedure TEmbeddedWB.SetActiveControl(ParentForm: TCustomForm = nil); -begin - if ParentForm = nil then - ParentForm := GetParentForm(Self); - if Assigned(ParentForm) then - begin - if Self.CanFocus then - begin - ParentForm.ActiveControl := Self; - Self.SetFocusToDoc; - end; - end; -end; - -procedure TEmbeddedWB.WMSetWBFocus(var Msg: TMessage); -var - ParentForm: TCustomForm; -begin - ParentForm := GetParentForm(Self); - if Assigned(ParentForm) then - if ParentForm.ActiveControl is TEmbeddedWB then - SetActiveControl(ParentForm); -end; - -procedure TEmbeddedWB.SetFocus; -begin - if Self.CanFocus then - inherited; -end; - -function TEmbeddedWB.Focused: Boolean; -begin - Result := IsChild(Self.Handle, GetFocus); -end; - -procedure TEmbeddedWB.WMSetFocus(var Message: TWMSetFocus); -begin - inherited; -end; - -{$IFDEF Enable_HookParentFormWndProc} - -procedure TEmbeddedWB.HandleDialogBoxes(var AMsg: Messages.TMessage); -var - PopHandle: Integer; - DlgCaption, DlgClss: string; - Msg: TWMActivate; - WI: TWindowInfo; -begin - Msg := TWMActivate(AMsg); - if Msg.Active = 0 then - begin - PopHandle := Msg.ActiveWindow; - FillChar(WI, SizeOf(WI), 0); - if PopHandle <> 0 then - begin - WI.dwStyle := Abs(GetWindowLong(PopHandle, GWL_STYLE)); - WI.dwExStyle := Abs(GetWindowLong(PopHandle, GWL_EXSTYLE)); - end; - - DlgClss := GetWinClass(PopHandle); - if (DlgClss = 'Internet Explorer_TridentDlgFrame') or ((DlgClss = '#32770') and - ((GetWinClass(Windows.GetParent(PopHandle)) <> 'TApplication') and - (FindControl(Windows.GetParent(PopHandle)) = nil))) then - begin - DlgCaption := GetWinText(PopHandle); - if (PopHandle <> 0) and Assigned(FOnShowDialog) then - FOnShowDialog(Self, PopHandle, WI.dwExStyle, DlgCaption, FDialogBoxes.FNewCaption, FDialogBoxes.FDisableAll); - - if FDialogBoxes.FDisableAll then - SendMessage(PopHandle, WM_CLOSE, 0, 0); - if FDialogBoxes.FReplaceIcon then - SendMessage(PopHandle, WM_SETICON, ICON_SMALL, Forms.Application.Icon.Handle); - - if FDialogBoxes.FReplaceCaption then - begin - DlgCaption := StringReplace(DlgCaption, 'Microsoft ', '', []); - DlgCaption := StringReplace(DlgCaption, 'Internet Explorer', FDialogBoxes.FNewCaption, []); - SetWindowText(PopHandle, PChar(DlgCaption)); - end; - - if FDisableErrors.FScriptErrorsSuppressed then - begin - if (AnsiPos('SCRIPT', AnsiUpperCase(DlgCaption)) <> 0) then - begin - PostMessage(PopHandle, WM_LBUTTONDOWN, 0, 0); - PostMessage(PopHandle, WM_LBUTTONUP, 0, 0); - SendMessage(PopHandle, WM_CLOSE, 0, 0); - Forms.Application.ProcessMessages; - Exit; - end; - if (AnsiPos('ERROR', AnsiUpperCase(DlgCaption)) <> 0) or (WI.dwExStyle = 4260097) then - begin - DestroyWindow(PopHandle); - Exit; - end; - end; - if FPrintOptions.FEnabled then - begin - bPrintOptionsEnable := True; - if bInvokingPageSetup then - begin - bInvokingPageSetup := False; - if PrintingWithOptions then - begin - SetWindowPos(0, 0, -4400, 0, 0, 0, 0); //SetWindowPos(Wnd, 0, -600, 0, 0, 0, 0); - PrintingWithOptions := False; - end; - if FPrintOptions.FOrientation = poPortrait then - SendDlgItemMessage(PopHandle, $0420, BM_CLICK, 0, 0) - else - SendDlgItemMessage(PopHandle, $0421, BM_CLICK, 0, 0); - SetDlgItemText(PopHandle, $1FD3, PChar(FPrintOptions.FHeader)); - SetDlgItemText(PopHandle, $1FD5, PChar(FPrintOptions.FFooter)); - SetDlgItemText(PopHandle, $0483, PChar(PrintMarginStr(FPrintOptions.FMargins.FLeft))); - SetDlgItemText(PopHandle, $0484, PChar(PrintMarginStr(FPrintOptions.FMargins.FTop))); - SetDlgItemText(PopHandle, $0485, PChar(PrintMarginStr(FPrintOptions.FMargins.FRight))); - SetDlgItemText(PopHandle, $0486, PChar(PrintMarginStr(FPrintOptions.FMargins.FBottom))); - if (Win32Platform = VER_PLATFORM_WIN32_NT) and (Win32MajorVersion > 4) then - PostMessage(FindWindowEx(PopHandle, 0, 'Button', nil), BM_CLICK, 0, 0) //Win2000 - else - SendDlgItemMessage(PopHandle, 1, BM_CLICK, 0, 0); - end; - end; - end; - end; -end; - -procedure TEmbeddedWB.FormWndProc(var AMsg: Messages.TMessage); -{var - s: string;} -begin - if AMsg.Msg = WM_ACTIVATE then - begin - HandleDialogBoxes(AMsg); - { - if ((AMsg.WParamLo and WA_ACTIVE) = WA_ACTIVE) or - ((AMsg.WParamLo and WA_CLICKACTIVE) = WA_CLICKACTIVE) then - begin - s := 'FormWndProc ' +'msg.Msg'+ Inttostr(Amsg.Msg) +'msg.LParam'+ Inttostr(Amsg.LParam) - +'msg.WParam '+ Inttostr(Amsg.WParam); - OutputDebugString(PChar(s)); - end; - } - end; - FOldWindowProc(AMsg); -end; - -procedure TEmbeddedWB.HookParentFormWndProc; -begin - if not bWndProcHooked and not (csDesigning in ComponentState) then - begin - FParentForm := TForm(Owner); - if Assigned(FParentForm) and (FParentForm.HandleAllocated) then - begin - FOldWindowProc := FParentForm.WindowProc; - FParentForm.WindowProc := FormWndProc; - bWndProcHooked := True; - end; - end; -end; - -procedure TEmbeddedWB.UnHookParentFormWndProc; -begin - if bWndProcHooked and not (csDesigning in ComponentState) then - begin - if Assigned(FParentForm) and (FParentForm.HandleAllocated) then - FParentForm.WindowProc := FOldWindowProc; - FParentForm := nil; - bWndProcHooked := False; - end; -end; - -{$ENDIF} // Enable_HookParentFormWndProc - -{$IFDEF Enable_MouseEnterLeaveEvents} - -procedure TEmbeddedWB.HandleMouseEnterLeaveEvents(var msg: TMessage); -begin - case msg.Msg of - // Doesn't work in D2005+ - CM_MOUSELEAVE: - if Assigned(FOnMouseLeave) then - FOnMouseLeave(Self); - CM_MOUSEENTER: - if Assigned(FOnMouseEnter) then - FOnMouseEnter(Self); - end; -end; -{$ENDIF} - -function SysListView32MoveCursor(EmbeddedWB: TEmbeddedWB; Key: Word; Shift: TShiftState): Boolean; -// Make VK_UP, VK_DOWN, VK_LEFT, VK_RIGHT work in SysListView32 -// To-do: make HOME, ENDE, PG UP, PG DOWN work -var - iNextItem, iFocusedItem: Integer; - ListView: hWnd; - Flags: Word; -begin - ListView := EmbeddedWB.GetIEWin('SysListView32'); - Result := ListView <> 0; - if Result then - begin - case Key of - VK_UP: Flags := LVNI_ABOVE; - VK_DOWN: Flags := LVNI_BELOW; - VK_LEFT: Flags := LVNI_TOLEFT; - VK_RIGHT: Flags := LVNI_TORIGHT; - else - begin - Result := False; - Exit; - end; - end; - iFocusedItem := ListView_GetNextItem(ListView, -1, LVNI_ALL or LVNI_FOCUSED); - iNextItem := SendMessage(ListView, LVM_GETNEXTITEM, iFocusedItem, MakeLong(Flags, 0)); - if iNextItem <> -1 then - begin - if not (ssShift in Shift) then - // unselect focused items if Shift is not pressed. - // still not perfect (like the explorer's behaviour) but works fine so far. - begin - ListView_SetItemState(ListView, iFocusedItem, 0, LVIS_SELECTED); - ListView_SetItemState(ListView, iFocusedItem, 0, LVIS_FOCUSED); - end; - ListView_SetItemState(ListView, iNextItem, LVIS_SELECTED, LVIS_SELECTED); - ListView_SetItemState(ListView, iNextItem, LVIS_FOCUSED, LVIS_FOCUSED); - ListView_EnsureVisible(ListView, iNextItem, False); - SendMessage(ListView, WM_SETFOCUS, 0, 0); - end; - end - else - Result := False; -end; - -procedure TEmbeddedWB.WndProc(var AMsg: TMessage); -var - bProcessMessage: Boolean; - bHandled: Boolean; -begin -{$IFDEF Enable_MouseEnterLeaveEvents} - HandleMouseEnterLeaveEvents(msg); -{$ENDIF} - - bProcessMessage := True; - - // Handle WM_CLOSE - if AMsg.Msg = WM_CLOSE then - begin - if Assigned(FOnCloseQuery) then - FOnCloseQuery(Self, bProcessMessage); - if bProcessMessage then - if ((not Self.Focused) and (AMsg.Msg = CM_DIALOGKEY)) then - bProcessMessage := False; - end; - - // Handle OnKeyDown / OnKeyUp Messages - with AMsg do - case Msg of - CN_BASE + WM_KEYDOWN, CN_BASE + WM_SYSKEYDOWN: - begin - if SysListView32MoveCursor(Self, TWMKeyUp(AMsg).CharCode, KeyDataToShiftState(TWMKeyUp(AMsg).KeyData)) then - begin - bProcessMessage := False; - AMsg.Result := 1; - end; - if Assigned(FOnKeyDown) then - begin - FOnKeyDown(Self, TWMKeyDown(AMsg).CharCode, (TWMKeyDown(AMsg).KeyData shr 16) and $FF, - KeyDataToShiftState(TWMKeyDown(AMsg).KeyData)); - if (TWMKeyDown(AMsg).CharCode = 0) then - begin - bProcessMessage := False; - AMsg.Result := 1; - end; - end; - end; - CN_BASE + WM_KEYUP, CN_BASE + WM_SYSKEYUP: - if Assigned(FOnKeyUp) then - begin - FOnKeyUp(Self, TWMKeyUp(AMsg).CharCode, (TWMKeyUp(AMsg).KeyData shr 16) and $FF, - KeyDataToShiftState(TWMKeyUp(AMsg).KeyData)); - if TWMKeyUp(AMsg).CharCode = 0 then - begin - bProcessMessage := False; - AMsg.Result := 1; - end; - end; - end; - - if bProcessMessage then - begin - if not ((AMsg.msg = CM_DOCWINDOWACTIVATE) and (Forms.Application.Terminated)) then - inherited WndProc(AMsg); - end; - - // Make VK_RETURN work in TextAreas etc. - if FEnableMessageHandler and (AMsg.Msg = CN_BASE + WM_KEYDOWN) and - (AMsg.WParam = VK_RETURN) then - AMsg.Result := 0; - - // Our own OnMessage Handler - if Assigned(FOnMessage) then - begin - bHandled := False; // not used but don't break the interface - FOnMessage(Self, AMsg, bHandled); - end; - - // Handle other messges - with AMsg do - begin - case WParam of - WM_LBUTTONDOWN: - if Assigned(FOnClick) then - FOnClick(Self, mbLeft, KeysToShiftState(TWMMouse(AMsg).Keys), TWMMouse(AMsg).XPos, TWMMouse(AMsg).YPos); - WM_RBUTTONDOWN: - if Assigned(FOnClick) then - FOnClick(Self, mbRight, KeysToShiftState(TWMMouse(AMsg).Keys), TWMMouse(AMsg).XPos, TWMMouse(AMsg).YPos); - end; - - case Msg of - WM_GETDLGCODE: // http://msdn.microsoft.com/en-us/library/ms645425.aspx - begin - Result := DLGC_WANTCHARS; - end; - WM_SIZE: - if (not ((not Self.Focused) and (Msg = CM_DIALOGKEY))) then - begin - FResizing := not FWinXPSP2orLater; // must be set in constructor - end; - WM_WINDOWPOSCHANGING: - begin - if FResizing and ((PWindowPos(LParam)^.flags and (SWP_NOMOVE or SWP_NOSIZE)) > 0) then - begin - if ((PWindowPos(LParam)^.flags and SWP_NOMOVE) = 0) then - begin - PWindowPos(LParam)^.flags := PWindowPos(LParam)^.flags or SWP_NOMOVE; - if Assigned(OnMove) then - OnMove(Self, PWindowPos(lParam)^.x, PWindowPos(LParam)^.y); - end; - if ((PWindowPos(LParam)^.flags and SWP_NOSIZE) = 0) then - begin - PWindowPos(LParam)^.flags := PWindowPos(LParam)^.flags or SWP_NOSIZE; - if Assigned(OnResize) then - OnResize(Self, PWindowPos(LParam)^.cx, PWindowPos(LParam)^.cy); - end; - end; - end; -{$IFDEF USE_EwbDDE} - WM_DDE_EXECUTE: DDEExecute(WParam, LParam); - WM_DDE_TERMINATE: DDETerminate(WParam, LParam); -{$ENDIF} - end; - end; -end; - -//=== EmbeddedWB Functions and procedures ====================================== - -//=== override Visible Property - -function TEmbeddedWB.GetVisible: Boolean; -begin - Result := FVisible; -end; - -procedure TEmbeddedWB.SetName(Value: string); -begin - if Value <> FName then - begin - TControl(Self).Name := Value; - FName := Value; - end; -end; - -//=== override Name Property - -function TEmbeddedWB.GetName: string; -begin - Result := TControl(Self).Name; - // IWebBrowser.Get_Name would return "Microsoft Browser Control" -end; - -//=== override HWND Property - -function TEmbeddedWB.GetHWND: Integer; -begin - if HandleAllocated then - begin - Result := GetIEWin('Internet Explorer_Server'); - if not IsWindow(Result) then - Result := GetIEWin('SysListView32') - end - else - Result := 0; -end; - -//=== override Visible Property - -procedure TEmbeddedWB.SetVisible(AValue: Boolean); -begin - if AValue <> FVisible then - begin - FVisible := AValue; - TControl(Self).Visible := FVisible; - end; -end; - -//=== override Silent Property - -procedure TEmbeddedWB.SetSilent(Value: Boolean); -begin - // FSilent := Value; - SetWordBoolProp(551, FSilent); -end; - -function TEmbeddedWB.GetSilent: Boolean; -begin - Result := GetWordBoolProp(551) -end; - -//=== override SetRegisterAsDropTarget Property - -procedure TEmbeddedWB.SetRegisterAsDropTarget(Value: Boolean); -begin - SetWordBoolProp(553, Value) -end; - -function TEmbeddedWB.GetRegisterAsDropTarget: Boolean; -begin - Result := GetWordBoolProp(553); -end; - -//=== override SetRegisterAsBrowser Property - -procedure TEmbeddedWB.SetRegisterAsBrowser(Value: Boolean); -begin - SetWordBoolProp(552, Value) -end; - -function TEmbeddedWB.GetRegisterAsBrowser: Boolean; -begin - Result := GetWordBoolProp(552); -end; - -function TEmbeddedWB.GetParent: TWinControl; -begin - Result := TWinControl(Self).Parent; -end; - -procedure TEmbeddedWB.SetParent(Control: TWinControl); -begin - // Windows.SetParent(Self.Handle, Control.Handle) - TWinControl(Self).Parent := Control; -end; - -function TEmbeddedWB.GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT; -begin - Result := inherited GetHostInfo(pInfo); - if (pInfo.chHostCss = nil) and (HostCSS <> '') then - pInfo.chHostCss := TaskAllocWideString(HostCSS); - if (pInfo.chHostNS = nil) and (HostNS <> '') then - pInfo.chHostNS := TaskAllocWideString(FHostNS); -end; - -class function TEmbeddedWB.GetIEHandle(WebBrowser: TEmbeddedWB; ClassName: string): HWND; -begin - Result := WebBrowser.GetIEWin(ClassName); -end; - -function TEmbeddedWB.GetModified: Boolean; -begin - Result := FModified; -end; - -procedure TEmbeddedWB.SetHTMLCode(value: TStringList); -begin - if Assigned(Value) then - FHTMLCode.Text := Value.Text; -end; - -procedure TEmbeddedWB.HTMLCodeChanged(Sender: TObject); -var - Protocol, SURL: string; - bLoad, bHandled: Boolean; -begin - if (csDesigning in ComponentState) then - Exit; - if HTMLCode.Count = 1 then - begin - bLoad := False; - Protocol := LowerCase(System.Copy(HTMLCode[0], 1, 4)); - if (Protocol = 'http') or (Protocol = 'www.') or (Protocol = 'ftp:') or (Protocol = 'file') or - (LowerCase(System.Copy(HTMLCode[0], 1, 6)) = 'about:') then - begin - SURL := HTMLCode[0]; - Go(SURL); - end - else - bLoad := True; - end - else - bLoad := True; - if bLoad then - begin - bHandled := False; - if Assigned(FOnHTMLCodeChange) then - FOnHTMLCodeChange(Self, HTMLCode, bHandled); - if not bHandled then - if HTMLCode.Count <> 0 then - LoadFromStrings(HTMLCode); - end; -end; - -function TEmbeddedWB.GetDocument: IHTMLDocument2; -begin - Wait(); - Result := nil; - if DocumentLoaded then - Result := Self.ControlInterface.Document as IHTMLDocument2; -end; - -function TEmbeddedWB.GetFrame(FrameNo: Word): IWebbrowser2; -var - OleContainer: IOleContainer; - Enum: ActiveX.IEnumUnknown; - Unk: IUnknown; - Fetched: PLongint; -begin - Result := nil; - if Assigned(Document) then - begin - Fetched := nil; - OleContainer := Document as IOleContainer; - OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum); - Enum.Skip(FrameNo); - Enum.Next(1, Unk, Fetched); - if Supports(Unk, IWebBrowser2, Result) then //perva 2008/12/10 - Result := Unk as IWebbrowser2; - end; -end; - -function TEmbeddedWB.GetFrameFromDocument(SourceDoc: IHTMLDocument2; - FrameNo: Integer): IWebBrowser2; //By Aladin -var //by Aladin - OleContainer: IOleContainer; - enum: ActiveX.IEnumUnknown; - unk: IUnknown; - Fetched: PLongint; -begin - Result := nil; - Fetched := nil; - if DocumentLoaded then - begin - OleContainer := SourceDoc as IOleContainer; - OleContainer.EnumObjects(OLECONTF_EMBEDDINGS or OLECONTF_OTHERS, Enum); - Enum.Skip(FrameNo); - Enum.Next(1, Unk, Fetched); - Result := Unk as IWebBrowser2; - end; -end; - -function TEmbeddedWB.GetActiveFrame: IHTMLDocument2; -var - HtmlDoc2: IHTMLDocument2; -begin - if Supports(Self.Document, IHTMLDocument2, HtmlDoc2) then - Result := GetActiveFrame(HtmlDoc2); -end; - -function TEmbeddedWB.GetActiveFrame(Doc: IHTMLDocument2): IHTMLDocument2; -var - Element: IHTMLElement; - Frame: IHTMLFrameElement; - WB: IWebBrowser2; - HTMLDocument: IHTMLDocument2; - HtmlDoc2: IHTMLDocument2; -begin - Result := nil; - if Supports(Doc, IHTMLDocument2, HtmlDoc2) then - begin - Element := Doc.activeElement; - if Assigned(Element) then - if Element.QueryInterface(IHTMLFrameElement, Frame) = S_OK then - if Frame.QueryInterface(IID_IWebBrowser2, WB) = S_OK then - if Assigned(WB.Document) then - if WB.Document.QueryInterface(IID_IHTMLDocument2, HTMLDocument) = S_OK then - Result := GetActiveFrame(HTMLDocument); - end; - if Result = nil then - result := doc; -end; - -function TEmbeddedWB.GetActiveElement(Doc: IHTMLDocument2 = nil): IHTMLElement; -begin - Result := nil; - if Doc = nil then - Doc := Self.GetActiveFrame; - if Assigned(Doc) then - Result := Doc.activeElement; -end; - -function TEmbeddedWB.GetSelectedText(ReturnAsHTML: Boolean = False; bOnlyTopLevel: Boolean = False): string; -var - doc2: IHTMLDocument2; - selobj: IHTMLSelectionObject; - range: IHTMLTxtRange; - Disp: IDispatch; -begin - Result := ''; - if DocumentLoaded then - begin - if (bOnlyTopLevel) then - doc2 := Self.ControlInterface.Document as IHTMLDocument2 - else - doc2 := Self.GetActiveFrame(); - if Assigned(doc2) and Assigned(doc2.selection) and (doc2.readyState = 'complete') then - begin - selobj := doc2.selection as IHTMLSelectionObject; - if Assigned(selobj) then - begin - if (selobj.type_ <> 'none') and (selobj.type_ <> 'control') then - begin - Disp := selobj.createRange; - if Assigned(Disp) then - begin - range := Disp as IHTMLTxtRange; - if Assigned(range) then - if (ReturnAsHTML) then - Result := range.htmlText - else - Result := range.text; - end; - end; - end; - end; - end; -end; - -function TEmbeddedWB.GetSelLength(bOnlyTopLevel: Boolean = False): Integer; -begin - Result := Length(GetSelectedText(False, bOnlyTopLevel)); -end; - -procedure TEmbeddedWB.AssignEmptyDocument(bWait: Boolean = False); -begin - Navigate('about:blank'); - if bWait then - Wait; -end; - -function TEmbeddedWB.DocumentLoaded(out Doc2: IHTMLDocument2): Boolean; -var - iDoc: IHTMLDocument2; -begin - Result := False; - if Assigned(Document) then - begin - ControlInterface.Document.QueryInterface(IHTMLDocument2, iDoc); - Doc2 := iDoc; - Result := Assigned(iDoc); - end; -end; - -function TEmbeddedWB.DocumentLoaded(): Boolean; -var - iDoc: IHTMLDocument2; -begin - Result := False; - if Assigned(Document) then - begin - ControlInterface.Document.QueryInterface(IHTMLDocument2, iDoc); - Result := Assigned(iDoc); - end; -end; - -function TEmbeddedWB.GetPrintValues: Boolean; -const - REG_PATH_PAGESETUP = 'Software\Microsoft\Internet Explorer\PageSetup'; -var - S: string; - Reg: TRegistry; - - {$IFDEF DELPHI7_UP} - FS: TFormatSettings; - {$ENDIF} - - function ReadMargin(key: string): Real; - begin - S := Reg.ReadString(key); - if S = '' then - S := '0.750000'; // <-- default margin value by takeru_tk_81 - S := StringReplace(S, ' ', '', [rfReplaceAll]); - - if {$IFDEF DELPHI7_UP}FS.{$ENDIF}DecimalSeparator <> '.' then - S := StringReplace(S, '.',{$IFDEF DELPHI7_UP}FS.{$ENDIF}DecimalSeparator ,[]); - - if PrintOptions.Measure = mMetric then - Result := StrToFloat(S) * InchToMetric - else - Result := StrToFloat(S); - end; - -begin - Result := False; - Reg := TRegistry.Create; - try - with Reg do - begin - RootKey := HKEY_CURRENT_USER; - if OpenKey(REG_PATH_PAGESETUP, False) then - begin - with PrintOptions do - begin - Header := ReadString('header'); - Footer := ReadString('footer'); - Margins.Left := ReadMargin('margin_left'); - Margins.Right := ReadMargin('margin_right'); - Margins.Top := ReadMargin('margin_top'); - Margins.Bottom := ReadMargin('margin_bottom'); - end; - Result := True; - end; - Reg.Free; - end; - except - // MessageDlg('Error while getting page print values from the registry.', mtError, [mbOK], 0); - end; -end; - -function TEmbeddedWB.GetIEHomePage: string; -var - IEHomePage: string; -begin - IEHomePage := ''; - with TRegistry.Create do - try - RootKey := HKEY_CURRENT_USER; - OpenKey('\Software\Microsoft\Internet Explorer\Main', False); - IEHomePage := ReadString('Start Page'); - CloseKey; - finally - Free; - end; - Result := IEHomePage; -end; - -function TEmbeddedWB.VariantIsObject(const Value: OleVariant): Boolean; -begin - Result := (VarType(Value) = varDispatch); -end; - -// Wait procedures ------------------------------------------------------------- - -function TEmbeddedWB.Wait(TimeOut: Longword = 0): Boolean; //by perva: Added OnBusyWait -var - StartTime: DWORD; - bCancel, bDoBreak: Boolean; -begin - bDoBreak := False; - if HandleAllocated then - begin - bCancel := False; - bDoBreak := False; - StartTime := GetTickCount; - while Assigned(Self) and not FDestroying and (ReadyState <> READYSTATE_COMPLETE) do - begin - if Assigned(FOnBusyWait) then - FOnBusyWait(Self, StartTime, TimeOut, bCancel); - bDoBreak := FStopped or bCancel or ((TimeOut > 0) and ((GetTickCount - StartTime) > Timeout)); - if bDoBreak or Forms.Application.Terminated then - Break; - Forms.Application.ProcessMessages; - Sleep(1); - end; - end; - FStopped := False; - Result := bDoBreak = False; -end; - -function TEmbeddedWB.WaitWhileBusy(TimeOut: Longword = 0): Boolean; -var - StartTime: DWORD; - bCancel, bDoBreak: Boolean; -begin - bCancel := False; - bDoBreak := False; - StartTime := GetTickCount; - while not FDestroying and Busy do - begin - if Assigned(FOnBusyWait) then - FOnBusyWait(Self, StartTime, TimeOut, bCancel); - - bDoBreak := FStopped or bCancel or ((TimeOut > 0) and ((GetTickCount - StartTime) > Timeout)); - if bDoBreak or Forms.Application.Terminated then - Break; - Forms.Application.ProcessMessages; - Sleep(1); - end; - FStopped := False; - Result := bDoBreak = False; -end; - -function TEmbeddedWB.DownloadFile(SourceFile, DestFile: string): Boolean; -begin - try - Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0; - except - Result := False; - end; -end; - -// Navigating ------------------------------------------------------------------ - -function TEmbeddedWB.Go(Url: string; TimeOut: LongWord = 0): Boolean; -var - ovURL, ovFlags, ovTargetFrameName, ovPostData, ovHeaders: OleVariant; -begin - Result := True; - if DirectoryExists(Url) then - Navigate('file:///' + Url) - else if (Trim(Url) <> '') then - begin - ovUrl := Url; - ovFlags := 0; - ovTargetFrameName := 0; - ovPostData := 0; - ovHeaders := 0; - Navigate2(ovUrl, ovFlags, ovTargetFrameName, ovPostData, ovHeaders); - if TimeOut <> 0 then - Result := Wait(TimeOut) - end; -end; - -function TEmbeddedWB.NavigateWait(const URL: WideString; TimeOut: LongWord = 0): Boolean; -begin - Navigate(URL); - if TimeOut = 0 then - Result := True - else - Result := Wait(TimeOut) -end; - -procedure TEmbeddedWB.NavigateFolder(CSIDL: Integer); -var - sFolder: PItemIdList; -begin - SHGetSpecialFolderLocation(0, CSIDL, SFolder); - NavigatePidl(SFolder); - CoTaskMemFree(SFolder); -end; - -procedure TEmbeddedWB.NavigatePidl(pidl: PItemIdList); -var - VaEmpty, vaPidl: OleVariant; - psa: PSafeArray; - cbData: UINT; -begin - cbdata := GetPidlSize(pidl); - psa := SafeArrayCreateVector(VT_UI1, 0, cbData); - if Assigned(psa) then - begin - CopyMemory(psa.pvData, pidl, cbData); - VariantInit(vaPidl); - TVariantArg(vaPidl).vt := VT_ARRAY or VT_UI1; - TVariantArg(vaPidl).parray := psa; - Navigate2(vaPidl, vaEmpty, vaEmpty, vaEmpty, vaEmpty); - VariantClear(vaPidl); - end; -end; - -function TEmbeddedWB.NavigateToFrame(FrameList: string): IHTMLDocument2; -var - Document: IHTMLDocument2; - FramesIndexList: TStringList; - i: Integer; -begin - Result := nil; - Document := GetDocument; - if Assigned(Document) then - begin - FramesIndexList := TStringList.Create; - try - FramesIndexList.CommaText := FrameList; //move into the last frame - for i := 0 to FramesIndexList.Count - 1 do - begin - Document := GetFrameFromDocument(Document, StrToInt(FramesIndexList[i])).Document as IHTMLDocument2; - if not DocumentLoaded then - Exit; - end; - Result := Document; - finally - FramesIndexList.Free; - end; - end; -end; - -// Saving & Loading ------------------------------------------------------------ - -function TEmbeddedWB.SaveToFile(const FileName: string): HRESULT; -begin - Wait(); - if Assigned(Document) then - Result := SaveDocToFile(Document, FileName) - else - Result := S_FALSE; -end; - -function TEmbeddedWB.SaveToStream(AStream: TStream): HRESULT; -begin - Wait(); - if Assigned(Document) then - Result := SaveDocToStream(Document, AStream) - else - Result := S_FALSE; -end; - -function TEmbeddedWB.SaveToStrings(AStrings: TStrings): HRESULT; -begin - Wait(); - if Assigned(Document) then - Result := SaveDocToStrings(Document, AStrings) - else - Result := S_FALSE; -end; - -function TEmbeddedWB.SaveFrameToFile(FrameNo: Word; const FName: string): HRESULT; -var - Iw: IWebbrowser2; - PFile: IPersistFile; -begin - iw := GetFrame(frameNo); - if Assigned(iw) and Assigned(iw.Document) then - begin - PFile := iw.Document as IPersistFile; - Result := PFile.Save(StringToOleStr(FName), False); - end - else - Result := S_FALSE; -end; - -function TEmbeddedWB.SaveFrameToStream(FrameNo: Integer; AStream: TStream): HRESULT; -var - iw: IWebbrowser2; -begin - Result := S_FALSE; - iw := GetFrame(frameNo); - if Assigned(iw) and Assigned(iw.Document) then - Result := SaveDocToStream(iw.Document, AStream) -end; - -function TEmbeddedWB.SaveFrameToStrings(FrameNo: Integer; AStrings: TStrings): HRESULT; -var - iw: Iwebbrowser2; -begin - Result := S_FALSE; - iw := GetFrame(frameNo); - if Assigned(iw) and Assigned(iw.Document) then - Result := SaveDocToStrings(iw.Document, AStrings); -end; - -function TEmbeddedWB.LoadFromString(const St: string): HRESULT; -var - Stream: TStringStream; -begin - if not Assigned(Document) then - AssignEmptyDocument; - Stream := TStringStream.Create(St{$IFDEF DELPHI12_UP}, FEncoding{$ENDIF}); - try - OleCheck((Document as IPersistStreamInit).Load(TStreamAdapter.Create(Stream))); - Result := S_OK; - finally - FreeAndNil(Stream); - end; -end; - -{$IFDEF DELPHI6_UP} - -function TEmbeddedWB.LoadFromWideString(const WideSt: WideString): HRESULT; -var - Strings: TStringList; -begin - if not Assigned(Document) then - AssignEmptyDocument; - Strings := TStringList.Create; - try - Strings.Text := WideSt; - Result := LoadFromStrings(Strings); - finally - FreeAndNil(Strings); - end; -end; -{$ENDIF} - -function TEmbeddedWB.LoadFromFile(const FileName: string): HRESULT; -var - Stream: TStream; -begin - Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); - try - Result := LoadFromStream(Stream); - finally - Stream.Free; - end; -end; - -procedure TEmbeddedWB.LoadFromImage(Image: TImage); -var - Stm: TMemoryStream; -begin - Stm := TMemoryStream.Create; - try - Image.Picture.Bitmap.SaveToStream(Stm); - LoadFromStream(Stm); - finally - Stm.Free; - end; -end; - -function TEmbeddedWB.LoadFromStrings(const AStrings: TStrings): HRESULT; -var - M: TMemoryStream; -begin - if not Assigned(Document) then - AssignEmptyDocument; - M := TMemoryStream.Create; - try - AStrings.SaveToStream(M{$IFDEF DELPHI12_UP}, FEncoding{$ENDIF}); - Result := LoadFromStream(M); - except - Result := S_FALSE; - end; - M.Free; -end; - -function TEmbeddedWB.LoadFromStrings(const AStrings: TStrings; AddHtmlTags: Boolean): HRESULT; - - function AnsiSameStr(const S1, S2: string): Boolean; - begin - Result := AnsiCompareStr(S1, S2) = 0; - end; - - function AnsiStartsStr(const ASubText, AText: string): Boolean; - begin - Result := AnsiSameStr(ASubText, System.Copy(AText, 1, Length(ASubText))); - end; - -var - M: TMemoryStream; - stn: TStrings; -begin - if not Assigned(Document) then - AssignEmptyDocument; - M := TMemoryStream.Create; - try - if AddHtmlTags and not AnsiStartsStr('', UpperCase(AStrings.GetText)) then - begin - stn := TStringList.Create; - try - with stn do - begin - Add(''); - Add(''); - Add(''); - AddStrings(AStrings); - Add(''); - Add(''); - SaveToStream(M{$IFDEF DELPHI12_UP}, FEncoding{$ENDIF}); - end; - finally - stn.Free; - end; - end - else - AStrings.SaveToStream(M{$IFDEF DELPHI12_UP}, FEncoding{$ENDIF}); - Result := LoadFromStream(M); - finally - M.Free; - end; -end; - -function TEmbeddedWB.LoadFromStream(const AStream: TStream): HRESULT; -begin - if not Assigned(Document) then - AssignEmptyDocument; - AStream.Seek(0, 0); - Result := (Document as IPersistStreamInit).Load(TStreamAdapter.Create(AStream)); -end; - -function TEmbeddedWB.LoadFrameFromStrings(FrameNo: Word; const AStrings: TStrings): HRESULT; -var - iw: IWebbrowser2; - M: TMemoryStream; -begin - Result := S_FALSE; - iw := GetFrame(FrameNo); - if Assigned(iw) and Assigned(iw.Document) then - begin - M := TMemoryStream.Create; - try - AStrings.SaveToStream(M{$IFDEF DELPHI12_UP}, FEncoding{$ENDIF}); - M.Seek(0, 0); - Result := (iw.Document as IPersistStreamInit).Load(TStreamAdapter.Create(M)); - except - Result := S_FALSE; - end; - M.Free; - end; -end; - -function TEmbeddedWB.LoadFrameFromStream(FrameNo: Integer; AStream: TStream): HRESULT; -var - iw: IWebBrowser2; -begin - Result := S_FALSE; - iw := GetFrame(frameNo); - if Assigned(iw) then - if Assigned(iw.Document) then - begin - AStream.Seek(0, 0); - Result := (iw.Document as IPersistStreamInit).Load(TStreamadapter.Create(AStream)); - end; -end; - -// Menu Commands OLECMDID ------------------------------------------------------ -// http://msdn.microsoft.com/en-us/library/ms691264(VS.85).aspx - -//"Cut", "Copy", "Paste", ... - -function TEmbeddedWB.IsCommandEnabled(sCmdId: WideString): Boolean; -var - HTMLdoc2: IHTMLDocument2; -begin - HTMLdoc2 := doc2; - if Assigned(HTMLdoc2) then - Result := HTMLdoc2.queryCommandEnabled(sCmdId) - else - Result := False; -end; - -// Command Identifiers: http://msdn.microsoft.com/en-us/library/ms533049(VS.85).aspx - -function TEmbeddedWB.QueryCommandValue(sCmdId: WideString): OleVariant; -var - HTMLdoc2: IHTMLDocument2; -begin - HTMLdoc2 := doc2; - if Assigned(HTMLdoc2) then - Result := HTMLdoc2.queryCommandValue(sCmdId) - else - Result := False; -end; - -function TEmbeddedWB.Copy: Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(False, OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; - // to check: http://support.microsoft.com/?scid=kb;en-us;897285&x=16&y=15 -end; - -function TEmbeddedWB.Paste; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(False, OLECMDID_PASTE, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function TEmbeddedWB.PasteSpecial; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(False, OLECMDID_PASTESPECIAL, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function TEmbeddedWB.Delete; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(False, OLECMDID_DELETE, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function TEmbeddedWB.SelectAll; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(False, OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function TEmbeddedWB.ClearSelection; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(False, OLECMDID_CLEARSELECTION, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function TEmbeddedWB.Undo; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(False, OLECMDID_UNDO, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function TEmbeddedWB.Redo; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(False, OLECMDID_REDO, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function TEmbeddedWB.Cut; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(False, OLECMDID_CUT, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -// Navigation ------------------------------------------------------------------ - -procedure TEmbeddedWB.Stop; -begin - FStopped := True; - try - DefaultInterface.Stop; - except - end; -end; - -procedure TEmbeddedWB.GoBack; -begin - try - DefaultInterface.GoBack; - except - end; -end; - -procedure TEmbeddedWB.GoForward; -begin - try - DefaultInterface.GoForward; - except - end; -end; - -// PopupMenu Filter ------------------------------------------------------------ - -function TEmbeddedWB.FilterPopupMenu: Boolean; -begin - Result := inherited FilterPopupMenu or (DisabledPopupMenuItems <> []); -end; - -procedure TEmbeddedWB.DoFilterPopupMenu(Sender: TObject; ID: DWORD; Menu: HMENU; const Context: IDispatch); -const - cmds: array[TIEPopupMenuItem] of UINT = ( - IDM_BACK, //rcsBack - IDM_FORWARD, //rcsForward - IDM_SAVEBACKGROUND, //rcsSavePageBkg - IDM_SETASBACKGROUND, //rcsSetAsBkg - IDM_COPYBACKGROUND, //rcsCopyBkg - IDM_SETASDESKTOPITEM, //rcsSetAsDeskT - IDM_SELECTALL, //rcsSelectAll - IDM_PASTE, //rcsPaste - IDM_CREATESHORTCUT, //rcsCreateSC - IDM_ADDTOFAVOURITES, //rcsAddToFav - IDM_ENCODING, //rcsEncoding - IDM_REFRESH, //rcsRefresh - IDM_VIEWSOURCE, //rcsViewSource - IDM_PROPERTIES, //rcsProperties - IDM_PRINT, //rcsPrint - IDM_OPENINNEWWINDOW, //rcsOpenNWindow - IDM_OPENLINK //rcsOpenLink - ); -var - IEPopupMenuItem: TIEPopupMenuItem; -begin - inherited; - for IEPopupMenuItem := Low(TIEPopupMenuItem) to High(TIEPopupMenuItem) do - if IEPopupMenuItem in DisabledPopupMenuItems then - DeleteMenu(Menu, cmds[IEPopupMenuItem], MF_BYCOMMAND); -end; - -// Miscellaneous --------------------------------------------------------------- - -procedure TEmbeddedWB.RefreshFrame(FrameNo: Word); -var - OleContainer: IOleContainer; - Enum: ActiveX.IEnumUnknown; - Unk: IUnknown; - Fetched: PLongint; -begin - Wait(); - if Assigned(Document) then - begin - Fetched := nil; - OleContainer := Document as IOleContainer; - if Assigned(OleContainer) then - begin - OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum); - Enum.Skip(FrameNo); - Enum.Next(1, Unk, Fetched); - (Unk as IWebbrowser2).Refresh; - end; - end -end; - -function TEmbeddedWB.InvokeCMD(InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant): HRESULT; -const - PGUIDs: array[Boolean] of PGUID = (nil, @CLSID_WebBrowser); -begin - Result := InvokeCommand(PGUIDs[InvokeIE], Value1, Value2, vaIn, vaOut); -end; - -procedure TEmbeddedWB.InvokeIEServerCommand(Cmd: Integer); -begin - SendMessage(Handle, WM_COMMAND, Cmd, 0); -end; - -procedure TEmbeddedWB.ShowImportExportFavoritesAndCookies; -begin - InvokeIEServerCommand(ID_IE_FILE_IMPORTEXPORT); -end; - -procedure TEmbeddedWB.SetModified(Value: Boolean); -var - HTMLDoc2: IHTMLDocument2; -begin - if ((not FModified) and (READYSTATE = READYSTATE_COMPLETE)) then - begin - HTMLDoc2 := doc2; - if Assigned(HTMLDoc2) then - FModified := HTMLdoc2.QueryCommandEnabled('Undo'); - end; -end; - -procedure TEmbeddedWB.SetDesginMode(Value: Boolean); -const - SwitchOnOff: array[Boolean] of string = ('Off', 'On'); -var - HTMLDoc2: IHTMLDocument2; -begin - HTMLDoc2 := doc2; - if Assigned(HTMLDoc2) then - HTMLDoc2.designMode := SwitchOnOff[Value]; -end; - -function TEmbeddedWB.GetDesginMode: Boolean; -const - SwitchOnOff: array[Boolean] of string = ('Off', 'On'); -var - HTMLDoc2: IHTMLDocument2; - Status: string; -begin - Result := False; - HTMLDoc2 := doc2; - if Assigned(HTMLDoc2) then - begin - Status := SwitchOnOff[HTMLDoc2.get_designMode = 'On']; - Result := Status = 'On'; - end; -end; - -function TEmbeddedWB.PrintMarginStr(M: Real): string; -begin - if PrintOptions.Measure <> FRuntimeMeasure then - begin - if FRuntimeMeasure = mMetric then - Result := FloatToStr(M * InchToMetric) - else - Result := FloatToStr(M / InchToMetric); - end - else - Result := FloatToStr(M); -end; - -procedure TEmbeddedWB.SetAbout(Value: string); -begin - Exit; -end; - -{$IFDEF Enable_EwbMSHTMLEvents} - -procedure TEmbeddedWB.SetSinkComponent(Value: TMSHTMLHTMLDocumentEvents); -begin - Exit; -end; -{$ENDIF} - -// User Agent Stuff ------------------------------------------------------------ - -procedure TEmbeddedWB.RestoreUserAgentReg; -const - REG_KEY_USERAGENT = '\Software\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent'; -begin - if (FUserAgentReg <> '') and FUserAgentRegSet then - begin - if (csDesigning in ComponentState) then - begin - FUserAgentRegSet := False; - FUserAgentReg := ''; - end - else - with TRegistry.Create do - begin - try - RootKey := HKEY_CURRENT_USER; - if OpenKey(REG_KEY_USERAGENT, False) then - begin - DeleteKey('Post Platform'); - OpenKey(REG_KEY_USERAGENT + '\Post Platform', True); - WriteString(USER_AGENT_IE6, ''); - FUserAgentRegSet := False; - FUserAgentReg := ''; - end; - finally - CloseKey; - Free; - end; - end; - end; -end; - -procedure TEmbeddedWB.SetUserAgentReg; -begin - if (FUserAgent <> FUserAgentReg) then - begin - RestoreUserAgentReg; - FUserAgentReg := FUserAgent; - if (not (csDesigning in ComponentState)) then - with TRegistry.Create do - begin - try - FUserAgentReg := USER_AGENT_IE6 + '(' + FUserAgentReg + ')'; - begin - RootKey := HKEY_CURRENT_USER; - try - if OpenKey(USER_AGENT_PATH, True) then - begin - WriteString(FUserAgentReg, ''); - FUserAgentRegSet := True; - end; - finally - CloseKey; - end; - end; - finally - Free; - end; - end; - end; -end; - -procedure TEmbeddedWB.SetUserAgentInt; -var - Control: IOleControl; -begin - if FUserAgent <> FUserAgentInt then - begin - RestoreUserAgentReg; - if DefaultInterface.QueryInterface(IOleControl, Control) = 0 then - with (Application as IOleControl) do - begin - FUserAgentInt := FUserAgent; - Control.OnAmbientPropertyChange(DISPID_AMBIENT_USERAGENT); - //_Release; I4214 // I4214 - end; - end; -end; - -procedure TEmbeddedWB.UpdateUserAgent; -begin - case FUserAgentMode of - uaInternal: SetUserAgentInt; - uaRegistry: SetUserAgentReg; - uaDefault: RestoreUserAgentReg; - end; -end; - -procedure TEmbeddedWB.SetUserAgent(const Value: string); -begin - if Value <> FUserAgent then - begin - FUserAgent := Value; - UpdateUserAgent; - end; -end; - -procedure TEmbeddedWB.SetUserAgentMode(Value: TUserAgentMode); -begin - if Value <> FUserAgentMode then - begin - FUserAgentMode := Value; - UpdateUserAgent; - end; -end; - -function TEmbeddedWB.OnSetUserAgentEvent(var UserAgent: string): HRESULT; -begin - Result := S_FALSE; - UserAgent := ''; - if (uaInternal = FUserAgentMode) and (FUserAgent <> '') then - begin - Result := S_OK; - UserAgent := FUserAgent; - end; -end; - -procedure TEmbeddedWB.ShowAboutBox; -begin - try - TEWB(Self).ShowAboutBox; - except - SendMessage(Self.GetIEWin('Shell DocObject View'), WM_COMMAND, 336 {ID_IE_HELP_ABOUTIE}, 0); - end; -end; - -//=== EwbTools ================================================================= - -{$IFDEF USE_EwbTools} - -//Document and Frame ----------------------------------------------------------- - -function TEmbeddedWB.SearchNextText(const Value: string; Direction: TSearchDirections = sdDown; - AutoSelect: Boolean = True): TSearchResults; -var - Document2: IHTMLDocument2; -const - ADirection: array[TSearchDirections] of Shortint = (+1, -1); -begin - Result := [srNotFound]; - if AnsiCompareText(Value, FSearchText) <> 0 then - begin - FTextRange := nil; - FSearchText := Value; - FHTMLChar := #0; - end; - // - if FSearchText = '' then - Exit; - // - Document2 := GetDocument; - if Document2 = nil then - Exit; - - if not Assigned(FTextRange) then - FTextRange := (Document2.body as IHTMLBodyElement).createTextRange; - // - if FHTMLChar <> #0 then - begin - if FHTMLChar <> Char(Ord(Direction) + 1) then - FTextRange.move('character', 0) - else - case Direction of - sdDown: FTextRange.move('character', 1); - sdUp: FTextRange.move('character', -1); - end; - end - else - begin - if FLastSearchDirection <> Direction then - case FLastSearchDirection of - sdDown: FTextRange.move('character', -1); - sdUp: FTextRange.move('character', 1); - end; - end; - // - if FTextRange.findText(FSearchText, ADirection[Direction], 0) then - begin - FTextRange.scrollIntoView(True); - if AutoSelect then - begin - try - FTextRange.select; - // Selecting a range sometimes fails - // Maybe someone knows of a better way to check if a range is selectable? - except - end; - end; - FHTMLChar := Char(Ord(Direction) + 1); - Result := [srFound]; - end - else - FHTMLChar := #0; - if (FLastSearchDirection = Direction) and (FHTMLChar = #0) then - Include(Result, srEndOf); - FLastSearchDirection := Direction; -end; - -function TEmbeddedWB.GetWordAtCursor(const X, Y: Integer): string; -begin - Result := EwbTools.GetWordAtCursor(X, Y, Self); -end; - -procedure TEmbeddedWB.ScrollToIDEx(ID: string); -begin - EwbTools.ScrollToIDEx(ID, Self); -end; - -procedure TEmbeddedWB.ScrollToID(ID: Integer); -begin - EwbTools.ScrollToID(ID, Self); -end; - -function TEmbeddedWB.HScrollBarVisible: Boolean; -var - HScroll, VScroll: Boolean; -begin - EwbTools.GetScrollbarVisibility(Self, HScroll, VScroll); - Result := HScroll; -end; - -function TEmbeddedWB.VScrollBarVisible: Boolean; -var - HScroll, VScroll: Boolean; -begin - EwbTools.GetScrollbarVisibility(Self, HScroll, VScroll); - Result := VScroll; -end; - -function TEmbeddedWB.HScrollBarPosition: Integer; -var - ScrollPos: TPoint; -begin - if EwbTools.GetScrollBarPosition(Self, ScrollPos) then - Result := ScrollPos.X - else - Result := -1; -end; - -function TEmbeddedWB.VScrollBarPosition: Integer; -var - ScrollPos: TPoint; -begin - if EwbTools.GetScrollBarPosition(Self, ScrollPos) then - Result := ScrollPos.Y - else - Result := -1; -end; - -function TEmbeddedWB.DocumentSource: string; -begin - Result := EwbTools.DocumentSource(OleObject); -end; - -function TEmbeddedWB.DocumentSourceText: string; -begin - Result := EwbTools.DocumentSourceText(OleObject, Document); -end; - -function TEmbeddedWB.AddHtmlToAboutBlank(StringToHtml: string): Boolean; -begin - Result := EwbTools.AddHtmlToAboutBlank(Self, StringToHtml); -end; - -function TEmbeddedWB.FrameCount: Longint; -begin - Wait(); - Result := EwbTools.FrameCount(Document); -end; - -function TEmbeddedWB.FrameCountFromDocument(SourceDoc: - IHTMLDocument2): Integer; //By Aladin -begin - Wait(); - Result := EwbTools.FrameCountFromDocument(SourceDoc); -end; - -function TEmbeddedWB.GetCookie: string; -begin - Result := Cookie; -end; - -//Document Operations ---------------------------------------------------------- - -procedure TEmbeddedWB.ScrollToTop; -begin - Wait(); - EwbTools.ScrollToTop(OleObject); -end; - -procedure TEmbeddedWB.ScrollToBottom; -begin - Wait(); - EwbTools.ScrollToBottom(Document); -end; - -procedure TEmbeddedWB.ScrollToPosition(X, Y: Integer); -begin - Wait(); - EwbTools.ScrollToPosition(OleObject, X, Y); -end; - -function TEmbeddedWB.SetCharartersSet(const ACharactersSet: string; Refresh: Boolean = True): Boolean; -begin - Result := EwbTools.SetCharartersSet(Self, Document, ACharactersSet); -end; - -procedure TEmbeddedWB.GetThumbnail(var Image: TImage); -begin - EwbTools.GetThumbnail(Application, Image) -end; - -function TEmbeddedWB.GetBmpFromBrowser(FileName: string): Boolean; -begin - Result := EwbTools.GetBmpFromBrowser(Document, Self.Handle, Self.Width, Self.Height, FileName); -end; - -function TEmbeddedWB.GetJPEGfromBrowser(FileName: string; SourceHeight, SourceWidth, - TargetHeight, TargetWidth: Integer): Boolean; -begin - Result := EwbTools.GetJPEGfromBrowser(Document, ControlInterface, FileName, SourceHeight, - SourceWidth, TargetHeight, TargetWidth); -end; - -//View Document Fields/Properties/Images --------------------------------------- - -procedure TEmbeddedWB.ViewPageSourceText; -begin - EwbTools.ViewPageSourceText(OleObject, Document); -end; - -procedure TEmbeddedWB.ViewPageSourceTextToStrings(TextList: TStrings); -begin - Wait(); - EwbTools.ViewPageSourceTextToStrings(OleObject, Document, TextList); -end; - -procedure TEmbeddedWB.ViewPageSourceHTMLToStrings(HtmlList: TStrings); -begin - Wait(); - EwbTools.ViewPageSourceHTMLToStrings(OleObject, Document, HtmlList); -end; - -procedure TEmbeddedWB.ViewPageLinksToStrings(LinksList: TStrings); -begin - EwbTools.ViewPageLinksToStrings(OleObject, LinksList); -end; - -//Printing --------------------------------------------------------------------- - -procedure TEmbeddedWB.Print; -begin - Wait(); - if FPrintOptions.Enabled then - EwbTools.Print(ControlInterface, FPrintOptions.HideSetup) - else - EwbTools.Print(ControlInterface, FPrintOptions.HideSetup, True, FPrintOptions.Header, FPrintOptions.Footer) -end; - -procedure TEmbeddedWB.PrintWithOptions; -begin - Wait(); - bPrintOptionsEnable := True; - EwbTools.PrintWithOptions(ControlInterface, Document, True, FPrintOptions.FEnabled, - FPrintOptions.HideSetup, bInvokingPageSetup); -end; - -procedure TEmbeddedWB.PrintPreview; -begin - EwbTools.PrintPreview(ControlInterface); -end; - -procedure TEmbeddedWB.PrintPreviewExtended(nCMDShow: Integer); -begin - EwbTools.PrintPreviewExtended(ControlInterface, nCMDShow, FPrintOptions.HideSetup); - bPrintOptionsEnable := True; -end; - -function TEmbeddedWB.PageSetup(UsePrintOptions: Boolean): Boolean; -begin - Wait(); - Result := EwbTools.PageSetup(Document, UsePrintOptions, FPrintOptions.FEnabled, bInvokingPageSetup); - bPrintOptionsEnable := True; -end; - -procedure TEmbeddedWB.PrintSetup; -begin - Wait(); - EwbTools.PrintSetup(ControlInterface, FPrintOptions.HideSetup); -end; - -procedure TEmbeddedWB.PrintPreviewFromTemplate(const TemplateFileName: string); -begin - EwbTools.PrintPreviewFromTemplate(TemplateFileName, Document); -end; - -//Dialogs --------------------------------------------------------------------- - -function TEmbeddedWB.OpenDialog: Boolean; -begin - Result := EwbTools.OpenDialog(Self, Self); -end; - -function TEmbeddedWB.SaveDialog: Boolean; -begin - Result := EwbTools.SaveDialog(Document); -end; - -function TEmbeddedWB.SaveDialogEx(AFilter: string = ''; ATitle: string = ''): string; -begin - Result := EwbTools.SaveDialog(Self, Self, ATitle, AFilter); -end; - -function TEmbeddedWB.ShowInternetOptions: Boolean; -begin - Result := EwbTools.ShowInternetOptions(Document); -end; - -function TEmbeddedWB.ShowPageProperties: Boolean; -begin - Result := EwbTools.ShowPageProperties(Document); -end; - -function TEmbeddedWB.ShowOrganizeFavorites: Boolean; -begin - Result := EwbTools.ShowOrganizeFavorites(Handle); -end; - -function TEmbeddedWB.ShowFindDialog: Boolean; -begin - Result := EwbTools.ShowFindDialog(Document) -end; - -procedure TEmbeddedWB.SaveImagesDialog; -begin - EwbTools.SaveImagesDialog(OleObject, Document); -end; - -function TEmbeddedWB.ViewPageSourceHtml: Boolean; -begin - Result := EwbTools.ViewPageSourceHtml(Document); -end; - -procedure TEmbeddedWB.SavePageTextDialog; -begin - Wait(); - EwbTools.SavePageTextDialog(Self, OleObject, Document); -end; - -//Open external programs ------------------------------------------------------- - -function TEmbeddedWB.OpenClient(Client: string): Boolean; -begin - Result := EwbTools.OpenClient(Client); -end; - -procedure TEmbeddedWB.ExploreFolder(Path: string); -begin - EwbTools.DoExploreFolder(Handle, Path); -end; - -procedure TEmbeddedWB.OpenIEBrowserWithAddress; -begin - EwbTools.OpenIEBrowserWithAddress(Handle); -end; - -//Open specific webpages ------------------------------------------------------- - -procedure TEmbeddedWB.GoSearchInGoogle(SearchTerm: string); -begin - EwbTools.GoSearchInGoogle(Self, SearchTerm) -end; - -procedure TEmbeddedWB.GoSearchInMSN(SearchTerm: string); -begin - EwbTools.GoSearchInMSN(Self, SearchTerm) -end; - -procedure TEmbeddedWB.GoSearchInYahoo(SearchTerm: string); -begin - EwbTools.GoSearchInYahoo(Self, SearchTerm) -end; - -//Navigatetml & Download ---------------------------------------------------------- - -procedure TEmbeddedWB.GoDownloadFile(URL: string); -begin - EwbTools.GoDownloadFile(Self, URL); -end; - -procedure TEmbeddedWB.GoDownloadMaskedFile(SourceFile, TargetFile: string; Notify: Boolean); -begin - EwbTools.GoDownloadMaskedFile(SourceFile, TargetFile, Notify); -end; - -procedure TEmbeddedWB.GoWithQueryDetails(Url, Query: string); -begin - EwbTools.GoWithQueryDetails(Self, Url, Query); -end; - -procedure TEmbeddedWB.GoNoHistory(const URL: string); -begin - EwbTools.GoNoHistory(Self, URL); -end; - -procedure TEmbeddedWB.GoAboutBlank; -begin - EwbTools.GoAboutBlank(Self); -end; - -//Get Special Folders/URL paths etc.-------------------------------------------- - -function TEmbeddedWB.GetCookiesPath: string; -begin - Result := EwbTools.GetCookiesPath; -end; - -function TEmbeddedWB.GetHistoryPath: string; -begin - Result := EwbTools.GetHistoryPath; -end; - -function TEmbeddedWB.GetFavoritesPath: string; -begin - Result := EwbTools.GetFavoritesPath; -end; - -function TEmbeddedWB.GetDefaultBrowserFromRegistry: string; -begin - Result := EwbTools.GetDefaultBrowserFromRegistry; -end; - -function TEmbeddedWB.GetSpecialFolderPath(CallerHandle: THandle; CSIDL: Integer): PChar; -begin - Result := EwbTools.GetSpecialFolderPath(CallerHandle, CSIDL); -end; - -function TEmbeddedWB.GetCachedFileFromURL(ItemUrl: string): string; -begin - Result := EwbTools.GetCachedFileFromURL(ItemUrl); -end; - -function TEmbeddedWB.URLFromFavorites(const dotURL: string): string; -begin - Result := EwbTools.URLFromFavorites(dotURL); -end; - -function TEmbeddedWB.UrlFromHistory(ShellFolder: IShellFolder; pidl: PItemIDList): string; -begin - Result := EwbTools.UrlFromHistory(ShellFolder, pidl) -end; - -function TEmbeddedWB.GetIPAndHostName(var HostName, IPaddr, WSAErr: string): Boolean; -begin - Result := EwbTools.GetIPAndHostName(HostName, IPaddr, WSAErr); -end; - -//E-Mail functions-------------------------------------------------------------- - -procedure TEmbeddedWB.SendPageInMailAsAttachment(aOwner: TComponent; FileName, Subject, Body: string); -begin - EwbTools.SendPageInMailAsAttachment(Self, aOwner, Document, FileName, Subject, Body); -end; - -procedure TEmbeddedWB.CreateNewMail; -begin - EwbTools.CreateNewMail; -end; - -procedure TEmbeddedWB.SendUrlInMail; -begin - EwbTools.SendUrlInMail(LocationURL, LocationName); -end; - -//Search in Document & Fill Forms----------------------------------------------- - -function TEmbeddedWB.SearchText(const Value: string; const iPos: Integer = 1): IHTMLTxtRange; -begin //by JJM - Result := EwbTools.SearchText(Self, Document, Value, iPos); -end; - -function TEmbeddedWB.SearchString(const strText: string): Boolean; -begin - Result := EwbTools.SearchString(Self, strText); -end; - -procedure TEmbeddedWB.SearchAndHighlight(AText: string; const ACaption, APrompt: string; - Flags: TSearchFlags = []; cbackColor: string = 'yellow'; cForeColor: string = ''; - ScrollIntoView: TScrollIntoView = sivNoScroll); -begin - Wait(); - EwbTools.SearchAndHighlight(Document, AText, ACaption, APrompt, Flags, - cbackColor, cForeColor, ScrollIntoView, True); -end; - -procedure TEmbeddedWB.SearchAndHighlight(AText: string; Flags: TSearchFlags = []; - cbackColor: string = 'yellow'; cForeColor: string = ''; - ScrollIntoView: TScrollIntoView = sivNoScroll); -begin - Wait(); - EwbTools.SearchAndHighlight(Document, AText, '', '', Flags, cbackColor, cForeColor, ScrollIntoView, False); -end; - -function TEmbeddedWB.FillForm(FieldName: string; Value: string; ElementNr: Integer = -1): Boolean; -begin - Result := EwbTools.FillForm(Self, FieldName, Value, ElementNr) -end; - -function TEmbeddedWB.GetFieldValue(FieldName: string): string; -begin - Result := EwbTools.GetFieldValue(OleObject, FieldName) -end; - -procedure TEmbeddedWB.FillFormAndExcecute; -begin - EwbTools.FillIEFormAndExcecute -end; - -//Clearing Cache/History/Typed ULRS--------------------------------------------- - -procedure TEmbeddedWB.ClearCache; -begin - EwbTools.ClearCache; -end; - -procedure TEmbeddedWB.ClearTypedUrls; -begin - EwbTools.ClearTypedUrls; -end; - -procedure TEmbeddedWB.ClearHistory; -begin - EwbTools.ClearHistory; -end; - -//Online Status----------------------------------------------------------------- - -function TEmbeddedWB.CheckOnlineStatus: Boolean; -begin - Result := EwbTools.CheckOnlineStatus; -end; - -function TEmbeddedWB.IsGlobalOffline: Boolean; -begin - Result := EwbTools.IsGlobalOffline; -end; - -procedure TEmbeddedWB.WorkOnline; -begin - EwbTools.WorkOnline(); -end; - -procedure TEmbeddedWB.WorkOffline; -begin - EwbTools.WorkOffline(); -end; - -//Restricted & Trusted Lists---------------------------------------------------- - -procedure TEmbeddedWB.AddToRestrictedSiteList(URL: string); -begin - EwbTools.AddToRestrictedSiteList(Self, URL); -end; - -procedure TEmbeddedWB.AddToTrustedSiteList(URL: string); -begin - EwbTools.AddToTrustedSiteList(Self, URL); -end; - -function TEmbeddedWB.CheckIfInTrustedList(const Host: string; SecureSite: Boolean): Boolean; -begin - Result := EwbTools.CheckIfInTrustedList(Host, SecureSite); -end; - -function TEmbeddedWB.CheckIfInRestricredList(Host: string; SecureSite: Boolean): Boolean; -begin - Result := EwbTools.CheckIfInRestricredList(Host, SecureSite); -end; - -//Zone Icon, Security Zone, SSL Status ---------------------------------------- - -function TEmbeddedWB.ImportCertFile(FileName, StoreType: string): Boolean; -begin - Result := EwbTools.ImportCertFile(FileName, StoreType); -end; - -procedure TEmbeddedWB.GetZoneIcon(IconPath: string; var Icon: TIcon); -begin - EwbTools.GetZoneIcon(IconPath, Icon); -end; - -function TEmbeddedWB.GetZoneAttributes(const URL: string): TZoneAttributes; -begin - Result := EwbTools.GetZoneAttributes(LocationURL); -end; - -function TEmbeddedWB.GetZoneIconToForm: Boolean; -begin - Result := EwbTools.GetZoneIconToForm(LocationURL, Caption, Hint); -end; - -function TEmbeddedWB.GetSSLStatus(var SSLName, SSLDescription: string): Boolean; -begin - Result := EwbTools.GetSSLStatus(OleObject, LocationURL, SSLName, SSLDescription); -end; - -function TEmbeddedWB.GetUrlSecurityZone(var ZoneName, ZoneDescription: string; var Icon: TIcon): Boolean; -begin - Result := EwbTools.GetUrlSecurityZone(LocationURL, ZoneName, ZoneDescription, Icon); -end; - -//Proxy ------------------------------------------------------------------------ - -function TProxySettings.SetProxy(UserAgent, Address, Bypass: string): Boolean; -begin - Result := EwbTools.SetProxy(UserAgent, Address, Bypass); - bProxy := Result; -end; - -function TProxySettings.SetProxy(UserAgent, Address, UserName, Password: string; Port: Integer): Boolean; -begin - Result := EwbTools.SetProxy(UserAgent, Address, UserName, Password, Port); - bProxy := Result; -end; - -function TProxySettings.SetProxyFromPAC(UserAgent, PACFile: string): Boolean; -begin - Result := EwbTools.SetProxyFromPAC(UserAgent, PACFile); - bProxy := Result; -end; - -procedure TEmbeddedWB.RefreshProxy; -begin - if FProxySettings.FUserName = '' then - FProxySettings.SetProxy(FProxySettings.FUserAgent, FProxySettings.FAddress + - ':' + IntToStr(FProxySettings.FPort), FProxySettings.FBypass) - else - FProxySettings.SetProxy(FProxySettings.FUserAgent, FProxySettings.FAddress, - FProxySettings.FUserName, FProxySettings.FPassword, FProxySettings.FPort); -end; - -//Miscellaneous ---------------------------------------------------------------- - -procedure TEmbeddedWB.RestoreApplicationFormSize; -begin - EwbTools.RestoreApplicationFormSize(Self); -end; - -procedure TEmbeddedWB.SaveApplicationFormSize; -begin - EwbTools.SaveApplicationFormSize(Self); -end; - -procedure TEmbeddedWB.ShowIEVersionInfo; -begin - EwbTools.ShowIEVersionInfo(Handle); -end; - -procedure TEmbeddedWB.SetNewHomePage(HomePage: string); -begin - EwbTools.SetNewHomePage(HomePage); -end; - -function TEmbeddedWB.GetLastVisitedPage(var LastVisitedPage: string): Boolean; -begin - Result := EwbTools.GetLastVisitedPage(LastVisitedPage); -end; - -function TEmbeddedWB.SaveLastVisitedPage: Boolean; -begin - Result := EwbTools.SaveLastVisitedPage(Self, LocationURL); -end; - -procedure TEmbeddedWB.AddToFavorites(URL, Title: string); -begin - inherited; - EwbTools.AddToFavorites(URL, Title); -end; - -procedure TEmbeddedWB.CreateDesktopShortcut; -begin - EwbTools.CreateDesktopShortcut(Handle); -end; - -procedure TEmbeddedWB.DisableNavSound(bDisable: Boolean); -begin - if GetIEVersionMajor >= 7 then - CoInternetSetFeatureEnabled(FEATURE_DISABLE_NAVIGATION_SOUNDS, FEATURE_FROM_PROCESS, bDisable) - else - EwbTools.DisableNavSound(bDisable); -end; - -procedure TEmbeddedWB.ExecScript(sExpression, sLanguage: string); -// e.g. sLanguage = 'JavaScript'; -begin - EwbTools.ExecScript(Self, sExpression, sLanguage); -end; - -function TEmbeddedWB.ExecScriptEx(MethodName: string; ParamValues: array of const): OleVariant; -begin - Result := EwbTools.ExecScriptEx(Self, MethodName, ParamValues); -end; - -function TEmbeddedWB.IsValidProtocol(const URL: string): Boolean; -begin - Result := EwbTools.IsValidProtocol(URL); -end; - -function TEmbeddedWB.DecodeUrl(const InputStr: string): string; -begin - Result := EwbTools.DecodeUrl(InputStr); -end; - -function TEmbeddedWB.EncodeUrl(const InputStr: string; const bQueryStr: Boolean): string; -begin - Result := EwbTools.EncodeUrl(InputStr, bQueryStr); -end; - -{$ENDIF} // USE_EwbTools - -//=== OnCreate / OnDestroy / Loaded / LoadSettings ============================ - -constructor TEmbeddedWB.Create(Owner: TComponent); -begin - inherited; - {---------------------------------------------} -{$IFDEF Enable_EwbMSHTMLEvents} - FSinkComponent := TMSHTMLHTMLDocumentEvents.Create(Self); -{$ENDIF} - {---------------------------------------------} - FAbout := EWB_INFO; - FVisible := True; - FSilent := True; - {---------------------------------------------} - FPrintOptions := TPrintOptions.Create; - FPrintOptions.Margins := TMargins.Create; - FPrintOptions.FHTMLHeader := TStringlist.Create; - FPrintOptions.FHTMLHeader.Add(''); - {---------------------------------------------} - FProxySettings := TProxySettings.Create; - FProxySettings.FPort := 80; - {---------------------------------------------} - FDisableErrors := TDisableErrors.Create; - FDisableErrors.FEnableDDE := True; - FDisableErrors.FfpExceptions := True; - FDisableErrors.FScriptErrorsSuppressed := True; - {---------------------------------------------} - FDialogBoxes := TDialogBoxes.Create; - FDialogBoxes.FReplaceCaption := True; - FDialogBoxes.FReplaceIcon := True; - {---------------------------------------------} - FVisualEffects := TVisualEffects.Create; - FVisualEffects.FTextSize := 2; - {---------------------------------------------} - FWinXPSP2orLater := IsWinXPSP2OrLater; - FResizing := not FWinXPSP2orLater; - FSearchText := ''; - FHTMLChar := #0; - FStopped := False; - {---------------------------------------------} - FUserAgent := ''; - FUserAgentInt := ''; - FUserAgentReg := ''; - {---------------------------------------------} -{$IFDEF DELPHI12_UP} - Encoding := TEncoding.Default; -{$ENDIF} - FTextRange := nil; - FHTMLCode := TStringList.Create; - FEnableMessageHandler := True; - FWndProcSubClassed := False; - FOnSetUserAgent := OnSetUserAgentEvent; - FOnHookChildWindow := OnHookChildWindows; -{$IFDEF Enable_SubClassChildWindows} - InitEWBChildHook; -{$ENDIF} - FDestroying := False; -end; - -destructor TEmbeddedWB.Destroy; -begin - FDestroying := True; - FPrintOptions.HTMLHeader.Free; - FPrintOptions.Margins.Free; - FreeAndNil(FPrintOptions); - FreeAndNil(FDialogBoxes); - FreeAndNil(FDisableErrors); - FreeAndNil(FProxySettings); - FreeAndNil(FHTMLCode); -{$IFDEF USE_EwbMSHTMLEvents} - FSinkComponent.OnMouseDown := nil; - FreeAndNil(FSinkComponent); -{$ENDIF} -{$IFDEF USE_EwbTools} - if (FVisualEffects.FTextSize <> 2) and (not (csDesigning in ComponentState)) then - Zoom := 2; -{$ENDIF} - FTextRange := nil; - FreeAndNil(FVisualEffects); - RestoreUserAgentReg; -{$IFDEF Enable_HookParentFormWndProc} - UnHookParentFormWndProc; -{$ENDIF} - inherited; -end; - -procedure TEmbeddedWB.LoadSettings; -begin - if not (csDesigning in ComponentState) then - begin - Modified := False; - FRuntimeMeasure := GetRunTimeMeasure; - FEnableMessageHandler := True; -{$IFDEF USE_EwbDDE} -{$IFDEF DELPHI6_UP} -{$WARN SYMBOL_DEPRECATED OFF} -{$ENDIF} - if DDEHWND = 0 then - begin - GetDDEVariables; - DDEHWND := AllocateHWnd(DDEWndProc); - end; -{$IFDEF DELPHI6_UP} -{$WARN SYMBOL_DEPRECATED ON} -{$ENDIF}{$ENDIF} - if not FWndProcSubClassed then - begin - WindowProc := WndProc; - FWndProcSubClassed := True; - end; - if not Assigned(SecurityManager) then - begin - CoInternetCreateSecurityManager(Self, SecurityManager, 0); - CoInternetCreateZoneManager(Self, ZoneManager, 0); - end; - if FDisableErrors.FScriptErrorsSuppressed then - ScriptErrorAction := eaContinue; - FDisableErrors.SetfpExceptions(FDisableErrors.FfpExceptions); -{$IFDEF Enable_HookParentFormWndProc} - HookParentFormWndProc; -{$ENDIF} - -{$IFDEF USE_EwbTools} - if (FProxySettings.FAutoLoadProxy) then - RefreshProxy; - if FVisualEffects.FDisableSounds then - begin - DisableNavSound(True); - bNavSound := True; - end; -{$ENDIF} - end - else - begin - FPrintOptions.FMeasure := FRunTimeMeasure; - GetPrintValues; - end; - HTMLCodeChanged(Self); - FHTMLCode.OnChange := HTMLCodeChanged; -end; - -procedure TEmbeddedWB.Loaded; -begin - inherited Loaded; - LoadSettings; -end; - -//=== Initialization & Finalization ============================================ - -procedure DoInitialization; -begin -{$WARN SYMBOL_PLATFORM OFF} - wSaved8087CW := Default8087CW; -{$WARN SYMBOL_PLATFORM DEFAULT} - bPrintOptionsEnable := False; - bProxy := False; - bNavSound := False; - bOleInitialize := OleInitialize(nil) = S_OK; - -{$IFDEF AutoUse_EwbControl} - EwbControl := TEwbControl.Create(nil); -{$IFDEF Enable_AutoFocusControl} - EwbControl.FocusControl.Active := True; -{$ENDIF Enable_AutoFocusControl} - -{$IFDEF Enable_AutoMouseWheelFix} - EwbControl.MouseWheelFix.Active := True; -{$ENDIF Enable_AutoMouseWheelFix} - -{$ENDIF AutoUse_EwbControl} -end; - -procedure DoFinalization; -begin -{$IFDEF USE_EwbDDE} -{$IFDEF DELPHI6_UP} -{$WARN SYMBOL_DEPRECATED OFF} - if DDEHWND <> 0 then - DeAllocateHWND(DDEHWND); -{$WARN SYMBOL_DEPRECATED ON} -{$ENDIF} -{$ENDIF} - -{$IFDEF USE_EwbTools} - if bProxy then - RemoveProxy; - if bNavSound then - DisableNavSound(False); -{$ENDIF} - - Set8087CW(wSaved8087CW); - if bOleInitialize then - try - OleUninitialize; - except - end; - -{$IFDEF Enable_AutoFocusControl} - if Assigned(EwbControl) then - EwbControl.Free; -{$ENDIF} -end; - -initialization - DoInitialization; -finalization - DoFinalization; -end. - diff --git a/windows/src/ext/embeddedwb/Source/EwbAcc.pas b/windows/src/ext/embeddedwb/Source/EwbAcc.pas deleted file mode 100644 index 586b8ba656..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbAcc.pas +++ /dev/null @@ -1,827 +0,0 @@ -//************************************************************** -// * -// EwbAcc * * -// For Delphi * -// by bsalsa * -// bsalsa@gmail.com * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -unit EwbAcc; - -interface - -{$I EWB.inc} - -uses - ActiveX, SysUtils, ShlObj, Windows, UrlMon, EwbIEConst; - -type - IObjectIdentity = interface - ['{CA04B7E6-0D21-11d1-8CC5-00C04FC2B085}'] - function IsEqualObject(unk: IUnknown): HRESULT; stdcall; - end; - - type - PInternetPerConnOption = ^INTERNET_PER_CONN_OPTION; - INTERNET_PER_CONN_OPTION = record - dwOption: DWORD; - case Integer of - 0: (dwValue: DWORD); - 1: (pszValue:LPTSTR); - 2: (ftValue: FILETIME); - end; - - PInternetPerConnOptionList = ^INTERNET_PER_CONN_OPTION_LIST; - INTERNET_PER_CONN_OPTION_LIST = record - dwSize :DWORD; - pszConnection :LPTSTR; - dwOptionCount :DWORD; - dwOptionError :DWORD; - pOptions :PInternetPerConnOption; - end; - - LPINTERNET_PER_CONN_OPTION = ^INTERNET_PER_CONN_OPTION; - LPINTERNET_PER_CONN_OPTION_LIST = ^INTERNET_PER_CONN_OPTION_LIST; - -type - BrowserNavConstants = TOleEnum; - STATURL = record - cbSize: DWORD; - pwcsUrl: DWORD; - pwcsTitle: DWORD; - ftLastVisited: FILETIME; - ftLastUpdated: FILETIME; - ftExpires: FILETIME; - dwFlags: DWORD; - end; - - OSVERSIONINFOEX = packed record - dwOSVersionInfoSize: DWORD; - dwMajorVersion: DWORD; - dwMinorVersion: DWORD; - dwBuildNumber: DWORD; - dwPlatformId: DWORD; - szCSDVersion: array[0..127] of Char; - wServicePackMajor: WORD; - wServicePackMinor: WORD; - wSuiteMask: WORD; - wProductType: Byte; - wReserved: Byte; - end; - TOSVersionInfoEx = OSVERSIONINFOEX; - POSVersionInfoEx = ^TOSVersionInfoEx; - - IZoomEvents = interface(IUnknown) - ['{41B68150-904C-4E17-A0BA-A438182E359D}'] - function OnZoomPercentChanged(const ulZoomPercent: ulong): HRESULT; stdcall; - end; - - IHLinkFrame = interface(IUnknown) - ['{79EAC9C5-BAF9-11CE-8C82-00AA004BA90B}'] - {Some functions are not supported any more?} - //function SetBrowseContext(ppihlbc: IHlinkBrowseContext): HRESULT; stdcall; - //function GetBrowseContext(out ppihlbc: IHlinkBrowseContext): HRESULT; stdcall; - //function Navigate(grfHLNF: DWORD; pbc: IBindCtx; pibsc: IBindStatusCallback; pihlNavigate: IHLink): HRESULT; stdcall; - function OnNavigate(grfHLNF: DWORD; pimkTarget: IMoniker; pwzLocation, - pwzFriendlyName: PWideChar; dwreserved: DWORD): HRESULT; stdcall; - function UpdateHlink(uHLID: ULONG; pimkTarget: IMoniker; pwzLocation, - pwzFriendlyName: PWideChar): HRESULT; stdcall; - end; - - IDownloadManager = interface(IUnknown) - ['{988934A4-064B-11D3-BB80-00104B35E7F9}'] - function Download( - pmk: IMoniker; // Identifies the object to be downloaded - pbc: IBindCtx; // Stores information used by the moniker to bind - dwBindVerb: DWORD; // The action to be performed during the bind - grfBINDF: DWORD; // Determines the use of URL encoding during the bind - pBindInfo: PBindInfo; // Used to implement IBindStatusCallback::GetBindInfo - pszHeaders: PWideChar; // Additional headers to use with IHttpNegotiate - pszRedir: PWideChar; // The URL that the moniker is redirected to - uiCP: UINT // The code page of the object's display name - ): HRESULT; stdcall; - end; - - IEnumSTATURL = interface(IUnknown) - ['{3C374A42-BAE4-11CF-BF7D-00AA006946EE}'] - function Next(celt: Integer; out elt; pceltFetched: PLongint): HRESULT; - stdcall; - function Skip(celt: Longint): HRESULT; stdcall; - function Reset: HRESULT; stdcall; - function Clone(out ppenum: IEnumSTATURL): HRESULT; stdcall; - function SetFilter(poszFilter: PWideChar; dwFlags: DWORD): HRESULT; stdcall; - end; - -type - TSTATURL = record - cbSize: DWORD; - pwcsUrl: DWORD; - pwcsTitle: DWORD; - ftLastVisited: FILETIME; - ftLastUpdated: FILETIME; - ftExpires: FILETIME; - dwFlags: DWORD; - end; - - PEntry = ^TEntry; - TEntry = record - Url: string; - Title: string; - LastVisited, - LastUpdated, - Expires: TDateTime; - end; - - IUrlHistoryStg = interface(IUnknown) - ['{3C374A41-BAE4-11CF-BF7D-00AA006946EE}'] - function AddUrl(pocsUrl: PWideChar; pocsTitle: PWideChar; dwFlags: Integer): HRESULT; stdcall; - function DeleteUrl(pocsUrl: PWideChar; dwFlags: Integer): HRESULT; stdcall; - function QueryUrl(pocsUrl: PWideChar; dwFlags: Integer; var lpSTATURL: TSTATURL): HRESULT; stdcall; - function BindToObject(pocsUrl: PWideChar; var riid: TIID; out ppvOut: Pointer): HRESULT; stdcall; - function EnumUrls(out ppenum: IEnumSTATURL): HRESULT; stdcall; - end; - - - IUrlHistoryStg2 = interface(IUrlHistoryStg) - ['{AFA0DC11-C313-11D0-831A-00C04FD5AE38}'] - function AddUrlAndNotify(pocsUrl: PWideChar; pocsTitle: PWideChar; dwFlags: Integer; - FWriteHistory: Integer; var poctNotify: Pointer; - const punkISFolder: IUnknown): HRESULT; stdcall; - function ClearHistory: HRESULT; stdcall; - end; - - IUrlHistoryNotify = interface(IOleCommandTarget) - ['{BC40BEC1-C493-11d0-831B-00C04FD5AE38}'] - end; - - PDOCHOSTUIINFO = ^TDOCHOSTUIINFO; - TDOCHOSTUIINFO = record - cbSize: ULONG; - dwFlags: DWORD; - dwDoubleClick: DWORD; - chHostCss: POleStr; - chHostNS: POleStr; - end; - -type - INewWindowManager = interface(IUnknown) - ['{D2BC4C84-3F72-4a52-A604-7BCBF3982CBB}'] - function EvaluateNewWindow(pszUrl, pszName, pszUrlContext, pszFeatures: - LPCWSTR; - fReplace: BOOL; dwFlags, dwUserActionTime: DWORD): HRESULT; stdcall; - end; - - IDocHostShowUI = interface(IUnknown) - ['{c4d244b0-d43e-11cf-893b-00aa00bdce1a}'] - function ShowMessage(hwnd: THandle; lpstrText: POleStr; lpstrCaption: POleStr; - dwType: longint; lpstrHelpFile: POleStr; dwHelpContext: longint; - var plResult: LRESULT): HRESULT; stdcall; - function ShowHelp(hwnd: THandle; pszHelpFile: POleStr; uCommand: integer; - dwData: longint; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT; stdcall; - end; - - IDocHostUIHandler = interface(IUnknown) - ['{bd3f23c0-d43e-11cf-893b-00aa00bdce1a}'] - function ShowContextMenu(const dwID: DWORD; const ppt: PPOINT; - const CommandTarget: IUnknown; const Context: IDispatch): HRESULT; - stdcall; - function GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT; stdcall; - function ShowUI(const dwID: DWORD; const pActiveObject: - IOleInPlaceActiveObject; - const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame; - const pDoc: IOleInPlaceUIWindow): HRESULT; stdcall; - function HideUI: HRESULT; stdcall; - function UpdateUI: HRESULT; stdcall; - function EnableModeless(const fEnable: BOOL): HRESULT; stdcall; - function OnDocWindowActivate(const fActivate: BOOL): HRESULT; stdcall; - function OnFrameWindowActivate(const fActivate: BOOL): HRESULT; stdcall; - function ResizeBorder(const prcBorder: PRECT; - const pUIWindow: IOleInPlaceUIWindow; - const fRameWindow: BOOL): HRESULT; stdcall; - function TranslateAccelerator(const lpMsg: PMSG; const pguidCmdGroup: PGUID; - const nCmdID: DWORD): HRESULT; stdcall; - function GetOptionKeyPath(out pchKey: POleStr; const dw: DWORD): HRESULT; - stdcall; - function GetDropTarget(const pDropTarget: IDropTarget; - out ppDropTarget: IDropTarget): HRESULT; stdcall; - function GetExternal(out ppDispatch: IDispatch): HRESULT; stdcall; - function TranslateUrl(const dwTranslate: DWORD; const pchURLIn: POleStr; - out ppchURLOut: POleStr): HRESULT; stdcall; - function FilterDataObject(const pDO: IDataObject; - out ppDORet: IDataObject): HRESULT; stdcall; - end; - - IDocHostUIHandler2 = interface(IDocHostUIHandler) - ['{3050f6d0-98b5-11cf-bb82-00aa00bdce0b}'] - function GetOverrideKeyPath(out pchKey: POleStr; dw: DWORD): HRESULT; - stdcall; - end; - - IProtectFocus = interface - ['{D81F90A3-8156-44F7-AD28-5ABB87003274}'] - function AllowFocusChange(out pfAllow: BOOL): HRESULT; stdcall; - end; - - ICustomDoc = interface(IUnknown) - ['{3050f3f0-98b5-11cf-bb82-00aa00bdce0b}'] - function SetUIHandler(const pUIHandler: IDocHostUIHandler): HRESULT; - stdcall; - end; - - IHTMLOMWindowServices = interface(IUnknown) - ['{3050f5fc-98b5-11cf-bb82-00aa00bdce0b}'] - function moveTo(const x, y: Integer): HRESULT; stdcall; - function moveBy(const x, y: Integer): HRESULT; stdcall; - function resizeTo(const x, y: Integer): HRESULT; stdcall; - function resizeBy(const x, y: Integer): HRESULT; stdcall; - end; - -type - ITravelLogEntry = interface(IUnknown) - ['{7EBFDD87-AD18-11d3-A4C5-00C04F72D6B8}'] - function GetTitle(var ppszTitle: POleStr): HRESULT; stdcall; - function GetUrl(var ppszURL: POleStr): HRESULT; stdcall; - end; - - IEnumTravelLogEntry = interface(IUnknown) - ['{7EBFDD85-AD18-11d3-A4C5-00C04F72D6B8}'] - function Next(cElt: ULONG; out rgElt: ITravelLogEntry; out pcEltFetched: ULONG): HRESULT; stdcall; - function Skip(cElt: ULONG): HRESULT; stdcall; - function Reset: HRESULT; stdcall; - function Clone(out ppEnum: IEnumTravelLogEntry): HRESULT; stdcall; - end; - - ITravelLogStg = interface(IUnknown) - ['{7EBFDD80-AD18-11d3-A4C5-00C04F72D6B8}'] - function CreateEntry(pszURL, pszTitle: POleStr; ptleRelativeTo: ITravelLogEntry; - fPrepend: BOOL; out pptle: ITravelLogEntry): HRESULT; stdcall; - function TravelTo(ptle: ITravelLogEntry): HRESULT; stdcall; - function EnumEntries(Flags: DWORD; out ppenum: IEnumTravellogEntry): HRESULT; stdcall; - function FindEntries(Flags: DWORD; pszURL: POleStr; out ppenum: IEnumTravelLogEntry): HRESULT; stdcall; - function GetCount(Flags: DWORD; out pcEntries: DWORD): HRESULT; stdcall; - function RemoveEntry(ptle: ITravelLogEntry): HRESULT; stdcall; - function GetRelativeEntry(iOffset: Integer; out ptle: ITravelLogEntry): HRESULT; stdcall; - end; - - PUrlInvokeCommandInfoA = ^TUrlInvokeCommandInfoA; - TUrlInvokeCommandInfoA = record - dwcbSize: DWORD; // Size of structure - dwFlags: DWORD; // Bit field of IURL_INVOKECOMMAND_FLAGS - hwndParent: HWND; - // Parent window. Valid only if IURL_INVOKECOMMAND_FL_ALLOW_UI is set. - pcszVerb: LPCSTR; - // Verb to invoke. Ignored if IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB is set. - end; - - PUrlInvokeCommandInfoW = ^TUrlInvokeCommandInfoW; - TUrlInvokeCommandInfoW = record - dwcbSize: DWORD; // Size of structure - dwFlags: DWORD; // Bit field of IURL_INVOKECOMMAND_FLAGS - hwndParent: HWND; - // Parent window. Valid only if IURL_INVOKECOMMAND_FL_ALLOW_UI is set. - pcszVerb: LPCWSTR; - // Verb to invoke. Ignored if IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB is set. - end; - -{$IFDEF UNICODE} - PURLInvokeCommandInfo = ^TUrlInvokeCommandInfoW; - TUrlInvokeCommandInfo = TUrlInvokeCOmmandInfoW; -{$ELSE} - PURLInvokeCommandInfo = ^TUrlInvokeCommandInfoA; - TUrlInvokeCommandInfo = TUrlInvokeCOmmandInfoA; -{$ENDIF} - - IUniformResourceLocatorA = interface(IUnknown) - [SID_IUniformResourceLocatorA] - function SetURL(pcszURL: LpcStr; dwInFlags: DWORD): HRESULT; stdcall; - function GetURL(ppszURL: LpStr): HRESULT; stdcall; - function InvokeCommand(purlici: PURLINVOKECOMMANDINFOA): HRESULT; stdcall; - - end; - - IUniformResourceLocatorW = interface(IUnknown) - [SID_IUniformResourceLocatorW] - function SetURL(pcszURL: LpcWStr; dwInFlags: DWORD): HRESULT; stdcall; - function GetURL(ppszURL: LpWStr): HRESULT; stdcall; - function InvokeCommand(purlici: PURLINVOKECOMMANDINFOW): HRESULT; stdcall; - end; - -{$IFDEF UNICODE} - IUniformResourceLocator = IUniformResourceLocatorW; -{$ELSE} - IUniformResourceLocator = IUniformResourceLocatorA; -{$ENDIF} - -function TranslateURLA(pcszURL: LPCSTR; - dwInFlags: DWORD; - ppszTranslatedURL: LPSTR): HRESULT; stdcall; - -function TranslateURLW(pcszURL: LPCWSTR; - dwInFlags: DWORD; - ppszTranslatedURL: LPWSTR): HRESULT; stdcall; - -{$IFDEF UNICODE} -function TranslateURL(pcszURL: LPCWSTR; - dwInFlags: DWORD; - ppszTranslatedURL: LPWSTR): HRESULT; stdcall; -{$ELSE} -function TranslateURL(pcszURL: LPCSTR; - dwInFlags: DWORD; - ppszTranslatedURL: LPSTR): HRESULT; stdcall; -{$ENDIF} - -function URLAssociationDialogA(hwndParent: HWND; - dwInFlags: DWORD; - pcszFile: LPCSTR; - pcszURL: LPCSTR; - pszAppBuf: LPSTR; - ucAppBufLen: UINT): HRESULT; stdcall; - -function URLAssociationDialogW(hwndParent: HWND; - dwInFlags: DWORD; - pcszFile: LPCWSTR; - pcszURL: LPCWSTR; - pszAppBuf: LPWSTR; - ucAppBufLen: UINT): HRESULT; stdcall; - -{$IFDEF UNICODE} -function URLAssociationDialog(hwndParent: HWND; - dwInFlags: DWORD; - pcszFile: LPCWSTR; - pcszURL: LPCWSTR; - pszAppBuf: LPWSTR; - ucAppBufLen: UINT): HRESULT; stdcall; -{$ELSE} -function URLAssociationDialog(hwndParent: HWND; - dwInFlags: DWORD; - pcszFile: LPCSTR; - pcszURL: LPCSTR; - pszAppBuf: LPSTR; - ucAppBufLen: UINT): HRESULT; stdcall; -{$ENDIF} - -function MIMEAssociationDialogA(hwndParent: HWND; - dwInFlags: DWORD; - pcszFile: LPCSTR; - pcszMIMEContentType: LPCSTR; - pszAppBuf: LPSTR; - ucAppBufLen: UINT): HRESULT; stdcall; - -function MIMEAssociationDialogW(hwndParent: HWND; - dwInFlags: DWORD; - pcszFile: LPCWSTR; - pcszMIMEContentType: LPCWSTR; - pszAppBuf: LPWSTR; - ucAppBufLen: UINT): HRESULT; stdcall; - -{$IFDEF UNICODE} -function MIMEAssociationDialog(hwndParent: HWND; - dwInFlags: DWORD; - pcszFile: LPCWSTR; - pcszMIMEContentType: LPCWSTR; - pszAppBuf: LPWSTR; - ucAppBufLen: UINT): HRESULT; stdcall; -{$ELSE} -function MIMEAssociationDialog(hwndParent: HWND; - dwInFlags: DWORD; - pcszFile: LPCSTR; - pcszMIMEContentType: LPCSTR; - pszAppBuf: LPSTR; - ucAppBufLen: UINT): HRESULT; stdcall; -{$ENDIF} - -function InetIsOffline(dwFlags: DWORD): BOOL; stdcall; - -//Serge -{$IFDEF DELPHI6_UP} -type -{$EXTERNALSYM _tagINTERNETFEATURELIST} - _tagINTERNETFEATURELIST = ( - FEATURE_OBJECT_CACHING = 0, - FEATURE_ZONE_ELEVATION = 1, - FEATURE_MIME_HANDLING = 2, - FEATURE_MIME_SNIFFING = 3, - FEATURE_WINDOW_RESTRICTIONS = 4, - FEATURE_WEBOC_POPUPMANAGEMENT = 5, - FEATURE_BEHAVIORS = 6, - FEATURE_DISABLE_MK_PROTOCOL = 7, - FEATURE_LOCALMACHINE_LOCKDOWN = 8, - FEATURE_SECURITYBAND = 9, - FEATURE_RESTRICT_ACTIVEXINSTALL = 10, - FEATURE_VALIDATE_NAVIGATE_URL = 11, - FEATURE_RESTRICT_FILEDOWNLOAD = 12, - FEATURE_ADDON_MANAGEMENT = 13, - FEATURE_PROTOCOL_LOCKDOWN = 14, - FEATURE_HTTP_USERNAME_PASSWORD_DISABLE = 15, - FEATURE_SAFE_BINDTOOBJECT = 16, - FEATURE_UNC_SAVEDFILECHECK = 17, - FEATURE_GET_URL_DOM_FILEPATH_UNENCODED = 18, - FEATURE_TABBED_BROWSING = 19, - FEATURE_SSLUX = 20, - FEATURE_DISABLE_NAVIGATION_SOUNDS = 21, - FEATURE_DISABLE_LEGACY_COMPRESSION = 22, - FEATURE_FORCE_ADDR_AND_STATUS = 23, - FEATURE_XMLHTTP = 24, - FEATURE_DISABLE_TELNET_PROTOCOL = 25, - FEATURE_FEEDS = 26, - FEATURE_BLOCK_INPUT_PROMPTS = 27, - FEATURE_ENTRY_COUNT = 28 - ); - TInternetFeature = _tagINTERNETFEATURELIST; -{$ELSE} -type - _tagINTERNETFEATURELIST = ( - FEATURE_OBJECT_CACHING, - FEATURE_ZONE_ELEVATION, - FEATURE_MIME_HANDLING, - FEATURE_MIME_SNIFFING, - FEATURE_WINDOW_RESTRICTIONS, - FEATURE_WEBOC_POPUPMANAGEMEN, - FEATURE_BEHAVIORS, - FEATURE_DISABLE_MK_PROTOCOL, - FEATURE_LOCALMACHINE_LOCKDOWN, - FEATURE_SECURITYBAND, - FEATURE_RESTRICT_ACTIVEXINSTALL, - FEATURE_VALIDATE_NAVIGATE_URL, - FEATURE_RESTRICT_FILEDOWNLOAD, - FEATURE_ADDON_MANAGEMENT, - FEATURE_PROTOCOL_LOCKDOWN, - FEATURE_HTTP_USERNAME_PASSWORD_DISABLE, - FEATURE_SAFE_BINDTOOBJECT, - FEATURE_UNC_SAVEDFILECHECK, - FEATURE_GET_URL_DOM_FILEPATH_UNENCODED, - FEATURE_TABBED_BROWSING, - FEATURE_SSLUX, - FEATURE_DISABLE_NAVIGATION_SOUNDS, - FEATURE_DISABLE_LEGACY_COMPRESSION, - FEATURE_FORCE_ADDR_AND_STATUS, - FEATURE_XMLHTTP, - FEATURE_DISABLE_TELNET_PROTOCOL, - FEATURE_FEEDS, - FEATURE_BLOCK_INPUT_PROMPTS, - FEATURE_ENTRY_COUNT); - TInternetFeature = _tagINTERNETFEATURELIST; -{$ENDIF} - - -function CoInternetSetFeatureEnabled(aFeature: TInternetFeature; - dwFlags: DWORD; fEnable: Boolean): HRESULT; -function CoInternetIsFeatureEnabled(aFeature: TInternetFeature; - dwFlags: DWORD): HRESULT; -function CoInternetIsFeatureEnabledForUrl(aFeature: TInternetFeature; - dwFlags: DWORD; szUrl: LPCWSTR; pSecMgr: IInternetSecurityManager): HRESULT; - -function CoInternetIsFeatureZoneElevationEnabled( - szFromURL, szToURL: LPCWSTR; pSecMgr: IInternetSecurityManager; - dwFlags: DWORD): HRESULT; - -var - ShellModule: THandle; - ComCtlModule: THandle; - HHCtrlModule: THandle; - URLMonModule: THandle; - -function SHLockShared(Handle: THandle; DW: DWORD): Pointer; stdcall; -function SHUnlockShared(Pnt: Pointer): BOOL; stdcall; -function SHFreeShared(Handle: THandle; DW: DWORD): Pointer; stdcall; -function _Free(Pidl: PItemIDList): BOOL; stdcall; -function HtmlHelp(hwndCaller: HWND; pszFile: PChar; uCommand: Integer; - dwData: DWORD): HWND; stdcall; - -function GetSHDOCLCModule: THandle; - -{events} -type - OnQueryInterfaceEvent = procedure(Sender: TObject; const IID: TGUID; var Obj; Rezult: HRESULT) of object; - - {IDispatch Interface} - TGetTypeInfoCountEvent = procedure(Sender: TObject; var Count: Integer; var - Rezult: HRESULT) of object; - TGetTypeInfoEvent = procedure(Sender: TObject; Index, LocaleID: Integer; var - TypeInfo: ITypeInfo; var Rezult: HRESULT) of object; - TGetIDsOfNamesEvent = procedure(Sender: TObject; const IID: TGUID; Names: - Pointer; - NameCount, LocaleID: Integer; DispIDs: Pointer; var Rezult: HRESULT) of - object; - TInvokeEvent = procedure(Sender: TObject; DispID: Integer; const IID: TGUID; - LocaleID: Integer; - Flags: Word; var Params: TDispParams; VarResult, ExcepInfo, ArgErr: Pointer; - var Rezult: HRESULT) of object; - {IDropTarget Interface} - TOnDropEvent = procedure(Sender: TObject; const dataObj: IDataObject; - grfKeyState: Longint; pt: TPoint; - var dwEffect: Longint; var Rezult: HRESULT) of object; - TOnDragEnterEvent = procedure(Sender: TObject; const dataObj: IDataObject; - grfKeyState: Longint; - pt: TPoint; var dwEffect: Longint; var Rezult: HRESULT) of object; - TOnDragOverEvent = procedure(Sender: TObject; grfKeyState: Longint; pt: - TPoint; var dwEffect: Longint; - var Rezult: HRESULT) of object; - {IOLECommandTarget Interface} - TComTargetExecEvent = procedure(Sender: TObject; CmdGroup: PGUID; nCmdID, - nCmdexecopt: DWORD; - const vaIn: OleVariant; var vaOut: OleVariant; var Rezult: HRESULT) of - object; - {IServiceProvider Interface} - TQueryServiceEvent = procedure(Sender: TObject; const rsid, iid: TGUID; var - Obj: IUnknown) of object; - -implementation - -function InetIsOffline; external urldll name 'InetIsOffline'; - -function MIMEAssociationDialogW; external urldll name 'MIMEAssociationDialogW'; -function MIMEAssociationDialogA; external urldll name 'MIMEAssociationDialogA'; -{$IFDEF UNICODE} -function MIMEAssociationDialog; external urldll name 'MIMEAssociationDialogW'; -{$ELSE} -function MIMEAssociationDialog; external urldll name 'MIMEAssociationDialogA'; -{$ENDIF} - -function URLAssociationDialogW; external urldll name 'URLAssociationDialogW'; -function URLAssociationDialogA; external urldll name 'URLAssociationDialogA'; -{$IFDEF UNICODE} -function URLAssociationDialog; external urldll name 'URLAssociationDialogW'; -{$ELSE} -function URLAssociationDialog; external urldll name 'URLAssociationDialogA'; -{$ENDIF} - -function TranslateURLA; external urldll name 'TranslateURLA'; -function TranslateURLW; external urldll name 'TranslateURLW'; -{$IFDEF UNICODE} -function TranslateURL; external urldll name 'TranslateURLW'; -{$ELSE} -function TranslateURL; external urldll name 'TranslateURLA'; -{$ENDIF} - - -function GetShellModule: THandle; -begin - if ShellModule = 0 then - begin - ShellModule := SafeLoadLibrary(Shell32); - if ShellModule <= HINSTANCE_ERROR then - ShellModule := 0; - end; - Result := ShellModule; -end; - -function GetHHctrlModule: THandle; -begin - if HHCtrlModule = 0 then - begin - HHCtrlModule := SafeLoadLibrary(HHCtrl); - if HHCtrlModule <= HINSTANCE_ERROR then - HHCtrlModule := 0; - end; - Result := HHCtrlModule; -end; - -function GetComctlModule: THandle; -begin - if ComctlModule = 0 then - begin - ComctlModule := SafeLoadLibrary(comctl32); - if ComctlModule <= HINSTANCE_ERROR then - ComctlModule := 0; - end; - Result := ComctlModule; -end; - -function HtmlHelp(hwndCaller: HWND; pszFile: PChar; uCommand: Integer; - dwData: DWORD): HWND; stdcall; -type - TheFunctionType = function(hwndCaller: HWND; pszFile: PChar; uCommand: Integer; - dwData: DWORD): HWND; stdcall; -var - TheFunction: TheFunctionType; -begin - Result := 0; - if HHCtrlModule = 0 then - HHCtrlModule := GetHHCtrlModule; - if HHCtrlModule <> 0 then - begin -{$IFDEF UNICODE} - TheFunction := GetProcAddress(HHCtrlModule, 'HtlmHelpW'); -{$ELSE} - TheFunction := GetProcAddress(HHCtrlModule, 'HtlmHelpA'); -{$ENDIF UNICODE} - if (Assigned(TheFunction)) then - Result := TheFunction(hwndCaller, pszFile, uCommand, dwdata); - end; -end; - -function _Free(Pidl: PItemIDList): BOOL; stdcall; -type - TheFunctionType = function(Pidl: PItemIDList): BOOL; stdcall; -var - TheFunction: TheFunctionType; -begin - Result := False; - if ComctlModule = 0 then - ComctlModule := GetComctlModule; - if ComctlModule <> 0 then - begin - TheFunction := GetProcAddress(ComctlModule, PChar(Free_Index)); - if (Assigned(TheFunction)) then - Result := TheFunction(Pidl); - end; -end; - -function SHLockShared(Handle: THandle; DW: DWORD): Pointer; stdcall; -type - TheFunctionType = function(Handle: THandle; DW: DWORD): Pointer; stdcall; -var - TheFunction: TheFunctionType; -begin - Result := nil; - if ShellModule = 0 then - ShellModule := GetShellModule; - if ShellModule <> 0 then - begin - TheFunction := GetProcAddress(ShellModule, PChar(SHLockShared_Index)); - if (Assigned(TheFunction)) then - Result := TheFunction(Handle, DW); - end; -end; - -function SHUnLockShared(pnt: Pointer): BOOL; stdcall; -type - TheFunctionType = function(pnt: Pointer): BOOL; stdcall; -var - TheFunction: TheFunctionType; -begin - Result := FALSE; - if ShellModule = 0 then - ShellModule := GetShellModule; - if ShellModule <> 0 then - begin - TheFunction := GetProcAddress(ShellModule, PChar(SHUnLockShared_Index)); - if (Assigned(TheFunction)) then - Result := TheFunction(pnt); - end; -end; - -function SHFreeShared(Handle: THandle; DW: DWORD): Pointer; stdcall; -type - TheFunctionType = function(Handle: THandle; DW: DWORD): Pointer; stdcall; -var - TheFunction: TheFunctionType; -begin - Result := nil; - if ShellModule = 0 then - ShellModule := GetShellModule; - if ShellModule <> 0 then - begin - TheFunction := GetProcAddress(ShellModule, PChar(SHFreeShared_Index)); - if (Assigned(TheFunction)) then - Result := TheFunction(Handle, DW); - end; -end; - -function CheckURLMonModule: Boolean; -begin - if URLMonModule = 0 then - URLMonModule := SafeLoadLibrary(UrlMonLib); - Result := URLMonModule > HINSTANCE_ERROR; -end; - -function CheckURLMonModuleFunc(const Name: string; var ptr: Pointer): Boolean; -begin - Result := CheckURLMonModule; - if Result then - begin - ptr := GetProcAddress(URLMonModule, PChar(Name)); - Result := Assigned(ptr); - if not Result then - ptr := Pointer(1); // ??? - end; -end; - -type - TCoInternetSetFeatureEnabled = function(aFeature: DWORD; - dwFlags: DWORD; fEnable: BOOL): HRESULT; stdcall; - TCoInternetIsFeatureEnabled = function(aFeature: DWORD; - dwFlags: DWORD): HRESULT; stdcall; - TCoInternetIsFeatureEnabledForUrl = function(aFeature: DWORD; - dwFlags: DWORD; szUrl: LPCWSTR; pSecMgr: IInternetSecurityManager): HRESULT; - stdcall; - TCoInternetIsFeatureZoneElevationEnabled = function(szFromURL, szToURL: - LPCWSTR; pSecMgr: IInternetSecurityManager; - dwFlags: DWORD): HRESULT; stdcall; - -var - CoInternetIsFeatureZoneElevationEnabledPtr: Pointer; - - CoInternetSetFeatureEnabledPtr: Pointer; - CoInternetIsFeatureEnablePtr: Pointer; - CoInternetIsFeatureEnabledForUrlPtr: Pointer; - -function CoInternetSetFeatureEnabled(aFeature: TInternetFeature; - dwFlags: DWORD; fEnable: Boolean): HRESULT; -begin - if (Integer(CoInternetSetFeatureEnabledPtr) > 1) or - CheckURLMonModuleFunc('CoInternetSetFeatureEnabled', - CoInternetSetFeatureEnabledPtr) then - Result := TCoInternetSetFeatureEnabled(CoInternetSetFeatureEnabledPtr)( - DWORD(aFeature), dwFlags, fEnable) - else - Result := E_NOTIMPL; -end; - -function CoInternetIsFeatureEnabled(aFeature: TInternetFeature; - dwFlags: DWORD): HRESULT; -begin - if (Integer(CoInternetIsFeatureEnablePtr) > 1) or - CheckURLMonModuleFunc('CoInternetIsFeatureEnabled', - CoInternetIsFeatureEnablePtr) then - Result := TCoInternetIsFeatureEnabled(CoInternetIsFeatureEnablePtr)( - DWORD(aFeature), dwFlags) - else - Result := E_NOTIMPL; -end; - -function CoInternetIsFeatureEnabledForUrl(aFeature: TInternetFeature; - dwFlags: DWORD; szUrl: LPCWSTR; pSecMgr: IInternetSecurityManager): HRESULT; -begin - if (Integer(CoInternetIsFeatureEnabledForUrlPtr) > 1) or - CheckURLMonModuleFunc('CoInternetIsFeatureEnabledForUrl', - CoInternetIsFeatureEnabledForUrlPtr) then - Result := - TCoInternetIsFeatureEnabledForUrl(CoInternetIsFeatureEnabledForUrlPtr)( - DWORD(aFeature), dwFlags, szUrl, pSecMgr) - else - Result := E_NOTIMPL; -end; - - -function CoInternetIsFeatureZoneElevationEnabled( - szFromURL, szToURL: LPCWSTR; pSecMgr: IInternetSecurityManager; - dwFlags: DWORD): HRESULT; -begin - if (Integer(CoInternetIsFeatureZoneElevationEnabledPtr) > 1) or - CheckURLMonModuleFunc('CoInternetIsFeatureZoneElevationEnabled', - CoInternetIsFeatureZoneElevationEnabledPtr) then - Result := - TCoInternetIsFeatureZoneElevationEnabled(CoInternetIsFeatureZoneElevationEnabledPtr)( - szFromURL, szToURL, pSecMgr, dwFlags) - else - Result := E_NOTIMPL; -end; - -var - HSHDOCLCModule: THandle; - -function GetSHDOCLCModule: THandle; -begin - if HSHDOCLCModule = 0 then - begin - HSHDOCLCModule := GetModuleHandle('SHDOCLC.DLL'); - if HSHDOCLCModule = 0 then - HSHDOCLCModule := SafeLoadLibrary('SHDOCLC.DLL'); - if HSHDOCLCModule <= HINSTANCE_ERROR then - HSHDOCLCModule := 0; - end; - Result := HSHDOCLCModule; -end; - - -initialization - -finalization - if ShellModule <> 0 then - FreeLibrary(ShellModule); - if ComctlModule <> 0 then - FreeLibrary(ComctlModule); - if HHCtrlModule <> 0 then - FreeLibrary(HHCtrlModule); - if URLMonModule <> 0 then - FreeLibrary(URLMonModule); -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbActns.pas b/windows/src/ext/embeddedwb/Source/EwbActns.pas deleted file mode 100644 index 4c2f01eefe..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbActns.pas +++ /dev/null @@ -1,145 +0,0 @@ -//************************************************************* -// EwbActns * -// * -// Freeware unit * -// For Delphi * -// by * -// Serge Voloshenyuk * -// Developing Team: * -// Serge Voloshenyuk (SergeV@bsalsa.com) * -// Eran Bodankin (bsalsa) -(bsalsa@gmail.com) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -//$Id: EwbActns.pas,v 1.1.2.1 2006/11/29 22:13:00 sergev Exp $ - -unit EwbActns; - -{$I EWB.inc} - -interface - -uses - Classes, ActnList, EwbCore; - -type - TEwbAction = class(TCustomAction) - private - FControl: TEwbCore; - procedure SetControl(Value: TEwbCore); - protected - function GetControl(Target: TObject): TEwbCore; virtual; - procedure Notification(AComponent: TComponent; Operation: TOperation); override; - public - destructor Destroy; override; - function HandlesTarget(Target: TObject): Boolean; override; - property Control: TEwbCore read FControl write SetControl; - end; - - TEwbLinkAction = class(TEwbAction) - private - FURL: WideString; - procedure setURL(const Value: WideString); - public - procedure ExecuteTarget(Target: TObject); override; - constructor Create(AOwner: TComponent); override; - published - property URL: WideString read FURL write setURL; - property Caption; - property HelpContext; -{$IFDEF DELPHI6_UP} - property HelpKeyword; - property HelpType; - property SecondaryShortCuts; -{$ENDIF} - property Hint; - property ImageIndex; - property ShortCut; - property Visible; - property OnExecute; - property OnHint; - property OnUpdate; - end; - -implementation - -{ TEwbAction } - -destructor TEwbAction.Destroy; -begin - if FControl <> nil then - FControl.RemoveFreeNotification(Self); - inherited; -end; - -function TEwbAction.GetControl(Target: TObject): TEwbCore; -begin - Result := Target as TEwbCore; -end; - -function TEwbAction.HandlesTarget(Target: TObject): Boolean; -begin - Result := ((Control <> nil) and (Target = Control) or - (Control = nil) and (Target is TEwbCore)) - { and TEwbCore(Target).Focused}; //FIXME -end; - -procedure TEwbAction.Notification(AComponent: TComponent; - Operation: TOperation); -begin - inherited Notification(AComponent, Operation); - if (Operation = opRemove) and (AComponent = Control) then Control := nil; -end; - -procedure TEwbAction.SetControl(Value: TEwbCore); -begin - if Value <> FControl then - begin - FControl := Value; - if Value <> nil then Value.FreeNotification(Self); - end; -end; - -{ TEwbLinkAction } - -constructor TEwbLinkAction.Create(AOwner: TComponent); -begin - inherited; - Enabled := False; -end; - -procedure TEwbLinkAction.ExecuteTarget(Target: TObject); -begin - GetControl(Target).Navigate(Self.URL); -end; - -procedure TEwbLinkAction.setURL(const Value: WideString); -begin - FURL := Value; - Enabled := FURL <> ''; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbBehaviorsComp.pas b/windows/src/ext/embeddedwb/Source/EwbBehaviorsComp.pas deleted file mode 100644 index 35eae0d6ae..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbBehaviorsComp.pas +++ /dev/null @@ -1,1166 +0,0 @@ -//************************************************************* -// EwbBehaviorsComp * -// * -// Freeware Component * -// For Delphi * -// by * -// Serge Voloshenyuk * -// Developing Team: * -// Serge Voloshenyuk (SergeV@bsalsa.com) * -// Eran Bodankin (bsalsa) -(bsalsa@gmail.com) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -//$Id: EwbBehaviorsComp.pas,v 1.1.2.1 2006/11/29 22:13:00 sergev Exp $ - -unit EwbBehaviorsComp; - -interface - -{$I EWB.inc} - -uses -{$IFDEF DELPHI6_UP}Variants, {$ENDIF} - Windows, Classes, Graphics, ActiveX, Mshtml_Ewb, EwbAcc, EwbClasses, EwbEvents, - EwbEventsComp; - -type - TEwbBehaviorFactory = class; - TBinBehavior = class; - TEwbBehaviorController = class; - - TPainterProperty = ( - ppOpaque, - ppTransparent, - //NOIMPL ppAlpha, - //NOIMPL ppComplex, - ppOverlay, - ppHitTest, - ppSurface, - pp3DSurface, - //NOIMPL ppNoBand, - ppNoDC, - ppNoPhysicalClip, - ppNoSaveDC, - ppSupportsXForm, - ppExpand, - ppNoScrollBits - ); - TPainterProperties = set of TPainterProperty; - - TPaintZOrder = ( - pzNone, - pzReplaceAll, - pzReplaceContent, - pzReplaceBackground, - pzBelowContent, - pzBelowFlow, - pzAboveFlow, - pzAboveContent, - pzWinTop - ); - - TPaintEventFlag = (pfTarget, pfSetCursor); - TPaintEventFlags = set of TPaintEventFlag; - - TLayoutMode = ( - lmNone, - lmFullDelegation, - lmModifyNatural, - lmMapSize - ); - - {events} - TBehaviorNameEvent = procedure(Sender: TEwbBehaviorController; - Element: IHTMLElement2; var aName: WideString) of object; - TCreateBehaviorEvent = function(Sender: TEwbBehaviorController; - const bstrBehavior, bstrBehaviorUrl: WideString; - pSite: IElementBehaviorSite): IElementBehavior of object; - - TGetIdOfNameEvent = procedure(Sender: TBinBehavior; const name: widestring; var id: Integer) of object; - TInvokeEvent = procedure(Sender: TBinBehavior; DispID: Integer; - VarResult: POleVariant; Params: TDispParams; var Rezult: HRESULT) of object; - TGetPropertyEvent = procedure(Sender: TBinBehavior; DispID: Integer; - VarResult: POleVariant; Params: TDispParams; var Rezult: HRESULT) of object; - TPutPropertyEvent = procedure(Sender: TBinBehavior; DispID: Integer; - Params: TDispParams; var Rezult: HRESULT) of object; - - - TBehaviorNotifyEvent = procedure(Sender: TBinBehavior) of object; - TPainterDrawEvent = procedure(Sender: TBinBehavior; - rcBounds, rcUpdate: TRect; lDrawFlags: Integer; Canvas: TCanvas) of object; - TPainterDirectDrawEvent = procedure(Sender: TBinBehavior; - rcBounds, rcUpdate: TRect; lDrawFlags: Integer; DrawObject: Pointer) of - object; - TPainterResizeEvent = procedure(Sender: TBinBehavior; size: TSize) of object; - TPainterInfoEvent = procedure(Sender: TBinBehavior; var pInfo: - _HTML_PAINTER_INFO) of object; - TPainterHitTestEvent = procedure(Sender: TBinBehavior; pt: TPoint; var pbHit: - BOOL; - var plPartID: Longint) of object; - - TLayoutSizeEvent = procedure(Sender: TBinBehavior; dwFlags: Integer; - sizeContent: TSize; var pptTranslateBy: TPoint; - var pptTopLeft: TPoint; var psizeProposed: TSize) of object; - TLayoutPositionEvent = procedure(Sender: TBinBehavior; lFlags: Integer; var - pptTopLeft: TPoint) of object; - TLayoutMapSizeEvent = procedure(Sender: TBinBehavior; psizeIn: PSize; var - prcOut: TRect) of object; - TLayoutTextDescentEvent = procedure(Sender: TBinBehavior; var plDescent: - Integer) of object; - - TEventTargetEvent = procedure(Sender: TBinBehavior; var ppElement: - IHTMLElement) of object; - TSetCursorEvent = procedure(Sender: TBinBehavior; lPartID: Integer) of object; - TStringFromPartIDEvent = procedure(Sender: TBinBehavior; lPartID: Integer; var - pbstrPart: WideString) of object; - TOverlayMoveEvent = procedure(Sender: TBinBehavior; rcDevice: TRect) of - object; - TGetFocusRectEvent = procedure(Sender: TBinBehavior; var pRect: TRect) of - object; - TGetSubmitInfoEvent = procedure(Sender: TBinBehavior; pSubmitData: - IHTMLSubmitData) of object; - TResetSubmitEvent = procedure(Sender: TBinBehavior) of object; - - TFindBehaviorEvent = procedure(Sender: TObject; - const bstrBehavior, bstrBehaviorUrl: WideString; - pSite: IElementBehaviorSite; var ppBehavior: IElementBehavior) of object; - - TResolveNSEvent = procedure(Sender: TObject; - const bstrNamespace, bstrTagName, bstrAttrs: WideString; - pNamespace: IElementNamespace) of object; - - TCreateNamespaceEvent = procedure(Sender: TObject; - pNamespace: IElementNamespace) of object; - - TCreateNSWithImplEvent = procedure(Sender: TObject; - pNamespace: IElementNamespace; - const bstrImplementation: WideString) of object; - - TEwbBehaviorFactory = class(TComponent - , IElementBehaviorFactory - , IElementNamespaceFactoryCallback - , IElementNamespaceFactory - , IElementNamespaceFactory2 - ) - private - FOnFindBehavior: TFindBehaviorEvent; - FOnResolveNS: TResolveNSEvent; - FOnCreateNS: TCreateNamespaceEvent; - FOnCreateNSWithImpl: TCreateNSWithImplEvent; - protected - {IElementBehaviorFactory} - function FindBehavior(const bstrBehavior: WideString; const bstrBehaviorUrl: - WideString; - const pSite: IElementBehaviorSite; out ppBehavior: IElementBehavior): - HRESULT; stdcall; - {IElementNamespaceFactoryCallback} - function Resolve(const bstrNamespace: WideString; const bstrTagName: - WideString; - const bstrAttrs: WideString; pNamespace: IElementNamespace): HRESULT; - stdcall; - {IElementNamespaceFactory} - function IElementNamespaceFactory.create = FactoryCreate; - function FactoryCreate(pNamespace: IElementNamespace): HRESULT; stdcall; - {IElementNamespaceFactory2} - function IElementNamespaceFactory2.create = FactoryCreate; - function CreateWithImplementation(pNamespace: IElementNamespace; - const bstrImplementation: WideString): HRESULT; stdcall; - published - property OnFindBehavior: TFindBehaviorEvent read FOnFindBehavior write - FOnFindBehavior; - property OnResolveNS: TResolveNSEvent read FOnResolveNS write FOnResolveNS; - property OnCreateNS: TCreateNamespaceEvent read FOnCreateNS write - FOnCreateNS; - property OnCreateNSWithImpl: TCreateNSWithImplEvent read FOnCreateNSWithImpl - write FOnCreateNSWithImpl; - end; - - TEwbBehaviorController = class(THtmlListener, IElementBehaviorFactory) - private - FBehaviors: TList; - FZOrder: TPaintZOrder; - FPainterProperties: TPainterProperties; - FPainterFlags: Integer; - FOnDetach: TBehaviorNotifyEvent; - FOnApplyStyle: TBehaviorNotifyEvent; - FOnDocContextChange: TBehaviorNotifyEvent; - FOnContentReady: TBehaviorNotifyEvent; - FOnInit: TBehaviorNotifyEvent; - FOnContentSave: TBehaviorNotifyEvent; - FOnDocReady: TBehaviorNotifyEvent; - FOnDraw: TPainterDrawEvent; - FOnHitTest: TPainterHitTestEvent; - FOnPainterInfo: TPainterInfoEvent; - FOnResize: TPainterResizeEvent; - FOnGetName: TBehaviorNameEvent; - FOnCreateBehavior: TCreateBehaviorEvent; - fHandleEvents: Boolean; - FLayoutMode: TLayoutMode; - fLayoutMapSize: TLayoutMapSizeEvent; - fLayoutPosition: TLayoutPositionEvent; - FLayoutSize: TLayoutSizeEvent; - FLayoutTextDescent: Integer; - FOnLayoutTextDescent: TLayoutTextDescentEvent; - fPaintEventInfo: TPaintEventFlags; - FOnEventTarget: TEventTargetEvent; - FOnSetCursor: TSetCursorEvent; - FOnStringFromPartID: TStringFromPartIDEvent; - FOnOverlayMove: TOverlayMoveEvent; - FOnDirectDraw: TPainterDirectDrawEvent; - FOnGetFocusRect: TGetFocusRectEvent; - FOnGetSubmitInfo: TGetSubmitInfoEvent; - FOnResetSubmit: TResetSubmitEvent; - FOnGetIdOfName: TGetIdOfNameEvent; - FOnGetProperty: TGetPropertyEvent; - FOnInvoke: TInvokeEvent; - FOnPutProperty: TPutPropertyEvent; - fAlive: Boolean; - procedure setPainterProperties(const Value: TPainterProperties); - procedure setZOrder(const Value: TPaintZOrder); - procedure setLayoutMode(const Value: TLayoutMode); - procedure setLayoutTextDescent(const Value: Integer); - protected - {IElementBehaviorFactory} - function FindBehavior(const bstrBehavior: WideString; const bstrBehaviorUrl: - WideString; - const pSite: IElementBehaviorSite; out ppBehavior: IElementBehavior): - HRESULT; stdcall; - - protected - procedure Add(aBehavior: TBinBehavior); - procedure Remove(aBehavior: TBinBehavior); - - procedure DoGetIdOfName(Sender: TBinBehavior; const name: widestring; var id: Integer); virtual; - procedure DoInvoke(Sender: TBinBehavior; DispID: Integer; - VarResult: POleVariant; Params: TDispParams; var Rezult: HRESULT); virtual; - procedure DoGetProperty(Sender: TBinBehavior; DispID: Integer; - VarResult: POleVariant; Params: TDispParams; var Rezult: HRESULT); virtual; - procedure DoPutProperty(Sender: TBinBehavior; DispID: Integer; - Params: TDispParams; var Rezult: HRESULT); virtual; - - procedure DoInit(Sender: TBinBehavior); virtual; - procedure DoDetach(Sender: TBinBehavior); virtual; - procedure DoNotify(Sender: TBinBehavior; lEvent: Integer); virtual; - procedure DoDraw(Sender: TBinBehavior; - rcBounds, rcUpdate: TRect; lDrawFlags: Integer; Canvas: TCanvas); virtual; - procedure DoDirectDraw(Sender: TBinBehavior; - rcBounds, rcUpdate: TRect; lDrawFlags: Integer; pvDrawObject: Pointer); - virtual; - procedure DoPainterResize(Sender: TBinBehavior; size: TSize); virtual; - procedure GetPainterInfo(Sender: TBinBehavior; var pInfo: - _HTML_PAINTER_INFO); virtual; - procedure DoHitTestPoint(Sender: TBinBehavior; pt: TPoint; var pbHit: BOOL; - var plPartID: Longint); virtual; - procedure DoLayoutSize(Sender: TBinBehavior; dwFlags: Integer; sizeContent: - TSize; var pptTranslateBy: TPoint; - var pptTopLeft: TPoint; var psizeProposed: TSize); virtual; - procedure DoLayoutPosition(Sender: TBinBehavior; lFlags: Integer; var - pptTopLeft: TPoint); virtual; - procedure DoLayoutMapSize(Sender: TBinBehavior; psizeIn: PSize; var prcOut: - TRect); virtual; - procedure DoTextDescent(Sender: TBinBehavior; var plDescent: Integer); - virtual; - - procedure DoEventTarget(Sender: TBinBehavior; var ppElement: IHTMLElement); - virtual; - procedure DoSetCursor(Sender: TBinBehavior; lPartID: Integer); virtual; - function DoStringFromPartID(Sender: TBinBehavior; lPartID: Integer; out - pbstrPart: WideString): Boolean; virtual; - procedure DoOverlayMove(Sender: TBinBehavior; rcDevice: TRect); virtual; - procedure DoGetFocusRect(Sender: TBinBehavior; var pRect: TRect); virtual; - procedure DoGetSubmitInfo(Sender: TBinBehavior; pSubmitData: - IHTMLSubmitData); virtual; - procedure DoResetSubmit(Sender: TBinBehavior); virtual; - public - destructor Destroy; override; - - procedure InvalidatePainterInfo; - procedure InvalidateLayoutInfo; - - function Attach(Element: IHTMLElement2): Integer; overload; - function Attach(Element: IHTMLElement): Integer; overload; - published - property Alive: Boolean read fAlive write fAlive; - property ZOrder: TPaintZOrder read FZOrder write setZOrder default pzNone; - property LayoutMode: TLayoutMode read FLayoutMode write setLayoutMode default lmNone; - property PainterProperties: TPainterProperties read FPainterProperties write - setPainterProperties; - property HandleEvents: Boolean read fHandleEvents write fHandleEvents; - property LayoutTextDescent: Integer read FLayoutTextDescent write - setLayoutTextDescent; - property PaintEventInfo: TPaintEventFlags read fPaintEventInfo write - fPaintEventInfo; - - property OnGetName: TBehaviorNameEvent read FOnGetName write FOnGetName; - property OnInvoke: TInvokeEvent read FOnInvoke write FOnInvoke; - property OnGetProperty: TGetPropertyEvent read FOnGetProperty write FOnGetProperty; - property OnPutProperty: TPutPropertyEvent read FOnPutProperty write FOnPutProperty; - - - property OnCreateBehavior: TCreateBehaviorEvent read FOnCreateBehavior write - FOnCreateBehavior; - - property OnGetIdOfName: TGetIdOfNameEvent read FOnGetIdOfName write FOnGetIdOfName; - - property OnInit: TBehaviorNotifyEvent read FOnInit write FOnInit; - property OnDetach: TBehaviorNotifyEvent read FOnDetach write FOnDetach; - property OnContentReady: TBehaviorNotifyEvent read FOnContentReady write - FOnContentReady; - property OnDocReady: TBehaviorNotifyEvent read FOnDocReady write - FOnDocReady; - property OnApplyStyle: TBehaviorNotifyEvent read FOnApplyStyle write - FOnApplyStyle; - property OnDocContextChange: TBehaviorNotifyEvent read FOnDocContextChange - write FOnDocContextChange; - property OnContentSave: TBehaviorNotifyEvent read FOnContentSave write - FOnContentSave; - - property OnDraw: TPainterDrawEvent read FOnDraw write FOnDraw; - property OnDirectDraw: TPainterDirectDrawEvent read FOnDirectDraw write - FOnDirectDraw; - property OnPainterResize: TPainterResizeEvent read FOnResize write - FOnResize; - property OnPainterInfo: TPainterInfoEvent read FOnPainterInfo write - FOnPainterInfo; - property OnPainterHitTest: TPainterHitTestEvent read FOnHitTest write - FOnHitTest; - - property OnOverlayMove: TOverlayMoveEvent read FOnOverlayMove write - FOnOverlayMove; - - property OnEventTarget: TEventTargetEvent read FOnEventTarget write - FOnEventTarget; - property OnSetCursor: TSetCursorEvent read FOnSetCursor write FOnSetCursor; - property OnStringFromPartID: TStringFromPartIDEvent read FOnStringFromPartID - write FOnStringFromPartID; - - property OnLayoutSize: TLayoutSizeEvent read FLayoutSize write FLayoutSize; - property OnLayoutPosition: TLayoutPositionEvent read fLayoutPosition write - fLayoutPosition; - property OnLayoutMapSize: TLayoutMapSizeEvent read fLayoutMapSize write - fLayoutMapSize; - property OnLayoutTextDescent: TLayoutTextDescentEvent read - FOnLayoutTextDescent write FOnLayoutTextDescent; - - property OnGetFocusRect: TGetFocusRectEvent read FOnGetFocusRect write - FOnGetFocusRect; - property OnGetSubmitInfo: TGetSubmitInfoEvent read FOnGetSubmitInfo write - FOnGetSubmitInfo; - property OnResetSubmit: TResetSubmitEvent read FOnResetSubmit write - FOnResetSubmit; - end; - - TBihState = set of 0..7; - - TBinBehavior = class(TInterfacedDispatchObject - , IElementBehavior - , IHTMLPainter - , IHTMLPainterEventInfo - , IHTMLPainterOverlay - , IElementBehaviorLayout - , IElementBehaviorLayout2 - , IElementBehaviorFocus - , IElementBehaviorSubmit - ) - private - fController: TEwbBehaviorController; - fSite: IElementBehaviorSite; - FElement: IHTMLElement; - FEventsLink: IHubLink; - fState: TBihState; - function getSiteOM: IElementBehaviorSiteOM; - function getPaintSite: IHTMLPaintSite; - function getDefaults: IHTMLElementDefaults; - function getSiteLayout: IElementBehaviorSiteLayout; - function getSiteLayout2: IElementBehaviorSiteLayout2; - protected - {IDispatch} - function GetIDsOfNames(const IID: TGUID; Names: Pointer; - NameCount, LocaleID: Integer; DispIDs: Pointer): HRESULT; override; - stdcall; - function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT; - override; stdcall; - {IElementBehavior} - function Init(pBehaviorSite: IElementBehaviorSite): HRESULT; stdcall; - function Notify(lEvent: Integer; var pVar: OleVariant): HRESULT; stdcall; - function Detach: HRESULT; stdcall; - {IHTMLPainter} - function IHTMLPainter.Draw = PainterDraw; - function PainterDraw(rcBounds, rcUpdate: TRect; lDrawFlags: Integer; - hdc: hdc; pvDrawObject: Pointer): HRESULT; stdcall; - function IHTMLPainter.onresize = PainterResize; - function PainterResize(size: TSize): HRESULT; stdcall; - function IHTMLPainter.GetPainterInfo = PainterInfo; - function PainterInfo(out pInfo: _HTML_PAINTER_INFO): HRESULT; stdcall; - function IHTMLPainter.HitTestPoint = PainterHitTestPoint; - function PainterHitTestPoint(pt: TPoint; out pbHit: BOOL; out plPartID: - Longint): HRESULT; stdcall; - {IHTMLPainterEventInfo} - function GetEventInfoFlags(out plEventInfoFlags: Integer): HRESULT; stdcall; - function GetEventTarget(var ppElement: IHTMLElement): HRESULT; stdcall; - function SetCursor(lPartID: Integer): HRESULT; stdcall; - function StringFromPartID(lPartID: Integer; out pbstrPart: WideString): - HRESULT; stdcall; - {IHTMLPainterOverlay} - function IHTMLPainterOverlay.onmove = onOverlayMove; - function onOverlayMove(rcDevice: TRect): HRESULT; stdcall; - {IElementBehaviorLayout} - function GetSize(dwFlags: Integer; sizeContent: TSize; var pptTranslateBy: - TPoint; - var pptTopLeft: TPoint; var psizeProposed: TSize): HRESULT; stdcall; - function GetLayoutInfo(out plLayoutInfo: Integer): HRESULT; stdcall; - function GetPosition(lFlags: Integer; var pptTopLeft: TPoint): HRESULT; - stdcall; - function MapSize(psizeIn: PSize; out prcOut: TRect): HRESULT; stdcall; - {IElementBehaviorLayout2} - function GetTextDescent(out plDescent: Integer): HRESULT; stdcall; - {IElementBehaviorFocus} - function GetFocusRect(var pRect: TRect): HRESULT; stdcall; - {IElementBehaviorSubmit} - function GetSubmitInfo(pSubmitData: IHTMLSubmitData): HRESULT; stdcall; - function IElementBehaviorSubmit.reset = ResetSubmit; - function ResetSubmit: HRESULT; stdcall; - protected - function getBoolProp(const Index: Integer): Boolean; - procedure SetBoolProp(const Index: Integer; const Value: Boolean); - public - constructor Create(aController: TEwbBehaviorController); - destructor Destroy; override; - - procedure ConnectToEvents; - procedure DisconnectFromEvents; - property Controller: TEwbBehaviorController read fController; - property Site: IElementBehaviorSite read fSite; - property SiteOM: IElementBehaviorSiteOM read getSiteOM; - property ContextReady: Boolean index 0 read getBoolProp; - property DocumentReady: Boolean index 1 read getBoolProp; - property Element: IHTMLElement read FElement; - property PaintSite: IHTMLPaintSite read getPaintSite; - property Defaults: IHTMLElementDefaults read getDefaults; - property SiteLayout: IElementBehaviorSiteLayout read getSiteLayout; - property SiteLayout2: IElementBehaviorSiteLayout2 read getSiteLayout2; - end; - -implementation -uses SysUtils; - -const - - _zorders: array[TPaintZOrder] of Integer = ( - HTMLPAINT_ZORDER_NONE, - HTMLPAINT_ZORDER_REPLACE_ALL, - HTMLPAINT_ZORDER_REPLACE_CONTENT, - HTMLPAINT_ZORDER_REPLACE_BACKGROUND, - HTMLPAINT_ZORDER_BELOW_CONTENT, - HTMLPAINT_ZORDER_BELOW_FLOW, - HTMLPAINT_ZORDER_ABOVE_FLOW, - HTMLPAINT_ZORDER_ABOVE_CONTENT, - HTMLPAINT_ZORDER_WINDOW_TOP - ); - - _pproperties: array[TPainterProperty] of Integer = ( - HTMLPAINTER_OPAQUE, - HTMLPAINTER_TRANSPARENT, - //NOIMPL HTMLPAINTER_ALPHA, - //NOIMPL HTMLPAINTER_COMPLEX, - HTMLPAINTER_OVERLAY, - HTMLPAINTER_HITTEST, - HTMLPAINTER_SURFACE, - HTMLPAINTER_3DSURFACE, - //NOIMPL HTMLPAINTER_NOBAND, - HTMLPAINTER_NODC, - HTMLPAINTER_NOPHYSICALCLIP, - HTMLPAINTER_NOSAVEDC, - HTMLPAINTER_SUPPORTS_XFORM, - HTMLPAINTER_EXPAND, - HTMLPAINTER_NOSCROLLBITS - ); - - _layouts: array[TLayoutMode] of Integer = ( - 0, - BEHAVIORLAYOUTINFO_FULLDELEGATION, - BEHAVIORLAYOUTINFO_MODIFYNATURAL, - BEHAVIORLAYOUTINFO_MAPSIZE - ); - - { TEwbBehaviorFactory } - -function TEwbBehaviorFactory.CreateWithImplementation( - pNamespace: IElementNamespace; - const bstrImplementation: WideString): HRESULT; -begin - Result := S_OK; - if Assigned(FOnCreateNSWithImpl) then - FOnCreateNSWithImpl(Self, pNamespace, bstrImplementation) - else if Assigned(FOnCreateNS) then - FOnCreateNS(Self, pNamespace); -end; - -function TEwbBehaviorFactory.FactoryCreate(pNamespace: IElementNamespace): - HRESULT; -begin - Result := S_OK; - if Assigned(FOnCreateNS) then - FOnCreateNS(Self, pNamespace); -end; - -function TEwbBehaviorFactory.FindBehavior(const bstrBehavior, - bstrBehaviorUrl: WideString; const pSite: IElementBehaviorSite; - out ppBehavior: IElementBehavior): HRESULT; -begin - ppBehavior := nil; - if Assigned(FOnFindBehavior) then - FOnFindBehavior(Self, bstrBehavior, bstrBehaviorUrl, pSite, ppBehavior); - if ppBehavior = nil then - Result := E_NOTIMPL - else - Result := S_OK; -end; - -function TEwbBehaviorFactory.Resolve(const bstrNamespace, bstrTagName, - bstrAttrs: WideString; pNamespace: IElementNamespace): HRESULT; -begin - Result := S_OK; - if Assigned(FOnResolveNS) then - FOnResolveNS(Self, bstrNamespace, bstrTagName, bstrAttrs, pNamespace); -end; - -{ TBinBehavior } - -constructor TBinBehavior.Create(aController: TEwbBehaviorController); -begin - inherited Create; - aController.Add(Self); -end; - -destructor TBinBehavior.Destroy; -begin - FController.Remove(Self); - inherited; -end; - -function TBinBehavior.getBoolProp(const Index: Integer): Boolean; -begin - Result := Index in fState; -end; - -procedure TBinBehavior.SetBoolProp(const Index: Integer; - const Value: Boolean); -begin - if Value then - Include(fState, Index) - else - Exclude(fState, Index); -end; - -function TBinBehavior.getSiteOM: IElementBehaviorSiteOM; -begin - if not Supports(fSite, IElementBehaviorSiteOM, Result) then - Result := nil; -end; - -function TBinBehavior.getPaintSite: IHTMLPaintSite; -begin - if not Supports(fSite, IHTMLPaintSite, Result) then - Result := nil; -end; - -function TBinBehavior.getDefaults: IHTMLElementDefaults; -var - OM2: IElementBehaviorSiteOM2; -begin - if Supports(fSite, IElementBehaviorSiteOM2, OM2) then - OM2.GetDefaults(Result) - else - Result := nil; -end; - -function TBinBehavior.getSiteLayout: IElementBehaviorSiteLayout; -begin - if not Supports(fSite, IElementBehaviorSiteLayout, Result) then - Result := nil; -end; - -function TBinBehavior.getSiteLayout2: IElementBehaviorSiteLayout2; -begin - if not Supports(fSite, IElementBehaviorSiteLayout2, Result) then - Result := nil; -end; - -function TBinBehavior.Detach: HRESULT; -begin - FController.DoDetach(Self); - DisconnectFromEvents; - FElement := nil; - SetBoolProp(1, False); - fSite := nil; - SetBoolProp(0, False); - Result := S_OK; -end; - -procedure TBinBehavior.ConnectToEvents; -begin - if FEventsLink = nil then - FEventsLink := FController.Connect2(Element, Self); -end; - -procedure TBinBehavior.DisconnectFromEvents; -begin - if FEventsLink <> nil then - try - FEventsLink.Disconnect; - finally - FEventsLink := nil; - end; -end; - -function TBinBehavior.Init(pBehaviorSite: IElementBehaviorSite): HRESULT; -begin - fSite := pBehaviorSite; - FController.DoInit(Self); - Result := S_OK; -end; - -function TBinBehavior.Notify(lEvent: Integer; - var pVar: OleVariant): HRESULT; -begin - case lEvent of - BEHAVIOREVENT_CONTENTREADY: - begin - SetBoolProp(0, True); - Site.GetElement(FElement); - if FController.HandleEvents then - Self.ConnectToEvents; - end; - BEHAVIOREVENT_DOCUMENTREADY: - SetBoolProp(1, True); - end; - FController.DoNotify(Self, lEvent); - Result := S_OK; -end; - -function TBinBehavior.PainterDraw(rcBounds, rcUpdate: TRect; - lDrawFlags: Integer; hdc: hdc; pvDrawObject: Pointer): HRESULT; -var - Canvas: TCanvas; -begin - Result := S_OK; - if hdc <> 0 then - begin - Canvas := TCanvas.Create; - Canvas.Handle := hdc; - end else if pvDrawObject <> nil then - begin - FController.DoDirectDraw(Self, rcBounds, rcUpdate, lDrawFlags, - pvDrawObject); - Exit; - end else - Canvas := nil; - try - FController.DoDraw(Self, rcBounds, rcUpdate, lDrawFlags, Canvas); - finally - Canvas.Free; - end; -end; - -function TBinBehavior.PainterHitTestPoint(pt: TPoint; out pbHit: BOOL; - out plPartID: Integer): HRESULT; -begin - pbHit := False; - plPartID := 0; - FController.DoHitTestPoint(Self, pt, pbHit, plPartID); - Result := S_OK; -end; - -function TBinBehavior.PainterInfo(out pInfo: _HTML_PAINTER_INFO): HRESULT; -begin - pInfo.lZOrder := _zorders[FController.ZOrder]; - pInfo.lFlags := FController.FPainterFlags; - FController.GetPainterInfo(Self, pInfo); - Result := S_OK; -end; - -function TBinBehavior.PainterResize(size: TSize): HRESULT; -begin - FController.DoPainterResize(Self, size); - Result := S_OK; -end; - -function TBinBehavior.GetLayoutInfo(out plLayoutInfo: Integer): HRESULT; -begin - plLayoutInfo := _layouts[FController.LayoutMode]; - Result := S_OK; -end; - -function TBinBehavior.GetPosition(lFlags: Integer; - var pptTopLeft: TPoint): HRESULT; -begin - FController.DoLayoutPosition(Self, lFlags, pptTopLeft); - Result := S_OK; -end; - -function TBinBehavior.GetSize(dwFlags: Integer; sizeContent: TSize; - var pptTranslateBy, pptTopLeft: TPoint; - var psizeProposed: TSize): HRESULT; -begin - FController.DoLayoutSize(Self, dwFlags, sizeContent, - pptTranslateBy, pptTopLeft, psizeProposed); - Result := S_OK; -end; - -function TBinBehavior.MapSize(psizeIn: PSize; out prcOut: TRect): HRESULT; -begin - FController.DoLayoutMapSize(Self, psizeIn, prcOut); - Result := S_OK; -end; - -function TBinBehavior.GetTextDescent(out plDescent: Integer): HRESULT; -begin - FController.DoTextDescent(Self, plDescent); - Result := S_OK; -end; - -function TBinBehavior.GetEventInfoFlags( - out plEventInfoFlags: Integer): HRESULT; -begin - plEventInfoFlags := 0; - with Self.FController do - begin - if pfTarget in PaintEventInfo then - plEventInfoFlags := HTMLPAINT_EVENT_TARGET; - if pfSetCursor in PaintEventInfo then - plEventInfoFlags := plEventInfoFlags or HTMLPAINT_EVENT_SETCURSOR; - end; - Result := S_OK; -end; - -function TBinBehavior.GetEventTarget(var ppElement: IHTMLElement): HRESULT; -begin - FController.DoEventTarget(Self, ppElement); - Result := S_OK; -end; - -function TBinBehavior.SetCursor(lPartID: Integer): HRESULT; -begin - FController.DoSetCursor(Self, lPartID); - Result := S_OK; -end; - -function TBinBehavior.StringFromPartID(lPartID: Integer; - out pbstrPart: WideString): HRESULT; -begin - if FController.DoStringFromPartID(Self, lPartID, pbstrPart) then - Result := S_OK - else - Result := E_NOTIMPL; -end; - -function TBinBehavior.onOverlayMove(rcDevice: TRect): HRESULT; -begin - FController.DoOverlayMove(Self, rcDevice); - Result := S_OK; -end; - -function TBinBehavior.GetFocusRect(var pRect: TRect): HRESULT; -begin - FController.DoGetFocusRect(Self, pRect); - Result := S_OK; -end; - -function TBinBehavior.GetSubmitInfo( - pSubmitData: IHTMLSubmitData): HRESULT; -begin - FController.DoGetSubmitInfo(Self, pSubmitData); - Result := S_OK; -end; - -function TBinBehavior.ResetSubmit: HRESULT; -begin - FController.DoResetSubmit(Self); - Result := S_OK; -end; - -function TBinBehavior.GetIDsOfNames(const IID: TGUID; Names: Pointer; - NameCount, LocaleID: Integer; DispIDs: Pointer): HRESULT; -var - I: Integer; - pname: WideString; - id: Integer; -begin - pname := PWideChar(Names^); - for I := 0 to NameCount - 1 do - PDispIDList(DispIDs)^[i] := -1; - id := -1; - FController.DoGetIdOfName(Self, pname, id); - if id <> -1 then - begin - PDispIDList(DispIDs)^[0] := TDispID(id); - Result := S_OK - end else Result := E_NOTIMPL; -end; - -function TBinBehavior.Invoke(DispID: Integer; const IID: TGUID; - LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo, - ArgErr: Pointer): HRESULT; -begin - try - Result := DISP_E_MEMBERNOTFOUND; - if integer(DispID) <> -1 then - if Flags = DISPATCH_METHOD then - FController.DoInvoke(Self, DispID, POleVariant(VarResult), - TDispParams(Params), Result) - else - case Flags and not DISPATCH_METHOD of - DISPATCH_PROPERTYGET: - FController.DoGetProperty(Self, DispID, POleVariant(VarResult), - TDispParams(Params), Result); - - DISPATCH_PROPERTYPUT, - DISPATCH_PROPERTYPUTREF, - DISPATCH_PROPERTYPUT + DISPATCH_PROPERTYPUTREF: - FController.DoPutProperty(Self, DispID, TDispParams(Params), Result); - end; - except - on E: Exception do - with PExcepInfo(ExcepInfo)^ do - begin - Result := DISP_E_EXCEPTION; - wCode := 9999; - bstrDescription := E.Message; - bstrSource := E.ClassName; - dwHelpContext := E.HelpContext; - end; - end; -end; - -{ TEwbBehaviorController } - -destructor TEwbBehaviorController.Destroy; -begin - FreeAndNil(FBehaviors); - inherited; -end; - -procedure TEwbBehaviorController.Add(aBehavior: TBinBehavior); -begin - aBehavior.fController := Self; - if Alive then - begin - if FBehaviors = nil then - FBehaviors := TList.Create; - FBehaviors.Add(aBehavior); - end; -end; - -procedure TEwbBehaviorController.Remove(aBehavior: TBinBehavior); -begin - aBehavior.fController := nil; - if FBehaviors <> nil then - FBehaviors.Remove(aBehavior); -end; - -procedure TEwbBehaviorController.InvalidatePainterInfo; -var I: Integer; -begin - if FBehaviors <> nil then - for I := 0 to FBehaviors.Count - 1 do - with TBinBehavior(FBehaviors[I]) do - PaintSite.InvalidatePainterInfo; -end; - -procedure TEwbBehaviorController.InvalidateLayoutInfo; -var I: Integer; -begin - if FBehaviors <> nil then - for I := 0 to FBehaviors.Count - 1 do - with TBinBehavior(FBehaviors[I]) do - SiteLayout.InvalidateLayoutInfo; -end; - -procedure TEwbBehaviorController.setZOrder(const Value: TPaintZOrder); -begin - if FZOrder <> Value then - begin - FZOrder := Value; - InvalidatePainterInfo; - end; -end; - -procedure TEwbBehaviorController.setPainterProperties( - const Value: TPainterProperties); -var - lFlags: Integer; - I: TPainterProperty; -begin - lFlags := 0; - FPainterProperties := Value; - for I := Low(TPainterProperty) to High(TPainterProperty) do - if I in Value then - lFlags := lFlags or _pproperties[I]; - FPainterFlags := lFlags; - InvalidatePainterInfo; -end; - -procedure TEwbBehaviorController.setLayoutMode(const Value: TLayoutMode); -begin - if FLayoutMode <> Value then - begin - FLayoutMode := Value; - InvalidateLayoutInfo; - end; -end; - -procedure TEwbBehaviorController.setLayoutTextDescent( - const Value: Integer); -begin - if FLayoutTextDescent <> Value then - begin - FLayoutTextDescent := Value; - InvalidateLayoutInfo; - end; -end; - -function TEwbBehaviorController.FindBehavior(const bstrBehavior, - bstrBehaviorUrl: WideString; const pSite: IElementBehaviorSite; - out ppBehavior: IElementBehavior): HRESULT; -begin - if Assigned(FOnCreateBehavior) then - ppBehavior := FOnCreateBehavior(Self, bstrBehavior, bstrBehaviorUrl, pSite); - if ppBehavior = nil then - ppBehavior := TBinBehavior.Create(Self) as IElementBehavior; - Result := S_OK; -end; - -function TEwbBehaviorController.Attach(Element: IHTMLElement2): Integer; -var - aName: Widestring; -{$IFDEF DELPHI5_UP} - SelfIntf: IElementBehaviorFactory; -{$ENDIF} -begin - aName := ''; - if Assigned(FOnGetName) then - FOnGetName(Self, Element, aName); -{$IFDEF DELPHI5_UP} - GetInterface(IElementBehaviorFactory, SelfIntf); - Result := Element.addBehavior(aName, SelfIntf); -{$ELSE} - Result := Element.addBehavior(aName, Self as IElementBehaviorFactory); -{$ENDIF} -end; - -function TEwbBehaviorController.Attach(Element: IHTMLElement): Integer; -var - E: IHTMLElement2; -begin - if Supports(Element, IHTMLElement2, E) then - Result := Attach(E) - else - Result := 0; -end; - -procedure TEwbBehaviorController.DoInit(Sender: TBinBehavior); -begin - if Assigned(FOnInit) then - FOnInit(Sender); -end; - -procedure TEwbBehaviorController.DoDetach(Sender: TBinBehavior); -begin - if Assigned(FOnDetach) then - FOnDetach(Sender); -end; - -procedure TEwbBehaviorController.DoDraw(Sender: TBinBehavior; rcBounds, - rcUpdate: TRect; lDrawFlags: Integer; Canvas: TCanvas); -begin - if Assigned(FOnDraw) then - FOnDraw(Sender, rcBounds, rcUpdate, lDrawFlags, Canvas); -end; - -procedure TEwbBehaviorController.DoDirectDraw(Sender: TBinBehavior; - rcBounds, rcUpdate: TRect; lDrawFlags: Integer; pvDrawObject: Pointer); -begin - if Assigned(FOnDirectDraw) then - FOnDirectDraw(Sender, rcBounds, rcUpdate, lDrawFlags, pvDrawObject); -end; - -procedure TEwbBehaviorController.DoHitTestPoint(Sender: TBinBehavior; - pt: TPoint; var pbHit: BOOL; var plPartID: Integer); -begin - if Assigned(FOnHitTest) then - FOnHitTest(Sender, pt, pbHit, plPartID); -end; - -procedure TEwbBehaviorController.DoPainterResize(Sender: TBinBehavior; - Size: TSize); -begin - if Assigned(FOnResize) then - FOnResize(Sender, size); -end; - -procedure TEwbBehaviorController.GetPainterInfo(Sender: TBinBehavior; - var pInfo: _HTML_PAINTER_INFO); -begin - if Assigned(FOnPainterInfo) then - FOnPainterInfo(Sender, pInfo); -end; - -procedure TEwbBehaviorController.DoNotify(Sender: TBinBehavior; - lEvent: Integer); -begin - case lEvent of - BEHAVIOREVENT_CONTENTREADY: - if Assigned(FOnContentReady) then - FOnContentReady(Sender); - BEHAVIOREVENT_DOCUMENTREADY: - if Assigned(FOnDocReady) then - FOnDocReady(Sender); - BEHAVIOREVENT_DOCUMENTCONTEXTCHANGE: - if Assigned(FOnDocContextChange) then - FOnDocContextChange(Sender); - BEHAVIOREVENT_CONTENTSAVE: - if Assigned(FOnContentSave) then - FOnContentSave(Sender); - BEHAVIOREVENT_APPLYSTYLE: - if Assigned(FOnApplyStyle) then - FOnApplyStyle(Sender); - end; -end; - -procedure TEwbBehaviorController.DoLayoutMapSize(Sender: TBinBehavior; - psizeIn: PSize; var prcOut: TRect); -begin - if Assigned(fLayoutMapSize) then - fLayoutMapSize(Sender, psizeIn, prcOut); -end; - -procedure TEwbBehaviorController.DoLayoutPosition(Sender: TBinBehavior; - lFlags: Integer; var pptTopLeft: TPoint); -begin - if Assigned(fLayoutPosition) then - fLayoutPosition(Sender, lFlags, pptTopLeft); -end; - -procedure TEwbBehaviorController.DoLayoutSize(Sender: TBinBehavior; - dwFlags: Integer; sizeContent: TSize; var pptTranslateBy, - pptTopLeft: TPoint; var psizeProposed: TSize); -begin - if Assigned(FLayoutSize) then - FLayoutSize(Sender, dwFlags, sizeContent, pptTranslateBy, pptTopLeft, - psizeProposed); -end; - -procedure TEwbBehaviorController.DoTextDescent(Sender: TBinBehavior; - var plDescent: Integer); -begin - plDescent := Self.LayoutTextDescent; - if Assigned(FOnLayoutTextDescent) then - FOnLayoutTextDescent(Sender, plDescent); -end; - -procedure TEwbBehaviorController.DoEventTarget(Sender: TBinBehavior; - var ppElement: IHTMLElement); -begin - if Assigned(FOnEventTarget) then - FOnEventTarget(Sender, ppElement); -end; - -procedure TEwbBehaviorController.DoSetCursor(Sender: TBinBehavior; - lPartID: Integer); -begin - if Assigned(FOnSetCursor) then - FOnSetCursor(Sender, lPartID); -end; - -function TEwbBehaviorController.DoStringFromPartID(Sender: TBinBehavior; - lPartID: Integer; out pbstrPart: WideString): Boolean; -begin - Result := Assigned(FOnStringFromPartID); - if Result then - FOnStringFromPartID(Sender, lPartID, pbstrPart); -end; - -procedure TEwbBehaviorController.DoOverlayMove(Sender: TBinBehavior; - rcDevice: TRect); -begin - if Assigned(FOnOverlayMove) then - FOnOverlayMove(Sender, rcDevice); -end; - -procedure TEwbBehaviorController.DoGetFocusRect(Sender: TBinBehavior; - var pRect: TRect); -begin - if Assigned(FOnGetFocusRect) then - FOnGetFocusRect(Sender, pRect); -end; - -procedure TEwbBehaviorController.DoGetSubmitInfo(Sender: TBinBehavior; - pSubmitData: IHTMLSubmitData); -begin - if Assigned(FOnGetSubmitInfo) then - FOnGetSubmitInfo(Sender, pSubmitData); -end; - -procedure TEwbBehaviorController.DoResetSubmit(Sender: TBinBehavior); -begin - if Assigned(FOnResetSubmit) then - FOnResetSubmit(Sender); -end; - -procedure TEwbBehaviorController.DoGetIdOfName(Sender: TBinBehavior; - const name: widestring; var id: Integer); -begin - if Assigned(FOnGetIdOfName) then - FOnGetIdOfName(Sender, name, id); -end; - -procedure TEwbBehaviorController.DoGetProperty(Sender: TBinBehavior; - DispID: Integer; VarResult: POleVariant; Params: TDispParams; - var Rezult: HRESULT); -begin - if Assigned(FOnGetProperty) then - FOnGetProperty(Sender, DispID, VarResult, Params, Rezult); -end; - -procedure TEwbBehaviorController.DoInvoke(Sender: TBinBehavior; - DispID: Integer; VarResult: POleVariant; Params: TDispParams; - var Rezult: HRESULT); -begin - if Assigned(FOnInvoke) then - FOnInvoke(Sender, DispID, VarResult, Params, Rezult); -end; - -procedure TEwbBehaviorController.DoPutProperty(Sender: TBinBehavior; - DispID: Integer; Params: TDispParams; var Rezult: HRESULT); -begin - if Assigned(FOnPutProperty) then - FOnPutProperty(Sender, DispID, Params, Rezult); -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbClasses.pas b/windows/src/ext/embeddedwb/Source/EwbClasses.pas deleted file mode 100644 index 52e0d93e43..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbClasses.pas +++ /dev/null @@ -1,146 +0,0 @@ -//************************************************************* -// EwbClasses * -// * -// Freeware unit * -// For Delphi 5 to XE * -// by * -// Serge Voloshenyuk * -// Developing Team: * -// Serge Voloshenyuk (SergeV@bsalsa.com) * -// Eran Bodankin (bsalsa) -(bsalsa@gmail.com) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -//$Id: EwbClasses.pas,v 1.1.2.1 2006/11/29 22:13:01 sergev Exp $ - -unit EwbClasses; - -interface - -{$I EWB.inc} - -uses - Windows; - -type - IInterfaceObjectReference = interface - ['{C0D28425-8410-45F6-BD60-8AE66782E545}'] - function GetObject: TObject; - end; - - TInterfacedDispatchObject = class(TObject, IUnknown, - IInterfaceObjectReference, IDispatch) - protected - {IInterface} - FRefCount: Integer; - function QueryInterface(const IID: TGUID; out Obj): HResult; -{$IFDEF RESEARCH_MODE} virtual; {$ENDIF} stdcall; - function _AddRef: Integer; stdcall; - function _Release: Integer; stdcall; - {IInterfaceObjectReference} - function GetObject: TObject; - {IDispatch} - function GetTypeInfoCount(out Count: Integer): HResult; stdcall; - function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall; - function GetIDsOfNames(const IID: TGUID; Names: Pointer; - NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; virtual; stdcall; - function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; - virtual; stdcall; - public - procedure AfterConstruction; override; - class function NewInstance: TObject; override; - property RefCount: Integer read FRefCount; - end; - -implementation - -{ TInterfacedDispatchObject } - -class function TInterfacedDispatchObject.NewInstance: TObject; -begin - Result := inherited NewInstance; - TInterfacedDispatchObject(Result).FRefCount := 1; -end; - -procedure TInterfacedDispatchObject.AfterConstruction; -begin - InterlockedDecrement(FRefCount); -end; - -function TInterfacedDispatchObject._AddRef: Integer; -begin - Result := InterlockedIncrement(FRefCount); -end; - -function TInterfacedDispatchObject._Release: Integer; -begin - Result := InterlockedDecrement(FRefCount); - if Result = 0 then - Destroy; -end; - -function TInterfacedDispatchObject.QueryInterface(const IID: TGUID; - out Obj): HResult; -begin - if GetInterface(IID, Obj) then - Result := 0 - else - Result := E_NOINTERFACE; -end; - -function TInterfacedDispatchObject.GetIDsOfNames(const IID: TGUID; - Names: Pointer; NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; -begin - Result := DISP_E_UNKNOWNNAME; -end; - -function TInterfacedDispatchObject.GetObject: TObject; -begin - Result := Self; -end; - -function TInterfacedDispatchObject.GetTypeInfo(Index, LocaleID: Integer; - out TypeInfo): HResult; -begin - Result := DISP_E_BADINDEX; -end; - -function TInterfacedDispatchObject.GetTypeInfoCount( - out Count: Integer): HResult; -begin - Count := 0; - Result := S_OK; -end; - -function TInterfacedDispatchObject.Invoke(DispID: Integer; - const IID: TGUID; LocaleID: Integer; Flags: Word; var Params; VarResult, - ExcepInfo, ArgErr: Pointer): HResult; -begin - Result := S_OK; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbControlComponent.pas b/windows/src/ext/embeddedwb/Source/EwbControlComponent.pas deleted file mode 100644 index f84f8902ee..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbControlComponent.pas +++ /dev/null @@ -1,348 +0,0 @@ -//*********************************************************** -// EwbControl component * -// * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// (smot) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit EwbControlComponent; - -interface - -{$I EWB.inc} - -uses - Windows, Messages, SysUtils, Classes, Forms, EWBMouseHook; - -{============================================================================} -// Mouse WheelFix -{============================================================================} -type - TMouseWheelFix = class(TPersistent) - private - FActive: Boolean; - FActiveFormOnly: Boolean; - FEWBMouseHook: TEWBMouseHook; - FDesignMode: Boolean; - procedure SetActive(const Value: Boolean); - procedure SetActiveFormOnly(const Value: Boolean); - public - OnMouseWheel: TMouseWheelEvent; - published - property Active: Boolean read FActive write SetActive default True; - property ActiveFormOnly: Boolean read FActiveFormOnly write SetActiveFormOnly - default False; - end; - - {============================================================================} - // FocusControl - {============================================================================} -type - TFocusControl = class(TPersistent) - private - FActive: Boolean; - FDesignMode: Boolean; - procedure SetActive(const Value: Boolean); - published - property Active: Boolean read FActive write SetActive default True; - end; - - {============================================================================} - // OnMessage Handler - {============================================================================} -{ -type - TMessageHandler = class(TPersistent) - private - FActive: Boolean; - FDesignMode: Boolean; - FOnMessage: TMessageEvent; - procedure SetActive(const Value: Boolean); - published - property Active: Boolean read FActive write SetActive default True; - end; -} - -{$IFDEF Enable_InternetFeatures} - {============================================================================} - { Feature Controls } - { http://msdn.microsoft.com/en-us/library/ms537169(VS.85).aspx } - { TInternetFeatures = ( -FEATURE_OBJECT_CACHING -FEATURE_ZONE_ELEVATION -FEATURE_MIME_HANDLING -FEATURE_MIME_SNIFFING -FEATURE_WINDOW_RESTRICTIONS -FEATURE_WEBOC_POPUPMANAGEMENT -FEATURE_BEHAVIORS -FEATURE_DISABLE_MK_PROTOCOL -FEATURE_LOCALMACHINE_LOCKDOWN -FEATURE_SECURITYBAND -FEATURE_RESTRICT_ACTIVEXINSTALL -FEATURE_VALIDATE_NAVIGATE_URL -FEATURE_RESTRICT_FILEDOWNLOAD -FEATURE_ADDON_MANAGEMENT -FEATURE_PROTOCOL_LOCKDOWN -FEATURE_HTTP_USERNAME_PASSWORD_DISABLE -FEATURE_SAFE_BINDTOOBJECT -FEATURE_UNC_SAVEDFILECHECK -FEATURE_GET_URL_DOM_FILEPATH_UNENCODED -FEATURE_TABBED_BROWSING -FEATURE_SSLUX -FEATURE_DISABLE_NAVIGATION_SOUNDS -FEATURE_DISABLE_LEGACY_COMPRESSION -FEATURE_FORCE_ADDR_AND_STATUS -FEATURE_XMLHTTP -FEATURE_DISABLE_TELNET_PROTOCOL -FEATURE_FEEDS -FEATURE_BLOCK_INPUT_PROMPTS -FEATURE_ENTRY_COUNT); - } - - TInternetFeatureList = ( - ObjectCaching, ZoneElevation, MimeHandling, MimeSniffing, WindowRestrictions, - WebocPopupManagement, Behaviors, DisableMkProtocol, LocalMachineLockDown, - Securityband, RestrictActivexInstall, ValidateNavigateUrl, RestrictFileDownload, - AddonManagement, ProtocolLockdown, HttpUsernamePasswordDisable, SafeBindToObject, - UncSavedFileCheck, GetUrlDomFilePathUnencoded, TabbedBrowsing, Sslux, - DisableNavigationSounds, DisableLegacyCompression, ForceAddrAndStatus, - XmlHttp, DisableTelnetProtocol, Feeds, BlockInputPrompts, EntryCount - ); - TInternetFeatures = set of TInternetFeatureList; -{$ENDIF Enable_InternetFeatures} - -{============================================================================} -// TEwbControl -{============================================================================} - -type - TEwbControl = class(TComponent) - private - { Private declarations } - FMouseWheelFix: TMouseWheelFix; - FFocusControl: TFocusControl; - // FMessageHandler: TMessageHandler; - // FOnMessage: TMessageEvent; - FOnMouseWheel: TMouseWheelEvent; - FDesignMode: Boolean; -{$IFDEF Enable_InternetFeatures} - FInternetFeatures: TInternetFeatures; - procedure SetInternetFeatures(const Value: TInternetFeatures); -{$ENDIF} - // procedure DoMessage(var Msg: TMsg; var Handled: Boolean); - protected - { Protected declarations } - // procedure ProcessWBEvents(var Msg: TMsg; var Handled: Boolean); -{$IFDEF Enable_InternetFeatures} - procedure UpdateInternetFeatures; - procedure SetDefaultInternetFeatures; -{$ENDIF} - - public - { Public declarations } - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure Loaded; override; - published - { Published declarations } - property MouseWheelFix: TMouseWheelFix read FMouseWheelFix write - FMouseWheelFix; - property FocusControl: TFocusControl read FFocusControl write FFocusControl; - // property MessageHandler: TMessageHandler read FMessageHandler write FMessageHandler; - // property OnMessage: TMessageEvent read FOnMessage write FOnMessage; - property OnMouseWheel: TMouseWheelEvent read FOnMouseWheel write - FOnMouseWheel; -{$IFDEF Enable_InternetFeatures} - property InternetFeatures: TInternetFeatures read FInternetFeatures - write SetInternetFeatures default []; -{$ENDIF} - end; - -implementation - -uses - EwbFocusControl, EwbAcc, EwbIEConst; - -procedure TFocusControl.SetActive(const Value: Boolean); -begin - FActive := Value; - if not FDesignMode then - TEWBFocusControl.Activate(Value); -end; - -{procedure TMessageHandler.SetActive(const Value: Boolean); -begin - FActive := Value; - if not FDesignMode then - begin - if FActive then - Application.OnMessage := FOnMessage; - end; -end; } - -procedure TMouseWheelFix.SetActiveFormOnly(const Value: Boolean); -begin - FActiveFormOnly := Value; - if Assigned(FEWBMouseHook) then - FEWBMouseHook.FActiveFormOnly := FActiveFormOnly; -end; - -procedure TMouseWheelFix.SetActive(const Value: Boolean); -begin - FActive := Value; - if not FDesignMode then - if Value then - begin - if FEWBMouseHook = nil then - begin - FEWBMouseHook := TEWBMouseHook.Create; - FEWBMouseHook.OnMouseWheel := OnMouseWheel; - FEWBMouseHook.FActiveFormOnly := FActiveFormOnly; - FEWBMouseHook.Activate; - end; - end - else - begin - if Assigned(FEWBMouseHook) then - begin - try - FEWBMouseHook.Deactivate; - finally - FreeAndNil(FEWBMouseHook); - end; - end; - end; -end; - -procedure TEwbControl.Loaded; -begin - inherited Loaded; - if Assigned(OnMouseWheel) then - FMouseWheelFix.OnMouseWheel := OnMouseWheel; - { if Assigned(FMessageHandler) then - FMessageHandler.FOnMessage := DoMessage; } -end; - -constructor TEwbControl.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - - FDesignMode := (csDesigning in ComponentState); - - FMouseWheelFix := TMouseWheelFix.Create; - FMouseWheelFix.FDesignMode := FDesignMode; - FMouseWheelFix.FActive := True; - - FFocusControl := TFocusControl.Create; - FFocusControl.FDesignMode := FDesignMode; - FFocusControl.FActive := True; - -{$IFDEF Enable_InternetFeatures} - if FDesignMode then - SetDefaultInternetFeatures; -{$ENDIF} - - { FMessageHandler := TMessageHandler.Create; - FMessageHandler.FDesignMode := FDesignMode; - FMessageHandler.FOnMessage := DoMessage; - - FMessageHandler.FActive := True; } -end; - -destructor TEwbControl.Destroy; -begin - if not (csDesigning in ComponentState) then - begin - { if Assigned(FMessageHandler) then - begin - FMessageHandler.Active := False; - Application.OnMessage := nil; - FreeAndNil(FMessageHandler); - end; } - if Assigned(FMouseWheelFix) then - begin - FMouseWheelFix.Active := False; - FreeAndNil(FMouseWheelFix); - end; - if Assigned(FFocusControl) then - begin - FFocusControl.Active := False; - FreeAndNil(FFocusControl); - end; - end; - inherited Destroy; -end; - -{$IFDEF Enable_InternetFeatures} - -procedure TEwbControl.UpdateInternetFeatures; -var - dco: TInternetFeatureList; -begin - if (FInternetFeatures <> []) then - for dco := Low(TInternetFeatureList) to High(TInternetFeatureList) do - CoInternetSetFeatureEnabled(TInternetFeature(dco), FEATURE_FROM_PROCESS, (dco in FInternetFeatures)); -end; - -procedure TEwbControl.SetInternetFeatures(const Value: TInternetFeatures); -begin - FInternetFeatures := Value; - UpdateInternetFeatures; -end; - -procedure TEwbControl.SetDefaultInternetFeatures; -var - dco: TInternetFeatureList; -begin - FInternetFeatures := []; - for dco := Low(TInternetFeatureList) to High(TInternetFeatureList) do - if CoInternetIsFeatureEnabled(TInternetFeature(dco), FEATURE_FROM_PROCESS) = S_OK then - FInternetFeatures := FInternetFeatures + [TInternetFeatureList(dco)]; -end; - -{$ENDIF} - -{ -procedure TEwbControl.ProcessWBEvents(var Msg: TMsg; var Handled: Boolean); -begin -end; - -procedure TEwbControl.DoMessage(var Msg: TMsg; var Handled: Boolean); -begin - if Assigned(FOnMessage) then - begin - FOnMessage(Msg, Handled); - end; - ProcessWBEvents(Msg, Handled); -end; -} - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbCore.pas b/windows/src/ext/embeddedwb/Source/EwbCore.pas deleted file mode 100644 index cee1cfa063..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbCore.pas +++ /dev/null @@ -1,1998 +0,0 @@ -(* - Name: EwbCore - Copyright: Copyright (C) 2003-2017 SIL International. - Documentation: - Description: - Create Date: 1 May 2014 - - Modified Date: 1 May 2014 - Authors: mcdurdin - Related Files: - Dependencies: - - Bugs: - Todo: - Notes: - History: 01 May 2014 - mcdurdin - I4214 - V9.0 - Keyman spams message 0x0401 and frequent timer messages too - -*) -//************************************************************* -// TEwbCore * -// * -// Freeware Component * -// For Delphi * -// For Delphi 5 to Delphi XE * -// * -// Developing Team: * -// Eran Bodankin (bsalsa) -(bsalsa@gmail.com) * -// Serge Voloshenyuk (SergeV@bsalsa.com) * -// Thomas Stutz (smot777@yahoo.com * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/change/modify the component under 4 conditions: -1. In your web site, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit EwbCore; - -interface - -{$I EWB.inc} - -uses -{$IFDEF DELPHI6_UP}Variants, {$ENDIF} - Dialogs, Windows, Messages, Classes, MSHTML_EWB, EWBAcc, Controls, Forms, - ExtCtrls, ActiveX, ShlObj, SHDocVw_EWB, UrlMon, EwbIEConst; - -type - TCustomEmbeddedWB = class; - - TOleCmdArray = array of TOleCmd; - TDragDropHandlingType = ( - ddtMS, // Microsoft implementation - ddtMy, // TCustomEmbeddedWB event handlers - ddtCustom, // granted by user in OnGetDropTarget event handler - ddtNo // No drag and drop - ); - TDocDesignMode = (ddmOn, ddmOff, ddmInherit, ddmUnknown); - - TIEPopupMenu = ( - rcmDefault, - rcmImage, - rcmControl, - rcmTable, - rcmSelText, - rcmAnchor, - rcmUnKnown, - rcmImageArt, - rcmImgDynSrc, - rcmDebug, - rcmAll - ); - TIEPopupMenus = set of TIEPopupMenu; - - TIEPopupMenuItem = ( - rcsBack, - rcsForward, - rcsSavePageBkg, - rcsSetAsBkg, - rcsCopyBkg, - rcsSetAsDeskT, - rcsSelectAll, - rcsPaste, - rcsCreateSC, - rcsAddToFav, - rcsEncoding, - rcsRefresh, - rcsViewSource, - rcsProperties, - rcsPrint, - rcsOpenNWindow, - rcsOpenLink - ); - TIEPopupMenuItems = set of TIEPopupMenuItem; - - {============================================================================} - { Controlling Download and Execution } - { http://msdn.microsoft.com/en-us/library/aa770041.aspx } - { TDownloadControlOption = ( - DLCTL_DLIMAGES, DLCTL_VIDEOS, DLCTL_BGSOUNDS, - DLCTL_NO_SCRIPTS, DLCTL_NO_JAVA, - DLCTL_NO_RUNACTIVEXCTLS, DLCTL_NO_DLACTIVEXCTLS, - DLCTL_DOWNLOADONLY, - DLCTL_NO_FRAMEDOWNLOAD, - DLCTL_RESYNCHRONIZE, - DLCTL_PRAGMA_NO_CACHE, - DLCTL_NO_BEHAVIORS, DLCTL_NO_METACHARSET, - DLCTL_URL_ENCODING_DISABLE_UTF8, DLCTL_URL_ENCODING_ENABLE_UTF8, - DLCTL_FORCEOFFLINE, DLCTL_NO_CLIENTPULL, - DLCTL_SILENT, DLCTL_OFFLINE); - } - TDownloadControlOption = ( - DownloadImages, DownloadVideos, DownloadBGSounds, DontExecuteScripts, - DontExecuteJava, DontExecuteActiveX, DontDownloadActiveX, - DownloadButDontDisplay, DontDownloadFrame, CheckPageResynchronize, - DownloadAndIgnoreCache, DontDownloadBehaviors, SuppressedMetaCharset, - DisableUrlIfEncodingUTF8, EnableUrlIfEncodingUTF8, - ForceOfflineMode, DontPerformClientPull, DownloadInSilentMode, WorkOffline); - TDownloadControlOptions = set of TDownloadControlOption; - - { Doc Host Flags: - http://msdn.microsoft.com/en-us/library/aa753277.aspx } - { TUserInterfaceOption = (DIALOG, DISABLE_HELP_MENU, NO3DBORDER, - SCROLL_NO, DISABLE_SCRIPT_INACTIVE, OPENNEWWIN, DISABLE_OFFSCREEN, - FLAT_SCROLLBAR, DIV_BLOCKDEFAULT, ACTIVATE_CLIENTHIT_ONLY, - OVERRIDEBEHAVIORFACTORY, - CODEPAGELINKEDFONTS, URL_ENCODING_DISABLE_UTF8, - URL_ENCODING_ENABLE_UTF8, - ENABLE_FORMS_AUTOCOMPLETE, ENABLE_INPLACE_NAVIGATION, - IME_ENABLE_RECONVERSION, - THEME, NOTHEME, NOPICS, NO3DOUTERBORDER, DISABLE_EDIT_NS_FIXUP, - LOCAL_MACHINE_ACCESS_CHECK, DISABLE_UNTRUSTEDPROTOCOL, - HOST_NAVIGATES, ENABLE_REDIRECT_NOTIFICATION, USE_WINDOWLESS_SELECTCONTROL, - USE_WINDOWED_SELECTCONTROL, ENABLE_ACTIVEX_INACTIVATE_MODE); - } - TUserInterfaceOption = (DisableTextSelect, DisableHelpMenu, DontUse3DBorders, - DontUseScrollBars, PostponeScriptUntilActive, ForceOpenNewWindow, - Reserved_OFFSCREEN, - ForceFlatScrollBars, InsertDivTagOnEditMode, ActivateUIOnlyOnDocClick, - ConsultBeforeRetrievingBehavior, - CheckFontSupportsCodePage, DisableSubmitUrlInUTF8, - EnableSubmitUrlInUTF8, - EnablesFormsAutoComplete, ForceSameWindowNavigation, - EmableImeLocalLanguages, - EnableThemes, DisableThemes, DisablePicsRatings, DisableFrameSetBorder, - DisablesAutoNameSpaceCorrection, - DisableLocalFileAccess, DisableUntrustedProtocol, - CheckNavigationDelegatedToHost, EnableRedirectNotification, EnableDomWindlessControls, - EnableWindowedControls, ForceUserActivationOnActiveXJava); - TUserInterfaceOptions = set of TUserInterfaceOption; - - {events} - TMenuPreprocess = procedure(Sender: TObject; ID: DWORD; Menu: HMENU; const Context: IDispatch) of object; - - TEWBNotifyEvent = procedure(Sender: TObject; var Rezult: HRESULT) of object; - TBoolQueryEvent = procedure(Sender: TObject; var Value: BOOL) of object; - TMaskedCtrlCharEvent = procedure(Sender: TCustomEmbeddedWB; MaskedChar: Char) of object; - TOMWindowMoveEvent = procedure(Sender: TCustomEmbeddedWB; cx, cy: Integer) of object; - - {IDocHostShowUI Interface} - TShowHelpEvent = function(Sender: TObject; HWND: THandle; pszHelpFile: POleStr; uCommand: Integer; - dwData: Longint; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT of object; - TShowMessageEvent = function(Sender: TObject; HWND: THandle; - lpstrText: POleStr; lpstrCaption: POleStr; dwType: Longint; lpstrHelpFile: POleStr; - dwHelpContext: Longint; var plResult: LRESULT): HRESULT of object; - {IDocHostUIHandler Interface} - TEnableModelessEvent = procedure(Sender: TCustomEmbeddedWB; const fEnable: BOOL) of object; - TFilterDataObjectEvent = procedure(Sender: TCustomEmbeddedWB; const pDO: IDataObject; - var ppDORet: IDataObject) of object; - TGetDropTargetEvent = procedure(Sender: TCustomEmbeddedWB; var DropTarget: IDropTarget) of object; - TGetExternalEvent = procedure(Sender: TCustomEmbeddedWB; var ppDispatch: IDispatch) of object; - TGetHostInfoEvent = procedure(Sender: TCustomEmbeddedWB; var pInfo: TDOCHOSTUIINFO) of object; - TGetOptionKeyPathEvent = procedure(Sender: TCustomEmbeddedWB; var pchKey: POleStr) of object; - TOnActivateEvent = procedure(Sender: TCustomEmbeddedWB; const fActivate: BOOL) of object; - TResizeBorderEvent = procedure(Sender: TCustomEmbeddedWB; const prcBorder: PRect; - const pUIWindow: IOleInPlaceUIWindow; - const fRameWindow: BOOL) of object; - TShowContextMenuEvent = procedure(Sender: TCustomEmbeddedWB; const dwID: DWORD; const ppt: PPOINT; - const CommandTarget: IUnknown; const Context: IDispatch; var Result: HRESULT) of object; - TShowUIEvent = procedure(Sender: TCustomEmbeddedWB; const dwID: DWORD; const - pActiveObject: IOleInPlaceActiveObject; - const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame; - const pDoc: IOleInPlaceUIWindow; var Rezult: HRESULT) of object; - TTranslateAcceleratorEvent = procedure(Sender: TCustomEmbeddedWB; const lpMsg: PMSG; - const pguidCmdGroup: PGUID; - const nCmdID: DWORD; var Done: Boolean) of object; - TTranslateUrlEvent = procedure(Sender: TCustomEmbeddedWB; const pchURLIn: POleStr; - var ppchURLOut: WideString) of object; - -{$IFDEF USE_IOLECOMMANDTARGET} - TRefreshEvent = procedure(Sender: TCustomEmbeddedWB; CmdID: Integer; var Cancel: Boolean) of object; -{$ENDIF} - {INewWindowManager Interface} - TEvaluateNewWindowEvent = procedure(Sender: TCustomEmbeddedWB; pszUrl, pszName, - pszUrlContext, pszFeatures: LPCWSTR; - fReplace: BOOL; dwFlags, dwUserActionTime: DWORD; var Rezult: HRESULT) of object; - {IDownloadManager Interface} - TDownloadEvent = procedure(Sender: TCustomEmbeddedWB; pmk: IMoniker; pbc: IBindCtx; - dwBindVerb: DWORD; - grfBINDF: DWORD; pBindInfo: PBindInfo; pszHeaders: PWideChar; - pszRedir: PWidechar; uiCP: UINT; var Rezult: HRESULT) of object; - {IAuthenticate Interface} - TAuthenticateEvent = procedure(Sender: TCustomEmbeddedWB; var hwnd: HWnd; - var szUserName, szPassWord: WideString; var Rezult: HRESULT) of object; - {IZoomEvents Interface} - TZoomPercentChangedEvent = function(Sender: TCustomEmbeddedWB; const ulZoomPercent: uLong): HRESULT of object; - {Script Error handling} - TScriptErrorAction = (eaContinue, eaCancel, eaAskUser); - TScriptErrorEvent = procedure(Sender: TObject; ErrorLine, ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; - var ScriptErrorAction: TScriptErrorAction) of object; - - {User Agent Mode Event} - TSetUserAgentEvent = function(var UserAgent: string): HRESULT of object; - - { TCustomEmbeddedWB } - TCustomEmbeddedWB = class(TEWB - , IDispatch // http://msdn.microsoft.com/en-us/library/ms221608.aspx - , IDocHostShowUI // http://msdn.microsoft.com/en-us/library/aa753269.aspx - , IDocHostUIHandler // http://msdn.microsoft.com/en-us/library/aa753260(VS.85).aspx - , IDocHostUIHandler2 // http://msdn.microsoft.com/en-us/library/aa753275(VS.85).aspx - , IDropTarget // http://msdn.microsoft.com/en-us/library/ms679679.aspx -{$IFDEF USE_IOLECOMMANDTARGET} - , IOleCommandTarget // http://msdn.microsoft.com/en-us/library/ms683797.aspx -{$ENDIF} - , IServiceProvider // http://msdn.microsoft.com/en-us/library/cc678965(VS.85).aspx - , INewWindowManager // http://msdn.microsoft.com/en-us/library/bb775418(VS.85).aspx - , IProtectFocus // http://msdn2.microsoft.com/en-us/library/aa361771.aspx - , IDownloadManager // http://msdn.microsoft.com/en-us/library/aa753613(VS.85).aspx - , IHTMLOMWindowServices //http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/hosting/reference/ifaces/IHTMLOMWindowServices/IHTMLOMWindowServices.asp - , IHostBehaviorInit // http://msdn.microsoft.com/en-us/library/aa753687(VS.85).aspx - , IZoomEvents // http://msdn.microsoft.com/en-us/library/aa770056(VS.85).aspx - , IAuthenticate // http://msdn.microsoft.com/en-us/library/ms835407.aspx - ) - - private - FOnZoomPercentChanged: TZoomPercentChangedEvent; - FOnGetIDsOfNames: TGetIDsOfNamesEvent; - FOnGetTypeInfo: TGetTypeInfoEvent; - FOnGetTypeInfoCount: TGetTypeInfoCountEvent; - FOnInvoke: TInvokeEvent; - FDownloadControlOptions: TDownloadControlOptions; - FOnShowMessage: TShowMessageEvent; - FOnShowHelp: TShowHelpEvent; - FHelpFile: string; - fOptionKeyPath: string; - fOverOptionKeyPath: Boolean; - FOnFilterDataObject: TFilterDataObjectEvent; - FOnGetExternal: TGetExternalEvent; - FOnGetHostInfo: TGetHostInfoEvent; - FUserInterfaceOptions: TUserInterfaceOptions; - FOnEnableModeless: TEnableModelessEvent; -{$IFDEF GETKEYPATH_HANDLERS} - FOnGetOptionKeyPath: TGetOptionKeyPathEvent; - FOnGetOverrideKeyPath: TGetOptionKeyPathEvent; -{$ENDIF} - FOnGetDropTarget: TGetDropTargetEvent; - FOnHideUI: TEWBNotifyEvent; - FOnOnDocWindowActivate: TOnActivateEvent; - FOnOnFrameWindowActivate: TOnActivateEvent; - FOnResizeBorder: TResizeBorderEvent; - FOnShowContextmenu: TShowContextMenuEvent; - FOnShowUI: TShowUIEvent; - FOnTranslateAccelerator: TTranslateAcceleratorEvent; - FOnTranslateUrL: TTranslateUrlEvent; - FOnUpdateUI: TEWBNotifyEvent; - FOnDragLeaveEvent: TNotifyEvent; - FOnDragEnterEvent: TOnDragEnterEvent; - FOnDragOverEvent: TOnDragOverEvent; - FOnDropEvent: TOnDropEvent; - FOnScriptError: TScriptErrorEvent; - FScriptErrorAction: TScriptErrorAction; -{$IFDEF USE_IOLECOMMANDTARGET} - FOnUnload: TNotifyEvent; - FOnStop: TNotifyEvent; - FOnRefresh: TRefreshEvent; - FOnCommandExec: TComTargetExecEvent; -{$ENDIF} - FOnQueryService: TQueryServiceEvent; - FOnEvaluateNewWindow: TEvaluateNewWindowEvent; - FCanGrabFocus: Boolean; - FOnAllowFocusChange: TBoolQueryEvent; - FOnDownload: TDownloadEvent; - FDropHandlingType: TDragDropHandlingType; - FZoomPercent: Integer; - FDesignMode: Boolean; - FDisabledPopupMenus: TIEPopupMenus; - FOnFilterPopupMenu: TMenuPreprocess; - FOnMaskedCtrlChar: TMaskedCtrlCharEvent; - FDisableCtrlShortcuts: string; - FOnResize: TOMWindowMoveEvent; - FOnMoveBy: TOMWindowMoveEvent; - FOnMove: TOMWindowMoveEvent; - FOnResizeBy: TOMWindowMoveEvent; - FFloatingHosting: Boolean; - FOnPopulateNSTable: TNotifyEvent; - FOnAuthenticate: TAuthenticateEvent; -{$IFDEF RESEARCH_MODE} - FOnQueryInterface: OnQueryInterfaceEvent; -{$ENDIF} - procedure SetDownloadOptions(const Value: TDownloadControlOptions); - procedure SetUserInterfaceOptions(const Value: TUserInterfaceOptions); - function GetDoc2: IHtmlDocument2; - function GetDoc3: IHtmlDocument3; - function GetDoc4: IHtmlDocument4; - function GetDoc5: IHtmlDocument5; - function GetElemByID(const ID: WideString): IHTMLElement; - function GetZoom: Integer; - procedure SetZoom(const Value: Integer); - procedure SetOpticalZoom(const Value: Integer); - function _getCookie: WideString; - function GetCharSet: WideString; - procedure SetCharSet(const Value: WideString); - procedure SetDropHandlingType(const Value: TDragDropHandlingType); - procedure SetDesignMode(const Value: Boolean); - function GetDocDesignMode: TDocDesignMode; - procedure SetDocDesignMode(const Value: TDocDesignMode); - function GetBody: IHTMLElement; - - protected - CurrentHandle: HWND; //jls - procedure CreateWnd; override; //jls - procedure DestroyWnd; override; //jls - protected -{$IFDEF RESEARCH_MODE} - { IInterface } - function QueryInterface(const IID: TGUID; out Obj): HRESULT; override; stdcall; -{$ENDIF} - {IDispatch Interface} - function GetIDsOfNames(const IID: TGUID; Names: Pointer; - NameCount, LocaleID: Integer; DispIDs: Pointer): HRESULT; stdcall; - function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HRESULT; - stdcall; - function GetTypeInfoCount(out Count: Integer): HRESULT; stdcall; - function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT; - stdcall; - {IDocHostShowUI Interface } - function ShowHelp(HWND: THandle; pszHelpFile: POleStr; uCommand: Integer; - dwData: Longint; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; stdcall; - function ShowMessage(HWND: THandle; lpstrText: POleStr; lpstrCaption: POleStr; - dwType: Longint; lpstrHelpFile: POleStr; dwHelpContext: Longint; - var plResult: LRESULT): HRESULT; stdcall; - {IDocHostUIHandler Interface} - function EnableModeless(const fEnable: BOOL): HRESULT; stdcall; - function FilterDataObject(const pDO: IDataObject; out ppDORet: IDataObject): HRESULT; stdcall; - function GetDropTarget(const pDropTarget: IDropTarget; - out ppDropTarget: IDropTarget): HRESULT; stdcall; - function GetExternal(out ppDispatch: IDispatch): HRESULT; stdcall; - function GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT; stdcall; - function GetOptionKeyPath(out pchKey: POleStr; const dw: DWORD): HRESULT; stdcall; - function HideUI: HRESULT; stdcall; - function OnDocWindowActivate(const fActivate: BOOL): HRESULT; stdcall; - function OnFrameWindowActivate(const fActivate: BOOL): HRESULT; stdcall; - function ResizeBorder(const prcBorder: PRECT; const pUIWindow: - IOleInPlaceUIWindow; - const FrameWindow: BOOL): HRESULT; stdcall; - function ShowContextMenu(const dwID: DWORD; const ppt: PPOINT; - const CommandTarget: IUnknown; const Context: IDispatch): HRESULT; stdcall; - function ShowUI(const dwID: DWORD; const pActiveObject: - IOleInPlaceActiveObject; - const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame; - const pDoc: IOleInPlaceUIWindow): HRESULT; stdcall; - function TranslateAccelerator(const lpMsg: PMSG; const pguidCmdGroup: PGUID; - const nCmdID: DWORD): HRESULT; stdcall; - function TranslateUrl(const dwTranslate: DWORD; const pchURLIn: POleStr; - out ppchURLOut: POleStr): HRESULT; stdcall; - function UpdateUI: HRESULT; stdcall; - {IDocHostUIHandler2 Interface} - function GetOverrideKeyPath(out pchKey: POleStr; dw: DWORD): HRESULT; stdcall; - {IDropTarget Interface} - function DragEnter(const dataObj: IDataObject; grfKeyState: Longint; - pt: TPoint; var dwEffect: Longint): HRESULT; stdcall; - function IDropTarget.DragOver = DropTargetDragOver; - function DropTargetDragOver(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; -{$IFDEF USE_IOLECOMMANDTARGET} - {IOleCommandTarget interface} - function IOleCommandTarget.QueryStatus = CommandTarget_QueryStatus; - function CommandTarget_QueryStatus(CmdGroup: PGUID; cCmds: Cardinal; - prgCmds: POleCmd; CmdText: POleCmdText): HRESULT; stdcall; - function IOleCommandTarget.Exec = CommandTarget_Exec; - function CommandTarget_Exec(CmdGroup: PGUID; nCmdID, nCmdexecopt: DWORD; - const vaIn: OleVariant; var vaOut: OleVariant): HRESULT; stdcall; -{$ENDIF} - {IServiceProvider Interface} - function QueryService(const rsid, iid: TGUID; out Obj): HRESULT; stdcall; - {INewWindowManager Interface} - function EvaluateNewWindow(pszUrl, pszName, pszUrlContext, pszFeatures: LPCWSTR; - fReplace: BOOL; dwFlags, dwUserActionTime: DWORD): HRESULT; stdcall; - {IProtectFocus IE7 interface} - function AllowFocusChange(out pfAllow: BOOL): HRESULT; stdcall; - {IDownloadManager Interface} - function Download( - pmk: IMoniker; // Identifies the object to be downloaded - pbc: IBindCtx; // Stores information used by the moniker to bind - dwBindVerb: DWORD; // The action to be performed during the bind - grfBINDF: DWORD; // Determines the use of URL encoding during the bind - pBindInfo: PBindInfo; // Used to implement IBindStatusCallback::GetBindInfo - pszHeaders: PWidechar; // Additional headers to use with IHttpNegotiate - pszRedir: PWidechar; // The URL that the moniker is redirected to - uiCP: UINT // The code page of the object's display name - ): HRESULT; stdcall; - {IHostBehaviorInit} - function PopulateNamespaceTable: HRESULT; stdcall; - {IHTMLOMWindowServices Interface} - function ResizeBy(const x, y: Integer): HRESULT; stdcall; - function ResizeTo(const x, y: Integer): HRESULT; stdcall; - function MoveBy(const x, y: Integer): HRESULT; stdcall; - function MoveTo(const x, y: Integer): HRESULT; stdcall; - {IZoomEvents interface} - function OnZoomPercentChanged(const ulZoomPercent: uLong): HRESULT; stdcall; - {IAuthenticate} - function Authenticate(var hwnd: HWnd; var szUserName, szPassWord: LPWSTR): - HRESULT; stdcall; - protected - FDownloadOptionValue: Longint; - FUserInterfaceValue: Cardinal; - FOnSetUserAgent: TSetUserAgentEvent; - FOnPreRefresh: TNotifyEvent; - FOnHookChildWindow: TNotifyEvent; - procedure UpdateDownloadControlValues; - procedure UpdateUserInterfaceValues; - function CopyOptionKeyPath(Overrided: Boolean): PWideChar; - function DoFilterMsg(const lpMsg: PMSG): Boolean; virtual; - function ScriptErrorHandler(const vaIn: OleVariant; var vaOut: OleVariant): HRESULT; virtual; - function DoQueryService(const rsid, iid: TGUID; var Obj): Boolean; virtual; - function FilterPopupMenu: Boolean; virtual; - procedure DoFilterPopupMenu(Sender: TObject; ID: DWORD; Menu: HMENU; const Context: - IDispatch); virtual; - procedure MoveParentForm(x, y: Integer; Delta: Boolean); - procedure ResizeParentForm(w, h: Integer; Delta: Boolean); - public - class function dwEffectToStr(Command: Int64): string; - class procedure DropEffect(grfKeyState: Longint; var dwEffect: longint); - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function InvokeCommand(CmdGroup: PGUID; Cmd, nCmdexecopt: DWORD; - var vaIn, vaOut: OleVariant): HRESULT; overload; - function InvokeCommand(CmdGroup: PGUID; Cmd: DWORD): HRESULT; overload; - function QueryCommandStatus(CmdGroup: PGUID; cCmds: Cardinal; - prgCmds: POleCmd; CmdText: POleCmdText): HRESULT; - function QueryCMDEnabled(CmdGroup: PGUID; cmdID: Cardinal): Boolean; - function QueryCMDLatched(CmdGroup: PGUID; cmdID: Cardinal): Boolean; - function QueryCMDStatus(CmdGroup: PGUID; cmdID: Cardinal): OLECMDF; - function QueryCMDArrayStatus(CmdGroup: PGUID; cmds: TOleCmdArray): Boolean; - - procedure Client2HostWin(var CX, CY: Integer); - // just call it in OnClientToHostWindow handler - - function GetIEWin(const ClassName: string): HWND; - procedure SetFocusToDoc; - procedure SetFocusToBody; - procedure SetFocusToParent; - - function ZoomRangeHigh: Integer; - function ZoomRangeLow: Integer; - property Zoom: Integer read GetZoom write SetZoom; - - property Cookie: WideString read _getCookie; - property DesignMode: Boolean read FDesignMode write SetDesignMode; - {html functions} - property Doc2: IHtmlDocument2 read GetDoc2; - property Doc3: IHtmlDocument3 read GetDoc3; - property Doc4: IHtmlDocument4 read GetDoc4; - property Doc5: IHtmlDocument5 read GetDoc5; - - property Body: IHTMLElement read getBody; - property DocDesignMode: TDocDesignMode read getDocDesignMode write - setDocDesignMode; - property CharactersSet: WideString read GetCharSet write SetCharSet; - property ElementByID[const ID: WideString]: IHTMLElement read getElemByID; - function ScrollToElement(Element: IHTMLElement): Boolean; - - function GetElementNamespaceTable(out aTable: IElementNamespaceTable): - Boolean; - -{$IFDEF RESEARCH_MODE} - property OnQueryInterface: OnQueryInterfaceEvent read FOnQueryInterface write FOnQueryInterface; -{$ENDIF} - property CanGrabFocus: Boolean read FCanGrabFocus write FCanGrabFocus default True; - published - property ZoomPercent: Integer read FZoomPercent write SetOpticalZoom default 100; - property OnAllowFocusChange: TBoolQueryEvent read FOnAllowFocusChange write - FOnAllowFocusChange; - property DisableCtrlShortcuts: string read FDisableCtrlShortcuts write FDisableCtrlShortcuts; - property DownloadOptions: TDownloadControlOptions read FDownloadControlOptions - write SetDownloadOptions default [DownloadImages, DownloadVideos, DownloadBGSounds]; - property UserInterfaceOptions: TUserInterfaceOptions read FUserInterfaceOptions - write SetUserInterfaceOptions default []; - property HelpFile: string read FHelpFile write FHelpFile; - property OptionKeyPath: string read FOptionKeyPath write FOptionKeyPath; - property OverrideOptionKeyPath: Boolean read FOverOptionKeyPath write - FOverOptionKeyPath default False; - - property DropHandlingType: TDragDropHandlingType read FDropHandlingType write - setDropHandlingType default ddtMS; - property DisabledPopupMenus: TIEPopupMenus - read FDisabledPopupMenus write FDisabledPopupMenus default []; - property FloatingHosting: Boolean read FFloatingHosting write - fFloatingHosting default False; - - property OnGetIDsOfNames: TGetIDsOfNamesEvent read FOnGetIDsOfNames write - FOnGetIdsOfNames; - property OnGetTypeInfo: TGetTypeInfoEvent read FonGetTypeInfo write - FOnGetTypeInfo; - property OnGetTypeInfoCount: TGetTypeInfoCountEvent read FonGetTypeInfoCount - write FOnGetTypeInfoCount; - property OnInvoke: TInvokeEvent read FOnInvoke write FOnInvoke; - property OnShowHelpRequest: TShowHelpEvent read FOnShowHelp write - FOnShowHelp; - property OnShowMessage: TShowMessageEvent read FOnShowMessage write - FOnShowMessage; - property OnFilterDataObject: TFilterDataObjectEvent read FOnFilterDataObject - write FOnFilterDataObject; - property OnGetExternal: TGetExternalEvent read FOnGetExternal write - FOnGetExternal; - property OnGetHostInfo: TGetHostInfoEvent read FOnGetHostInfo write - FOnGetHostInfo; - property OnEnableModeless: TEnableModelessEvent read FOnEnableModeless - write FOnEnableModeless; -{$IFDEF GETKEYPATH_HANDLERS} - property OnGetOptionKeyPath: TGetOptionKeyPathEvent read FOnGetOptionKeyPath - write FOnGetOptionKeyPath; - property OnGetOverrideKeyPath: TGetOptionKeyPathEvent read - FOnGetOverrideKeyPath - write FOnGetOverrideKeyPath; -{$ENDIF} - property OnZoomPercentChange: TZoomPercentChangedEvent read FOnZoomPercentChanged write FOnZoomPercentChanged; - property OnGetDropTarget: TGetDropTargetEvent read FOnGetDropTarget write FOnGetDropTarget; - property OnHideUI: TEWBNotifyEvent read FOnHideUI write FOnHideUI; - property OnOnDocWindowActivate: TOnActivateEvent read FOnOnDocWindowActivate - write FOnOnDocWindowActivate; - property OnOnFrameWindowActivate: TOnActivateEvent read - FOnOnFrameWindowActivate - write FOnOnFrameWindowActivate; - property OnResizeBorder: TResizeBorderEvent read FOnResizeBorder write - FOnResizeBorder; - property OnShowContextMenu: TShowContextMenuEvent read FOnShowContextmenu - write FOnShowContextmenu; - property OnShowUI: TShowUIEvent read FOnShowUI write FOnShowUI; - property OnTranslateAccelerator: TTranslateAcceleratorEvent read - FOnTranslateAccelerator - write FOnTranslateAccelerator; - property OnTranslateUrl: TTranslateUrlEvent read FOnTranslateUrL - write FOnTranslateUrL; - property OnUpdateUI: TEWBNotifyEvent read FOnUpdateUI write FOnUpdateUI; - - property OnDragEnter: TOnDragEnterEvent read FOnDragEnterEvent write - FOnDragEnterEvent; - property OnDragLeave: TNotifyEvent read FOnDragLeaveEvent write - FOnDragLeaveEvent; - property OnDragOver2: TOnDragOverEvent read FOnDragOverEvent write - FOnDragOverEvent; - property OnDropEvent: TOnDropEvent read FOnDropEvent write FOnDropEvent; - - property OnScriptError: TScriptErrorEvent read FOnScriptError write FOnScriptError; - property ScriptErrorAction: TScriptErrorAction read FScriptErrorAction - write FScriptErrorAction default eaContinue; -{$IFDEF USE_IOLECOMMANDTARGET} - property OnRefresh: TRefreshEvent read FOnRefresh write FOnRefresh; - property OnStop: TNotifyEvent read FOnStop write FOnStop; - property OnUnload: TNotifyEvent read FOnUnload write FOnUnload; - property OnCommandExec: TComTargetExecEvent read FOnCommandExec write - fOnCommandExec; -{$ENDIF} - property OnQueryService: TQueryServiceEvent read FOnQueryService write - FOnQueryService; - property OnEvaluateNewWindow: TEvaluateNewWindowEvent read - FOnEvaluateNewWindow - write FOnEvaluateNewWindow; - property OnFileDownload: TDownloadEvent read FOnDownload write FOnDownload; - property OnFilterPopupMenu: TMenuPreprocess read FOnFilterPopupMenu write - FOnFilterPopupMenu; - property OnMaskedCtrlChar: TMaskedCtrlCharEvent read FOnMaskedCtrlChar write - FOnMaskedCtrlChar; - - property OnMove: TOMWindowMoveEvent read FOnMove write FOnMove; - property OnMoveBy: TOMWindowMoveEvent read FOnMoveBy write FOnMoveBy; - property OnResize: TOMWindowMoveEvent read FOnResize write FOnResize; - property OnResizeBy: TOMWindowMoveEvent read FOnResizeBy write FOnResizeBy; - property OnPopulateNSTable: TNotifyEvent read FOnPopulateNSTable write - FOnPopulateNSTable; - property OnAuthenticate: TAuthenticateEvent read FOnAuthenticate write - FOnAuthenticate; - property OnPreRefresh: TNotifyEvent read FOnPreRefresh write FOnPreRefresh; - end; - - TEwbCore = class(TCustomEmbeddedWB) - private - function IsCtrlCharMask: Boolean; - published - property DisableCtrlShortcuts stored IsCtrlCharMask; - end; - - //this two functions for using in custom OnShowContextMenu handler. -function IsSeTIEPopupMenus(ID: DWORD; rcm: TIEPopupMenus): Boolean; -function ShowRightClickMenu(Sender: TObject; dwID: DWORD; - const Target: IUnknown; const Context: IDispatch; - const ppt: PPOINT; - const EncodingSubMenu: OleVariant; - preprocess: TMenuPreprocess = nil): Boolean; - -implementation - -uses - SysUtils, ComObj, EwbCoreTools, Registry; - -function IsSeTIEPopupMenus(ID: DWORD; rcm: TIEPopupMenus): Boolean; -begin - Result := (rcmAll in rcm) or - ((ID in [0..9]) and (TIEPopupMenu(ID) in rcm)); -end; - -function ShowRightClickMenu(Sender: TObject; dwID: DWORD; const Target: IUnknown; const Context: - IDispatch; - const ppt: PPOINT; const EncodingSubMenu: OleVariant; - Preprocess: TMenuPreprocess = nil): Boolean; -var - ShDocLcHandle: THandle; - OleCommandTarget: IOleCommandTarget; - OleWindow: IOleWindow; - WindowHandle: HWND; - ParentMenu, SubMenu: HMENU; - SubMenuItemInfo: MENUITEMINFO; - PopupResult: LongBool; -begin - Result := False; - ShDocLcHandle := GetSHDOCLCModule; - - if ShDocLcHandle = 0 then - Exit; - - if Supports(Target, IOleCommandTarget, OleCommandTarget) and - Supports(Target, IOleWindow, OleWindow) and - ActiveX.Succeeded(OleWindow.GetWindow(WindowHandle)) then - begin - ParentMenu := Windows.LoadMenu(ShDocLcHandle, - MAKEINTRESOURCE(CContextMenuID)); - if ParentMenu <> 0 then - try - SubMenu := GetSubMenu(ParentMenu, dwID); - FillChar(SubMenuItemInfo, SizeOf(SubMenuItemInfo), 0); - SubMenuItemInfo.cbSize := SizeOf(MENUITEMINFO); - SubMenuItemInfo.fMask := MIIM_SUBMENU; - SubMenuItemInfo.hSubMenu := HMENU(@EncodingSubMenu); - SetMenuItemInfo(SubMenu, IDM_LANGUAGE, False, SubMenuItemInfo); - - if Assigned(Preprocess) then - Preprocess(Sender, dwID, SubMenu, Context); - - PopupResult := Windows.TrackPopupMenuEx(SubMenu, TPM_LEFTALIGN - or TPM_TOPALIGN or TPM_RETURNCMD or TPM_RIGHTBUTTON - or TPM_HORPOSANIMATION or TPM_VERPOSANIMATION, ppt^.X, ppt^.Y, - WindowHandle, nil); - if PopupResult then - SendMessage(WindowHandle, WM_COMMAND, MakeWParam(LOWORD(PopupResult), 0), 0); - Result := True; - finally - DestroyMenu(ParentMenu); - end; - end; -end; - -type - { TnoDragDrop } - TnoDragDrop = class(TInterfacedObject, IDropTarget) - protected - 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; - -function TnoDragDrop.DragEnter(const dataObj: IDataObject; grfKeyState: Integer; - pt: TPoint; var dwEffect: Integer): HRESULT; -begin - dwEffect := DROPEFFECT_NONE; - Result := S_OK; -end; - -function TnoDragDrop.DragLeave: HRESULT; -begin - Result := S_OK; -end; - -function TnoDragDrop.DragOver(grfKeyState: Integer; pt: TPoint; - var dwEffect: Integer): HRESULT; -begin - dwEffect := DROPEFFECT_NONE; - Result := S_OK; -end; - -function TnoDragDrop.Drop(const dataObj: IDataObject; grfKeyState: Integer; - pt: TPoint; var dwEffect: Integer): HRESULT; -begin - dwEffect := DROPEFFECT_NONE; - Result := S_OK; -end; - -{ TCustomEmbeddedWB } - -class function TCustomEmbeddedWB.dwEffectToStr(Command: Int64): string; -const - E_UNSPEC = E_Fail; -begin - case (Command) of - DROPEFFECT_NONE: Result := 'Drop target cannot accept the data.'; - DROPEFFECT_COPY: Result := 'Drag source should copy the data.'; - DROPEFFECT_MOVE: Result := 'Drag source should remove the data.'; - DROPEFFECT_LINK: Result := - 'Drag source should create a link to the original data.'; - DRAGDROP_S_DROP: Result := 'The drag-and-drop operation was successful.'; - DRAGDROP_S_CANCEL: Result := 'The drag-and-drop operation was canceled.'; - DRAGDROP_S_USEDEFAULTCURSORS: Result := - 'Successful completion. Restoring defaults.'; - DRAGDROP_E_INVALIDHWND: Result := - 'Invalid handle returned in the hwnd parameter.'; - DRAGDROP_E_NOTREGISTERED: Result := - 'Failed to revoke a drop target that has not been registered.'; - E_UNSPEC: Result := 'Unexpected error occurred.'; - E_OUTOFMEMORY: Result := 'Out of memory.'; - 7: Result := 'operation was successful.'; - else - Result := 'Unknown.'; - end; -end; - -class procedure TCustomEmbeddedWB.DropEffect(grfKeyState: Longint; var dwEffect: - longint); -begin - if (grfKeyState and MK_CONTROL = 0) and (grfKeyState and MK_SHIFT <> 0) and - (dwEffect and DropEffect_Move <> 0) then - dwEffect := DropEffect_Move - else if (grfKeyState and MK_CONTROL <> 0) and (grfKeyState and MK_SHIFT <> 0) - and - (dwEffect and DropEffect_Link <> 0) then - dwEffect := DropEffect_Link - else if (dwEffect and DropEffect_Copy <> 0) then - dwEffect := DropEffect_Copy - else if (dwEffect and DropEffect_Move <> 0) then - dwEffect := DropEffect_Move - else if (dwEffect and DropEffect_Link <> 0) then - dwEffect := DropEffect_Link - else - dwEffect := DropEffect_None; -end; - -function TCustomEmbeddedWB.AllowFocusChange(out pfAllow: BOOL): HRESULT; -begin - Result := S_OK; - pfAllow := CanGrabFocus; - if Assigned(OnAllowFocusChange) then - OnAllowFocusChange(Self, pfAllow); -end; - -function TCustomEmbeddedWB.CopyOptionKeyPath(Overrided: Boolean): PWideChar; -begin - if (OptionKeyPath = '') or - (OverrideOptionKeyPath xor Overrided) then - Result := nil - else - Result := StringToLPOLESTR(OptionKeyPath); -end; - -constructor TCustomEmbeddedWB.Create(AOwner: TComponent); -begin - inherited; - FCanGrabFocus := True; - FScriptErrorAction := eaContinue; - DownloadOptions := [DownloadImages, DownloadVideos, DownloadBGSounds]; - UserInterfaceOptions := [EnableThemes, EnablesFormsAutoComplete]; - FDropHandlingType := ddtMS; - FZoomPercent := 100; - FDisableCtrlShortcuts := 'N'; -end; - -destructor TCustomEmbeddedWB.Destroy(); -begin - if (CurrentHandle <> 0) and IsWindow(CurrentHandle) then - begin - // Allow inherited Destroy to destroy the window - WindowHandle := CurrentHandle; - CurrentHandle := 0; - end; - inherited Destroy; -end; - -procedure TCustomEmbeddedWB.CreateWnd; //jls -begin - if (CurrentHandle <> 0) and IsWindow(CurrentHandle) then - begin - WindowHandle := CurrentHandle; - CurrentHandle := 0; - Windows.SetParent(WindowHandle, TWinControl(Self).Parent.Handle); - MoveWindow(WindowHandle, Left, Top, Width, Height, True); //Force a resize on the client window - end - else - inherited CreateWnd; -end; - -procedure TCustomEmbeddedWB.DestroyWnd; //jls -begin - if (csDestroying in ComponentState) then - inherited DestroyWnd - else - begin - Windows.SetParent(WindowHandle, Forms.Application.Handle); //Parent to the Application window which is 0x0 in size - CurrentHandle := WindowHandle; // Save the WindowHandle - WindowHandle := 0; // Set it to 0 so Createwnd will be called again... - end; -end; - -function TCustomEmbeddedWB.EnableModeless(const fEnable: BOOL): HRESULT; -begin - Result := S_OK; - if Assigned(FOnEnableModeless) then - FOnEnableModeless(Self, fEnable); -end; - -function TCustomEmbeddedWB.EvaluateNewWindow(pszUrl, pszName, pszUrlContext, - pszFeatures: LPCWSTR; fReplace: BOOL; dwFlags, - dwUserActionTime: DWORD): HRESULT; -begin - Result := E_FAIL; - if Assigned(FOnEvaluateNewWindow) then - FOnEvaluateNewWindow(Self, pszUrl, pszName, pszUrlContext, pszFeatures, - FReplace, dwFlags, dwUserActionTime, Result); -end; - -function TCustomEmbeddedWB.FilterDataObject(const pDO: IDataObject; - out ppDORet: IDataObject): HRESULT; -begin - ppDORet := nil; - if Assigned(FOnFilterDataObject) then - FOnFilterDataObject(Self, pDO, ppDORet); - if ppDORet = nil then - Result := S_FALSE - else - Result := S_OK; -end; - -function TCustomEmbeddedWB.GetDoc2: IHtmlDocument2; -begin - if not Supports(Document, IHtmlDocument2, Result) then - Result := nil; -end; - -function TCustomEmbeddedWB.GetDoc3: IHtmlDocument3; -begin - if not Supports(Document, IHtmlDocument3, Result) then - Result := nil; -end; - -function TCustomEmbeddedWB.GetDoc4: IHtmlDocument4; -begin - if not Supports(Document, IHtmlDocument4, Result) then - Result := nil; -end; - -function TCustomEmbeddedWB.GetDoc5: IHtmlDocument5; -begin - if not Supports(Document, IHtmlDocument5, Result) then - Result := nil; -end; - -function TCustomEmbeddedWB.getBody: IHTMLElement; -var - D: IHtmlDocument2; -begin - if Supports(Document, IHtmlDocument2, D) then - Result := D.body - else - Result := nil; -end; - -function TCustomEmbeddedWB.GetExternal(out ppDispatch: IDispatch): HRESULT; -begin - ppDispatch := nil; - if Assigned(FOnGetExternal) then - FOnGetExternal(Self, ppDispatch); - if ppDispatch = nil then - Result := S_FALSE - else - Result := S_OK; -end; - -function TCustomEmbeddedWB.GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT; -begin - FillChar(pInfo, SizeOf(TDOCHOSTUIINFO), #0); - pInfo.cbSize := SizeOf(pInfo); - pInfo.dwFlags := FUserInterfaceValue; - pInfo.dwDoubleClick := DOCHOSTUIDBLCLK_DEFAULT; - Result := S_OK; - - if Assigned(FOnGetHostInfo) then - FOnGetHostInfo(Self, pInfo); -end; - -function TCustomEmbeddedWB.GetIDsOfNames(const IID: TGUID; Names: Pointer; NameCount, - LocaleID: Integer; DispIDs: Pointer): HRESULT; -begin - Result := inherited GetIDsOfNames(IID, Names, NameCount, LocaleID, DispIDs); - if Assigned(FOnGetIDsOfNames) then - FOnGetIDsOfNames(Self, IID, Names, NameCount, LocaleID, DispIds, Result); -end; - -function TCustomEmbeddedWB.GetIEWin(const ClassName: string): HWND; -var - szClass: array[0..255] of char; -begin - if HandleAllocated then - begin - Result := GetWindow(WindowHandle, GW_CHILD); - repeat - if (GetClassName(Result, szClass, SizeOf(szClass)) > 0) and - (AnsiStrComp(PChar(ClassName), szClass) = 0) then - Exit; - Result := GetWindow(Result, GW_CHILD); - until not IsWindow(Result); - end; - Result := 0; -end; - -function TCustomEmbeddedWB.GetOptionKeyPath(out pchKey: POleStr; - const dw: DWORD): HRESULT; -begin - pchKey := CopyOptionKeyPath(False); -{$IFDEF GETKEYPATH_HANDLERS} - if Assigned(FOnGetOptionKeyPath) then - FOnGetOptionKeyPath(Self, pchKey); -{$ENDIF} - if pchKey = nil then - Result := S_FALSE - else - Result := S_OK; -end; - -function TCustomEmbeddedWB.GetOverrideKeyPath(out pchKey: POleStr; dw: DWORD): HRESULT; -begin - pchKey := CopyOptionKeyPath(True); -{$IFDEF GETKEYPATH_HANDLERS} - if Assigned(FOnGetOverrideKeyPath) then - FOnGetOverrideKeyPath(Self, pchKey); -{$ENDIF} - if pchKey = nil then - Result := S_FALSE - else - Result := S_OK; -end; - -function TCustomEmbeddedWB.GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HRESULT; -begin - Result := inherited GetTypeInfo(Index, LocaleID, TypeInfo); - if Assigned(FOnGetTypeInfo) then - FOnGetTypeInfo(Self, Index, LocaleID, ITypeInfo(TypeInfo), Result); -end; - -function TCustomEmbeddedWB.GetTypeInfoCount(out Count: Integer): HRESULT; -begin - Result := inherited GetTypeInfoCount(Count); - if Assigned(FOnGetTypeInfoCount) then - FOnGetTypeInfoCount(Self, Count, Result); -end; - -function TCustomEmbeddedWB.GetZoom: Integer; -var - vaIn, vaOut: OleVariant; -begin - vaIn := NULL; - InvokeCommand(nil, OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); - Result := vaOut; -end; - -procedure TCustomEmbeddedWB.SetZoom(const Value: Integer); -var - vaIn, vaOut: OleVariant; - Range: DWORD; -begin - InvokeCommand(nil, OLECMDID_GETZOOMRANGE, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, - vaOut); - Range := DWORD(vaOut); - if Value < LoWord(Range) then - vaIn := LoWord(Range) - else if Value > HiWord(Range) then - vaIn := HiWord(Range) - else - vaIn := Value; - InvokeCommand(nil, OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); -end; - -procedure TCustomEmbeddedWB.SetOpticalZoom(const Value: Integer); -var - vaIn, vaOut: OleVariant; - Range: DWORD; -begin - if FZoomPercent <> Value then - begin - FZoomPercent := Value; - InvokeCommand(nil, OLECMDID_OPTICAL_GETZOOMRANGE, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); - Range := DWORD(vaOut); - if Value < LoWord(Range) then - vaIn := LoWord(Range) - else if Value > HiWord(Range) then - vaIn := HiWord(Range) - else - vaIn := Value; - InvokeCommand(nil, OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); - if Assigned(FOnZoomPercentChanged) then - FOnZoomPercentChanged(Self, vaOut); - end; -end; - -function TCustomEmbeddedWB.HideUI: HRESULT; -begin - Result := S_FALSE; - if Assigned(FOnHideUI) then - FOnHideUI(Self, Result); -end; - -function TCustomEmbeddedWB.InvokeCommand(CmdGroup: PGUID; Cmd, nCmdexecopt: DWORD; - var vaIn, vaOut: OleVariant): HRESULT; -var - CmdTarget: IOleCommandTarget; -begin - if Supports(Document, IOleCommandTarget, CmdTarget) then - Result := CmdTarget.Exec(CmdGroup, Cmd, nCmdexecopt, vaIn, vaOut) - else - Result := E_UNEXPECTED; -end; - -function TCustomEmbeddedWB.InvokeCommand(CmdGroup: PGUID; Cmd: DWORD): HRESULT; -var - CmdTarget: IOleCommandTarget; - vaIn, vaOut: Olevariant; -begin - if Supports(Document, IOleCommandTarget, CmdTarget) then - Result := CmdTarget.Exec(CmdGroup, Cmd, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) - else - Result := E_UNEXPECTED; -end; - -function TCustomEmbeddedWB.QueryCMDArrayStatus(CmdGroup: PGUID; - cmds: TOleCmdArray): Boolean; -var - CmdTarget: IOleCommandTarget; -begin - if Supports(Document, IOleCommandTarget, CmdTarget) then - Result := CmdTarget.QueryStatus(CmdGroup, - Length(cmds), @Cmds, nil) = S_OK - else - Result := False; -end; - -function TCustomEmbeddedWB.QueryCMDEnabled(CmdGroup: PGUID; cmdID: Cardinal): Boolean; -begin - Result := (QueryCMDStatus(CmdGroup, cmdID) and OLECMDF_ENABLED) <> 0; -end; - -function TCustomEmbeddedWB.QueryCMDLatched(CmdGroup: PGUID; cmdID: Cardinal): Boolean; -begin - Result := (QueryCMDStatus(CmdGroup, cmdID) and OLECMDF_LATCHED) <> 0; -end; - -function TCustomEmbeddedWB.QueryCMDStatus(CmdGroup: PGUID; cmdID: Cardinal): OLECMDF; -var - CmdTarget: IOleCommandTarget; - Cmd: TOleCmd; -begin - Result := 0; - if Supports(Document, IOleCommandTarget, CmdTarget) then - begin - Cmd.CmdID := cmdID; - Cmd.cmdf := 0; - if CmdTarget.QueryStatus(CmdGroup, 1, @Cmd, nil) = S_OK then - Result := Cmd.cmdf; - end; -end; - -function TCustomEmbeddedWB.QueryCommandStatus(CmdGroup: PGUID; cCmds: Cardinal; prgCmds: - POleCmd; - CmdText: POleCmdText): HRESULT; -var - CmdTarget: IOleCommandTarget; -begin - if Supports(Document, IOleCommandTarget, CmdTarget) then - Result := CmdTarget.QueryStatus(CmdGroup, cCmds, prgCmds, CmdText) - else - Result := E_UNEXPECTED; -end; - -{$IFDEF RESEARCH_MODE} - -function TCustomEmbeddedWB.QueryInterface(const IID: TGUID; out Obj): HRESULT; -begin - Result := inherited QueryInterface(IID, Obj); - if Assigned(OnQueryInterface) then - OnQueryInterface(Self, IID, Obj, Result); -end; -{$ENDIF} - -function TCustomEmbeddedWB.Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT; -var - UserAgent: string; -begin - try - Result := S_FALSE; - if (Flags and DISPATCH_PROPERTYGET <> 0) and (VarResult <> nil) then - begin - Result := S_OK; - case DispID of - DISPID_AMBIENT_DLCONTROL: - begin - PVariant(VarResult)^ := FDownloadOptionValue; - end; - DISPID_AMBIENT_USERMODE: - begin - POleVariant(VarResult)^ := not DesignMode; - end; - DISPID_AMBIENT_USERAGENT: - begin - Result := S_FALSE; - if Assigned(FOnSetUserAgent) then - begin - if FOnSetUserAgent(UserAgent) = S_OK then - if UserAgent <> '' then - begin - POleVariant(VarResult)^ := UserAgent + #13#10; - Result := S_OK; - end; - end; - end; - else - Result := S_FALSE; - end; - end - - else if (Flags and DISPATCH_PROPERTYPUT <> 0) and - (DispID = DISPID_AMBIENT_USERMODE) then - begin - Result := S_OK; - Self.FDesignMode := POleVariant(TDispParams(Params).rgvarg)^; - end; - - if Result = S_FALSE then - begin - Result := inherited Invoke(DispID, IID, LocaleID, Flags, Params, - VarResult, ExcepInfo, ArgErr); - if (result = DISP_E_MEMBERNOTFOUND) and Assigned(FOnInvoke) then - FOnInvoke(Self, DispID, IID, LocaleID, Flags, TagDispParams(Params), - VarResult, ExcepInfo, ArgErr, Result); - end; - except - on E: Exception do - begin - Result := DISP_E_EXCEPTION; - with PExcepInfo(ExcepInfo)^ do - begin - wCode := 9999; - bstrDescription := E.Message; - bstrSource := E.ClassName; - dwHelpContext := E.HelpContext; - end; - end; - end; -end; - -function TCustomEmbeddedWB.OnDocWindowActivate(const fActivate: BOOL): HRESULT; -begin - if Assigned(FOnOnDocWindowActivate) then - FOnOnDocWindowActivate(Self, FActivate); - Result := S_OK; -end; - -function TCustomEmbeddedWB.OnFrameWindowActivate(const fActivate: BOOL): HRESULT; -begin - if Assigned(FOnOnFrameWindowActivate) then - FOnOnFrameWindowActivate(Self, fActivate); - Result := S_OK; -end; - -function TCustomEmbeddedWB.DoQueryService(const rsid, iid: TGUID; var Obj): Boolean; -begin - if (IsEqualGuid(rsid, IID_INewWindowManager) and Assigned(FOnEvaluateNewWindow)) - or IsEqualGuid(rsid, IID_IProtectFocus) - or (IsEqualGuid(rsid, IID_IDownloadManager) and Assigned(FOnDownload)) - or (IsEqualGuid(rsid, IID_IHostBehaviorInit) and Assigned(OnPopulateNSTable)) - or (IsEqualGuid(rsid, IID_IHTMLOMWindowServices) and - (FloatingHosting or Assigned(OnMove) or Assigned(Self.OnMoveBy) - or Assigned(OnResize) or Assigned(OnResizeBy))) - or (IsEqualGUID(iid, IID_IAuthenticate) and Assigned(OnAuthenticate)) then - Result := QueryInterface(iid, Obj) = S_OK - else - Result := False; -end; - -function TCustomEmbeddedWB.QueryService(const rsid, iid: TGUID; out Obj): HRESULT; -begin - Pointer(Obj) := nil; - if (not DoQueryService(rsid, iid, Obj)) and Assigned(FOnQueryService) then - FOnQueryService(Self, rsid, iid, IUnknown(obj)); - - if Pointer(Obj) <> nil then - Result := S_OK - else - Result := E_NOINTERFACE; -end; - -function TCustomEmbeddedWB.ResizeBorder(const prcBorder: PRECT; - const pUIWindow: IOleInPlaceUIWindow; const FrameWindow: BOOL): HRESULT; -begin - if Assigned(FOnResizeBorder) then - FOnResizeBorder(Self, prcBorder, pUIWindow, fRameWindow); - Result := S_OK; -end; - -procedure TCustomEmbeddedWB.MoveParentForm(x, y: Integer; Delta: Boolean); -var - F: TCustomForm; -begin - F := GetParentForm(Self); - if F <> nil then - begin - if Delta then - begin - x := F.Left + x; - y := F.Top + y; - end; //FIXME defend from moving outside of screen (don't forget multimonitor) - F.SetBounds(x, y, F.Width, F.Height); - end; -end; - -procedure TCustomEmbeddedWB.ResizeParentForm(w, h: Integer; Delta: Boolean); -var - F: TCustomForm; -begin - F := GetParentForm(Self); - if F <> nil then - begin - if Delta then - begin - w := F.Width + w; - h := F.Height + h; - end; - F.SetBounds(F.Left, F.Top, w, h); - end; -end; - -function TCustomEmbeddedWB.ResizeBy(const x, y: Integer): HRESULT; -begin - if FloatingHosting then - ResizeParentForm(x, y, True); - if Assigned(OnResizeBy) then - OnResizeBy(Self, x, y); - Result := S_OK; // always return success to prevent script error messages -end; - -function TCustomEmbeddedWB.ResizeTo(const x, y: Integer): HRESULT; -begin - if FloatingHosting then - ResizeParentForm(x, y, False); - if Assigned(OnResize) then - OnResize(self, x, y); - Result := S_OK; // always return success to prevent script error messages -end; - -function TCustomEmbeddedWB.MoveBy(const x, y: Integer): HRESULT; -begin - if FloatingHosting then - MoveParentForm(x, y, True); - if Assigned(OnMoveBy) then - OnMoveBy(self, x, y); - Result := S_OK; // always return success to prevent script error messages -end; - -function TCustomEmbeddedWB.MoveTo(const x, y: Integer): HRESULT; -begin - if FloatingHosting then - MoveParentForm(x, y, False); - if Assigned(OnMove) then - OnMove(self, x, y); - Result := S_OK; // always return success to prevent script error messages -end; - -function TCustomEmbeddedWB.OnZoomPercentChanged(const ulZoomPercent: uLong): HRESULT; -begin - if Assigned(FOnZoomPercentChanged) then - Result := FOnZoomPercentChanged(Self, ulZoomPercent) - else - Result := S_FALSE; -end; - -function TCustomEmbeddedWB.GetElemByID(const ID: WideString): IHTMLElement; -var - Doc3: IHTMLDocument3; -begin - if Supports(Document, IHTMLDocument3, Doc3) then - Result := Doc3.getElementById(ID) - else - Result := nil; -end; - -function TCustomEmbeddedWB.ScrollToElement(Element: IHTMLElement): Boolean; -var - RV: IHTMLRect; -begin - Result := Element <> nil; - if Result then - begin - RV := (Element as IHTMLElement2).getBoundingClientRect; - Doc2.parentWindow.scrollBy(RV.left, RV.top); - end; -end; - -function TCustomEmbeddedWB.GetCharSet: WideString; -begin - Result := Doc2.charset; -end; - -procedure TCustomEmbeddedWB.SetCharSet(const Value: WideString); -var - Level: OleVariant; -begin - Doc2.charset := Value; - Level := 7; - DefaultInterface.Refresh2(Level); -end; - -procedure TCustomEmbeddedWB.SetDesignMode(const Value: Boolean); -var - Control: IOleControl; -begin - FDesignMode := Value; - if DefaultInterface.QueryInterface(IOleControl, Control) = 0 then - with (Application as IOleControl) do - begin - OnAmbientPropertyChange(DISPID_AMBIENT_USERMODE); - //_Release; I4214 // I4214 - end; -end; - -const - _DesignModeValues: array[TDocDesignMode] of string = - ('On', 'Off', 'Inherit', ''); - -function TCustomEmbeddedWB.GetDocDesignMode: TDocDesignMode; -var - D: IHTMLDocument2; - I: Integer; -begin - Result := ddmUnknown; - if Supports(Document, IHTMLDocument2, D) then - begin - I := AnsiIndexStr(D.designMode, _DesignModeValues); - if I in [0..2] then - Result := TDocDesignMode(I); - end; -end; - -procedure TCustomEmbeddedWB.SetDocDesignMode(const Value: TDocDesignMode); -var - D: IHTMLDocument2; -begin - if (Value <> ddmUnknown) and Supports(Document, IHTMLDocument2, D) then - D.designMode := _DesignModeValues[Value]; -end; - -procedure TCustomEmbeddedWB.SetDownloadOptions(const Value: TDownloadControlOptions); -begin - FDownloadControlOptions := Value; - UpdateDownloadControlValues; - with (Application as IOleControl) do - begin - OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL); - //_Release; I4214 // I4214 - end; -end; - -procedure TCustomEmbeddedWB.SetFocusToBody; -var - bodyElement: IHTMLElement2; - HTMLDoc2: IHTMLDocument2; -begin - HTMLDoc2 := GetDoc2; - if Assigned(HTMLDoc2) then - begin - bodyElement := HTMLDoc2.body as IHTMLElement2; - if Assigned(bodyElement) then - bodyElement.focus; - end; -end; - -procedure TCustomEmbeddedWB.SetFocusToDoc; -var - bCanGrabFocus: Boolean; - ParentForm: TCustomForm; -begin - if Document <> nil then - begin - bCanGrabFocus := CanGrabFocus; - CanGrabFocus := True; - with (Application as IOleObject) do - begin - if DoVerb(OLEIVERB_UIACTIVATE, nil, Self, 0, Handle, GetClientRect) = S_OK then - begin - ParentForm := GetParentForm(Self); - if Assigned(ParentForm) and Self.CanFocus then - ParentForm.ActiveControl := Self; - end; - end; - CanGrabFocus := bCanGrabFocus; - end; -end; - -procedure TCustomEmbeddedWB.SetFocusToParent; -begin - {if IsWindow(WindowHandle) then - begin - Windows.SetParent(WindowHandle, Parent.Handle); - MoveWindow(WindowHandle, 0, 0, Parent.Width, Parent.Height, True); - Parent.SetFocus; - end;} - if IsWindow(WindowHandle) then - begin - Windows.SetParent(WindowHandle, TWinControl(Self).Parent.Handle); - MoveWindow(WindowHandle, 0, 0, TWinControl(Self).Parent.Width, - TWinControl(Self).Parent.Height, True); - TWinControl(Self).Parent.SetFocus; - end; -end; - -procedure TCustomEmbeddedWB.SetUserInterfaceOptions(const Value: TUserInterfaceOptions); -begin - FUserInterfaceOptions := Value; - UpdateUserInterfaceValues; - with (Application as IOleControl) do - begin - OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL); - //_Release; I4214 // I4214 - end; -end; - -procedure TCustomEmbeddedWB.SetDropHandlingType(const Value: TDragDropHandlingType); -var - innerWnd: LongWord; - Impl: IDropTarget; -begin - if FDropHandlingType <> Value then - begin - FDropHandlingType := Value; - - if HandleAllocated then - innerWnd := GetIEWin('Internet Explorer_Server') - else - innerWnd := 0; - if innerWnd <> 0 then - RevokeDragDrop(innerWnd); - - Impl := nil; - case Value of - ddtMS: - DefaultInterface.RegisterAsDropTarget := True; - ddtMy: Impl := Self; - ddtCustom: - if innerWnd <> 0 then - begin - Impl := Self; - if Assigned(FOnGetDropTarget) then - FOnGetDropTarget(Self, Impl); - end; - ddtNo: - DefaultInterface.RegisterAsDropTarget := False; - end; - if (innerWnd <> 0) and (Impl <> nil) then - RegisterDragDrop(innerWnd, Impl); - end; -end; - -function TCustomEmbeddedWB.GetDropTarget(const pDropTarget: IDropTarget; - out ppDropTarget: IDropTarget): HRESULT; -begin - Result := S_OK; - case DropHandlingType of - ddtMS: - begin - DefaultInterface.RegisterAsDropTarget := True; - Result := E_NOTIMPL; - end; - ddtMy: - ppDropTarget := Self; - ddtCustom: - begin - ppDropTarget := Self; - if Assigned(FOnGetDropTarget) then - FOnGetDropTarget(Self, ppDropTarget); - end; - ddtNo: - begin - DefaultInterface.RegisterAsDropTarget := False; - ppDropTarget := nil; - end; - end; -end; - -function TCustomEmbeddedWB.DragEnter(const dataObj: IDataObject; grfKeyState: Integer; - pt: TPoint; var dwEffect: Integer): HRESULT; -begin - Result := NOERROR; - dwEffect := DROPEFFECT_NONE; - if Assigned(OnDragEnter) then - OnDragEnter(Self, dataObj, grfKeyState, pt, dwEffect, Result); -end; - -function TCustomEmbeddedWB.DragLeave: HRESULT; -begin - Result := NOERROR; - if Assigned(OnDragLeave) then - OnDragLeave(Self); -end; - -function TCustomEmbeddedWB.Drop(const dataObj: IDataObject; grfKeyState: Integer; - pt: TPoint; var dwEffect: Integer): HRESULT; -begin - Result := NOERROR; - dwEffect := DROPEFFECT_NONE; - if Assigned(FOnDropEvent) then - FOnDropEvent(Self, dataObj, grfKeyState, pt, dwEffect, Result); -end; - -function TCustomEmbeddedWB.DropTargetDragOver(grfKeyState: Integer; pt: TPoint; - var dwEffect: Integer): HRESULT; -begin - Result := NOERROR; - dwEffect := DROPEFFECT_NONE; - if Assigned(FOnDragOverEvent) then - FOnDragOverEvent(Self, grfKeyState, pt, dwEffect, Result); -end; - -function TCustomEmbeddedWB.Download(pmk: IMoniker; pbc: IBindCtx; dwBindVerb, - grfBINDF: DWORD; pBindInfo: PBindInfo; pszHeaders, pszRedir: PWidechar; - uiCP: UINT): HRESULT; -begin - Result := E_NOTIMPL; - if Assigned(FOnDownload) then - FOnDownload(Self, pmk, pbc, dwBindVerb, grfBINDF, pBindInfo, pszHeaders, - pszRedir, uiCP, Result); -end; - -function TCustomEmbeddedWB.FilterPopupMenu: Boolean; -begin - Result := Assigned(OnFilterPopupMenu); -end; - -procedure TCustomEmbeddedWB.DoFilterPopupMenu(Sender: TObject; ID: DWORD; Menu: HMENU; const Context: - IDispatch); -begin - if Assigned(OnFilterPopupMenu) then - OnFilterPopupMenu(Sender, ID, Menu, Context); -end; - -function TCustomEmbeddedWB.ShowContextMenu(const dwID: DWORD; const ppt: PPOINT; - const CommandTarget: IUnknown; const Context: IDispatch): HRESULT; -var - EncodingSubMenu: OleVariant; -begin - Result := E_NOTIMPL; - if Assigned(FOnShowContextMenu) then - FOnShowContextMenu(Self, dwID, ppt, CommandTarget, Context, Result); - - if Result = E_NOTIMPL then - begin - if IsSeTIEPopupMenus(dwID, DisabledPopupMenus) then - begin - Result := S_OK; - if Assigned(PopUpMenu) then // Show assigned TPopupMenu - PopUpMenu.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y); - end - else if FilterPopupMenu then - begin - ExecWB(CGetMimeSubMenuCommandID, OLECMDEXECOPT_DODEFAULT, EncodingSubMenu); - if ShowRightClickMenu(Self, dwID, CommandTarget, Context, ppt, EncodingSubMenu, - DoFilterPopupMenu) then - Result := S_OK - else - Result := S_FALSE; - end - else - Result := S_FALSE; - end; -end; - -function TCustomEmbeddedWB.ShowHelp(HWND: THandle; pszHelpFile: POleStr; uCommand, - dwData: Integer; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; -begin - if Assigned(FOnShowHelp) then - Result := FOnShowHelp(Self, HWND, pszHelpFile, uCommand, dwData, ptMouse, pDispatchObjectHit) - else if (pszHelpFile = nil) and (HelpFile <> '') then - begin - HtmlHelp(HWND, PChar(HelpFile), uCommand, dwData); - Result := S_OK; - end - else - Result := S_FALSE; -end; - -function TCustomEmbeddedWB.ShowMessage(HWND: THandle; lpstrText, lpstrCaption: POleStr; - dwType: Integer; lpstrHelpFile: POleStr; dwHelpContext: Integer; - var plResult: LRESULT): HRESULT; -begin - if Assigned(FOnShowMessage) then - Result := FOnShowMessage(Self, HWND, lpstrText, lpStrCaption, dwType, lpStrHelpFile, dwHelpContext, plResult) - else - Result := S_FALSE; -end; - -function TCustomEmbeddedWB.ShowUI(const dwID: DWORD; - const pActiveObject: IOleInPlaceActiveObject; - const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame; - const pDoc: IOleInPlaceUIWindow): HRESULT; -begin - Result := S_FALSE; - if Assigned(FOnShowUI) then - FOnShowUI(Self, dwID, pActiveObject, pCommandTarget, pFrame, pDoc, Result); -end; - -function TCustomEmbeddedWB.DoFilterMsg(const lpMsg: PMSG): Boolean; -type - PWMKey = ^TWMKey; -var - ShiftState: TShiftState; -begin - { - Result := (FDisableCtrlShortcuts <> '') and (lpMsg^.message = WM_KEYDOWN) - and (((GetKeyState(VK_LCONTROL) < 0) and (GetKeyState(VK_MENU) >= 0)) or - ((GetKeyState(VK_RCONTROL) < 0) and (GetKeyState(VK_LMENU) >= 0))) - and (_CharPos(Char(lpMsg.wParam), FDisableCtrlShortcuts) > 0); } - - ShiftState := KeyDataToShiftState(PWMKey(lpMsg)^.KeyData); - Result := (FDisableCtrlShortcuts <> '') and (lpMsg^.message = WM_KEYDOWN) - and ((ShiftState = [ssCtrl]) and (ShiftState <> [ssAlt])) - and (_CharPos(Char(lpMsg.wParam), FDisableCtrlShortcuts) > 0); - - if Result and Assigned(OnMaskedCtrlChar) then - OnMaskedCtrlChar(Self, Char(lpMsg.wParam)); -end; - -function TCustomEmbeddedWB.TranslateAccelerator(const lpMsg: PMSG; - const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT; -{ Called by MSHTML when IOleInPlaceActiveObject.TranslateAccelerator or - IOleControlSite.TranslateAccelerator is called } -var - Filtered: Boolean; -begin - Filtered := DoFilterMsg(lpMsg); - if (not Filtered) and Assigned(FOnTranslateAccelerator) then - FOnTranslateAccelerator(Self, lpMsg, pguidCmdGroup, nCmdID, Filtered); - - if Filtered then - Result := S_OK - else - Result := S_FALSE; -end; - -function TCustomEmbeddedWB.TranslateUrl(const dwTranslate: DWORD; const pchURLIn: - POleStr; out ppchURLOut: POleStr): HRESULT; -var - URLOut: WideString; -begin - URLOut := ''; - if Assigned(FOnTranslateUrl) then - FOnTranslateUrl(Self, pchUrlIn, URLOut); - if URLOut <> '' then - begin - Result := S_OK; - ppchURLOut := WideStringToLPOLESTR(URLOut); - end - else - Result := S_FALSE; -end; - -function TCustomEmbeddedWB.UpdateUI: HRESULT; -begin - Result := S_FALSE; - if Assigned(FOnUpdateUI) then - FOnUpdateUI(Self, Result); -end; - -procedure TCustomEmbeddedWB.UpdateUserInterfaceValues; -const - acardUserInterfaceValues: array[TUserInterfaceOption] of Cardinal = - ($00000001, $00000002, $00000004, $00000008, - $00000010, $00000020, $00000040, $00000080, - $00000100, $00000200, $00000400, $00000800, - $00001000, $00002000, $00004000, $00010000, $00020000, - $00040000, $00080000, $00100000, $00200000, $00400000, - $00800000, $01000000, $02000000, $04000000, $08000000, - $10000000, $20000000); -var - uio: TUserInterfaceOption; -begin - FUserInterfaceValue := 0; - if (FUserInterfaceOptions <> []) then - for uio := Low(TUserInterfaceOption) to High(TUserInterfaceOption) do - if (uio in FUserInterfaceOptions) then - Inc(FUserInterfaceValue, acardUserInterfaceValues[uio]); -end; - -procedure TCustomEmbeddedWB.UpdateDownloadControlValues; -const - acardDownloadControlValues: array[TDownloadControlOption] of Cardinal = - ($00000010, $00000020, $00000040, $00000080, - $00000100, $00000200, $00000400, $00000800, - $00001000, $00002000, $00004000, $00008000, - $00010000, $00020000, $00040000, $10000000, - $20000000, $40000000, $80000000); -var - dco: TDownloadControlOption; -begin - FDownloadOptionValue := 0; - if (FDownloadControlOptions <> []) then - for dco := Low(TDownloadControlOption) to High(TDownloadControlOption) do - if (dco in FDownloadControlOptions) then - Inc(FDownloadOptionValue, acardDownloadControlValues[dco]); -end; - -function TCustomEmbeddedWB.ZoomRangeHigh: Integer; -var - vaIn, vaOut: OleVariant; -begin - InvokeCommand(nil, OLECMDID_GETZOOMRANGE, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); - Result := HiWord(DWORD(vaOut)); -end; - -function TCustomEmbeddedWB.ZoomRangeLow: Integer; -var - vaIn, vaOut: OleVariant; -begin - InvokeCommand(nil, OLECMDID_GETZOOMRANGE, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); - Result := LoWord(DWORD(vaOut)); -end; - -function TCustomEmbeddedWB._getCookie: WideString; -var - D: IHTMLDocument2; -begin - if Supports(Document, IHTMLDocument2, D) then - Result := OleObject.Document.Cookie - else - Result := ''; -end; - -procedure TCustomEmbeddedWB.Client2HostWin(var CX, CY: Integer); -var - F: TCustomForm; -begin - F := GetParentForm(Self); - if F <> nil then - begin - Inc(CX, F.ClientWidth - Self.Width); - Inc(CY, F.ClientHeight - Self.Height); - end; -end; - -{$IFDEF USE_IOLECOMMANDTARGET} -//======IOleCommandTarget interface ============================================ - -function TCustomEmbeddedWB.CommandTarget_QueryStatus(CmdGroup: PGUID; cCmds: Cardinal; - prgCmds: POleCmd; CmdText: POleCmdText): HRESULT; -begin - prgCmds.cmdf := OLECMDF_ENABLED; - Result := S_OK; -end; - -function TCustomEmbeddedWB.CommandTarget_Exec(CmdGroup: PGUID; nCmdID, nCmdexecopt: DWORD; - const vaIn: OleVariant; var vaOut: OleVariant): HRESULT; -var - tmpCancel: Boolean; -const -{$J+} - LastTickEvent: Cardinal = 0; -{$J-} -begin - Result := OLECMDERR_E_NOTSUPPORTED; - - if (nCmdID = OLECMDID_STOP) then - begin - if Assigned(FOnStop) then - FOnStop(Self); - end; - - if CmdGroup <> nil then - begin - if IsEqualGuid(cmdGroup^, CGID_EXPLORER) then - begin - case nCmdID of - OLECMDID_ONUNLOAD: - if Assigned(FOnUnload) then - begin - FOnUnload(Self); - Result := S_OK; - Exit; - end; - - OLECMDID_PREREFRESH: - begin - if Assigned(FOnPreRefresh) then - begin - if GetTickCount - LastTickEvent > 150 then - begin - LastTickEvent := GetTickCount; - FOnPreRefresh(Self); - end; - end; - - if Assigned(FOnHookChildWindow) then - if (GetIEWin('Internet Explorer_Server') <> 0) or (GetIEWin('SysListView32') <> 0) then - FOnHookChildWindow(Self); - end; - end - end - else if IsEqualGuid(cmdGroup^, CGID_DocHostCommandHandler) then - begin - case nCmdID of - ID_IE_F5_REFRESH {nCmdID 6041, F5}, - ID_IE_CONTEXTMENU_REFRESH {nCmdID 6042, Refresh by ContextMenu}, - IDM_REFRESH {nCmdID 2300}: - begin - if Assigned(FOnRefresh) then - begin - tmpCancel := False; - FOnRefresh(Self, nCmdID, tmpCancel); - if tmpCancel then - Result := S_OK; //FIXME is it true? Why not OLECMDERR_E_CANCELED - end; - Exit; - end; - OLECMDID_SHOWSCRIPTERROR: - begin - Result := ScriptErrorHandler(vaIn, vaOut); - Exit; - end; - end; - end; - end; - if Assigned(OnCommandExec) then - Self.OnCommandExec(Self, CmdGroup, nCmdID, nCmdexecopt, - vaIn, vaOut, Result); -end; -{$ENDIF} - -function TCustomEmbeddedWB.ScriptErrorHandler(const vaIn: OleVariant; - var vaOut: OleVariant): HRESULT; -var - EventObject: IHTMLEventObj; - CurWindow: IHTMLWindow2; - CurDocument: IHTMLDocument2; - CurUnknown: IUnknown; - - function GetProperty(const PropName: WideString): OleVariant; - var - DispParams: TDispParams; - Disp, Status: Integer; - ExcepInfo: TExcepInfo; - PPropName: PWideChar; - begin - DispParams.rgvarg := nil; - DispParams.rgdispidNamedArgs := nil; - DispParams.cArgs := 0; - DispParams.cNamedArgs := 0; - PPropName := PWideChar(PropName); - Status := EventObject.GetIDsOfNames(GUID_NULL, @PPropName, 1, LOCALE_SYSTEM_DEFAULT, @Disp); - if Status = 0 then - begin - Status := EventObject.Invoke(disp, GUID_NULL, LOCALE_SYSTEM_DEFAULT, - DISPATCH_PROPERTYGET, DispParams, @Result, @ExcepInfo, nil); - if Status <> 0 then - DispatchInvokeError(Status, ExcepInfo); - end - else if Status = DISP_E_UNKNOWNNAME then - raise - EOleError.CreateFmt('''%s'' is not supported.', [PropName]) - else - OleCheck(Status); - end; -begin - Result := S_OK; - case FScriptErrorAction of - eaAskUser: Result := S_FALSE; //E_FAIL; - eaContinue: vaOut := True; - eaCancel: vaOut := False; - end; - - if Assigned(FOnScriptError) then - begin - CurUnknown := IUnknown(TVarData(vaIn).VUnknown); - if Succeeded(CurUnknown.QueryInterface(IID_IHTMLDocument2, CurDocument)) then - begin - CurWindow := CurDocument.Get_parentWindow; - CurDocument := nil; - if Assigned(CurWindow) then - begin - EventObject := CurWindow.Get_event; - if EventObject <> nil then - begin - FOnScriptError(Self, - GetProperty('errorline'), - GetProperty('errorCharacter'), - GetProperty('errorCode'), - GetProperty('errorMessage'), - GetProperty('errorUrl'), - FScriptErrorAction); - end; - end; - end; - end; -end; - -function TCustomEmbeddedWB.PopulateNamespaceTable: HRESULT; -begin - Result := S_OK; - if Assigned(fOnPopulateNSTable) then - FOnPopulateNSTable(Self); -end; - -function TCustomEmbeddedWB.GetElementNamespaceTable( - out aTable: IElementNamespaceTable): Boolean; -var - SP: IServiceProvider; -begin - Result := Supports(Self.Document, IServiceProvider, SP) and - (SP.QueryService(IID_IElementNamespaceTable, IID_IElementNamespaceTable, - aTable) = S_OK); -end; - -function WideStringToLPOLESTR(const Src: WideString): POLEStr; -begin - Result := CoTaskMemAlloc((Length(Src) + 1) * SizeOf(WideChar)); - if Result <> nil then - Move(PWideChar(Src)^, Result^, (Length(Src) + 1) * SizeOf(WideChar)); -end; - -function TCustomEmbeddedWB.Authenticate(var hwnd: HWnd; var szUserName, - szPassWord: LPWSTR): HRESULT; -var - aUser, aPwd: WideString; -begin - Result := S_OK; - hwnd := Self.Handle; - aUser := ''; - aPwd := ''; - if Assigned(OnAuthenticate) then - OnAuthenticate(Self, hwnd, aUser, aPwd, Result); - if aUser <> '' then - szUserName := WideStringToLPOLESTR(aUser) - else - szUserName := nil; - if aPwd <> '' then - szPassWord := WideStringToLPOLESTR(aPwd) - else - szPassWord := nil; -end; - -{ TEwbCore } - -function TEwbCore.IsCtrlCharMask: Boolean; -begin - Result := FDisableCtrlShortcuts <> 'N'; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Source/EwbCoreTools.pas b/windows/src/ext/embeddedwb/Source/EwbCoreTools.pas deleted file mode 100644 index 0b10bdeeef..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbCoreTools.pas +++ /dev/null @@ -1,411 +0,0 @@ -//************************************************************* -// EwbCoreTools * -// * -// Freeware Unit * -// For Delphi * -// Developing Team: * -// Serge Voloshenyuk (SergeV@bsalsa.com) * -// Eran Bodankin (bsalsa) -(bsalsa@gmail.com) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - - -unit EwbCoreTools; - -{$I EWB.inc} - -interface - -uses - Graphics, ActiveX, Mshtml_Ewb, Windows, SysUtils; - -function IsWinXPSP2OrLater(): Boolean; -function ColorToHTML(const Color: TColor): string; -function WideStringToLPOLESTR(const Source: Widestring): POleStr; -function XPath4Node(node: IHTMLElement): string; -function TaskAllocWideString(const S: string): PWChar; -function AnsiIndexStr(const AText: string; const AValues: array of string): Integer; -function GetPos(const SubSt, Text: string; StartPos: Integer = -1): Integer; -function _CharPos(const C: Char; const S: string): Integer; -function CutString(var Text: string; const Delimiter: string = ' '; - const Remove: Boolean = True): string; -procedure FormatPath(Path: string); -function GetWinText(WinHandle: THandle): string; -function GetWinClass(Handle: Hwnd): WideString; -function GetParentWinByClass(ChildHandle: HWND; const ClassName: string): HWND; -{$IFDEF DELPHI5} -function DirectoryExists(const Directory: string): Boolean; -function VarSupports(const V: Variant; const IID: TGUID; out Intf): Boolean; -{$ENDIF} -{$IFNDEF DELPHI12_UP} -function CharInSet(C: Char; const CharSet: TSysCharSet): Boolean; -{$ENDIF} -function AddBackSlash(const S: string): string; - -const - WM_SETWBFOCUS = $0400 {WM_USER} + $44; - -implementation - -uses - EwbIeConst, EwbAcc; - -type - {VerifyVersion} - fn_VerifyVersionInfo = function(var VersionInformation: OSVERSIONINFOEX; - dwTypeMask: DWORD; dwlConditionMask: LONGLONG): BOOL; stdcall; - fn_VerSetConditionMask = function(ConditionMask: LONGLONG; TypeMask: DWORD; - Condition: Byte): LONGLONG; stdcall; - - -function IsWinXPSP2OrLater(): Boolean; -var - osvi: TOSVersionInfoEx; - dwlConditionMask: LONGLONG; - op: Integer; - hlib: THandle; - VerifyVersionInfo: fn_VerifyVersionInfo; - VerSetConditionMask: fn_VerSetConditionMask; -begin - Result := False; - hLib := GetModuleHandle('kernel32.dll'); - if hLib = 0 then - hLib := LoadLibrary('kernel32.dll'); - if (hLib <> 0) then - begin - @VerifyVersionInfo := GetProcAddress(hLib, 'VerifyVersionInfoA'); - @VerSetConditionMask := GetProcAddress(hLib, 'VerSetConditionMask'); - if ((@VerifyVersionInfo = nil) or (@VerSetConditionMask = nil)) then Exit; - - dwlConditionMask := 0; - op := VER_GREATER_EQUAL; - - // Initialize the OSVERSIONINFOEX structure. - ZeroMemory(@osvi, SizeOf(OSVERSIONINFOEX)); - osvi.dwOSVersionInfoSize := SizeOf(OSVERSIONINFOEX); - osvi.dwMajorVersion := 5; - osvi.dwMinorVersion := 1; - osvi.wServicePackMajor := 2; - osvi.wServicePackMinor := 0; - - // Initialize the condition mask. - dwlConditionMask := VerSetConditionMask(dwlConditionMask, VER_MAJORVERSION, op); - dwlConditionMask := VerSetConditionMask(dwlConditionMask, VER_MINORVERSION, op); - dwlConditionMask := VerSetConditionMask(dwlConditionMask, VER_SERVICEPACKMAJOR, op); - dwlConditionMask := VerSetConditionMask(dwlConditionMask, VER_SERVICEPACKMINOR, op); - - // Perform the test. - Result := VerifyVersionInfo(osvi, VER_MAJORVERSION or VER_MINORVERSION or - VER_SERVICEPACKMAJOR or VER_SERVICEPACKMINOR, dwlConditionMask); - end; -end; - -function GetParentWinByClass(ChildHandle: HWND; const ClassName: string): HWND; -var - szClass: array[0..255] of Char; -begin - Result := GetParent(ChildHandle); - while IsWindow(Result) do - begin - if (GetClassName(Result, szClass, SizeOf(szClass)) > 0) and - (AnsiStrComp(PChar(ClassName), szClass) = 0) then Exit; - Result := GetParent(Result); - end; -end; - - - -{$IFNDEF DELPHI12_UP} - -function CharInSet(C: Char; const CharSet: TSysCharSet): Boolean; -begin - Result := C in CharSet; -end; -{$ENDIF} - -{$IFDEF DELPHI5} - -function DirectoryExists(const Directory: string): Boolean; -var - Code: Integer; -begin -{$RANGECHECKS OFF} - Code := GetFileAttributes(PChar(Directory)); - Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0); -{$RANGECHECKS ON} -end; - -function VarSupports(const V: Variant; const IID: TGUID; out Intf): Boolean; -begin - Result := Supports(V, IID, Intf); -end; -{$ENDIF} - -function AddBackSlash(const S: string): string; -begin -{$IFDEF DELPHI5} - Result := IncludeTrailingBackslash(S); -{$ELSE} -{$IFDEF DELPHI6UP} - Result := IncludeTrailingPathDelimiter(S); -{$ELSE} - if Copy(S, Length(S), 1) = '\' then - Result := S - else - Result := S + '\'; -{$ENDIF} -{$ENDIF} -end; - -function CutString(var Text: string; const Delimiter: string = ' '; - const Remove: Boolean = True): string; -var - IdxPos: Integer; -begin - if Delimiter = #0 then - IdxPos := Pos(Delimiter, Text) - else - IdxPos := AnsiPos(Delimiter, Text); - - if (IdxPos = 0) then - begin - Result := Text; - if Remove then - Text := ''; - end - else - begin - Result := Copy(Text, 1, IdxPos - 1); - if Remove then - Delete(Text, 1, IdxPos + Length(Delimiter) - 1); - end; -end; - - -function GetPos(const SubSt, Text: string; StartPos: Integer = -1): Integer; -var - i: Integer; - LStartPos: Integer; - LTokenLen: Integer; -begin - result := 0; - LTokenLen := Length(SubSt); - if StartPos = -1 then - begin - StartPos := Length(Text); - end; - if StartPos < (Length(Text) - LTokenLen + 1) then - begin - LStartPos := StartPos; - end - else - begin - LStartPos := (Length(Text) - LTokenLen + 1); - end; - for i := LStartPos downto 1 do - begin - if AnsiSameText(Copy(Text, i, LTokenLen), SubSt) then - begin - Result := i; - Break; - end; - end; -end; - -function _CharPos(const C: Char; const S: string): Integer; -begin - for Result := 1 to Length(S) do - if S[Result] = C then Exit; - Result := 0; -end; - -procedure FormatPath(Path: string); -var - i: Integer; -begin - i := 1; - while i <= Length(Path) do - begin - if CharInSet(Path[i], LeadBytes) then - Inc(i, 2) - else - if Path[i] = '\' then - begin - Path[i] := '/'; - Inc(i, 1); - end - else - Inc(i, 1); - end; -end; - -function AnsiIndexStr(const AText: string; const AValues: array of string): Integer; -var - I: Integer; -begin - Result := -1; - for I := Low(AValues) to High(AValues) do - if AnsiSameStr(AText, AValues[I]) then - begin - Result := I; - Break; - end; -end; - - -function TaskAllocWideString(const S: string): PWChar; -var - WideLength: integer; - Wide: PWideChar; -begin - WideLength := Length(S) + 1; - Wide := CoTaskMemAlloc(WideLength * SizeOf(WideChar)); - StringToWideChar(S, Wide, WideLength); - Result := Wide; -end; - -{ -function TaskAllocWideString(const S: string): PWChar; -var - Len: Integer; -begin - Len := Length(S) + 1; - Result := CoTaskMemAlloc(2 * Len); - StringToWideChar(S, Result, Len); -end; -} - -function WideStringToLPOLESTR(const Source: Widestring): POleStr; -var - Len: Integer; -begin - Len := Length(Source) * SizeOf(WideChar); - Result := CoTaskMemAlloc(Len + 2); - FillChar(Result^, Len + 2, 0); - Move(Result^, PWideString(Source)^, Len); -end; - -function ColorToHTML(const Color: TColor): string; -var - ColorRGB: LongWord; -begin - ColorRGB := ColorToRGB(Color); - FmtStr(Result, '#%0.2X%0.2X%0.2X', - [Byte(ColorRGB), Byte(ColorRGB shr 8), Byte(ColorRGB shr 16)]); -end; - -function GetWinText(WinHandle: THandle): string; -var - DlgName: string; - TxtLength: Integer; -begin - TxtLength := GetWindowTextLength(WinHandle); - SetLength(DlgName, TxtLength + 1); - GetWindowText(WinHandle, PChar(DlgName), TxtLength + 1); - Result := DlgName; -end; - - -function GetWinClass(Handle: Hwnd): WideString; -var - pwc: PWideChar; -const - maxbufsize = 32767 * SizeOf(WideChar); -begin - Result := ''; - if IsWindow(Handle) then - begin - pwc := GetMemory(maxbufsize); - if Assigned(pwc) then - try - ZeroMemory(pwc, maxbufsize); - if GetClassnameW(Handle, pwc, maxbufsize) > 0 then - SetString(Result, pwc, lstrlenW(pwc)); - finally - FreeMemory(pwc); - end; - end; -end; - -{ -function GetWinClass(WinHandle: THANDLE): string; -begin - SetLength(Result, 80); - SetLength(Result, GetClassName(WinHandle, PChar(Result), Length(Result))); -end; -} - - -function XPath4Node(node: IHTMLElement): string; - - function NodePosition(elem: IHTMLElement): string; - var tag: Widestring; - Idx: Integer; - n: IHTMLElement; - cl: IHTMLElementCollection; - itm: IDispatch; - I, C, mI: Integer; - begin - Result := ''; - if (elem.parentElement = nil) or - not Supports(elem.parentElement.children, IHTMLElementCollection, cl) then Exit; - - Tag := elem.tagName; - Idx := elem.sourceIndex; - C := 0; - mI := -1; - - for I := 0 to cl.length - 1 do - begin - itm := cl.item(I, I); - if Supports(itm, IHTMLElement, n) then - begin - if n.tagName = Tag then - begin - if n.sourceIndex = Idx then mI := C; - Inc(C); - end; - end; - end; - if (mI > 0) or (C > 1) then Result := Format('[%d]', [mI]); - end; - -var id: string; -begin - if node <> nil then - begin - id := node.id; - if id <> '' then - Result := Format('%s[@id="%s"]', [node.tagName, id]) - else if node.parentElement = nil then - Result := '/' + node.tagName - else Result := Format('%s/%s%s', - [XPath4Node(node.parentElement), node.tagName, NodePosition(node)]); - end else Result := ''; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbDDE.pas b/windows/src/ext/embeddedwb/Source/EwbDDE.pas deleted file mode 100644 index 91ca582edd..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbDDE.pas +++ /dev/null @@ -1,234 +0,0 @@ -//************************************************************* -// Ewb_DDE * -// * -// Freeware Unit * -// For Delphi 5 to XE * -// by * -// Eran Bodankin (bsalsa) -(bsalsa@gmail.com) * -// Mathias Walter (mich@matze.tv) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit EwbDDE; - -interface - -uses - Windows, Classes, ShellAPI, EWBAcc, Registry, EwbTools, ShlObj, EwbIEConst, - sysUtils, ActiveX, ComObj; - -type - TEwb_DDE = class(TThread) - end; - -procedure GetDDEVariables; -function GetCommandTypeFromDDEString(szCommand: string): UINT; -function GetPathFromDDEString(szCommand: string; var szFolder: string): Boolean; -function GetPidlFromDDEString(const szCommand: string): PItemIDList; -function GetShowCmdFromDDEString(szCommand: string): Integer; -function ParseDDECommand(const szCommand: string; var szFolder: string; - var pidl: PItemIDList; var show: Integer): UINT; -procedure DisposePIDL(ID: PItemIDList); - -implementation - -uses - EwbCoreTools; - -var - FindFolder, OpenFolder, ExploreFolder, HtmlFileApp, HtmlFileTopic: string; - //All DDE variables - FoldersApp, FoldersTopic: string; - -procedure DisposePIDL(ID: PItemIDList); -var - Malloc: IMalloc; -begin - if ID <> nil then - begin - OLECheck(SHGetMalloc(Malloc)); - Malloc.Free(ID); - end; -end; - -procedure GetDDEVariables; -var - tmpStr: string; - Reg: TRegistry; -begin - Reg := TRegistry.Create; - with Reg do - try - RootKey := HKEY_CLASSES_ROOT; - OpenKey('htmlfile\shell\open\ddeexec\application', False); - HtmlFileApp := Readstring(''); - CloseKey; - OpenKey('htmlfile\shell\open\ddeexec\topic', False); - HtmlFileTopic := ReadString(''); - CloseKey; - OpenKey('Folder\shell\open\ddeexec\application', False); - FoldersApp := Readstring(''); - CloseKey; - OpenKey('Folder\shell\open\ddeexec\topic', False); - FoldersTopic := ReadString(''); - CloseKey; - OpenKey('Folder\shell\open\ddeexec', False); - tmpStr := readString(''); - CloseKey; - tmpStr := Copy(tmpStr, Pos('[', tmpStr) + 1, length(tmpStr)); - OpenFolder := Copy(tmpStr, 1, Pos('(', tmpStr) - 1); - OpenKey('Folder\shell\explore\ddeexec', False); - tmpStr := readString(''); - CloseKey; - tmpStr := Copy(tmpStr, Pos('[', tmpStr) + 1, length(tmpStr)); - ExploreFolder := Copy(tmpStr, 1, Pos('(', tmpStr) - 1); - OpenKey('Directory\shell\find\ddeexec', False); - tmpStr := readString(''); - CloseKey; - tmpStr := Copy(tmpStr, Pos('[', tmpStr) + 1, length(tmpStr)); - FindFolder := Copy(tmpStr, 1, Pos('(', tmpStr) - 1); - finally - Free; - end; -end; - -function GetCommandTypeFromDDEString(szCommand: string): UINT; -begin - szCommand := Copy(szCommand, Pos('[', szCommand) + 1, length(szCommand)); - szCommand := Copy(szCommand, 1, Pos('(', szCommand) - 1); - if szCommand = OpenFolder then - Result := VIEW_COMMAND - else if szCommand = ExploreFolder then - Result := EXPLORE_COMMAND - else if szCommand = FindFolder then - Result := FIND_COMMAND - else - Result := NO_COMMAND; -end; - -function GetPathFromDDEString(szCommand: string; var szFolder: string): Boolean; -begin - szCommand := Copy(szCommand, Pos('"', szCommand) + 1, length(szCommand)); - szFolder := Copy(szCommand, 1, Pos('"', szCommand) - 1); - Result := (szFolder <> ''); -end; - -function GetPidlFromDDEString(const szCommand: string): PItemIDList; -var - PidlShared, PidlGlobal: PItemIDList; - dwProcessId: Integer; - hShared: THandle; - St: string; - ProcessID: string; - i: Integer; -begin - St := Copy(szCommand, Pos(',', szCommand) + 1, length(szCommand)); - i := 1; - while not (CharInSet(St[i], IsDigit) and (i <= Length(St))) do - Inc(i); - ProcessID := Copy(St, i, Length(St)); - St := Copy(St, i, length(St) - 1); - i := 1; - while CharInSet(St[i], IsDigit) and (i <= Length(St)) do - Inc(i); - St := Copy(St, 1, i - 1); - - while not ((ProcessID[i] = ':') or (ProcessID[i] = ',')) and (i <= - Length(ProcessID)) do - Inc(i); - if ProcessID[i] = ':' then - begin - ProcessID := Copy(ProcessID, i, Length(ProcessID)); - i := 1; - while not (CharInSet(ProcessID[i], IsDigit) and (i <= Length(ProcessID))) - do - Inc(i); - ProcessID := Copy(ProcessID, i, Length(ProcessID)); - i := 1; - while (CharInSet(ProcessID[i], IsDigit)) and (i <= Length(ProcessID)) do - Inc(i); - if not (CharInSet(ProcessID[i], IsDigit)) then - ProcessID := Copy(ProcessID, 1, i - 1); - end - else - ProcessID := '0'; - dwProcessId := StrToInt(ProcessID); - if dwProcessId <> 0 then - begin - hShared := StrToInt(St); - PidlShared := ShLockShared(hShared, dwProcessId); - if PidlShared <> nil then - begin - Result := CopyPidl(PidlShared); - ShUnlockShared(PidlShared); - end - else - Result := nil; - ShFreeShared(hShared, dwProcessId); - end - else - begin - PidlGlobal := PItemIDList(StrToInt(St)); - Result := CopyPidl(PidlGlobal); - _Free(PidlGlobal); - end; -end; - -function GetShowCmdFromDDEString(szCommand: string): Integer; -var - tmpInt: Integer; -begin - tmpInt := 1; - while szCommand[tmpInt] <> ',' do - Inc(tmpInt); - Inc(tmpInt); - while szCommand[tmpInt] <> ',' do - Inc(tmpInt); - szCommand := Copy(szCommand, tmpInt, Length(szCommand)); - tmpInt := 0; - repeat - inc(tmpInt) - until (tmpInt > Length(szCommand)) or CharInSet(szCommand[tmpInt], IsDigit); - if tmpInt <= length(szCommand) then - Result := StrtoInt(szCommand[tmpInt]) - else - Result := 1; -end; - -function ParseDDECommand(const szCommand: string; var szFolder: string; - var pidl: PItemIDList; var show: Integer): UINT; -begin - Result := GetCommandTypeFromDDEString(szCommand); - if Result <> NO_COMMAND then - begin - GetPathFromDDEString(szCommand, szFolder); - pidl := GetPidlFromDDEString(szCommand); - show := GetShowCmdFromDDEString(szCommand); - end; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbDisableFocusControl.pas b/windows/src/ext/embeddedwb/Source/EwbDisableFocusControl.pas deleted file mode 100644 index 58f88d3240..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbDisableFocusControl.pas +++ /dev/null @@ -1,36 +0,0 @@ -(* - -This unit's purpose is to disable the FocusControl even if Enable_AutoFocusControl -is defined in EWB.inc. - -EwbControl.FocusControl is activated in the initialization section of the -EmbeddedWB unit. -To disable it, put this unit before the first form -unit in your DPR 'uses' clause. - -Example: - -program Project1; - -uses - //.. - EWBDisableFocusControl, - Forms, - Unit1 in 'Unit1.pas' {Form1}; - //.. - -*) - -unit EWBDisableFocusControl; - -interface - -uses - EwbFocusControl; - -implementation - -initialization - EWBEnableFocusControl := False; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbDisableMouseWheelFix.pas b/windows/src/ext/embeddedwb/Source/EwbDisableMouseWheelFix.pas deleted file mode 100644 index c613d557dc..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbDisableMouseWheelFix.pas +++ /dev/null @@ -1,36 +0,0 @@ -(* - -This unit's purpose is to disable the MouseWheelFix even if Enable_AutoMouseWheelFix -is defined in EWB.inc. - -EwbControl.MouseWheelFix is activated in the initialization section of the -EmbeddedWB unit. -To disable it, put this unit before the first form -unit in your DPR 'uses' clause. - -Example: - -program Project1; - -uses - //.. - EwbDisableMouseWheelFix, - Forms, - Unit1 in 'Unit1.pas' {Form1}; - //.. - -*) - -unit EwbDisableMouseWheelFix; - -interface - -uses - EWBMouseHook; - -implementation - -initialization - EWBEnableMouseWheelFix := False; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbEditors.pas b/windows/src/ext/embeddedwb/Source/EwbEditors.pas deleted file mode 100644 index f7783467b2..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbEditors.pas +++ /dev/null @@ -1,344 +0,0 @@ -//************************************************************** -// * -// Ewb_Editors * -// For Delphi * -// * -// For Delphi 5 to 2019 * -// by * -// bsalsa - Eran Bodankin - bsalsa@gmail.com * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: EwbEditors.pas,v 1.3.2.1 2006/12/10 18:43:49 sergev Exp $ - -unit EwbEditors; - -interface - -{$I EWB.inc} - -uses -{$IFDEF DELPHI6_UP}DesignEditors, DesignIntf, StrEdit{$ELSE}DsgnIntf{$ENDIF} - , Classes; - -type - TEwbCompEditor = class(TComponentEditor) - public - procedure ExecuteVerb(Idx: integer); override; - function GetVerb(Idx: integer): string; override; - function GetVerbCount: integer; override; - end; - - TBFFEditor = class(TComponentEditor) - public - procedure ExecuteVerb(Idx: integer); override; - function GetVerb(Idx: integer): string; override; - function GetVerbCount: integer; override; - end; - - TSaveFileDLG = class(TStringProperty) - public - procedure Edit; override; - function GetAttributes: TPropertyAttributes; override; - end; - - TSaveTextDLG = class(TStringProperty) - public - procedure Edit; override; - function GetAttributes: TPropertyAttributes; override; - end; - - TSaveHtmlDLG = class(TStringProperty) - public - procedure Edit; override; - function GetAttributes: TPropertyAttributes; override; - end; - - TOpenFileDLG = class(TStringProperty) - public - procedure Edit; override; - function GetAttributes: TPropertyAttributes; override; - end; - - TOpenHtmlDLG = class(TStringProperty) - public - procedure Edit; override; - function GetAttributes: TPropertyAttributes; override; - end; - - TBrowse4FolderDLG = class(TStringProperty) - public - procedure Edit; override; - function GetAttributes: TPropertyAttributes; override; - end; -{$IFDEF DELPHI6_UP} - TMultiStringProperty = class(TStringListProperty) - private - fStrings: TStringList; - protected - function GetStrings: TStrings; override; - procedure SetStrings(const Value: TStrings); override; - end; -{$ENDIF} - -implementation - -uses - Browse4Folder, TypInfo, ShellApi, Windows, Dialogs, SysUtils, EwbIEConst, Forms, shlobj; - -//--Verb Delphi menu------------------------------------------------------------ - -procedure TEwbCompEditor.ExecuteVerb(Idx: integer); -begin - case Idx of - 0: ShellExecute(0, 'open', SITE_ADDRESS, nil, nil, SW_SHOW); - end; -end; - -function TEwbCompEditor.GetVerb(Idx: Integer): string; -begin - case Idx of - 0: Result := 'Support: ' + SITE_ADDRESS; - 1: Result := 'Package Version:' + VER_NUM; - end; -end; - -function TEwbCompEditor.GetVerbCount: integer; -begin - Result := 2; -end; - -//---BuildIn Save Dialog for the components------------------------------------- - -procedure TSaveFileDLG.Edit; -var - SD: TSaveDialog; -begin - SD := TSaveDialog.Create(Application); - try - with SD do - begin - Filename := GetValue(); - InitialDir := ExtractFilePath(FileName); - Filter := '*.*'; - HelpContext := 0; - Options := Options + [ofShowHelp, ofEnableSizing]; - if Execute then - SetValue(FileName); - end; - finally - SD.Free; - end; -end; - -function TSaveFileDLG.GetAttributes: TPropertyAttributes; -begin - Result := [paDialog, paRevertable]; -end; - -procedure TSaveHtmlDLG.Edit; -var - SD: TSaveDialog; -begin - SD := TSaveDialog.Create(Application); - try - with SD do - begin - Filename := GetValue(); - InitialDir := ExtractFilePath(FileName); - Filter := 'Html files|*.html|Htm files|*.htm'; - HelpContext := 0; - Options := Options + [ofShowHelp, ofEnableSizing]; - if Execute then - SetValue(FileName); - end; - finally - SD.Free; - end; -end; - -function TSaveHtmlDLG.GetAttributes: TPropertyAttributes; -begin - Result := [paDialog, paRevertable]; -end; - -procedure TSaveTextDLG.Edit; -var - SD: TSaveDialog; -begin - SD := TSaveDialog.Create(Application); - try - with SD do - begin - Filename := GetValue(); - InitialDir := ExtractFilePath(FileName); - Filter := 'Text files|*.txt|Word files|*.doc'; - HelpContext := 0; - Options := Options + [ofShowHelp, ofEnableSizing]; - if Execute then - SetValue(FileName); - end; - finally - SD.Free; - end; -end; - -function TSaveTextDLG.GetAttributes: TPropertyAttributes; -begin - Result := [paDialog, paRevertable]; -end; - -//---BuildIn Open Dialog for the components------------------------------------- - -procedure TOpenFileDLG.Edit; -var - OD: TOpenDialog; -begin - OD := TOpenDialog.Create(Application); - try - with OD do - begin - Filename := GetValue(); - InitialDir := ExtractFilePath(FileName); - Filter := '*.*'; - HelpContext := 0; - Options := Options + [ofShowHelp, ofEnableSizing]; - if Execute then - SetValue(FileName); - end; - finally - OD.Free; - end; -end; - -function TOpenFileDLG.GetAttributes: TPropertyAttributes; -begin - Result := [paDialog, paRevertable]; -end; - -procedure TOpenHtmlDLG.Edit; -var - OD: TOpenDialog; -begin - OD := TOpenDialog.Create(Application); - try - with OD do - begin - Filename := GetValue(); - InitialDir := ExtractFilePath(FileName); - Filter := 'Html files|*.html|Htm files|*.htm'; - HelpContext := 0; - Options := Options + [ofShowHelp, ofEnableSizing]; - if Execute then - SetValue(FileName); - end; - finally - OD.Free; - end; -end; - -function TOpenHtmlDLG.GetAttributes: TPropertyAttributes; -begin - Result := [paDialog, paRevertable]; -end; - -//---Browse For Folder---------------------------------------------------------- - -function TBrowse4FolderDLG.GetAttributes: TPropertyAttributes; -begin - Result := [paDialog, paRevertable]; -end; - -procedure TBrowse4FolderDLG.Edit; -var - BD: TBrowse4Folder; -begin - BD := TBrowse4Folder.Create(Application); - try - with BD do - begin - Filename := GetValue(); - InitialDir := ExtractFilePath(FileName); - if Execute then - SetValue(FileName); - end; - finally - BD.Free; - end; -end; - -procedure TBFFEditor.ExecuteVerb(Idx: integer); -var - BD: TBrowse4Folder; -begin - case Idx of - 0: - begin - BD := TBrowse4Folder.Create(Application); - try - with BD do - begin - InitialDir := ExtractFilePath(FileName); - Execute; - end; - finally - BD.Free; - end; - end; - end; -end; - -function TBFFEditor.GetVerb(Idx: Integer): string; -begin - case Idx of - 0: Result := 'Support: ' + SITE_ADDRESS; - 1: Result := 'Package Version:' + VER_NUM; - end; -end; - -function TBFFEditor.GetVerbCount: integer; -begin - Result := 2; -end; -{$IFDEF DELPHI6_UP} -{ TMultiStringProperty } - -function TMultiStringProperty.GetStrings: TStrings; -begin - if fStrings = nil then fStrings := TStringList.Create; - fStrings.Text := GetStrValue; - Result := fStrings; -end; - -procedure TMultiStringProperty.SetStrings(const Value: TStrings); -begin - SetStrValue(Value.Text); -end; -{$ENDIF} - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbEvents.pas b/windows/src/ext/embeddedwb/Source/EwbEvents.pas deleted file mode 100644 index a1837c7a9b..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbEvents.pas +++ /dev/null @@ -1,349 +0,0 @@ -//************************************************************* -// EwbEvents * -// * -// Freeware Unit * -// For Delphi * -// by * -// Serge Voloshenyuk * -// Developing Team: * -// Serge Voloshenyuk (SergeV@bsalsa.com) * -// Eran Bodankin (bsalsa) -(bsalsa@gmail.com) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -//$Id: EwbEvents.pas,v 1.1.2.1 2006/11/29 22:13:01 sergev Exp $ - -unit EwbEvents; - -interface - -{$I EWB.inc} - -uses - - Windows, Classes, ActiveX, Mshtml_Ewb, EwbClasses, wbhFixes; - -type - TSinkKind = ( - skElement, - skLink, - skForm, - skControl, - skTextContainer, - skImg, - skAnchor, - skLabel, - skSelect, - skButton, - skInputText, - skOptionButton, - skInputFile, - skInputImage, - skMarquee, - skWindow, - skDocument, - skMap, - skArea, - skTable, - skScript, - skObject, - skFrameSite, - skStyle, - skNamespace - ); - - TEventID = Integer; -const - heOnAbort = 1000; - heOnChange = 1001; //f - heOnError = 1002; - // HTMLWindowEvents2.onerror(const description: WideString; const url: WideString; line: Integer); dispid 1002; - heOnLoad = 1003; - heOnSelect = 1006; - heOnSubmit = 1007; //f - heOnUnload = 1008; - heOnBounce = 1009; - heOnFinish = 1010; - heOnStart = 1011; - heOnScroll = 1014; - heOnReset = 1015; //f - heOnresize = 1016; - heOnBeforeUnload = 1017; - heOncontextmenu = 1023; //f - heOnBeforePrint = 1024; - heOnAfterPrint = 1025; - heOnStop = 1026; //f - heOnBeforeEditFocus = 1027; - heOnlayoutcomplete = 1030; - heOnPage = 1031; - heOnMousewheel = 1033; //f - heOnBeforeDeactivate = 1034; //f - heOnMove = 1035; - heOnControlSelect = 1036; //f - heOnSelectionChange = 1037; - heOnMoveStart = 1038; //f - heOnMoveEnd = 1039; - heOnResizeStart = 1040; //f - heOnResizeEnd = 1041; - heOnMouseEnter = 1042; - heOnMouseLeave = 1043; - heOnActivate = 1044; - heOnDeactivate = 1045; - heOnBeforeActivate = 1047; //f - heOnfocusIn = 1048; - heOnfocusOut = 1049; - - heOnClick = -600; //f - heOnDblClick = -601; //f - heOnKeyDown = -602; - heOnKeyPress = -603; //f - heOnKeyUp = -604; - heOnMouseDown = -605; - heOnMouseMove = -606; - heOnMouseUp = -607; - heOnReadyStateChange = -609; - - heOnCellChange = -2147418078; - heOnRowsInserted = -2147418079; - heOnRowsDelete = -2147418080; - heOnBeforePaste = -2147418081; //f - heOnBeforeCopy = -2147418082; //f - heOnBeforeCut = -2147418083; //f - heOnPaste = -2147418084; //f - heOnCopy = -2147418085; //f - heOnCut = -2147418086; //f - heOnDrop = -2147418087; //f - heOnDragLeave = -2147418088; - heOnDragOver = -2147418089; //f - heOnDragEnter = -2147418090; //f - heOnDragEnd = -2147418091; - heOnDrag = -2147418092; //f - // heOnObjReadyStateChange = -2147418092; //HTMLObjectElementEvents2 - heOnPropertyChange = -2147418093; - // heOnObjError = -2147418093; //f HTMLObjectElementEvents2 - heOnLoseCapture = -2147418094; - heOnFilterChange = -2147418095; - heOnDatasetComplete = -2147418096; - heOnDataAvailable = -2147418097; - heOnDatasetChanged = -2147418098; - heOnErrorUpdate = -2147418099; //f - heOnSelectStart = -2147418100; //f - heOnDragStart = -2147418101; //f - heOnHelp = -2147418102; //f - heOnMouseOut = -2147418103; - heOnMouseOver = -2147418104; - heOnRowEnter = -2147418105; - heOnRowExit = -2147418106; //f - heOnAfterUpdate = -2147418107; - heOnBeforeUpdate = -2147418108; //f - heOnFocus = -2147418111; - heOnBlur = -2147418112; - -type - IHubLink = interface - ['{EC22D916-CC24-4D88-A7ED-20C5E9AE0852}'] - procedure Disconnect; - end; - - TMshtmlHandler = function(Sender: IUnknown): Boolean of object; - - TMSHTMLEventHandler = class(TInterfacedDispatchObject, IDispatchEx) - private - FHandler: TMshtmlHandler; - protected - function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; - override; stdcall; - {IDispatchEx} - function GetDispID(const bstrName: TBSTR; const grfdex: DWORD; - out id: TDispID): HResult; stdcall; - function InvokeEx(const id: TDispID; const lcid: LCID; const wflags: - WORD; const pdp: PDispParams; out varRes: OleVariant; out pei: - TExcepInfo; const pspCaller: PServiceProvider): HResult; stdcall; - function DeleteMemberByName(const bstr: TBSTR; - const grfdex: DWORD): HResult; stdcall; - function DeleteMemberByDispID(const id: TDispID): HResult; stdcall; - function GetMemberProperties(const id: TDispID; const grfdexFetch: - DWORD; out grfdex: DWORD): HResult; stdcall; - function GetMemberName(const id: TDispID; out bstrName: TBSTR): - HResult; stdcall; - function GetNextDispID(const grfdex: DWORD; const id: TDispID; - out nid: TDispID): HResult; stdcall; - function GetNameSpaceParent(out unk: IUnknown): HResult; stdcall; - public - constructor Create(Handler: TMshtmlHandler); - destructor Destroy; override; - end; - -function MSHTMLEventHandler(Handler: TMshtmlHandler): IDispatchEx; -const - mshtmlEventGUIDs: array[TSinkKind] of PGUID = ( - @DIID_HTMLElementEvents2, //IHTMLElement - @DIID_HTMLLinkElementEvents2, //IHTMLLinkElement - @DIID_HTMLFormElementEvents2, //IHTMLFormElement - @DIID_HTMLControlElementEvents2, //IHTMLControlElement - @DIID_HTMLTextContainerEvents2, //IHTMLTextContainer - @DIID_HTMLImgEvents2, //IHTMLImgElement - @DIID_HTMLAnchorEvents2, //IHTMLAnchorElement - @DIID_HTMLLabelEvents2, //IHTMLLabelElement - @DIID_HTMLSelectElementEvents2, //IHTMLSelectElement - @DIID_HTMLButtonElementEvents2, //IHTMLButtonElement - @DIID_HTMLInputTextElementEvents2, //IHTMLInputTextElement - @DIID_HTMLOptionButtonElementEvents2, //IHTMLOptionButtonElement - @DIID_HTMLInputFileElementEvents2, //IHTMLInputFileElement - @DIID_HTMLInputImageEvents2, //IHTMLInputImage - @DIID_HTMLMarqueeElementEvents2, //IHTMLMarqueeElement - @DIID_HTMLWindowEvents2, //IHTMLWindow2 - @DIID_HTMLDocumentEvents2, //IHTMLDocument - @DIID_HTMLMapEvents2, //IHTMLMapElement - @DIID_HTMLAreaEvents2, //IHTMLAreaElement - @DIID_HTMLTableEvents2, //IHTMLTable - @DIID_HTMLScriptEvents2, //IHTMLScriptElement - @DIID_HTMLObjectElementEvents2, //IHTMLObjectElement - @DIID_HTMLFrameSiteEvents2, - @DIID_HTMLStyleElementEvents2, //IHTMLStyleElement - @DIID_HTMLNamespaceEvents //IHTMLNamespace - ); - -implementation -uses SysUtils; - -{ TMSHTMLEventHandler } - -function MSHTMLEventHandler(Handler: TMshtmlHandler): IDispatchEx; -begin - Result := TMSHTMLEventHandler.Create(Handler) as IDispatchEx; -end; - -constructor TMSHTMLEventHandler.Create(Handler: TMshtmlHandler); -begin - inherited Create; - FHandler := Handler; -end; - -destructor TMSHTMLEventHandler.Destroy; -begin - inherited; -end; - -function TMSHTMLEventHandler.DeleteMemberByDispID(const id: TDispID): HResult; -begin - Result := S_FALSE; -end; - -function TMSHTMLEventHandler.DeleteMemberByName(const bstr: TBSTR; - const grfdex: DWORD): HResult; -begin - Result := S_FALSE; -end; - -function TMSHTMLEventHandler.GetDispID(const bstrName: TBSTR; - const grfdex: DWORD; out id: TDispID): HResult; -begin - Result := DISP_E_UNKNOWNNAME; -end; - -function TMSHTMLEventHandler.GetMemberName(const id: TDispID; - out bstrName: TBSTR): HResult; -begin - Result := DISP_E_UNKNOWNNAME; -end; - -function TMSHTMLEventHandler.GetMemberProperties(const id: TDispID; - const grfdexFetch: DWORD; out grfdex: DWORD): HResult; -begin - Result := DISP_E_UNKNOWNNAME; -end; - -function TMSHTMLEventHandler.GetNameSpaceParent( - out unk: IUnknown): HResult; -begin - Result := E_NOTIMPL; -end; - -function TMSHTMLEventHandler.GetNextDispID(const grfdex: DWORD; - const id: TDispID; out nid: TDispID): HResult; -begin - Result := S_FALSE; -end; - -function TMSHTMLEventHandler.Invoke(DispID: Integer; const IID: TGUID; - LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo, - ArgErr: Pointer): HResult; -var - Instance: IUnknown; - R: Boolean; -begin - Result := S_OK; - if (Flags and DISPATCH_METHOD = 0) then Exit; - try - Instance := POleVariant(TDispParams(Params).rgvarg)^; - R := FHandler(Instance); - if VarResult <> nil then - POleVariant(VarResult)^ := R; - except - on E: Exception do - begin - Result := DISP_E_EXCEPTION; - with PExcepInfo(ExcepInfo)^ do - begin - wCode := 9999; - bstrDescription := E.Message; - bstrSource := E.ClassName; - dwHelpContext := E.HelpContext; - end; - end; - end; -end; - - -function TMSHTMLEventHandler.InvokeEx(const id: TDispID; const lcid: LCID; - const wflags: WORD; const pdp: PDispParams; out varRes: OleVariant; - out pei: TExcepInfo; const pspCaller: PServiceProvider): HResult; -var - Instance: IUnknown; -begin - Result := S_OK; - if (wflags and DISPATCH_METHOD = 0) then Exit; - try - Instance := POleVariant(pdp.rgvarg)^; - varRes := FHandler(Instance); - except - on E: Exception do - begin - Result := DISP_E_EXCEPTION; - with pei do - begin - wCode := 9999; - bstrDescription := E.Message; - bstrSource := E.ClassName; - dwHelpContext := E.HelpContext; - end; - end; - end; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbEventsComp.pas b/windows/src/ext/embeddedwb/Source/EwbEventsComp.pas deleted file mode 100644 index 9fac6738ec..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbEventsComp.pas +++ /dev/null @@ -1,756 +0,0 @@ -//************************************************************* -// EwbEventsComp * -// * -// Freeware Component * -// For Delphi * -// by * -// Serge Voloshenyuk * -// Developing Team: * -// Serge Voloshenyuk (SergeV@bsalsa.com) * -// Eran Bodankin (bsalsa) -(bsalsa@gmail.com) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -//$Id: EwbEventsComp.pas,v 1.1.2.1 2006/11/29 22:13:01 sergev Exp $ - -unit EwbEventsComp; - -interface - -{$I EWB.inc} - -uses -{$IFDEF DELPHI6_UP}Variants, {$ENDIF} - Windows, Classes, ActiveX, Mshtml_Ewb, EwbAcc, EwbClasses, EwbEvents; - -type - THtmlListener = class; - - TEventEnum = ( - eiUnknown, - eiOnAbort, - eiOnChange, - eiOnError, - eiOnLoad, - eiOnSelect, - eiOnSubmit, - eiOnUnload, - eiOnBounce, - eiOnFinish, - eiOnStart, - eiOnScroll, - eiOnReset, - eiOnresize, - eiOnBeforeUnload, - eiOncontextmenu, - eiOnBeforePrint, - eiOnAfterPrint, - eiOnStop, - eiOnBeforeEditFocus, - eiOnlayoutcomplete, - eiOnpage, - eiOnmousewheel, - eiOnbeforedeactivate, - eiOnmove, - eiOncontrolselect, - eiOnSelectionChange, - eiOnmoveStart, - eiOnmoveEnd, - eiOnresizeStart, - eiOnresizeEnd, - eiOnmouseEnter, - eiOnmouseLeave, - eiOnActivate, - eiOnDeactivate, - eiOnBeforeActivate, - eiOnfocusIn, - eiOnfocusOut, - eiOnClick, - eiOnDblClick, - eiOnKeyDown, - eiOnKeyPress, - eiOnKeyUp, - eiOnMouseDown, - eiOnMouseMove, - eiOnMouseUp, - eiOnReadyStateChange, - eiOnCellChange, - eiOnRowsInserted, - eiOnRowsDelete, - eiOnBeforePaste, - eiOnBeforeCopy, - eiOnBeforeCut, - eiOnPaste, - eiOnCopy, - eiOnCut, - eiOnDrop, - eiOnDragLeave, - eiOnDragOver, - eiOnDragEnter, - eiOnDragEnd, - eiOnDrag, - eiOnPropertyChange, - eiOnLoseCapture, - eiOnFilterChange, - eiOnDatasetComplete, - eiOnDataAvailable, - eiOnDatasetChanged, - eiOnErrorUpdate, - eiOnSelectStart, - eiOnDragStart, - eiOnHelp, - eiOnMouseOut, - eiOnMouseOver, - eiOnRowEnter, - eiOnRowExit, - eiOnAfterUpdate, - eiOnBeforeUpdate, - eiOnFocus, - eiOnBlur - ); - - TMSHTMLDelegate = procedure(Sender: TObject; Event: IHTMLEventObj) of object; - - TEventHandlerItem = class(TCollectionItem) - private - FEventID: TEventEnum; - FEvID: TEventID; - FOnHandle: TMSHTMLDelegate; - procedure setEventID(const Value: TEventEnum); - protected - procedure AssignTo(Dest: TPersistent); override; - function GetDisplayName: string; override; - public - function GetNamePath: string; override; - published - property EventID: TEventEnum read FEventID write setEventID; - property OnHandle: TMSHTMLDelegate read FOnHandle write FOnHandle; - end; - - THandlerCollection = class(TCollection) - private - FOwner: THtmlListener; - function GetItem(Index: Integer): TEventHandlerItem; - protected - function GetOwner: TPersistent; override; - procedure Update(Item: TCollectionItem); override; - public - constructor Create(AOwner: THtmlListener); - function Add: TEventHandlerItem; - property Items[Index: Integer]: TEventHandlerItem read GetItem; default; - end; - - THtmlListenerLink = class; - - THtmlListener = class(TComponent, IDispatch) - private - FHandlers: THandlerCollection; - FDispList: TList; - FSinkKind: TSinkKind; - FSinkIID: PGUID; - Flink: THtmlListenerLink; - procedure setHandlers(const Value: THandlerCollection); - procedure setSinkKind(const Value: TSinkKind); - protected - { IInterface } - function QueryInterface(const IID: TGUID; out Obj): HRESULT; override; - stdcall; - { IDispatch } - function GetIDsOfNames(const IID: TGUID; Names: Pointer; - NameCount, LocaleID: Integer; DispIDs: Pointer): HRESULT; stdcall; - function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HRESULT; - stdcall; - function GetTypeInfoCount(out Count: Integer): HRESULT; stdcall; - function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT; - stdcall; - protected - procedure FillDispList; - procedure Update(Item: TEventHandlerItem); - procedure AddDisp(Item: TEventHandlerItem); - function Find(DispID: TEventID; var Index: Integer): Boolean; - procedure DispatchEvent(Sender: TObject; DispID: TEventID; Event: - IHTMLEventObj); - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure Connect(Source: IUnknown); overload; - function Connect2(Source: IUnknown; aAgent: TObject = nil): IHubLink; - published - property Handlers: THandlerCollection read fHandlers write setHandlers; - property SinkKind: TSinkKind read FSinkKind write setSinkKind default - skElement; - end; - - THtmlListenerLink = class(TInterfacedDispatchObject, IHubLink) - private - FHub: THtmlListener; - FCP: IConnectionPoint; - FAgent: TObject; - FSinkCookies: Integer; - protected - function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT; - override; stdcall; - procedure Connect(Source: IUnknown); - public - constructor Create(aHub: THtmlListener; aAgent: TObject); - procedure Disconnect; - end; - -implementation - -uses - SysUtils, EwbCoreTools; - -const - _eventids: array[TEventEnum] of TEventID = ( - TEventID(0), - heOnAbort, - heOnChange, - heOnError, - heOnLoad, - heOnSelect, - heOnSubmit, - heOnUnload, - heOnBounce, - heOnFinish, - heOnStart, - heOnScroll, - heOnReset, - heOnresize, - heOnBeforeUnload, - heOncontextmenu, - heOnBeforePrint, - heOnAfterPrint, - heOnStop, - heOnBeforeEditFocus, - heOnlayoutcomplete, - heOnpage, - heOnmousewheel, - heOnbeforedeactivate, - heOnmove, - heOncontrolselect, - heOnSelectionChange, - heOnmoveStart, - heOnmoveEnd, - heOnresizeStart, - heOnresizeEnd, - heOnmouseEnter, - heOnmouseLeave, - heOnActivate, - heOnDeactivate, - heOnBeforeActivate, - heOnfocusIn, - heOnfocusOut, - - heOnClick, - heOnDblClick, - heOnKeyDown, - heOnKeyPress, - heOnKeyUp, - heOnMouseDown, - heOnMouseMove, - heOnMouseUp, - heOnReadyStateChange, - - heOnCellChange, - heOnRowsInserted, - heOnRowsDelete, - heOnBeforePaste, - heOnBeforeCopy, - heOnBeforeCut, - heOnPaste, - heOnCopy, - heOnCut, - heOnDrop, - heOnDragLeave, - heOnDragOver, - heOnDragEnter, - heOnDragEnd, - heOnDrag, - heOnPropertyChange, - heOnLoseCapture, - heOnFilterChange, - heOnDatasetComplete, - heOnDataAvailable, - heOnDatasetChanged, - heOnErrorUpdate, - heOnSelectStart, - heOnDragStart, - heOnHelp, - heOnMouseOut, - heOnMouseOver, - heOnRowEnter, - heOnRowExit, - heOnAfterUpdate, - heOnBeforeUpdate, - heOnFocus, - heOnBlur - ); - - _eventNames: array[TEventEnum] of string = ( - '', - 'OnAbort', - 'OnChange', - 'OnError', - 'OnLoad', - 'OnSelect', - 'OnSubmit', - 'OnUnload', - 'OnBounce', - 'OnFinish', - 'OnStart', - 'OnScroll', - 'OnReset', - 'Onresize', - 'OnBeforeUnload', - 'Oncontextmenu', - 'OnBeforePrint', - 'OnAfterPrint', - 'OnStop', - 'OnBeforeEditFocus', - 'Onlayoutcomplete', - 'Onpage', - 'Onmousewheel', - 'Onbeforedeactivate', - 'Onmove', - 'Oncontrolselect', - 'OnSelectionChange', - 'OnmoveStart', - 'OnmoveEnd', - 'OnresizeStart', - 'OnresizeEnd', - 'OnmouseEnter', - 'OnmouseLeave', - 'OnActivate', - 'OnDeactivate', - 'OnBeforeActivate', - 'OnfocusIn', - 'OnfocusOut', - - 'OnClick', - 'OnDblClick', - 'OnKeyDown', - 'OnKeyPress', - 'OnKeyUp', - 'OnMouseDown', - 'OnMouseMove', - 'OnMouseUp', - 'OnReadyStateChange', - - 'OnCellChange', - 'OnRowsInserted', - 'OnRowsDelete', - 'OnBeforePaste', - 'OnBeforeCopy', - 'OnBeforeCut', - 'OnPaste', - 'OnCopy', - 'OnCut', - 'OnDrop', - 'OnDragLeave', - 'OnDragOver', - 'OnDragEnter', - 'OnDragEnd', - 'OnDrag', - 'OnPropertyChange', - 'OnLoseCapture', - 'OnFilterChange', - 'OnDatasetComplete', - 'OnDataAvailable', - 'OnDatasetChanged', - 'OnErrorUpdate', - 'OnSelectStart', - 'OnDragStart', - 'OnHelp', - 'OnMouseOut', - 'OnMouseOver', - 'OnRowEnter', - 'OnRowExit', - 'OnAfterUpdate', - 'OnBeforeUpdate', - 'OnFocus', - 'OnBlur' - ); - - { TEventHandlerItem } - -procedure TEventHandlerItem.AssignTo(Dest: TPersistent); -begin - if Dest is TEventHandlerItem then - with TEventHandlerItem(Dest) do - begin - EventID := Self.EventID; - OnHandle := Self.OnHandle; - end - else - inherited AssignTo(Dest); -end; - -function TEventHandlerItem.GetDisplayName: string; -begin - if FEventID = eiUnknown then - Result := inherited GetDisplayName - else - Result := _eventNames[FEventID]; -end; - -function TEventHandlerItem.GetNamePath: string; -begin - if Collection <> nil then - Result := Collection.GetNamePath + GetDisplayName - else - Result := ClassName; -end; - -procedure TEventHandlerItem.setEventID(const Value: TEventEnum); -begin - if FEventID <> Value then - begin - FEventID := Value; - FEvID := _eventids[FEventID]; - try - Changed(False); - except - FEventID := eiUnknown; - FEvID := 0; - raise; - end; - end; -end; - -{ THandlerCollection } - -function THandlerCollection.Add: TEventHandlerItem; -begin - Result := TEventHandlerItem(inherited Add); -end; - -constructor THandlerCollection.Create(AOwner: THtmlListener); -begin - inherited Create(TEventHandlerItem); - FOwner := AOwner; -end; - -function THandlerCollection.GetItem(Index: Integer): TEventHandlerItem; -begin - Result := TEventHandlerItem(inherited GetItem(Index)); -end; - -function THandlerCollection.GetOwner: TPersistent; -begin - Result := FOwner; -end; - -procedure THandlerCollection.Update(Item: TCollectionItem); -begin - FOwner.Update(TEventHandlerItem(Item)); -end; - -{ THtmlListener } - -constructor THtmlListener.Create(AOwner: TComponent); -begin - inherited; - FHandlers := THandlerCollection.Create(Self); - FSinkKind := skElement; - FSinkIID := @DIID_HTMLElementEvents2; -end; - -destructor THtmlListener.Destroy; -begin - FHandlers.Free; - FDispList.Free; - inherited; -end; - -procedure THtmlListener.Connect(Source: IUnknown); -var - pcpc: IConnectionPointContainer; - cp: IConnectionPoint; - c: Integer; -{$IFDEF DELPHI5} - SelfIntf: IDispatch; -{$ENDIF DELPHI5} -begin - if Supports(Source, IConnectionPointContainer, pcpc) and - (pcpc.FindConnectionPoint(FSinkIID^, cp) = S_OK) then - begin -{$IFDEF DELPHI5} - GetInterFace(IDispatch, SelfIntf); - if cp.Advise(SelfIntf, c) <> S_OK then -{$ELSE} - if cp.Advise(Self, c) <> S_OK then -{$ENDIF} - raise Exception.Create('Error on IConnectionPoint.Advise'); - end - else -{$IFDEF DELPHI6_UP} - raise Exception.CreateFmt('Source don''t have connection point for [%s]', - [GUIDToString(FSinkIID^)]); -{$ENDIF} -end; - - -function THtmlListener.Connect2(Source: IUnknown; - aAgent: TObject = nil): IHubLink; -begin - Flink := THtmlListenerLink.Create(Self, aAgent); - Flink.Connect(Source); - Result := Flink as IHubLink; -end; - -procedure THtmlListener.setHandlers(const Value: THandlerCollection); -begin - FHandlers.Assign(Value); -end; - -procedure THtmlListener.setSinkKind(const Value: TSinkKind); -begin - FSinkKind := Value; - FSinkIID := mshtmlEventGUIDs[Value]; -end; - -procedure THtmlListener.Update(Item: TEventHandlerItem); -begin - if csDestroying in ComponentState then - Exit; - if FDispList = nil then - FDispList := TList.Create; - if Item = nil then - FillDispList - else - begin - FDispList.Remove(Item); - if Item.EventID <> eiUnknown then - AddDisp(Item); - end; -end; - -procedure THtmlListener.AddDisp(Item: TEventHandlerItem); -var - I: Integer; -begin - if Find(Item.fEvID, I) then - raise Exception.CreateFmt('Handler with EventID = %s already exists.', - [_eventNames[Item.EventID]]); - FDispList.Insert(I, Item); -end; - -procedure THtmlListener.FillDispList; -var - I: Integer; -begin - FDispList.Clear; - FDispList.Capacity := FHandlers.Count; - for I := 0 to FHandlers.Count - 1 do - if FHandlers[I].EventID <> eiUnknown then - AddDisp(FHandlers[I]); -end; - -function THtmlListener.Find(DispID: TEventID; var Index: Integer): Boolean; -var - L, H, I: Integer; -begin - Result := False; - if FDispList = nil then - Exit; - - L := 0; - H := FDispList.Count - 1; - while L <= H do - begin - I := (L + H) shr 1; - if TEventHandlerItem(FDispList[I]).FEvID < DispID then - L := I + 1 - else - begin - H := I - 1; - if TEventHandlerItem(FDispList[I]).FEvID = DispID then - begin - Result := True; - Index := I; - Exit; - end; - end; - end; - Index := L; -end; - -procedure THtmlListener.DispatchEvent(Sender: TObject; DispID: TEventID; - Event: IHTMLEventObj); -var - I: Integer; -begin - if Find(DispID, I) then - with TEventHandlerItem(FDispList[I]) do - if Assigned(OnHandle) then - OnHandle(Sender, Event); -end; - -function THtmlListener.QueryInterface(const IID: TGUID; out Obj): HRESULT; -{$IFDEF DELPHI5} -var - SelfIntf: IDispatch; -{$ENDIF} -begin - Result := S_OK; - if GetInterface(IID, Obj) then - Exit; - if IsEqualGuid(IID, fSinkIID^) then -{$IFDEF DELPHI5} - begin - GetInterface(IDispatch, SelfIntf); - IUnknown(Obj) := SelfIntf; - end -{$ELSE} - IUnknown(Obj) := Self as IDispatch -{$ENDIF} - else - Result := E_NOINTERFACE; -end; - -function THtmlListener.GetIDsOfNames(const IID: TGUID; Names: Pointer; - NameCount, LocaleID: Integer; DispIDs: Pointer): HRESULT; -begin - Result := E_NOTIMPL; -end; - -function THtmlListener.GetTypeInfo(Index, LocaleID: Integer; - out TypeInfo): HRESULT; -begin - Result := DISP_E_BADINDEX; -end; - -function THtmlListener.GetTypeInfoCount(out Count: Integer): HRESULT; -begin - Count := 0; - Result := S_OK; -end; - -function THtmlListener.Invoke(DispID: Integer; const IID: TGUID; - LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo, - ArgErr: Pointer): HRESULT; -var - Event: IHTMLEventObj; -begin - Result := S_OK; - try - if Flags and DISPATCH_METHOD <> 0 then - begin - if (TDispParams(Params).cArgs = 0) or - not VarSupports(POleVariant(TDispParams(Params).rgvarg)^, IHTMLEventObj, - Event) then - Event := nil; - DispatchEvent(Self, TEventID(DispID), Event); - // if VarResult<>nil then - // POleVariant(VarResult)^ := False; - end; - except - on E: Exception do - begin - Result := DISP_E_EXCEPTION; - with PExcepInfo(ExcepInfo)^ do - begin - wCode := 9999; - bstrDescription := E.Message; - bstrSource := E.ClassName; - dwHelpContext := E.HelpContext; - end; - end; - end; -end; - - -{ THtmlListenerLink } - -constructor THtmlListenerLink.Create(aHub: THtmlListener; aAgent: TObject); -begin - inherited Create; - FHub := aHub; - FAgent := aAgent; -end; - -procedure THtmlListenerLink.Disconnect; -begin - if FCP <> nil then - try - FCP.Unadvise(FSinkCookies); - finally - FCP := nil; - end; -end; - -procedure THtmlListenerLink.Connect(Source: IUnknown); -var - pcpc: IConnectionPointContainer; -begin - if Supports(Source, IConnectionPointContainer, pcpc) and - (pcpc.FindConnectionPoint(fHub.fSinkIID^, FCP) = S_OK) then - begin - if FCP.Advise(Self, FSinkCookies) <> S_OK then - raise Exception.Create('Error on IConnectionPoint.Advise'); - end - else -{$IFDEF DELPHI6_UP} - raise Exception.CreateFmt('Source don''t have connection point for [%s]', - [GUIDToString(FHub.FSinkIID^)]); -{$ENDIF} -end; - -function THtmlListenerLink.Invoke(DispID: Integer; const IID: TGUID; - LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo, - ArgErr: Pointer): HRESULT; -var - Event: IHTMLEventObj; -begin - Result := S_OK; - try - if Flags and DISPATCH_METHOD <> 0 then - begin - if (TDispParams(Params).cArgs = 0) or - not VarSupports(POleVariant(TDispParams(Params).rgvarg)^, IHTMLEventObj, - Event) then - Event := nil; - FHub.DispatchEvent(FAgent, TEventID(DispID), Event); - end; - except - on E: Exception do - begin - Result := DISP_E_EXCEPTION; - with PExcepInfo(ExcepInfo)^ do - begin - wCode := 9999; - bstrDescription := E.Message; - bstrSource := E.ClassName; - dwHelpContext := E.HelpContext; - end; - end; - end; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbFocusControl.pas b/windows/src/ext/embeddedwb/Source/EwbFocusControl.pas deleted file mode 100644 index 909f204f37..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbFocusControl.pas +++ /dev/null @@ -1,200 +0,0 @@ -//*********************************************************** -// TEWBFocusControl unit * -// * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// (smot) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit EwbFocusControl; - -{$I EWB.inc} - -interface - -uses - Windows, Messages, Classes, Forms, Controls; - -// -- TEWBFocusControl --------------------------------------------------------- - -type - TEWBFocusControl = class { Singleton } - private - constructor Create; - public - class procedure Activate(Value: Boolean); - end; - - // Enable TEWBApplicationHook, if accessible at runtime only - // Enable_HookMainWindow must be defined in EWB.inc - // EWBHookMainWindow is activated by default. - -var - EWBEnableFocusControl: Boolean = True; // DO NOT CHANGE HERE - -implementation - -uses - EwbCoreTools; - -// -- FreeAndNil (SysUtils) ---------------------------------------------------- - -procedure FreeAndNil(var Obj); -var - Temp: TObject; -begin - try - Temp := TObject(Obj); - finally - Pointer(Obj) := nil; - end; - Temp.Free; -end; - -// -- TAppHookWindow ---------------------------------------------------------- - -type - TAppHookWindow = class(TWinControl) - private - FHookSet: Boolean; - function MessageHook(var Msg: TMessage): Boolean; - public - destructor Destroy; override; - procedure Activate; - procedure Deactivate; - end; - -var - EWBAppHookInstance: TAppHookWindow; - - // -- TEWBFocusControl --------------------------------------------------------- - -constructor TEWBFocusControl.Create; -begin - inherited; - if EWBEnableFocusControl then - begin - if EWBAppHookInstance = nil then - begin - EWBAppHookInstance := TAppHookWindow.Create(nil); - EWBAppHookInstance.Activate; - end; - end; -end; - -class procedure TEWBFocusControl.Activate(Value: Boolean) - {: TEWBApplicationHook}; -const -{$J+} - Instance: TEWBFocusControl = nil; -{$J-} -begin - if EWBEnableFocusControl then - case Value of - True: - begin - if not Assigned(Instance) then - Instance := Create; - end; - False: - begin - if Assigned(EWBAppHookInstance) then - FreeAndNil(EWBAppHookInstance); - if Assigned(Instance) then - FreeAndNil(Instance); - end; - end; -end; - -// -- TAppHookWindow ----------------------------------------------------------- - -function TAppHookWindow.MessageHook(var Msg: TMessage): Boolean; -var - ActiveControl: TWinControl; - ActiveForm: TCustomForm; - bContinue: Boolean; -// s: string; -begin - Result := False; - if (Msg.Msg = WM_WINDOWPOSCHANGING) or (Msg.Msg = CM_ACTIVATE) then - begin - ActiveForm := Screen.ActiveForm; - if Assigned(ActiveForm) then - begin - if Screen.ActiveForm.FormStyle = fsMDIChild then // Check if MDI - bContinue := IsChild(GetActiveWindow, ActiveForm.Handle) - else - bContinue := not Forms.Application.Terminated and ActiveForm.HandleAllocated and - (ActiveForm.Handle = GetActiveWindow); - - if bContinue and (ActiveForm.CanFocus) then - begin - ActiveControl := ActiveForm.ActiveControl; - // s := '** MessageHook ' + ActiveControl.ClassName + ' ' + Inttostr(ActiveForm.Handle) + ' ' + Inttostr(GetFocus); - // OutputDebugString(PChar(s)); - if Assigned(ActiveControl) and ((ActiveControl.ClassName = 'TEmbeddedWB') or - (ActiveControl.ClassName = 'TEWBCore')) then - if GetFocus <> ActiveControl.Handle then - begin - PostMessage(ActiveControl.Handle, WM_SETWBFOCUS, Integer(ActiveControl), 0); - // OutputDebugString(PChar('Focus set')); - // ActiveControl.SetFocus doesn't work when switching between forms. - end; - end; - end; - end; -end; - -destructor TAppHookWindow.Destroy; -begin - inherited; - Deactivate; -end; - -procedure TAppHookWindow.Activate; -begin - if (not FHookSet) and EWBEnableFocusControl then - if Assigned(Application) then - begin - Application.HookMainWindow(MessageHook); - FHookSet := True; - end; -end; - -procedure TAppHookWindow.Deactivate; -begin - if Assigned(Application) then - begin - Application.UnHookMainWindow(MessageHook); - FHookSet := False; - end; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbReg.pas b/windows/src/ext/embeddedwb/Source/EwbReg.pas deleted file mode 100644 index 832e4971de..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbReg.pas +++ /dev/null @@ -1,153 +0,0 @@ -//************************************************************** -// * -// Ewb_Reg * -// * -// For Delphi * -// by * -// bsalsa - Eran Bodankin - bsalsa@gmail.com * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit EwbReg; - -interface - -{$I EWB.inc} - -uses - Actions, - Classes, {$IFDEF DELPHI6_UP}DesignEditors, DesignIntf, {$ELSE}DsgnIntf, {$ENDIF} - EwbEditors, AppWebUpdater, IEParser, ExportFavorites, FavoritesTree, IETravelLog, - FavMenu, FavoritesListView, FavoritesPopup, HistoryMenu, HistoryListView, - ImportFavorites, LibXmlComps, LibXmlParser, LinksBar, RichEditBrowser, - SecurityManager, SendMail_For_Ewb, UrlHistory, Edithost, EditDesigner, - IEAddress, IEDownload, IEMultiDownload, EwbCore, EmbeddedWB, EwbControlComponent, IECache, Browse4Folder, - FileExtAssociate, LinksLabel, UI_Less, -{$IFDEF DELPHI6_UP}EwbEventsComp, EwbBehaviorsComp, {$ENDIF}EwbActns; - -procedure Register; - -implementation - -uses - SysUtils, ActnList; - -procedure Register; -begin - RegisterComponents('Embedded Web Browser', [ - TBrowse4Folder, -{$IFDEF DELPHI6_UP} - TEwbBehaviorFactory, - TEwbBehaviorController, -{$ENDIF} - TEasyXmlScanner, - TEditDesigner, - TEdithost, - TEmbeddedWB, - TEwbCore, - TEwbControl, - TEwbMapiMail, - TExportFavorite, - TFavoritesListView, - TFavoritesMenu, - TFavoritesPopup, - TFavoritesTree, - TFileExtAssociate, - THistoryListView, - THistoryMenu, -{$IFDEF DELPHI6_UP} - THtmlListener, -{$ENDIF} - TIEAddress, - TIECache, - TIEDownload, - TIEMultiDownload, - TIEParser, - TIETravelLog, - TImportFavorite, - TLinksLabel, - TLinksBar, - TRichEditWB, - TSecurityManager, - TUILess, - TUrlHistory, - TWebUpdater, - TXmlScanner - ]); - - - RegisterComponentEditor(TBrowse4Folder, TBFFEditor); -{$IFDEF DELPHI6_UP} - RegisterComponentEditor(TEwbBehaviorFactory, TEwbCompEditor); - RegisterComponentEditor(TEwbBehaviorController, TEwbCompEditor); -{$ENDIF} - RegisterComponentEditor(TEasyXmlScanner, TEwbCompEditor); - RegisterComponentEditor(TEditDesigner, TEwbCompEditor); - RegisterComponentEditor(TEdithost, TEwbCompEditor); - RegisterComponentEditor(TEmbeddedWB, TEwbCompEditor); - RegisterComponentEditor(TEwbCore, TEwbCompEditor); - RegisterComponentEditor(TEwbControl, TEwbCompEditor); - RegisterComponentEditor(TEwbMapiMail, TEwbCompEditor); - RegisterComponentEditor(TExportFavorite, TEwbCompEditor); - RegisterComponentEditor(TFavoritesListView, TEwbCompEditor); - RegisterComponentEditor(TFavoritesMenu, TEwbCompEditor); - RegisterComponentEditor(TFavoritesTree, TEwbCompEditor); - RegisterComponentEditor(TFileExtAssociate, TEwbCompEditor); - RegisterComponentEditor(THistoryListView, TEwbCompEditor); - RegisterComponentEditor(THistoryMenu, TEwbCompEditor); -{$IFDEF DELPHI6_UP} - RegisterComponentEditor(THtmlListener, TEwbCompEditor); -{$ENDIF} - RegisterComponentEditor(TIEAddress, TEwbCompEditor); - RegisterComponentEditor(TIECache, TEwbCompEditor); - RegisterComponentEditor(TIEDownload, TEwbCompEditor); - RegisterComponentEditor(TIEMultiDownload, TEwbCompEditor); - RegisterComponentEditor(TIEParser, TEwbCompEditor); - RegisterComponentEditor(TIETravelLog, TEwbCompEditor); - RegisterComponentEditor(TImportFavorite, TEwbCompEditor); - RegisterComponentEditor(TLinksLabel, TEwbCompEditor); - RegisterComponentEditor(TLinksBar, TEwbCompEditor); - RegisterComponentEditor(TRichEditWB, TEwbCompEditor); - RegisterComponentEditor(TSecurityManager, TEwbCompEditor); - RegisterComponentEditor(TUILess, TEwbCompEditor); - RegisterComponentEditor(TUrlHistory, TEwbCompEditor); - RegisterComponentEditor(TWebUpdater, TEwbCompEditor); - RegisterComponentEditor(TXmlScanner, TEwbCompEditor); - - - RegisterPropertyEditor(TypeInfo(WideString), TIEDownload, 'DownloadDir', TBrowse4FolderDLG); - RegisterPropertyEditor(TypeInfo(WideString), TIEParser, 'LocalFileName', TOpenFileDLG); - RegisterPropertyEditor(TypeInfo(WideString), TIEParser, 'SaveLogAs', TSaveTextDLG); - RegisterPropertyEditor(TypeInfo(WideString), TBrowse4Folder, 'InitialDir', TBrowse4FolderDLG); -{$IFDEF DELPHI6_UP} - RegisterPropertyEditor(TypeInfo(WideString), TEmbeddedWB, 'HostCSS', TMultiStringProperty); -{$ENDIF} - RegisterActions('EmbeddedWB', [TEwbLinkAction], nil); -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/EwbTools.pas b/windows/src/ext/embeddedwb/Source/EwbTools.pas deleted file mode 100644 index 2ccf767d8f..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbTools.pas +++ /dev/null @@ -1,3938 +0,0 @@ -(* - Name: EwbTools - Copyright: Copyright (C) 2003-2017 SIL International. - Documentation: - Description: - Create Date: 1 May 2014 - - Modified Date: 1 May 2014 - Authors: mcdurdin - Related Files: - Dependencies: - - Bugs: - Todo: - Notes: - History: 01 May 2014 - mcdurdin - I4214 - V9.0 - Keyman spams message 0x0401 and frequent timer messages too - -*) -//*********************************************************** -// EwbTools * -// * -// For Delphi * -// Freeware unit * -// by * -// bsalsa, Smot, * -// per lindso larsen * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit EwbTools; - -interface - -{$I EWB.inc} - -uses - System.Types, System.UITypes, - EwbAcc, Windows, Classes, ExtCtrls, ShlObj, Graphics, Dialogs, ActiveX, -{$IFDEF DELPHI6_UP}Variants, {$ENDIF} - MSHTML_EWB, SHDocVw_EWB, EmbeddedWB, URLMon; - -var - PrintingWithOptions: Boolean; - -//Document and Frame -function DocumentLoaded(Document: IDispatch): Boolean; -procedure AssignEmptyDocument(WebBrowser: TEmbeddedWB); - -//Html -function AddHtmlToAboutBlank(WebBrowser: TEmbeddedWB; StringToHtml: string): Boolean; -function DocumentSourceText(OleObject: Variant; Document: IDispatch): string; -function DocumentSource(OleObject: Variant): string; -function GetWordAtCursor(const X, Y: Integer; WebBrowser: TEmbeddedWB): string; - -//frames -function GetFrame(Document: IDispatch; FrameNo: Integer): IWebBrowser2; -function GetFrameFromDocument(SourceDoc: IHTMLDocument2; FrameNo: Integer): IWebBrowser2; //By Aladin -function FrameCount(Document: IDispatch): Longint; -function FrameCountFromDocument(SourceDoc: IHTMLDocument2): Integer; //By Aladin - -//Document Operations -procedure SetFocusToDoc(WebBrowser: TEmbeddedWB; Dispatch, Document: IDispatch); -function CMD_Copy(Document: IDispatch): Boolean; -function Cmd_Paste(Document: IDispatch): Boolean; -function Cmd_Cut(Document: IDispatch): Boolean; -function SelectAll(Document: IDispatch): Boolean; -function UnSelectAll(Document: IDispatch): Boolean; - -//scroll -procedure ScrollToTop(OleObject: Variant); -procedure ScrollToPosition(OleObject: Variant; X, Y: Integer); -procedure ScrollToBottom(Document: IDispatch); -procedure ScrollToID(ID: Integer; WebBrowser: TEmbeddedWB); -procedure ScrollToIDEx(ID: string; WebBrowser: TEmbeddedWB); -procedure GetScrollBarVisibility(WebBrowser: TEmbeddedWB; var HScroll, VScroll: Boolean); -function GetScrollBarPosition(WebBrowser: TEmbeddedWB; var ScrollPos: TPoint): Boolean; - -// zoom -function Zoom(Document: IDispatch; ZoomValue: Integer): Boolean; -function ZoomValue(Document: IDispatch): Integer; -function ZoomRangeHigh(Document: IDispatch): Integer; -function ZoomRangeLow(Document: IDispatch): Integer; - -function SetCharartersSet(WebBrowser: TEmbeddedWB; Document: IDispatch; const ACharactersSet: string; Refresh: Boolean = True): Boolean; -procedure GetThumbnail(Dispatch: IDispatch; var Image: TImage); -function GetBmpFromBrowser(Document: IDispatch; Handle: THandle; Width, Height: Integer; FileName: string): Boolean; -function GetJPEGfromBrowser(Document: IDispatch; ControlInterface: IWebBrowser2; FileName: string; SourceHeight, SourceWidth, TargetHeight, TargetWidth: Integer): Boolean; - -//View Document Fields/Properties/Images -procedure ViewPageLinksToStrings(OleObject: Variant; LinksList: TStrings); -procedure ViewPageSourceHTMLToStrings(OleObject: Variant; Document: IDispatch; HtmlList: TStrings); -procedure ViewPageSourceTextToStrings(OleObject: Variant; Document: IDispatch; TextList: TStrings); -procedure ViewPageSourceText(OleObject: Variant; Document: IDispatch); - -//Save -function SaveDocToStrings(Document: IDispatch; var AStrings: TStrings): HRESULT; -function SaveDocToStream(Document: IDispatch; var AStream: TStream): HRESULT; -function SaveDocToFile(Document: IDispatch; const Fname: string): HRESULT; - -//Printing -procedure Print(ControlInterface: IWebBrowser2; bHideSetup: Boolean = False; bCustomHeaderFooter: Boolean = False; Header: string = ''; Footer: string = ''); -procedure PrintWithOptions(ControlInterface: IWebBrowser2; Document: IDispatch; UsePrintOptions, PrintOptionsEnabled, HideSetup: Boolean; var InvokingPageSetup: Boolean); -procedure PrintPreview(Webbrowser: IWebBrowser2); -procedure PrintPreviewExtended(ControlInterface: IWebBrowser2; nCMDShow: Integer; HideSetup: Boolean); -procedure PrintPreviewFromTemplate(const TemplateFileName: string; Document: IDispatch); -function PageSetup(Document: IDispatch; UsePrintOptions, PrintOptionsEnabled: Boolean; var InvokingPageSetup: Boolean): Boolean; -procedure PrintSetup(ControlInterface: IWebBrowser2; HideSetup: Boolean); -procedure GetPrintValues(WebBrowser: TEmbeddedWB; PrintOptions: TPrintOptions; Measure: TMeasure); -function PrintMarginStr(Measure, RuntimeMeasure: TMeasure; M: Real): string; -procedure RestorePrintValues; - -//Dialogs -function OpenDialog(WebBrowser: TEmbeddedWB; AOwner: TComponent): Boolean; -function SaveDialog(Document: IDispatch): Boolean; overload; -function SaveDialog(WebBrowser: TEmbeddedWB; AOwner: TComponent; ATitle: string = ''; AFilter: string = ''): string; overload; - -function ShowInternetOptions(Document: IDispatch): Boolean; -function ShowPageProperties(Document: IDispatch): Boolean; -function ShowOrganizeFavorites(Handle: THandle): Boolean; -procedure ShowImportExportFavoritesAndCookies(Handle: THandle); -function ShowFindDialog(Document: IDispatch): Boolean; -procedure SaveImagesDialog(OleObject: Variant; Document: IDispatch); -function ViewPageSourceHtml(Document: IDispatch): Boolean; -procedure SavePageTextDialog(AOwner: TComponent; OleObject: Variant; Document: IDispatch); - -//Open external programs -procedure OpenAddressBook; -procedure OpenEudoraMail; -procedure OpenOutlookExpressMail; -procedure OpenOutlookMail; -procedure OpenRegistryEditor; -function OpenCalendar: Boolean; -function OpenClient(Client: string): Boolean; -function OpenNetMeeting: Boolean; -function OpenNewsClient: Boolean; -procedure DoExploreFolder(Handle: THandle; Path: string); -procedure OpenIEBrowserWithAddress(Handle: THandle); - -//Open specific webpages -function OpenHotmailMail(WebBrowser: TEmbeddedWB): Boolean; -function OpenYahooMail(WebBrowser: TEmbeddedWB): Boolean; -function OpenGoogleMail(WebBrowser: TEmbeddedWB): Boolean; -procedure GoSearchInGoogle(WebBrowser: TEmbeddedWB; SearchTerm: string); -procedure GoSearchInMSN(WebBrowser: TEmbeddedWB; SearchTerm: string); -procedure GoSearchInYahoo(WebBrowser: TEmbeddedWB; SearchTerm: string); - -//Navigate & Download -procedure Go(WebBrowser: TEmbeddedWB; Url: string); -procedure GoWithQueryDetails(WebBrowser: TEmbeddedWB; Url, Query: string); -procedure GoNoHistory(WebBrowser: TEmbeddedWB; const URL: string); -procedure NavigatePidl(WebBrowser: TEmbeddedWB; pidl: PItemIdList); -procedure GoAboutBlank(WebBrowser: TEmbeddedWB); -procedure GoDownloadFile(WebBrowser: TEmbeddedWB; URL: string); -function DownloadFile(SourceFile, TargetFile: string): Boolean; -procedure GoDownloadMaskedFile(SourceFile, TargetFile: string; Notify: Boolean); - -//Get Special Folders/URL paths etc. -function GetSpecialFolderPath(CallerHandle: THandle; CSIDL: Integer): PChar; -function GetShellFolderPath(FolderName: Widestring): string; -function GetIEHomePage: string; -function GetCachePath: string; -function GetCachedFileFromURL(ItemUrl: string): string; -function GetDefaultBrowserFromRegistry: string; -function GetIPAndHostName(var HostName, IPaddr, WSAErr: string): Boolean; - - -//E-Mail functions -procedure SendPageInMailAsAttachment(WebBrowser: TEmbeddedWB; AOwner: TComponent; Document: IDispatch; mFileName, mSubject, mBody: string); -function CreateNewMail: Boolean; -procedure SendUrlInMail(LocationURL, LocationName: WideString); - -//Search in Document & Fill Forms -function SearchString(Webbrowser: TEmbeddedWB; const strText: string): Boolean; -//function SearchText(WebBrowser: TEmbeddedWB; Document: IDispatch; const Value: string; const iPos: Integer = 1): IHTMLTxtRange; -function SearchText(WebBrowser: TEmbeddedWB; Document: IDispatch; const Value: string; aTypeSearch: Integer; const iPos: Integer = 1): IHTMLTxtRange; - -procedure SearchAndHighlight(Document: IDispatch; - AText: string; const ACaption, APrompt: string; Flags: TSearchFlags = []; - cbackColor: string = 'yellow'; cForeColor: string = ''; - ScrollIntoView: TScrollIntoView = sivNoScroll; ShowInputQuery: Boolean = True); overload; - -procedure SearchAndHighlight(Document: IDispatch; aText: string; Flags: TSearchFlags = []; - cbackColor: string = 'yellow'; cForeColor: string = ''; - ScrollIntoView: TScrollIntoView = sivNoScroll); overload; - -procedure SetTextAreaValue(Document: IDispatch; sName, sValue: string; Options: TFindOptions); -function FillForm(WebBrowser: TEmbeddedWB; FieldName, FieldValue: string; ElementNr: Integer = -1): Boolean; overload; -function FillForm(Document: IDispatch; FieldName: string; FieldValue: string; ElementNr: Integer = -1): Boolean; overload; - -function FillForm(WebBrowser: TEmbeddedWB; FieldName: string; FieldValue: string; Value: Boolean): Boolean; overload; - - -function GetFieldValue(OleObject: Variant; FieldName: string): string; -procedure ClickInputImage(WebBrowser: TEmbeddedWB; ImageURL: string); - -procedure FillIEFormAndExcecute; - -//Clearing -procedure ClearCache; -procedure ClearTypedUrls; - -//Online Status -function CheckOnlineStatus: Boolean; -function IsGlobalOffline: Boolean; -procedure WorkOffline(); -procedure WorkOnline(); - -//Restricted & Trusted Lists -function CheckIfInRestricredList(const Host: string; SecureSite: Boolean): Boolean; -function CheckIfInTrustedList(const Host: string; SecureSite: Boolean): Boolean; -procedure AddToTrustedSiteList(WebBrowser: TEmbeddedWB; const URL: string); -procedure AddToRestrictedSiteList(WebBrowser: TEmbeddedWB; const URL: string); - -//Zone Icon, Security Zone, SSL Status -procedure GetZoneIcon(IconPath: string; var Icon: TIcon); -function GetZoneIconToForm(LocationURL: string; Caption, Hint: string): Boolean; -function GetZoneAttributes(const URL: string): TZoneAttributes; -function GetSSLStatus(OleObject: Variant; LocationURL: string; var SSLName, SSLDescription: string): Boolean; -function GetUrlSecurityZone(LocationURL: string; var ZoneName, ZoneDescription: string; var Icon: TIcon): Boolean; - -//Proxy & User agent -function SetProxy(UserAgent, Address, Bypass: string): Boolean; overload; -function SetProxy(UserAgent, Address, UserName, Password: string; Port: Integer): Boolean; overload; -function SetProxyFromPAC(UserAgent, PACFile: string): Boolean; - -function RemoveProxy(): Boolean; -procedure RemoveUserAgent(UserAgent: string); - -//MIME Filter & NameSpace -function RegisterMIMEFilter(clsid: TGUID; MIME: PWideChar): HRESULT; -function UnregisterMIMEFilter(MIME: PWideChar): HRESULT; -function RegisterNameSpace(clsid: TGUID): HRESULT; -function UnregisterNameSpace: HRESULT; - -//Cookies -function GetCookiesPath: string; -procedure ClearSessionCookies; - -//Favorites -function OrganizeFavorite(h: THandle; Path: PAnsiChar): Boolean; stdcall; overload; -{$IFDEF UNICODE} -function OrganizeFavorite(h: THandle; Path: PWideChar): Boolean; overload; -{$ENDIF UNICODE} - -function URLFromFavorites(const dotURL: string): string; -function GetFavoritesPath: string; -procedure AddToFavorites(URL, Title: string); - -//History -function GetHistoryPath: string; -function UrlFromHistory(ShellFolder: IShellFolder; pidl: PItemIDList): string; -procedure ClearHistory; - -//Pages -procedure SetNewHomePage(HomePage: string); -function GetLastVisitedPage(var LastVisitedPage: string): Boolean; -function SaveLastVisitedPage(WebBrowser: TEmbeddedWB; LocationURL: string): Boolean; - -//Code accessories -procedure Wait(WebBrowser: TEmbeddedWB); -function InvokeCMD(Document: IDispatch; InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant): HRESULT; -function GetIEHandle(WebBrowser: TEmbeddedWB; ClassName: string): HWND; - -//Execute Script -procedure ExecScript(WebBrowser: TEmbeddedWB; sExpression, sLanguage: string); -function ExecScriptEx(WebBrowser: TEmbeddedWB; MethodName: string; ParamValues: array of const): OleVariant; -function WBExecScript(TargetObj: IDispatch; MethodName: string; ParamValues: array of const): OleVariant; - -//Miscellaneous -procedure RestoreApplicationFormSize(WebBrowser: TEmbeddedWB); -procedure SaveApplicationFormSize(WebBrowser: TEmbeddedWB); -procedure ShowIEVersionInfo(Handle: THandle); -procedure CreateDesktopShortcut(Handle: THandle); -procedure DisableNavSound(bDisable: Boolean); - -//----- add to ewb------------------------------------------------------- -function ConcatPIDLs(IDList1, IDList2: PItemIDList): PItemIDList; -function CopyITEMID(Malloc: IMalloc; ID: PItemIDList): PItemIDList; -function CopyPIDL(IDList: PItemIDList): PItemIDList; -function CreatePIDL(Size: Integer): PItemIDList; -function DeleteUrl(Url: PWideChar): HResult; -function Encode(const S: string): string; -function ExtractUrl(ShellFolder: IShellFolder; pidl: PItemIDList): string; -function GetDisplayName(Folder: IShellFolder; pidl: PItemIDList): string; -function GetFileName(Folder: IShellFolder; pidl: PItemIDList): string; -function GetIEVersion: string; -function GetIEVersionMajor: Integer; -function GetImageIndex(pidl: PItemIDList): Integer; -function GetMailClients: TStrings; -function GetPIDLSize(IDList: PItemIDList): Integer; -function IE5_Installed: Boolean; -function IsChannel(ChannelShortcut: string; ShellFolder: IShellFolder; ID: PItemIDList): Boolean; -function IsFolder(ShellFolder: IShellFolder; ID: PItemIDList): Boolean; -function IsFolderEx(ChannelShortcut: string; ShellFolder: IShellFolder; ID: PItemIDList): Boolean; - - - - -function NextPIDL(IDList: PItemIDList): PItemIDList; -function ResolveChannel(pFolder: IShellFolder; pidl: PItemIDList; var lpszURL: string): HRESULT; -function ResolveLink(const Path: string): string; -function ResolveUrlIni(FileName: string): string; -function ResolveUrlIntShCut(FileName: string): string; -function StringToVarArray(const S: string): Variant; -function URLFromShortcut(const dotURL: string): string; -function VarArrayToString(const V: Variant): string; -procedure DisposePIDL(ID: PItemIDList); -procedure StripLastID(IDList: PItemIDList); -function IsWinXPSP2OrLater(): Boolean; -function EncodeUrl(const InputStr: string; const bQueryStr: Boolean): string; -function DecodeURL(const InputStr: string): string; -function IsValidProtocol(URL: string): Boolean; -function ImportCertFile(AFileName, AStoreType: string): Boolean; -//--end of add to ewb--------------------------------- - -implementation - -uses - Registry, ShellAPI, Controls, Messages, Forms, SysUtils, - OleCtrls, WinInet, SendMail_For_EWB, ComObj, EwbIEConst, IniFiles, JPEG, WinSock, - Wcrypt2, Browse4Folder, EWBCoreTools; - -type - OSVERSIONINFOEX = packed record - dwOSVersionInfoSize: DWORD; - dwMajorVersion: DWORD; - dwMinorVersion: DWORD; - dwBuildNumber: DWORD; - dwPlatformId: DWORD; - szCSDVersion: array[0..127] of Char; - wServicePackMajor: WORD; - wServicePackMinor: WORD; - wSuiteMask: WORD; - wProductType: BYTE; - wReserved: BYTE; - end; - TOSVersionInfoEx = OSVERSIONINFOEX; - POSVersionInfoEx = ^TOSVersionInfoEx; - - -type - fn_VerifyVersionInfo = function(var VersionInformation: OSVERSIONINFOEX; - dwTypeMask: DWORD; dwlConditionMask: LONGLONG): BOOL; stdcall; - fn_VerSetConditionMask = function(ConditionMask: LONGLONG; TypeMask: DWORD; - Condition: Byte): LONGLONG; stdcall; - -function ImportCertFile(AFileName, AStoreType: string): Boolean; -var - f: file; //by Ray - encCert: PByte; - encCertLen: DWORD; - store: HCERTSTORE; - context: PCCERT_CONTEXT; - n: PCCERT_CONTEXT; - encType: DWORD; -begin - Result := False; - if FileExists(AFileName) then - begin - AssignFile(f, AFileName); - Reset(f, 1); - encCertLen := FileSize(f); - GetMem(encCert, encCertLen); - BlockRead(f, encCert^, encCertLen); - CloseFile(f); - try - encType := PKCS_7_ASN_ENCODING or X509_ASN_ENCODING; - context := CertCreateCertificateContext(encType, encCert, encCertLen); - if context <> nil then - begin - store := CertOpenSystemStore(0, PChar(AStoreType)); - if store <> nil then - begin - n := nil; - Result := CertAddCertificateContextToStore(store, context, - CERT_STORE_ADD_REPLACE_EXISTING, n); - CertCloseStore(store, 0); - CertFreeCertificateContext(context); - end; - end; - finally - FreeMem(encCert, encCertLen); - end; - end; -end; - -function IsWinXPSP2OrLater(): Boolean; -var - osvi: TOSVersionInfoEx; - dwlConditionMask: LONGLONG; - op: Integer; - hlib: THandle; - VerifyVersionInfo: fn_VerifyVersionInfo; - VerSetConditionMask: fn_VerSetConditionMask; -begin - Result := False; - hLib := LoadLibrary('kernel32.dll'); - if (hLib <> 0) then - begin - @VerifyVersionInfo := GetProcAddress(hLib, 'VerifyVersionInfoA'); - @VerSetConditionMask := GetProcAddress(hLib, 'VerSetConditionMask'); - if ((@VerifyVersionInfo = nil) or (@VerSetConditionMask = nil)) then - Exit; - - dwlConditionMask := 0; - op := VER_GREATER_EQUAL; - - // Initialize the OSVERSIONINFOEX structure. - ZeroMemory(@osvi, SizeOf(OSVERSIONINFOEX)); - osvi.dwOSVersionInfoSize := SizeOf(OSVERSIONINFOEX); - osvi.dwMajorVersion := 5; - osvi.dwMinorVersion := 1; - osvi.wServicePackMajor := 2; - osvi.wServicePackMinor := 0; - - // Initialize the condition mask. - dwlConditionMask := VerSetConditionMask(dwlConditionMask, VER_MAJORVERSION, op); - dwlConditionMask := VerSetConditionMask(dwlConditionMask, VER_MINORVERSION, op); - dwlConditionMask := VerSetConditionMask(dwlConditionMask, VER_SERVICEPACKMAJOR, op); - dwlConditionMask := VerSetConditionMask(dwlConditionMask, VER_SERVICEPACKMINOR, op); - - // Perform the test. - Result := VerifyVersionInfo(osvi, VER_MAJORVERSION or VER_MINORVERSION or - VER_SERVICEPACKMAJOR or VER_SERVICEPACKMINOR, dwlConditionMask); - end; -end; - -function EncodeURL(const InputStr: string; const bQueryStr: Boolean): string; -var - Idx: Integer; -begin - Result := ''; - for Idx := 1 to Length(InputStr) do - begin - case InputStr[Idx] of - 'A'..'Z', 'a'..'z', '0'..'9', '-', '_', '.': - Result := Result + InputStr[Idx]; - ' ': - if bQueryStr then - Result := Result + '+' - else - Result := Result + '%20'; - else - Result := Result + '%' + SysUtils.IntToHex(Ord(InputStr[Idx]), 2); - end; - end; -end; - -function DecodeURL(const InputStr: string): string; -var - Idx: Integer; - Hex: string; - Code: Integer; -begin - Result := ''; - Idx := 1; - while Idx <= Length(InputStr) do - begin - case InputStr[Idx] of - '%': - begin - if Idx <= Length(InputStr) - 2 then - begin - Hex := InputStr[Idx + 1] + InputStr[Idx + 2]; - Code := SysUtils.StrToIntDef('$' + Hex, -1); - Inc(Idx, 2); - end - else - Code := -1; - if Code = -1 then - raise SysUtils.EConvertError.Create('Invalid HEX digit in URL'); - Result := Result + Chr(Code); - end; - '+': - Result := Result + ' ' - else - Result := Result + InputStr[Idx]; - end; - Inc(Idx); - end; -end; - -function IsValidProtocol(URL: string): Boolean; -const - Protocols: array[1..11] of string = ('ftp://', 'http://', 'https://', - 'gopher://', 'mailto:', 'news:', 'nntp://', 'telnet://', 'wais://', - 'file://', 'prospero://'); -var - I: Integer; -begin - Result := False; - URL := SysUtils.LowerCase(URL); - for I := Low(Protocols) to High(Protocols) do - if Pos(Protocols[I], URL) <> 0 then - begin - Result := True; - Break; - end; -end; - -function DocumentLoaded(Document: IDispatch): Boolean; -var - iDoc: IHTMLDocument2; -begin - Result := False; - if Assigned(Document) then - begin - Document.QueryInterface(IHTMLDocument2, iDoc); - Result := Assigned(iDoc); - end; -end; - -procedure AssignEmptyDocument(WebBrowser: TEmbeddedWB); -begin - WebBrowser.Go('about:blank'); -end; - -function AddHtmlToAboutBlank(WebBrowser: TEmbeddedWB; StringToHtml: string): Boolean; -var - Flags, TargetFrameName, PostData, Headers: OleVariant; -begin - WebBrowser.Navigate('about:' + StringToHtml, Flags, TargetFrameName, PostData, Headers); - Result := True; -end; - -function GetWordAtCursor(const X, Y: Integer; WebBrowser: TEmbeddedWB): string; -var - Doc: IHTMLDocument2; - Selection: IHTMLSelectionObject; - Range: IHTMLTxtRange; -begin - Result := ''; - if WebBrowser.DocumentLoaded(Doc) then - begin - Selection := (Doc as IHTMLDocument2).selection; - if Assigned(Selection) then - begin - Range := Selection.createRange as IHTMLTxtRange; - Range.moveToPoint(X, Y); - Range.moveStart('word', -1); - Range.moveEnd('word', 1); - Result := Trim(Range.text); - end; - end; -end; - -procedure PrintPreviewFromTemplate(const TemplateFileName: string; Document: IDispatch); -var - OleCommandTarget: IOleCommandTarget; - ParamIn, EmptyParam: OleVariant; -begin - if Assigned(Document) then - begin - EmptyParam := EmptyStr; - Document.QueryInterface(IID_IoleCommandTarget, OLECOMMANDTARGET); - ParamIn := TemplateFileName; - OleCommandTarget.Exec( - nil, - OLECMDID_PRINTPREVIEW, - OLECMDEXECOPT_PROMPTUSER, - ParamIn, EmptyParam); - end; -end; - -procedure ScrollToIDEx(ID: string; WebBrowser: TEmbeddedWB); -var - Doc3: IHTMLDocument3; - Elem: IHTMLElement; - RV: IHTMLRect; -begin - Doc3 := WebBrowser.Doc3; - if Assigned(Doc3) then - begin - Elem := Doc3.getElementById(ID); - if Assigned(Elem) then - begin - RV := (Elem as IHTMLElement2).getBoundingClientRect; - Webbrowser.Doc2.parentWindow.scrollBy(RV.left, RV.top); - end; - end; -end; - -procedure ScrollToID(ID: Integer; WebBrowser: TEmbeddedWB); -var - Doc: IHTMLDocument2; - ACollection: IHTMLElementCollection; - Elem: IHTMLElement; - Match: IHTMLElement2; - I: Integer; - S: string; - RV: IHTMLRect; -begin - if WebBrowser.DocumentLoaded(Doc) then - begin - ACollection := Doc.all; - if Assigned(ACollection) then - begin - Match := nil; - S := IntToStr(ID); - for I := 0 to ACollection.length - 1 do - begin - Elem := ACollection.item(I, '') as IHTMLElement; - if Assigned(Elem) and (Elem.id = S) then - begin - Match := Elem as IHTMLElement2; - Break; - end; - end; - if Assigned(Match) then - begin - RV := Match.getBoundingClientRect; - WebBrowser.Doc2.parentWindow.scrollBy(RV.left, RV.top); - end; - end; - end; -end; - -// Get SysListView32 Child from the Webbrowser Control - -function GetWBLV(WBHandle: HWND): HWND; -var - WND: HWND; -begin - Result := 0; - Wnd := GetNextWindow(WBHandle, GW_CHILD); - while (Result = 0) and (WND <> 0) do - begin - Result := FindWindowEx(Wnd, 0, 'SysListView32', nil); - Wnd := GetNextWindow(Wnd, GW_CHILD) - end; -end; - -// Check if the horizontal / vertical Scrollbars are visible - -procedure GetScrollBarVisibility(WebBrowser: TEmbeddedWB; var HScroll, VScroll: Boolean); -var - WndLV: HWND; - IDoc: IHTMLDocument2; -begin - VScroll := False; - HScroll := False; - WndLV := GetWBLV(WebBrowser.Handle); - if WndLV = 0 then - begin - if Assigned(WebBrowser.Document) and (Succeeded(WebBrowser.Document.QueryInterface(IHTMLDocument2, IDoc))) then - begin - IDoc := WebBrowser.Document as IHTMLDocument2; - if Assigned(IDoc) and Assigned((IHTMLDocument2(IDoc).Body)) then - begin - VScroll := WebBrowser.OleObject.Document.body.ScrollHeight > WebBrowser.OleObject.Document.Body.ClientHeight; - HScroll := (WebBrowser.OleObject.Document.body.ScrollWidth > WebBrowser.OleObject.Document.Body.ClientWidth); - end; - end; - end else - begin - // if the WB is in "ListView" mode: - VScroll := ((GetWindowLong(WndLV, GWL_STYLE) and WS_VSCROLL) <> 0); - HScroll := ((GetWindowLong(WndLV, GWL_STYLE) and WS_HSCROLL) <> 0) - end; -end; - -// Get TEmbeddedWB Scrollbar X,Y Position - -function GetScrollBarPosition(WebBrowser: TEmbeddedWB; var ScrollPos: TPoint): Boolean; - - // Get Scrollbar X,Y Position of the ListView - function WB_GetLVScrollPosition(WebBrowser: TEmbeddedWB; var ScrollPos: TPoint): Boolean; - var - lpsi: TScrollInfo; - WndLV: HWND; - begin - Result := False; - // Retrieve SysListView32 Child of TEmbeddedWB - WndLV := GetWBLV(WebBrowser.Handle); - if WndLV <> 0 then // SysListView32 found - begin - // initialize TScrollInfo - FillChar(lpsi, SizeOf(lpsi), 0); - with lpsi do - begin - cbSize := SizeOf(lpsi); - fMask := SIF_POS; - end; - // Get ScrollInfos from the vertical Scrollbar - if GetScrollInfo(WndLV, SB_VERT, lpsi) then - begin - ScrollPos.Y := lpsi.nPos; - // Get ScrollInfos from the horizontal Scrollbar - if GetScrollInfo(WndLV, SB_HORZ, lpsi) then - begin - ScrollPos.X := lpsi.nPos; - Result := True; - end; - end; - end; - end; - - // Get Scrollbar X,Y Position of the HTML Document - function WB_GetDOCScrollPosition(WebBrowser: TEmbeddedWB; var ScrollPos: TPoint): Boolean; - var - IDoc: IHTMLDocument2; - IDoc3: IHTMLDocument3; - IElement: IHTMLElement; - begin - ScrollPos := Point(-1, -1); - Result := False; - if Assigned(WebBrowser.Document) and (Succeeded(WebBrowser.Document.QueryInterface(IHTMLDocument2, IDoc))) then - begin - IDoc := WebBrowser.Document as IHTMLDocument2; - if Assigned(IDoc) and Assigned((IHTMLDocument2(IDoc).Body)) then - begin - if (IDoc.QueryInterface(IHTMLDocument3, IDoc3) = S_OK) then - if Assigned(IDoc3) then - IElement := IDoc3.get_documentElement; - if (Assigned(IElement)) and (Variant(IDoc).DocumentElement.scrollTop = 0) then - ScrollPos.Y := IHTMLDocument2(IDoc).Body.getAttribute('ScrollTop', 0) - else - ScrollPos.Y := Variant(IDoc).DocumentElement.scrollTop; - if Assigned(IElement) and (Variant(IDoc).DocumentElement.scrollLeft = 0) then - ScrollPos.X := IHTMLDocument2(IDoc).Body.getAttribute('ScrollLeft', 0) - else - ScrollPos.X := Variant(IDoc).DocumentElement.scrollLeft - end; - Result := (ScrollPos.X <> -1) and (ScrollPos.Y <> -1) - end; - end; - -begin - Result := WB_GetDOCScrollPosition(WebBrowser, ScrollPos); - if not Result then - Result := WB_GetLVScrollPosition(WebBrowser, ScrollPos); -end; - -function DocumentSource(OleObject: Variant): string; -var - Strings: TStringList; -begin - Strings := TStringList.Create; - try - ViewPageSourceHTMLToStrings(OleObject, OleObject.Document, Strings); - Result := Strings.Text; - finally - FreeAndNil(Strings); - end; -end; - -function DocumentSourceText(OleObject: Variant; Document: IDispatch): string; -var - Strings: TStringList; -begin - Strings := TStringList.Create; - try - EwbTools.ViewPageSourceTextToStrings(OleObject, Document, Strings); - Result := Strings.Text; - finally - FreeAndNil(Strings); - end; -end; - -function GetFrame(Document: IDispatch; FrameNo: Integer): IWebBrowser2; -var - OleContainer: IOleContainer; - enum: ActiveX.IEnumUnknown; - unk: IUnknown; - Fetched: PLongint; -begin - if Assigned(Document) then - begin - Fetched := nil; - OleContainer := Document as IOleContainer; - if OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum) = S_OK then - begin - Enum.Skip(FrameNo); - Enum.Next(1, Unk, Fetched); - Result := Unk as IWebBrowser2; - end else - Result := nil; - end - else - Result := nil; -end; - -function FrameCount(Document: IDispatch): LongInt; -var //fix by Aladin - OleContainer: IOleContainer; - enum: ActiveX.IEnumUnknown; - FetchedContrs: LongInt; - Unknown: IUnknown; - IWeb: IWebBrowser2; -begin - Result := 0; //bsalsa - if not DocumentLoaded(Document) then Exit; - OleContainer := Document as IOleContainer; - if OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum) = S_OK then - begin - while Enum.Next(1, Unknown, @FetchedContrs) = S_OK do - begin - if Unknown.QueryInterface(IID_IWebBrowser2, IWeb) = S_OK then //check if it is frame - Inc(Result); - end; - end; -end; - -function FrameCountFromDocument(SourceDoc: IHTMLDocument2): Integer; -var //by Aladin - OleContainer: IOleContainer; - enum: ActiveX.IEnumUnknown; - unk: array[0..99] of IUnknown; // CHANGED from "unk: IUnknown;" - EnumResult: HRESULT; -begin - Result := 0; - if not DocumentLoaded(SourceDoc) then Exit; - OleContainer := SourceDoc as IOleContainer; - EnumResult := OleContainer.EnumObjects(OLECONTF_EMBEDDINGS, Enum); - if EnumResult = S_OK then - // Added per OLE help - Enum.Next(100, Unk, @Result) - else // Added per OLE help - Enum := nil; -end; - -procedure SetFocusToDoc(WebBrowser: TEmbeddedWB; Dispatch, Document: IDispatch); -begin - if DocumentLoaded(Document) then - with (Dispatch as IOleObject) do - DoVerb(OLEIVERB_UIACTIVATE, nil, WebBrowser, 0, WebBrowser.Handle, WebBrowser.ClientRect); -end; - -function CMD_Copy(Document: IDispatch): Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(Document, False, OLECMDID_COPY, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function CMD_Paste(Document: IDispatch): Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(Document, False, OLECMDID_PASTE, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function CMD_Cut(Document: IDispatch): Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(Document, False, OLECMDID_CUT, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function SelectAll(Document: IDispatch): Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(Document, False, OLECMDID_SELECTALL, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function UnSelectAll(Document: IDispatch): Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(Document, False, OLECMDID_CLEARSELECTION, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -procedure ScrollToTop(OleObject: Variant); -begin - try - if DocumentLoaded(OleObject.Document) then - OleObject.Document.ParentWindow.ScrollTo(0, 0); - except - end; -end; - -procedure ScrollToPosition(OleObject: Variant; X, Y: Integer); -begin - try - if DocumentLoaded(OleObject.Document) then - OleObject.Document.ParentWindow.ScrollTo(X, Y); - except - end; -end; - -procedure ScrollToBottom(Document: IDispatch); -var - HTMLParentWin: IHTMLWindow2; - Doc2: IHTMLDocument2; -begin - try - if Supports(Document, IHTMLDocument2, Doc2) then - begin - // OleObject.Document.ParentWindow.ScrollTo(0, MaxInt); doesn't work in IE8 - HTMLParentWin := IHTMLWindow2((Doc2 as IHTMLDocument2).parentWindow); - HTMLParentWin.scrollBy(0, (Doc2.body as IHTMLElement2).scrollHeight); - end; - except - end; -end; - -function Zoom(Document: IDispatch; ZoomValue: Integer): Boolean; -var - vaIn, vaOut: OleVariant; -begin - if ZoomValue < ZoomRangeLow(Document) then - vaIn := ZoomRangeLow(Document) - else - if ZoomValue > ZoomRangeHigh(Document) then - vaIn := ZoomRangeHigh(Document) - else - vaIn := ZoomValue; - Result := InvokeCmd(Document, False, OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut) = S_OK; -end; - -function ZoomValue(Document: IDispatch): Integer; -var - vaIn, vaOut: OleVariant; -begin - vaIn := null; - InvokeCmd(Document, False, OLECMDID_ZOOM, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); - Result := vaOut; -end; - -function ZoomRangeHigh(Document: IDispatch): Integer; -var - vaIn, vaOut: OleVariant; -begin - InvokeCmd(Document, False, OLECMDID_GETZOOMRANGE, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); - Result := HiWord(DWORD(vaOut)); -end; - -function ZoomRangeLow(Document: IDispatch): Integer; -var - vaIn, vaOut: OleVariant; -begin - InvokeCmd(Document, False, OLECMDID_GETZOOMRANGE, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); - Result := LoWord(DWORD(vaOut)); -end; - -function SetCharartersSet(WebBrowser: TEmbeddedWB; Document: IDispatch; const ACharactersSet: string; Refresh: Boolean = True): Boolean; -var - RefreshLevel: OleVariant; -begin - Wait(WebBrowser); - Result := False; - if DocumentLoaded(Document) then - begin - try - WebBrowser.Doc2.Set_CharSet(ACharactersSet); - Result := True; - if Refresh then - begin - RefreshLevel := 7; - WebBrowser.Refresh2(RefreshLevel); - end; - except - end; - end; -end; - -{ -function GetCookie(OleObject: Variant): string; -begin - Result := ''; - if DocumentLoaded(OleObject.Document) then - try - Result := OleObject.Document.Cookie; - except - end; -end; } - -procedure ClearSessionCookies; -begin - InternetSetOption(nil, INTERNET_OPTION_END_BROWSER_SESSION, nil, 0); -end; - -procedure GetThumbnail(Dispatch: IDispatch; var Image: TImage); -var - DrawRect: TRect; -begin - if Image = nil then - Exit; - DrawRect := Rect(0, 0, Image.Height, Image.Width); - Image.Picture.Bitmap.Height := Image.Height; - Image.Picture.Bitmap.Width := Image.Width; - (Dispatch as IViewObject).Draw(DVASPECT_DOCPRINT, 0, nil, nil, 0, - Image.Canvas.Handle, @DrawRect, nil, nil, 0); - Image.Refresh; -end; - -function GetBmpFromBrowser(Document: IDispatch; Handle: THandle; Width, Height: Integer; FileName: string): Boolean; -var - ViewObject: IViewObject; - sourceDrawRect: TRect; - ScreenImg: Graphics.TBitmap; -begin - Result := False; - if DocumentLoaded(Document) then - try - Document.QueryInterface(IViewObject, ViewObject); - if Assigned(ViewObject) then - try - ScreenImg := TBitmap.Create; - ScreenImg.Height := Height; - ScreenImg.Width := Width; - sourceDrawRect := Rect(0, 0, ScreenImg.Width, ScreenImg.Height); - ViewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Handle, - ScreenImg.Canvas.Handle, @sourceDrawRect, nil, nil, 0); - ScreenImg.SaveToFile(FileName); - Result := True; - finally - //ViewObject._Release; I4214 // I4214 - end; - except - Result := False; - end; -end; - -function GetJPEGfromBrowser(Document: IDispatch; ControlInterface: IWebBrowser2; FileName: string; SourceHeight, SourceWidth, - TargetHeight, TargetWidth: Integer): Boolean; -var - sourceDrawRect: TRect; - targetDrawRect: TRect; - sourceBitmap: Graphics.TBitmap; - targetBitmap: Graphics.TBitmap; - aJPG: TJPEGImage; - aViewObject: IViewObject; - IWeb: IWebBrowser2; -begin - Result := False; - sourceBitmap := Graphics.TBitmap.Create; - targetBitmap := Graphics.TBitmap.Create; - aJPG := TJPEGImage.Create; - IWeb := ControlInterface; - try - try - sourceDrawRect := Rect(0, 0, SourceWidth, SourceHeight); - sourceBitmap.Width := SourceWidth; - sourceBitmap.Height := SourceHeight; - aViewObject := IWeb as IViewObject; - if aViewObject = nil then - Exit; - OleCheck(aViewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, - Forms.Application.Handle, - sourceBitmap.Canvas.Handle, - @sourceDrawRect, nil, nil, 0)); - targetDrawRect := Rect(0, 0, TargetWidth, TargetHeight); - targetBitmap.Height := TargetHeight; - targetBitmap.Width := TargetWidth; - targetBitmap.Canvas.StretchDraw(targetDrawRect, sourceBitmap); - aJPG.Assign(targetBitmap); - aJPG.SaveToFile(FileName); - Result := True; - finally - aJPG.Free; - sourceBitmap.Free; - targetBitmap.Free; - end; - except - Result := False; - end; -end; - -procedure ViewPageLinksToStrings(OleObject: Variant; LinksList: TStrings); -var //by smot - UNum: Variant; - s: string; - - procedure RecurseLinks(htmlDoc: Variant); - var - BodyElement, ElementCo, HTMLFrames, HTMLWnd, doc: OleVariant; - j, i: Integer; - begin - if VarIsEmpty(htmlDoc) then Exit; - BodyElement := htmlDoc.body; - if BodyElement.tagName = 'BODY' then - begin - ElementCo := htmlDoc.links; - j := ElementCo.Length - 1; - for i := 0 to j do - begin - UNum := ElementCo.item(i); - s := UNum.href; - if j = 0 then - s := 'No Links found in the page body'; - LinksList.Add(s); - end; - end; - HTMLFrames := htmlDoc.Frames; - j := HTMLFrames.Length - 1; - for i := 0 to j do - begin - HTMLWnd := HTMLFrames.Item(i); - try - doc := HTMLWnd.Document; - RecurseLinks(doc); - except - Continue; - end; - end; - end; -begin - LinksList.Clear; - if not DocumentLoaded(OleObject.Document) then - Exit; - RecurseLinks(OleObject.Document); -end; - -procedure ViewPageSourceHTMLToStrings(OleObject: Variant; Document: IDispatch; HtmlList: TStrings); -begin - HtmlList.Clear; - if DocumentLoaded(Document) then - begin - try - HtmlList.Add(VarToStr(OleObject.Document.documentElement.innerHTML)); - except - end; - end; -end; - -procedure ViewPageSourceTextToStrings(OleObject: Variant; Document: IDispatch; TextList: TStrings); -begin - TextList.Clear; - if DocumentLoaded(Document) then - begin - try - TextList.Add(VarToStr(OleObject.Document.documentElement.innerText)); - except - end; - end; -end; - -procedure ViewPageSourceText(OleObject: Variant; Document: IDispatch); -var - TextLst: TStringList; -begin - TextLst := TStringList.Create; - try - if DocumentLoaded(Document) then - begin - TextLst.Add(VarToStr(OleObject.Document.documentElement.innerText)); - MessageDlg(TextLst.Text, mtCustom, [mbOK], 0); - end; - finally - TextLst.Free; - end; -end; - -function SaveDocToStrings(Document: IDispatch; var AStrings: TStrings): HResult; -var - IpStream: IPersistStreamInit; - AStream: TMemoryStream; -begin - Result := S_FALSE; - if not DocumentLoaded(Document) then - Exit; - AStream := TMemoryStream.Create; - try - IpStream := Document as IPersistStreamInit; - if not Assigned(IpStream) then - Result := S_FALSE - else - if Succeeded(IpStream.save(TStreamadapter.Create(AStream), True)) - then - begin - AStream.Seek(0, 0); - AStrings.LoadFromStream(AStream); - Result := S_OK; - end; - except - end; - AStream.Free; -end; - -function SaveDocToStream(Document: IDispatch; var AStream: TStream): HResult; -var - IpStream: IPersistStreamInit; -begin - if DocumentLoaded(Document) then - begin - IpStream := Document as IPersistStreamInit; - Result := IpStream.Save(TStreamAdapter.Create(AStream), True); - end - else - Result := S_FALSE; -end; - -function SaveDocToFile(Document: IDispatch; const Fname: string): HResult; -var - PFile: IPersistFile; -begin - Result := S_FALSE; - if DocumentLoaded(Document) then - begin - PFile := Document as IPersistFile; - Result := PFile.Save(StringToOleStr(FName), False); - end; -end; - -procedure PrintWithHeaderFooter(ControlInterface: IWebBrowser2; Header, Footer: PWideChar; Options: OLECMDEXECOPT); -var - saBound: TSafeArrayBound; - psaHeadFoot: PSafeArray; - vaIn, vaOut: TVariantArg; - vHeadStr, vFootStr: TVariantArg; - rgIndex: LongInt; -begin - try - saBound.lLbound := 0; - saBound.cElements := 2; - psaHeadFoot := SafeArrayCreate(VT_VARIANT, 1, @saBound); - vHeadStr.vt := VT_BSTR; - vHeadStr.bstrVal := SysAllocString(Header); - vFootStr.vt := VT_BSTR; - vFootStr.bstrVal := SysAllocString(Footer); - rgIndex := 0; - OleCheck(SafeArrayPutElement(psaHeadFoot, rgIndex, vHeadStr)); - rgIndex := 1; - OleCheck(SafeArrayPutElement(psaHeadFoot, rgIndex, vFootStr)); - vaIn.vt := VT_ARRAY or VT_BYREF; - vaIn.parray := psaHeadFoot; - ControlInterFace.ExecWB(OLECMDID_PRINT, Options, - OleVariant(vaIn), OleVariant(vaOut)); - if vHeadStr.bstrVal <> nil then - SysFreeString(vHeadStr.bstrVal); - if vFootStr.bstrVal <> nil then - SysFreeString(vFootStr.bstrVal); - except - end; -end; - -procedure Print(ControlInterface: IWebBrowser2; bHideSetup: Boolean = False; bCustomHeaderFooter: Boolean = False; Header: string = ''; Footer: string = ''); -var - vaIn, vaOut: OleVariant; -begin - if DocumentLoaded(ControlInterface.Document) then - begin - if bCustomHeaderFooter then - begin - if bHideSetup then - PrintWithHeaderFooter(ControlInterface, TaskAllocWideString(Header), TaskAllocWideString(Footer), OLECMDEXECOPT_DONTPROMPTUSER) - else - PrintWithHeaderFooter(ControlInterface, TaskAllocWideString(Header), TaskAllocWideString(Footer), OLECMDEXECOPT_PROMPTUSER); - end - else - if bHideSetup then - ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut) - else - ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut) - end; -end; - -procedure PrintWithOptions(ControlInterface: IWebBrowser2; Document: IDispatch; UsePrintOptions, PrintOptionsEnabled, HideSetup: Boolean; var InvokingPageSetup: Boolean); -begin - PrintingWithOptions := True; - PageSetup(Document, UsePrintOptions, PrintOptionsEnabled, InvokingPagesetup); - Print(ControlInterface, HideSetup); -end; - -procedure PrintPreview(Webbrowser: IWebBrowser2); -// IE 5.5 only -var - vaIn, vaOut: Olevariant; -begin - if DocumentLoaded(Webbrowser.Document) then - Webbrowser.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut); -end; - -function OpenClient(Client: string): Boolean; -var - s, params, Exec: string; -begin - Result := False; - with TRegistry.Create do - try - RootKey := HKEY_LOCAL_MACHINE; - OpenKey('Software\Clients\' + Client, False); - S := ReadString(''); - CloseKey; - OpenKey('Software\Clients\' + Client + '\' + S + '\shell\open\command', False); - S := ReadString(''); - CloseKey; - if S <> '' then - begin - if Pos('/', S) > 0 then - begin - Exec := system.Copy(S, 1, Pos('/', S) - 2); - Params := system.Copy(s, Length(exec) + 1, length(S)); - end - else - begin - Exec := S; - Params := ''; - end; - Result := True; - ShellExecute(Application.handle, 'open', PChar(Exec), PChar(Params), '', SW_SHOW); - end; - finally - Free; - end; -end; - -procedure PrintPreviewExtended(ControlInterface: IWebBrowser2; nCMDShow: Integer; HideSetup: Boolean); -var - Preview_HWND, App_HWND: THandle; - ClassName: array[0..255] of Char; - StartTime, EndTime: DWORD; //Smot - vaIn, vaOut: OleVariant; -begin - if DocumentLoaded(ControlInterface.Document) then - begin - if HideSetup then - ControlInterface.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut) //jerzy - else - ControlInterface.ExecWB(OLECMDID_PRINTPREVIEW, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut); - Preview_HWND := 0; - StartTime := GetTickCount; - repeat - App_HWND := GetForegroundWindow(); - GetClassName(App_HWND, ClassName, SizeOf(ClassName)); - if lstrcmp(@ClassName[0], @IE_PPREVIEWCLASS[1]) = 0 then - Preview_HWND := App_HWND; - Forms.Application.ProcessMessages; - EndTime := GetTickCount; - until (Preview_HWND <> 0) or (EndTime - StartTime > 7000); - if Preview_HWND <> 0 then - ShowWindow(Preview_HWND, nCmdShow); - end; -end; - -function PageSetup(Document: IDispatch; UsePrintOptions, PrintOptionsEnabled: Boolean; var InvokingPageSetup: Boolean): Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := False; - if DocumentLoaded(Document) then - begin - if PrintOptionsEnabled and UsePrintOptions then - InvokingPageSetup := True; - Result := InvokeCmd(Document, False, OLECMDID_PAGESETUP, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK - end; -end; - -procedure PrintSetup(ControlInterface: IWebBrowser2; HideSetup: Boolean); -var - vaIn, vaOut: OleVariant; -begin - if DocumentLoaded(ControlInterface.Document) then - begin - if HideSetup then - ControlInterface.ExecWB(OLECMDID_PAGESETUP, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut) - else - ControlInterface.ExecWB(OLECMDID_PAGESETUP, OLECMDEXECOPT_PROMPTUSER, vaIn, vaOut) - end; -end; - -procedure GetPrintValues(WebBrowser: TEmbeddedWB; PrintOptions: TPrintOptions; Measure: TMeasure); -var - S: string; - Reg: TRegistry; - {$IFDEF DELPHI7_UP} - FS: TFormatSettings; - {$ENDIF} - - - function ReadMargin(key: string): Real; - begin - S := Reg.ReadString(key); - if S = '' then - S := '0.750000'; // <-- default margin value by takeru_tk_81 - S := StringReplace(S, ' ', '', [rfReplaceAll]); - - if {$IFDEF DELPHI7_UP}FS.{$ENDIF}DecimalSeparator <> '.' then - S := StringReplace(S, '.',{$IFDEF DELPHI7_UP}FS.{$ENDIF}DecimalSeparator ,[]); - - if Measure = mMetric then - Result := StrToFloat(S) * InchToMetric - else - Result := StrToFloat(S); - end; - -begin - Reg := TRegistry.Create; - try - with Reg do - begin - RootKey := HKEY_CURRENT_USER; - if OpenKey('Software\Microsoft\Internet Explorer\PageSetup', False) then - begin - with PrintOptions do - begin - Header := ReadString('header'); - Footer := ReadString('footer'); - Margins.Left := ReadMargin('margin_left'); - Margins.Right := ReadMargin('margin_right'); - Margins.Top := ReadMargin('margin_top'); - Margins.Bottom := ReadMargin('margin_bottom'); - end; - end; - Reg.Free; - end; - except - - end; -end; - -function PrintMarginStr(Measure, RuntimeMeasure: TMeasure; M: Real): string; -begin - if Measure <> RuntimeMeasure then - begin - if RuntimeMeasure = mMetric then - Result := FloatToStr(M * InchToMetric) - else - Result := FloatToStr(M / InchToMetric); - end - else - Result := FloatToStr(M); -end; - -procedure RestorePrintValues; -var - Reg: TRegistry; -begin - Reg := TRegistry.Create; - try - with Reg do - begin - RootKey := HKEY_CURRENT_USER; - if OpenKey('Software\Microsoft\Internet Explorer\PageSetup', True) then - begin - WriteString('header', '&w&bPage &p of &P'); - WriteString('footer', '&u&b&d'); - WriteString('margin_left', '0.750000'); - WriteString('margin_right', '0.750000'); - WriteString('margin_top', '0.750000'); - WriteString('margin_bottom', '0.750000'); - end; - Reg.Free; - end; - except - MessageDlg('Error while writing page print values to the registry!', mtError, [mbOK], 0); - end; -end; - -function OpenDialog(WebBrowser: TEmbeddedWB; AOwner: TComponent): Boolean; -var - OD: TOpenDialog; -begin - OD := TOpenDialog.Create(AOwner); - try - with OD do - begin - Filter := 'Internet Files|*.htm; *.html; *.url; *.mht; *.mhtml; *.php *.asp' - + #10 + #13 + '|Image Files| *.gif;*.bmp;*.ico;*.jpg;*.png;*.wmf; *.emf; ' - + #10 + #13 + '|Text & Documents Files| *.txt;*.doc;*.xls;*.dot;' - + #10 + #13 + '|Compressed Files| *.zip;' - + #10 + #13 + '|XML Files| *.xml;' - + #10 + #13 + '|Any Files|*.*'; - Options := Options + [ofShowHelp, ofEnableSizing]; - Title := 'Browser - Open Dialog'; - HelpContext := 0; - Result := Execute; - if Result then - WebBrowser.Go(OD.FileName); - end; - finally - OD.Free; - end; -end; - -function SaveDialog(WebBrowser: TEmbeddedWB; AOwner: TComponent; ATitle: string = ''; AFilter: string = ''): string; -var - SD: TSaveDialog; -begin - SD := TSaveDialog.Create(AOwner); - try - with SD do - begin - if AFilter = '' then - Filter := 'Internet Files|*.htm; *.html;*.mht; *.mhtml; *.php *.asp' - + #10 + #13 + '|Text & Documents Files| *.txt;*.doc;*.xls;*.dot;' - + #10 + #13 + '|XML Files| *.xml;' - + #10 + #13 + '|Any Files|*.*' - else - Filter := AFilter; - Options := Options + [ofShowHelp, ofEnableSizing]; - if ATitle = '' then - Title := 'Browser - Save Dialog'; - HelpContext := 0; - if Execute then - Result := SD.FileName; - if SD.FileName <> '' then - WebBrowser.SaveToFile(SD.FileName); - end; - finally - SD.Free; - end; -end; - -function SaveDialog(Document: IDispatch): Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(Document, False, OLECMDID_SAVEAS, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function ShowInternetOptions(Document: IDispatch): Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(Document, True, HTMLID_OPTIONS, 0, vaIn, vaOut) = S_OK; -end; - -function ShowPageProperties(Document: IDispatch): Boolean; -var - vaIn, vaOut: OleVariant; -begin // OLECMDID_SHOWPAGEACTIONMENU - Result := InvokeCmd(Document, False, OLECMDID_PROPERTIES, OLECMDEXECOPT_DODEFAULT, vaIn, vaOut) = S_OK; -end; - -function ShowOrganizeFavorites(Handle: THandle): Boolean; -begin - Result := OrganizeFavorite(Handle, GetSpecialFolderPath(Handle, CSIDL_FAVORITES)); -end; - -procedure ShowImportExportFavoritesAndCookies(Handle: THandle); -begin - SendMessage(Handle, WM_COMMAND, ID_IE_FILE_IMPORTEXPORT, 0); -end; - -function ShowFindDialog(Document: IDispatch): Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(Document, True, HTMLID_FIND, 0, vaIn, vaOut) = S_OK; -end; - -procedure SaveImagesDialog(OleObject: Variant; Document: IDispatch); -var - k, p: Integer; - path, Source, dest, ext: string; -begin - if DocumentLoaded(Document) then - begin - // path := TBrowse4Folder.('Web Browser - Please select a destination folder' + #10 + #13 - // + 'for the images', 'Desktop'); - MessageDlg(Path, mtCustom, [mbYes, mbAll, mbCancel], 0); - begin - for k := 0 to OleObject.Document.Images.Length - 1 do - begin - Source := OleObject.Document.Images.Item(k).Src; - p := LastDelimiter('.', Source); - ext := UpperCase(System.Copy(Source, p + 1, Length(Source))); - if (ext = 'GIF') or (ext = 'JPG') or (ext = 'BMP') or (ext = 'PNG') then - begin - p := LastDelimiter('/', Source); - dest := path + '/Images' + System.Copy(Source, p + 1, Length(Source)); - DownloadFile(Source, dest); - end; - end; - end; - end; -end; - -function ViewPageSourceHtml(Document: IDispatch): Boolean; -var - vaIn, vaOut: OleVariant; -begin - Result := InvokeCmd(Document, True, HTMLID_VIEWSOURCE, 0, vaIn, vaOut) = S_OK; -end; - -procedure SavePageTextDialog(AOwner: TComponent; OleObject: Variant; Document: IDispatch); -var - sd: TSaveDialog; - textStr: TStringList; -begin - if not DocumentLoaded(Document) then Exit; - textstr := TStringList.Create; - try - textStr.Add(VarToStr(OleObject.Document.documentElement.innerText)); - begin - sd := TSaveDialog.Create(AOwner); - try - sd.Filter := 'Text file|*.txt|Word file|*.doc'; - sd.DefaultExt := 'txt'; - sd.FilterIndex := 1; - sd.FileName := 'WebSiteText.txt'; - sd.Title := 'Web Site Text'; - if sd.Execute then - begin - textStr.SaveToFile(sd.FileName); - end; - finally - sd.Free; - end; - end; - finally - textStr.Free; - end; -end; - -procedure ShellExecuteOpen(const sApplication: string); -begin - ShellExecute(Application.Handle, 'open', PChar(sApplication), nil, nil, SW_SHOW); -end; - -procedure OpenOutlookMail; -begin - ShellExecuteOpen('outlook.exe'); -end; - -procedure OpenOutlookExpressMail; -begin - ShellExecuteOpen('msimn.exe'); -end; - -procedure OpenEudoraMail; -begin - ShellExecuteOpen('eudora.exe'); -end; - -procedure OpenRegistryEditor; -begin - ShellExecuteOpen('regedit.exe'); -end; - -function OpenNewsClient: Boolean; -begin - Result := OpenClient('News'); -end; - -procedure OpenAddressBook; -begin - ShellExecuteOpen('wab.exe'); -end; - -function OpenCalendar: Boolean; -begin - Result := OpenClient('Calendar'); -end; - -function OpenNetMeeting: Boolean; -begin - Result := OpenClient('Internet Call'); -end; - -procedure DoExploreFolder(Handle: THandle; Path: string); -begin - ShellExecute(handle, 'explore', PChar(Path), nil, nil, SW_SHOWNORMAL); -end; - -procedure OpenIEBrowserWithAddress(Handle: THandle); -begin - SendMessage(Handle, WM_COMMAND, ID_IE_FILE_NEWWINDOW, 0); -end; - -function OpenHotmailMail(WebBrowser: TEmbeddedWB): Boolean; -begin - Result := True; - Go(WebBrowser, 'http://lc1.law5.hotmail.passport.com/cgi-bin/login'); -end; - -function OpenGoogleMail(WebBrowser: TEmbeddedWB): Boolean; -begin - Result := True; - Go(WebBrowser, 'http://mail.google.com/mail/'); -end; - -function OpenYahooMail(WebBrowser: TEmbeddedWB): Boolean; -begin - Result := True; - Go(WebBrowser, 'http://mail.yahoo.com/'); -end; - -procedure GoSearchInGoogle(WebBrowser: TEmbeddedWB; SearchTerm: string); -const - GOOGLE_QUERY = 'http://www.google.com/search?ie=ISO-8859-1&q='; -var - sQuery: string; -begin - sQuery := GOOGLE_QUERY + SearchTerm; - Go(WebBrowser, sQuery); -end; - -procedure GoSearchInMSN(WebBrowser: TEmbeddedWB; SearchTerm: string); -const - MSN_QUERY = 'http://search.live.com/results.aspx?q='; - MSN_Const = '&FORM=CBPW&first=1&noredir=1'; -var - sQuery: string; -begin - sQuery := MSN_QUERY + SearchTerm + MSN_Const; - Go(WebBrowser, sQuery); -end; - -procedure GoSearchInYahoo(WebBrowser: TEmbeddedWB; SearchTerm: string); -const - YAHOO_QUERY = 'http://search.yahoo.com/bin/search?p='; -var - sQuery: string; -begin - sQuery := YAHOO_QUERY + SearchTerm; - WebBrowser.Go(sQuery); -end; - -procedure Go(WebBrowser: TEmbeddedWB; Url: string); -var - _URL, Flags, TargetFrameName, PostData, Headers: OleVariant; -begin - _URL := Url; - Flags := 0; - TargetFrameName := 0; - Postdata := 0; - Headers := 0; - if (Trim(_URL) <> '') then - WebBrowser.Navigate2(_URL, Flags, TargetFrameName, PostData, Headers); -end; - -procedure GoWithQueryDetails(WebBrowser: TEmbeddedWB; Url, Query: string); -var - _URL, Flags, TargetFrameName, PostData, Headers: OleVariant; -begin - _URL := Url + Query; - TargetFrameName := 0; - headers := StringtoVarArray('Content-Type:application/x-www-form-urlencoded'#13#10); - Postdata := StringToVarArray('version=current&name=myname' + #13#10); - Flags := 0; - WebBrowser.Navigate2(_URL, Flags, TargetFrameName, PostData, Headers); -end; - -procedure GoNoHistory(WebBrowser: TEmbeddedWB; const URL: string); - - function StrToChr(Str: string; Pos: Integer): Char; - begin - Result := Str[Pos]; - end; - -var - Flags: OleVariant; - HistoryStg: IUrlHistoryStg; -begin - Flags := navNoHistory; - WebBrowser.Navigate(WideString(URL), Flags); - Wait(WebBrowser); - HistoryStg := CreateComObject(CLSID_CUrlHistory) as IUrlHistoryStg; - HistoryStg.DeleteUrl(PWideChar(StrToChr(URL, 0)), 0); -end; - -procedure NavigatePidl(WebBrowser: TEmbeddedWB; pidl: PItemIdList); -var - VaEmpty, vaPidl: OleVariant; - psa: PSafeArray; - cbData: UINT; -begin - cbdata := GetPIDLSize(pidl); - psa := SafeArrayCreateVector(VT_UI1, 0, cbData); - if (psa <> nil) then - begin - CopyMemory(psa.pvData, pidl, cbData); - VariantInit(vaPidl); - TVariantArg(vaPidl).vt := VT_ARRAY or VT_UI1; - TVariantArg(vaPidl).parray := psa; - WebBrowser.Navigate2(vaPidl, vaEmpty, vaEmpty, vaEmpty, vaEmpty); - VariantClear(vaPidl); - end; -end; - -function GetFrameFromDocument(SourceDoc: IHTMLDocument2; FrameNo: Integer): IWebBrowser2; -var //by Aladin - OleContainer: IOleContainer; - enum: ActiveX.IEnumUnknown; - unk: IUnknown; - Fetched: PLongint; -begin - Result := nil; - Fetched := nil; - if DocumentLoaded(SourceDoc) then - begin - OleContainer := SourceDoc as IOleContainer; - OleContainer.EnumObjects(OLECONTF_EMBEDDINGS or OLECONTF_OTHERS, Enum); - Enum.Skip(FrameNo); - Enum.Next(1, Unk, Fetched); - if Supports(Unk, IWebBrowser2, Result) then //perva 2008/12/10 - Result := Unk as IWebBrowser2; - end; -end; - -procedure GoAboutBlank(WebBrowser: TEmbeddedWB); -begin - WebBrowser.Go('about:blank'); - Wait(WebBrowser); -end; - -procedure SendPageInMailAsAttachment(WebBrowser: TEmbeddedWB; AOwner: TComponent; Document: IDispatch; mFileName, mSubject, mBody: string); -begin - WebBrowser.SaveToFile(mFileName); - Sleep(800); - with TEwbMapiMail.Create(AOwner) do - begin - try - Subject := mSubject; - Body := mBody; - Attachments.Add(mFileName); - EditDialog := True; - Send; - finally - // Free; - end; - end; -end; - -procedure GoDownloadFile(WebBrowser: TEmbeddedWB; URL: string); -var - Flags: OleVariant; -begin - Flags := navNoHistory or navNoReadFromCache or navNoWriteToCache - or navAllowAutosearch or navBrowserBar; - WebBrowser.Navigate(URL, Flags); -end; - -function DownloadFile(SourceFile, TargetFile: string): Boolean; -begin - try - Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(TargetFile), 0, nil) = 0; - except - Result := False; - end; -end; - -procedure GoDownloadMaskedFile(SourceFile, TargetFile: string; Notify: Boolean); -begin - if Notify then - begin - if DownloadFile(SourceFile, TargetFile) then - MessageBox(0, PChar('Downloading: ' + SourceFile + #10 + #13 + - 'To: ' + TargetFile + #10 + #13 + 'was successfully finished.'), - PChar('Download successful.'), MB_OK) - else - MessageBox(0, PChar( - 'An error ocurred while downloading the file.' + SourceFile), - PChar('Downloading Error!!'), MB_ICONERROR or MB_OK); - end - else - DownloadFile(SourceFile, TargetFile); -end; - -procedure AddToFavorites(URL, Title: string); -// The URL parameter must specify a valid URL using HTTP, Secure Hypertext Transfer Protocol (HTTPS), -// or File Transfer Protocol (FTP) protocols only. Calling the IShellUIHelper::AddFavorite method with a -// file:// or javascript: URL returns E_ACCESSDENIED. -const - CLSID_ShellUIHelper: TGUID = '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}'; -var - ShellUIHelper: ISHellUIHelper; - Url1, Title1: OleVariant; - Res : HRESULT; -begin - if (Trim(URL) <> '') and (Trim(Title) <> '') then - begin - Title1 := Title; - Url1 := Url; - Res := CoCreateInstance(CLSID_SHELLUIHELPER, nil, CLSCTX_INPROC_SERVER, IID_IShellUIHelper, ShellUIHelper); - if SUCCEEDED(Res) then - try - ShellUIHelper.AddFavorite(URL1, Title1); - except - end; - end; -end; - -function GetFavoritesPath: string; -begin - Result := GetShellFolderPath('Favorites'); -end; - -function GetCookiesPath: string; -begin - Result := GetShellFolderPath('Cookies'); -end; - -function GetHistoryPath: string; -begin - Result := GetShellFolderPath('History'); -end; - -function GetCachePath: string; -begin - Result := GetShellFolderPath('Cache'); -end; - -function GetShellFolderPath(FolderName: Widestring): string; -const - REG_PATH = 'SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders'; -var - Reg: TRegistry; -begin - Result := ''; - Reg := TRegistry.Create(KEY_READ); - with Reg do - try - Rootkey := HKEY_CURRENT_USER; - OpenKey(REG_PATH, False); - if (ValueExists(FolderName)) and not (length(trim(ReadString(FolderName))) = 0) then - Result := ReadString(FolderName); - finally - CloseKey; - Free; - end; -end; - -function GetSpecialFolderPath(CallerHandle: THandle; CSIDL: Integer): PChar; -var - exInfo: TShellExecuteInfo; - Buf: PChar; -begin - FillChar(exInfo, SizeOf(exInfo), 0); - with exInfo do - begin - cbSize := SizeOf(exInfo); - fMask := SEE_MASK_FLAG_DDEWAIT or SEE_MASK_IDLIST; - Wnd := CallerHandle; - nShow := SW_SHOWNORMAL; - Buf := StrAlloc(MAX_PATH); - try -{$IFDEF UNICODE} - FillChar(Buf^, MAX_PATH * SizeOf(Char), 0); -{$ELSE} - FillChar(Buf^, MAX_PATH, 0); -{$ENDIF UNICODE} - if SHGetSpecialFolderPath(wnd, Buf, CSIDL, True) then - Result := Buf - else - Result := ''; - finally - // StrDispose(Buf); - end; - end; -end; - -function GetIEHomePage: string; -var - HomePage: string; -begin - HomePage := ''; - with TRegistry.Create do - try - RootKey := HKEY_CURRENT_USER; - OpenKey('\Software\Microsoft\Internet Explorer\Main', False); - HomePage := ReadString('Start Page'); - CloseKey; - finally - Free; - end; - Result := HomePage; -end; - -function GetCachedFileFromURL(ItemUrl: string): string; -var - IntCacheInfo: PInternetCacheEntryInfo; - CacheEntry, dwEntrySize, dwLastError: LongWord; -begin - dwEntrySize := 0; - FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize); - GetMem(IntCacheInfo, dwEntrySize); - CacheEntry := FindFirstUrlCacheEntry(nil, IntCacheInfo^, dwEntrySize); - if (CacheEntry <> 0) and (ItemUrl = IntCacheInfo^.lpszSourceUrlName) then - Result := IntCacheInfo^.lpszLocalFileName; - FreeMem(IntCacheInfo); - if Result = '' then - repeat - dwEntrySize := 0; - FindNextUrlCacheEntry(CacheEntry, TInternetCacheEntryInfo(nil^), dwEntrySize); - dwLastError := GetLastError(); - if (GetLastError = ERROR_INSUFFICIENT_BUFFER) then - begin - GetMem(IntCacheInfo, dwEntrySize); - if (FindNextUrlCacheEntry(CacheEntry, IntCacheInfo^, dwEntrySize)) then - begin - if ItemUrl = IntCacheInfo^.lpszSourceUrlName then - begin - Result := IntCacheInfo^.lpszLocalFileName; - Break; - end; - end; - FreeMem(IntCacheInfo); - end; - until (dwLastError = ERROR_NO_MORE_ITEMS); -end; - -function OrganizeFavorite(h: THandle; Path: PAnsiChar): Boolean; stdcall; - external 'shdocvw.dll' name 'DoOrganizeFavDlg'; overload; - -{$IFDEF UNICODE} - -function OrganizeFavorite(h: THandle; Path: PWideChar): Boolean; -begin - Result := OrganizeFavorite(h, PAnsiChar(AnsiString(UnicodeString(Path)))); -end; - -{$ENDIF UNICODE} - -function URLFromFavorites(const dotURL: string): string; -begin - Result := ''; - with TIniFile.Create(dotURL) do - try - try - Result := ReadString('InternetShortcut', 'URL', ''); - except; - end; - finally - Free; - end; -end; - -function UrlFromHistory(ShellFolder: IShellFolder; pidl: PItemIDList): string; -var - Handle: THandle; - Info: IQueryInfo; - W: PWideChar; -begin - Result := ''; - Handle := 0; - Info := nil; - ShellFolder.GetUIObjectOf(Handle, 1, pidl, IID_IQUERYINFO, nil, Pointer(Info)); - if Assigned(Info) then - begin - Info.GetInfoTip(0, w); - Result := W; - end; - Result := Trim(System.Copy(Result, Pos(#10, Result) + 1, length(Result))); -end; - -function GetDefaultBrowserFromRegistry: string; -var - Reg: TRegistry; - KeyName: string; -begin - Reg := TRegistry.Create; - try - Reg.RootKey := HKEY_CLASSES_ROOT; - KeyName := 'htmlfile\shell\open\command'; - if Reg.OpenKey(KeyName, False) then - begin - Result := Reg.ReadString(''); - Reg.CloseKey; - end - else - Result := 'No default browser found.'; - finally - Reg.Free; - end; -end; - -function GetIPAndHostName(var HostName, IPaddr, WSAErr: string): Boolean; -var - WSAResult: Integer; - WSAData: TWSAData; - HostEnt: PHostEnt; - Host: AnsiString; - SockAddr: TSockAddrIn; -begin - Result := False; - WSAResult := WSAStartup(MakeWord(1, 1), WSAData); - if WSAResult <> 0 then - begin - WSAErr := 'Winsock is not responding."'; - end else - try - if Host = '' then - begin - SetLength(Host, MAX_PATH); - GetHostName(PAnsiChar(Host), MAX_PATH); - end; - HostEnt := GetHostByName(PAnsiChar(Host)); - if HostEnt <> nil then - begin - HostName := string(AnsiString(Host)); - SetLength(HostName, StrLen(PChar(HostName))); - SockAddr.sin_addr.S_addr := Longint(PLongint(HostEnt^.h_addr_list^)^); - IPaddr := string(AnsiString(inet_ntoa(SockAddr.sin_addr))); - Result := True; - end else - begin - begin - case WSAGetLastError of - WSANOTINITIALISED: WSAErr := 'WSANotInitialised'; - WSAENETDOWN: WSAErr := 'WSAENetDown'; - WSAEINPROGRESS: WSAErr := 'WSAEInProgress'; - end; - end; - end; - finally - WSACleanup; - end; -end; - -function CreateNewMail: Boolean; -var - em_subject, em_body, em_mail: string; -begin - em_subject := ''; - em_body := ''; - em_mail := 'mailto:?subject=' + em_subject + '&body=' + em_body; - Result := ShellExecute(0, 'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL) > 32; -end; - -procedure SendUrlInMail(LocationURL, LocationName: WideString); -begin - with TEwbMapiMail.Create(nil) do - begin - try - Subject := LocationName; - Body := LocationURL; - EditDialog := True; - Send; - finally - end; - end; -end; - - -function SearchText(WebBrowser: TEmbeddedWB; Document: IDispatch; const Value: string; aTypeSearch: Integer; const iPos: Integer = 1): IHTMLTxtRange; -//by JJM -{ aTypeSearch can have the following values -(* -0 Default. Match partial words. -1 Match backwards. -2 Match whole words only. -4 Match case. -*) -} -var - B: Boolean; -begin - Wait(WebBrowser); - Result := nil; - try - if DocumentLoaded(Document) then - if Assigned((Document as IHTMLDocument2).body) then - begin - Result := ((Document as IHTMLDocument2).body as IHTMLBodyElement).CreateTextRange; - if Result.moveStart('character', ipos) = S_OK then - B := Result.findText(Value, 1, aTypeSearch) - else - B := Result.findText(Value, iPos, aTypeSearch); - if B then - Result.ScrollIntoView(True) - else - Result := nil; - end; - except - on e: Exception do ; - end; -end; - -function SearchString(Webbrowser: TEmbeddedWB; const strText: string): Boolean; -var - tr: IHTMLTxtRange; -begin - Wait(WebBrowser); - Result := False; - try - if Assigned(Webbrowser.Document) then - begin - tr := ((Webbrowser.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange; - Result := tr.findText(strText, 1, 0); - end; - except - on e: Exception do - ; - end; -end; - -function DoSearchAndHighlight(Document: IDispatch; sFind: string; - Flags: TSearchFlags = []; cbackColor: string = 'yellow'; cForeColor: string = ''; - ScrollIntoView: TScrollIntoView = sivNoScroll): Integer; -var - Doc2: IHTMLDocument2; - pElem: IHTMLElement; - pBodyelem: IHTMLBodyElement; - pTxtRange: IHTMLTxtRange; - searchdir, searchcase, iMatches: Integer; -begin - iMatches := 0; - if (Length(sFind) <> 0) and - Supports(Document, IHTMLDocument2, Doc2) then - begin - searchdir := 1; - searchcase := 0; - //Set up search case - if (sfMatchWholeWord in Flags) and (sfMatchCase in Flags) then - searchcase := 6 - else if sfMatchWholeWord in Flags then - searchcase := 2 - else if sfMatchCase in Flags then - searchcase := 4; - - pElem := Doc2.body; - if (pElem <> nil) then - begin - pBodyelem := pElem as IHTMLBodyElement; - if (pBodyelem <> nil) then - begin - pTxtRange := pBodyelem.createTextRange(); - if (pTxtRange <> nil) then - begin - while (pTxtRange.findText(sFind, searchdir, searchcase)) do - begin - if (cbackColor <> '') then - pTxtRange.execCommand('BackColor', False, cbackColor); - if (cForeColor <> '') then - pTxtRange.execCommand('ForeColor', False, cForeColor); - pTxtRange.moveStart('Character', 1); - pTxtRange.moveEnd('Textedit', 1); - iMatches := iMatches + 1; - if (iMatches = 1) and (ScrollIntoView = sivFirstMatch) then - pTxtRange.scrollIntoView(True); - end; - if (iMatches > 1) and (ScrollIntoView = sivLastMatch) then - pTxtRange.scrollIntoView(True); - end; - end; - end; - end; - Result := iMatches; -end; - -procedure SearchAndHighlight(Document: IDispatch; - AText: string; const ACaption, APrompt: string; Flags: TSearchFlags = []; - cbackColor: string = 'yellow'; cForeColor: string = ''; - ScrollIntoView: TScrollIntoView = sivNoScroll; ShowInputQuery: Boolean = True); overload; -var -// tr: IHTMLTxtRange; - FrameCount, i: Integer; - Wb2: IWebBrowser2; -begin - if DocumentLoaded(Document) then - begin - if ShowInputQuery then - if not InputQuery(ACaption, APrompt, AText) then Exit; - - if Length(aText) = 0 then Exit; - try - FrameCount := FrameCountFromDocument(Document as IHTMLDocument2); - if FrameCount > 0 then - begin - for i := 0 to Pred(FrameCount) do - begin - Wb2 := GetFrameFromDocument(Document as IHTMLDocument2, i); - if Assigned(Wb2) then - SearchAndHighlight(Wb2.Document, AText, ACaption, APrompt, Flags, - cbackColor, cForeColor, ScrollIntoView, False); - end; - end - else - begin - DoSearchAndHighlight(Document, AText, Flags, - cbackColor, cForeColor, ScrollIntoView); - { tr := ((Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange; - while tr.findText(aText, 1, 0) do - begin - tr.pasteHTML('' + - tr.htmlText + ''); - tr.scrollIntoView(True); - end; } - end; - except - end; - end; -end; - -procedure SearchAndHighlight(Document: IDispatch; aText: string; Flags: TSearchFlags = []; - cbackColor: string = 'yellow'; cForeColor: string = ''; - ScrollIntoView: TScrollIntoView = sivNoScroll); overload; -begin - SearchAndHighlight(Document, '', '', aText, Flags, cbackColor, cForeColor, ScrollIntoView, False); -end; - -{function FillForm(OleObject: Variant; FieldName: string; Value: string): Boolean; -var - I, j: Integer; - FormItem: Variant; -begin - Result := False; - if not DocumentLoaded(OleObject.Document) or OleObject.Document.all.tags('FORM').Length = 0 then - Exit; - for I := 0 to OleObject.Document.forms.Length - 1 do - begin - FormItem := OleObject.Document.forms.Item(I); - for j := 0 to FormItem.Length - 1 do - begin - try - if (FormItem.Item(j).Name = FieldName) and - (FormItem.Item(j).Name <> 'length') then - begin - FormItem.Item(j).Value := Value; - Result := True; - end; - except - Exit; - end; - end; - end; -end; } - -procedure SetTextAreaValue(Document: IDispatch; sName, sValue: string; Options: TFindOptions); -var - Doc2: IHTMLDocument2; - i: Integer; - field: IHTMLElement; - textarea: IHTMLTextAreaElement; -begin - if Supports(Document, IHTMLDocument2, Doc2) then - for i := 0 to Doc2.all.length - 1 do - begin - field := Doc2.all.item(i, '') as IHTMLElement; - if Assigned(field) then - begin - if SameText(field.tagName, 'TEXTAREA') then - begin - textarea := field as IHTMLTextAreaElement; - if Assigned(textarea) then - begin - if ((frWholeWord in Options) and (sName = textarea.Name)) - or ((Options = []) and (AnsiPos(sName, textarea.Name) <> 0)) then - textarea.Value := sValue; - end; - end; - end; - end; -end; - -function FillForm(Document: IDispatch; FieldName: string; FieldValue: string; ElementNr: Integer = -1): Boolean; overload; -var - Inputs: IHTMLElementCollection; - HTMLElement: IHTMLElement; - TagName: string; - k, iItemNr, iInputCount: Integer; -begin - Result := False; - Inputs := IHTMLDocument3(Document).getElementsByName(FieldName); - if Assigned(Inputs) then - begin - try - if ElementNr = -1 then - iInputCount := Inputs.Length - else - iInputCount := ElementNr; - - if iInputCount = -1 then iInputCount := 0; - - for k := 0 to iInputCount - 1 do - begin - if ElementNr = -1 then - iItemNr := k - else - iItemNr := ElementNr; - - HTMLElement := Inputs.item(iItemNr, '') as IHTMLElement; - if Assigned(HTMLElement) then - begin - TagName := AnsiUpperCase(HTMLElement.tagName); - if TagName = 'INPUT' then - begin - (HTMLElement as IHTMLInputElement).Value := FieldValue; - Result := True; - Exit; - end - else if TagName = 'SELECT' then - begin - (HTMLElement as IHTMLSelectElement).Value := FieldValue; - Result := True; - Exit; - end - else if TagName = 'TEXTAREA' then - begin - (HTMLElement as IHTMLTextAreaElement).Value := FieldValue; - Result := True; - Exit; - end; - end; - if ElementNr <> -1 then Exit; - end; - except - end; - end; -end; - -function FillForm(WebBrowser: TEmbeddedWB; FieldName: string; FieldValue: string; ElementNr: Integer = -1): Boolean; overload; -var - Doc3: IHTMLDocument3; -begin - Result := False; - if Assigned(WebBrowser.Document) and - (Succeeded(WebBrowser.Document.QueryInterface(IHTMLDocument3, Doc3))) then - begin - Result := FillForm(Doc3, FieldName, FieldValue, ElementNr) - end; -end; - - -function FillForm(WebBrowser: TEmbeddedWB; FieldName: string; FieldValue: string; Value: Boolean): Boolean; -var - I, j: Integer; - FormItem: Variant; -begin - Result := False; - if not DocumentLoaded(WebBrowser.Document) then - if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then - if (FieldName = '') and (FieldValue = '') then - for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do - begin - FormItem := WebBrowser.OleObject.Document.forms.Item(I); - for j := 0 to FormItem.Length - 1 do - begin - try - if (FormItem.Item(j).Name = FieldName) or (Fieldname = '') then - if (FormItem.Item(j).Value = FieldValue) or (Fieldvalue = '') then - begin - FormItem.Item(j).checked := Value; - Result := True; - end; - except - Continue; - end; - end; - end; -end; - -procedure ClickInputImage(WebBrowser: TEmbeddedWB; ImageURL: string); -var - iDoc: IHTMLDocument2; - iDisp: IDispatch; - iColl: IHTMLElementCollection; - InputImage: htmlInputImage; - i: Integer; -begin - if WebBrowser.DocumentLoaded then - begin - if Supports(WebBrowser.Document, IHTMLDocument2, iDoc) then - begin - iDisp := iDoc.all.tags('INPUT'); - if Assigned(iDisp) then - begin - if Supports(iDisp, IHTMLElementCollection, iColl) then - begin - ImageURL := AnsiUpperCase(ImageURL); - for i := 1 to iColl.Get_length do - begin - iDisp := iColl.item(Pred(i), 0); - if Supports(iDisp, HTMLInputImage, ImageURL) then - begin - if Pos(ImageURL, AnsiUpperCase(InputImage.src)) <> 0 then - begin - InputImage.Click; - end; - end; - end; - end; - end; - end; - end; -end; - -function GetFieldValue(OleObject: Variant; FieldName: string): string; -var - I, j: Integer; - FormItem: Variant; -begin - Result := ''; - if DocumentLoaded(OleObject.Document) then - if OleObject.Document.all.tags('FORM').Length = 0 then - for I := 0 to OleObject.Document.forms.Length - 1 do - begin - FormItem := OleObject.Document.forms.Item(I); - for j := 0 to FormItem.Length - 1 do - begin - try - if FormItem.Item(j).Name = FieldName then - Result := FormItem.Item(j).Value; - except - Continue; - end; - end; - end; -end; - -procedure FillIEFormAndExcecute; -var - ShellWindow: IShellWindows; - IWeb: IWebBrowser2; - spDisp: IDispatch; - IDoc1: IHTMLDocument2; - Document: Variant; - k, m: Integer; - ovElements: OleVariant; - i: Integer; -begin - ShellWindow := CoShellWindows.Create; - // get the running instance of Internet Explorer - for k := 0 to ShellWindow.Count do - begin - spDisp := ShellWindow.Item(k); - if spDisp = nil then - Continue; - // QueryInterface determines if an interface can be used with an object - spDisp.QueryInterface(IWebBrowser2, IWeb); - - if IWeb <> nil then - begin - IWeb.Document.QueryInterface(IHTMLDocument2, iDoc1); - if iDoc1 <> nil then - begin - IWeb := ShellWindow.Item(k) as IWebBrowser2; - begin - Document := IWeb.Document; - // count forms on document and iterate through its forms - for m := 0 to Document.Forms.Length - 1 do - begin - ovElements := Document.Forms.Item(m).Elements; - // iterate through elements - for i := 0 to ovElements.Length - 1 do - begin - // when input fieldname is found, try to fill out - try - if (CompareText(ovElements.Item(i).tagName, 'INPUT') = 0) and - (CompareText(ovElements.Item(i).type, 'text') = 0) then - begin - ovElements.Item(i).Value := 'FindWindow'; - end; - except - end; - // when Submit button is found, try to click - try - if (CompareText(ovElements.Item(i).tagName, 'INPUT') = 0) and - (CompareText(ovElements.Item(i).type, 'SUBMIT') = 0) and - (ovElements.Item(i).Value = 'Search') then // Suchen for German - begin - ovElements.Item(i).Click; - end; - except - end; - end; - end; - end; - end; - end; - end; -end; - -procedure ClearHistory; -var - HistoryStg: IUrlHistoryStg2; -begin - HistoryStg := CreateComObject(CLSID_CUrlHistory) as IUrlHistoryStg2; - HistoryStg.ClearHistory; -end; - -function DeleteFirstCacheEntry(var H: THandle): DWORD; -var - T: PInternetCacheEntryInfo; - D: DWord; -begin - Result := S_OK; - H := 0; - D := 0; - FindFirstUrlCacheEntryEx(nil, 0, URLCACHE_FIND_DEFAULT_FILTER, 0, nil, @D, nil, nil, nil); - GetMem(T, D); - try - H := FindFirstUrlCacheEntryEx(nil, 0, URLCACHE_FIND_DEFAULT_FILTER, 0, T, @D, nil, nil, nil); - if (H = 0) then - Result := GetLastError - else - DeleteUrlCacheEntry(T^.lpszSourceUrlname); - finally - FreeMem(T, D) - end; -end; - -function DeleteNextCacheEntry(H: THandle): DWORD; -var - T: PInternetCacheEntryInfo; - D: DWORD; -begin - Result := S_OK; - D := 0; - FindnextUrlCacheEntryEx(H, nil, @D, nil, nil, nil); - GetMem(T, D); - try - if not FindNextUrlCacheEntryEx(H, T, @D, nil, nil, nil) then - Result := GetLastError - else - DeleteUrlCacheEntry(T^.lpszSourceUrlname); - finally - FreeMem(T, D) - end; -end; - -procedure ClearCache; -var - H: THandle; -begin - if DeleteFirstCacheEntry(H) = S_OK then - repeat - until DeleteNextCacheEntry(H) = ERROR_NO_MORE_ITEMS; - FindCloseUrlCache(H); -end; - -procedure ClearTypedUrls; -begin - with TRegistry.Create do - try - RootKey := HKEY_CURRENT_USER; - DeleteKey('Software\Microsoft\Internet Explorer\TypedURLs'); - finally - Free; - end; -end; - -function CheckOnlineStatus: Boolean; -var - dwConnectionTypes: Integer; -begin - Result := False; - try - dwConnectionTypes := INTERNET_CONNECTION_MODEM + INTERNET_CONNECTION_LAN + INTERNET_CONNECTION_PROXY; - Result := InternetGetConnectedState(@dwConnectionTypes, 0); - except - end; -end; - -procedure SetGlobalOffline(Value: Boolean); -const - INTERNET_STATE_DISCONNECTED_BY_USER = $10; - ISO_FORCE_DISCONNECTED = $1; - INTERNET_STATE_CONNECTED = $1; -var - ci: TInternetConnectedInfo; - dwSize: DWORD; -begin - dwSize := SizeOf(ci); - if Value then - begin - ci.dwConnectedState := INTERNET_STATE_DISCONNECTED_BY_USER; - ci.dwFlags := ISO_FORCE_DISCONNECTED; - end else - begin - ci.dwFlags := 0; - ci.dwConnectedState := INTERNET_STATE_CONNECTED; - end; - InternetSetOption(nil, INTERNET_OPTION_CONNECTED_STATE, @ci, dwSize); -end; - -procedure WorkOffline(); -begin - SetGlobalOffline(False); -end; - -procedure WorkOnline(); -begin - SetGlobalOffline(True); -end; - -function IsGlobalOffline: Boolean; -var - dwState: DWORD; - dwSize: DWORD; -begin - dwState := 0; - dwSize := SizeOf(dwState); - Result := False; - if (InternetQueryOption(nil, INTERNET_OPTION_CONNECTED_STATE, @dwState, dwSize)) then - Result := ((dwState and INTERNET_STATE_DISCONNECTED_BY_USER) <> 0); -end; - -function GetTLDFromHost(Host: string): string; -var - i, Dots: Integer; -begin - Dots := 0; - for i := Length(Host) downto 1 do - begin - if Copy(Host, i, 1) = '.' then - Inc(Dots); - if Dots = 2 then - break; - Result := Copy(Host, i, 1) + Result; - end; -end; - -function CheckIfInRestricredList(const Host: string; SecureSite: Boolean): Boolean; -const - Path = '\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\'; -var - TLD: string; -begin // todo: check for IPs IN RANGES - Result := False; - TLD := GetTLDFromHost(Host); - with TRegistry.Create(KEY_READ) do - begin - try - RootKey := HKEY_CURRENT_USER; - if not OpenKey(Path + 'Domains' + '\' + TLD + '\' + - Copy(Host, 1, Length(Host) - Length(TLD) - 1), False) then - begin - CloseKey; - if not OpenKey(Path + 'EscDomains' + '\' + TLD + '\' + - Copy(Host, 1, Length(Host) - Length(TLD) - 1), False) then // found on IE6, W2003 - begin - CloseKey; - Exit; - end; - end; - if SecureSite then - Result := ReadInteger('https') = 4 - else - Result := ReadInteger('http') = 4 - finally - CloseKey; - Free; - end; - end; -end; - -function CheckIfInTrustedList(const Host: string; SecureSite: Boolean): Boolean; -const - Path = '\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\'; -var - TLD: string; -begin // todo: check for IPs in RANGES - Result := False; - TLD := GetTLDFromHost(Host); - with TRegistry.Create(KEY_READ) do - begin - try - RootKey := HKEY_CURRENT_USER; - if not OpenKey(Path + 'Domains' + '\' + TLD + '\' + - Copy(Host, 1, Length(Host) - Length(TLD) - 1), False) then - begin - CloseKey; - if not OpenKey(Path + 'EscDomains' + '\' + TLD + '\' + - Copy(Host, 1, Length(Host) - Length(TLD) - 1), False) then // found on IE6, W2003 - begin - CloseKey; - Exit; - end; - end; - if SecureSite then - Result := ReadInteger('https') = 2 - else - Result := ReadInteger('http') = 2 - finally - CloseKey; - Free; - end; - end; -end; - -procedure AddToTrustedSiteList(WebBrowser: TEmbeddedWB; const URL: string); -const - REG_PATH = '\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains'; -var - Reg: TRegistryIniFile; -begin - if AnsiPos('HTTPS', AnsiUpperCase(URL)) = 0 then - MessageDlg('Only sites with https:// prefix (secured sites) can be added to the trusted sites list zone!', mtError, [mbOK], 0) - else - begin - try - Reg := TRegistryIniFile.Create(REG_PATH); - try - Reg.WriteInteger(URL, 'https', (2)); - finally - Reg.Free; - end; - except - end; - end; -end; - -procedure AddToRestrictedSiteList(WebBrowser: TEmbeddedWB; const URL: string); -const - REG_PATH = '\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains'; -var - st: string; - I: Integer; - Reg: TRegistryIniFile; -begin - I := LastDelimiter(':', Url) + 2; - st := Copy(Url, I + 1, MaxInt); - if AnsiPos('www', st) > 0 then - begin - I := 4; - st := Copy(st, I + 1, MaxInt); - end; - try - Reg := TRegistryIniFile.Create(REG_PATH); - try - Reg.WriteInteger(st, '*', (4)); - finally - Reg.Free; - end; - except - end; -end; - - -function GetZoneAttributes(const URL: string): TZoneAttributes; -var - dwZone: Cardinal; - ZoneAttr: TZoneAttributes; -var - ZoneManager: IInternetZoneManager; - SecManager: IInternetSecurityManager; -begin - ZeroMemory(@ZoneAttr, SizeOf(TZoneAttributes)); - if CoInternetCreateSecuritymanager(nil, SecManager, 0) = S_OK then - if CoInternetCreateZoneManager(nil, ZoneManager, 0) = S_OK then - begin - SecManager.MapUrlToZone(PWideChar(WideString(URL)), dwZone, 0); - ZoneManager.GetZoneAttributes(dwZone, Result); - end; -end; - -function GetZoneIconToForm(LocationURL: string; Caption, Hint: string): Boolean; -var - ZoneAttr: TZoneAttributes; - ZoneIcon: TIcon; -begin - ZoneAttr := GetZoneAttributes(LocationURL); - ZoneIcon := TIcon.Create; - try - GetZoneIcon(ZoneAttr.szIconPath, ZoneIcon); - Caption := ZoneAttr.szDisplayName; - Hint := ZoneAttr.szDisplayName; - Forms.Application.Icon := ZoneIcon; - finally - ZoneIcon.Free; - end; - Result := True; -end; - -procedure GetZoneIcon(IconPath: string; var Icon: TIcon); -var - FName, ImageName: string; - h: hInst; -begin - FName := Copy(IconPath, 1, Pos('#', IconPath) - 1); - ImageName := Copy(IconPath, Pos('#', IconPath), Length(IconPath)); - h := LoadLibrary(PChar(FName)); - try - if h <> 0 then - Icon.Handle := LoadImage(h, PChar(ImageName), IMAGE_ICON, 16, 16, 0); - finally - FreeLibrary(h); - end; -end; - -function GetUrlSecurityZone(LocationURL: string; var ZoneName, ZoneDescription: string; var Icon: TIcon): Boolean; -var - ZoneAttr: TZoneAttributes; -begin - Assert(Icon <> nil); - ZoneAttr := GetZoneAttributes(LocationURL); - try - try - GetZoneIcon(ZoneAttr.szIconPath, Icon); - ZoneName := ZoneAttr.szDisplayName; - ZoneDescription := ZoneAttr.szDescription; - Result := True; - except - Result := False; - end; - finally - end; -end; - -function GetSSLStatus(OleObject: Variant; LocationURL: string; var SSLName, SSLDescription: string): Boolean; -begin - Result := False; - if (Pos('https://', LocationURL) > 0) then - begin - if OleObject.Document.Location.Protocol = 'https:' then - begin - SSLName := 'SSL'; - SSLDescription := 'It is a secure web page.'; - Result := True; - end; - end - else - begin - SSLName := 'None'; - SSLDescription := 'The page is not secured.'; - Result := False; - end -end; - -function SetProxy(UserAgent, Address, Bypass: string): Boolean; -var - list: INTERNET_PER_CONN_OPTION_LIST; - dwBufSize: DWORD; - hInternet: Pointer; - Options: array[1..3] of INTERNET_PER_CONN_OPTION; -begin - Result := False; - dwBufSize := SizeOf(list); - list.dwSize := SizeOf(list); - list.pszConnection := nil; - list.dwOptionCount := High(Options); - - Options[1].dwOption := INTERNET_PER_CONN_FLAGS; -// Options[1].Value.dwValue := PROXY_TYPE_DIRECT or PROXY_TYPE_PROXY; //Original code - Options[1].dwValue := PROXY_TYPE_PROXY; - - Options[2].dwOption := INTERNET_PER_CONN_PROXY_SERVER; - Options[2].pszValue := PChar(Address); - - Options[3].dwOption := INTERNET_PER_CONN_PROXY_BYPASS; - Options[3].pszValue := PChar(Bypass); - ShowMessage(Bypass); - list.pOptions := @Options; - hInternet := InternetOpen(PChar(UserAgent), INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); - if hInternet <> nil then - try - Result := InternetSetOption(nil, INTERNET_OPTION_PER_CONNECTION_OPTION, @list, dwBufSize); - Result := Result and InternetSetOption(nil, INTERNET_OPTION_REFRESH, nil, 0); - finally - InternetCloseHandle(hInternet) - end; -end; - -function SetProxy(UserAgent, Address, UserName, Password: string; Port: Integer): Boolean; -var - list: INTERNET_PER_CONN_OPTION_LIST; - dwBufSize: DWORD; - hInternet, hInternetConnect: Pointer; - Options: array[1..3] of INTERNET_PER_CONN_OPTION; -begin - Result := False; - dwBufSize := SizeOf(list); - list.dwSize := SizeOf(list); - list.pszConnection := nil; - list.dwOptionCount := High(Options); - Options[1].dwOption := INTERNET_PER_CONN_FLAGS; - Options[1].dwValue := PROXY_TYPE_DIRECT or PROXY_TYPE_PROXY; - Options[2].dwOption := INTERNET_PER_CONN_PROXY_SERVER; - Options[2].pszValue := PChar(Address); - Options[3].dwOption := INTERNET_PER_CONN_PROXY_BYPASS; - Options[3].pszValue := ''; - list.pOptions := @Options; - hInternet := InternetOpen(PChar(UserAgent), INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); - if hInternet <> nil then - try - hInternetConnect := InternetConnect(hInternet, PChar(Address), Port, PChar(UserName), PChar(Password), - INTERNET_SERVICE_HTTP, 0, 0); - if hInternetConnect <> nil then - begin - Result := InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, @list, dwBufSize); - Result := Result and InternetSetOption(hInternet, INTERNET_OPTION_REFRESH, nil, 0); - end; - finally - InternetCloseHandle(hInternet) - end; -end; - - -function SetProxyFromPAC(UserAgent, PACFile: string): Boolean; -var - list: INTERNET_PER_CONN_OPTION_LIST; - dwBufSize: DWORD; - hInternet: Pointer; - Options: array[1..2] of INTERNET_PER_CONN_OPTION; -begin - Result := False; - dwBufSize := SizeOf(list); - list.dwSize := SizeOf(list); - list.pszConnection := nil; - list.dwOptionCount := High(Options); - Options[1].dwOption := INTERNET_PER_CONN_AUTOCONFIG_URL; - Options[1].pszValue := PChar(PacFile); - Options[2].dwOption := INTERNET_PER_CONN_FLAGS; - Options[2].dwValue := PROXY_TYPE_AUTO_PROXY_URL; - list.dwOptionCount := 2; - list.dwOptionError := 0; - list.pOptions := @Options; - hInternet := InternetOpen(PChar(UserAgent), INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); - if hInternet <> nil then - try - Result := InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, @list, dwBufSize); - Result := Result and InternetSetOption(hInternet, INTERNET_OPTION_REFRESH, nil, 0); - finally - InternetCloseHandle(hInternet) - end; -end; - -function RemoveProxy(): Boolean; -var - list: INTERNET_PER_CONN_OPTION_LIST; - dwBufSize: DWORD; - hInternet: Pointer; - Options: array[1..3] of INTERNET_PER_CONN_OPTION; -begin - Result := False; - dwBufSize := SizeOf(list); - list.dwSize := SizeOf(list); - list.pszConnection := nil; - list.dwOptionCount := High(Options); - Options[1].dwOption := INTERNET_PER_CONN_FLAGS; - Options[1].dwValue := PROXY_TYPE_DIRECT or PROXY_TYPE_PROXY; - Options[2].dwOption := INTERNET_PER_CONN_PROXY_SERVER; - Options[2].pszValue := PChar(''); - Options[3].dwOption := INTERNET_PER_CONN_PROXY_BYPASS; - Options[3].pszValue := ''; - list.pOptions := @Options; - hInternet := InternetOpen(PChar(''), INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0); - if hInternet <> nil then - try - InternetSetOption(hInternet, INTERNET_OPTION_PER_CONNECTION_OPTION, @list, dwBufSize); - InternetSetOption(hInternet, INTERNET_OPTION_REFRESH, nil, 0); - Result := True; - finally - InternetCloseHandle(hInternet) - end; -end; - -procedure RemoveUserAgent(UserAgent: string); -var - reg: TRegistry; -begin - Reg := TRegistry.Create; - with Reg do - begin - RootKey := HKEY_CURRENT_USER; - try - if OpenKey(USER_AGENT_PATH, False) - then - DeleteValue(UserAgent); - finally - CloseKey; - Free; - end; - end; -end; - -var - MimeFactory, NSFactory: IClassFactory; - MimeInternetSession, NSInternetSession: IInternetSession; - -function RegisterMIMEFilter(clsid: TGUID; MIME: PWideChar): HRESULT; -begin - CoGetClassObject(Clsid, CLSCTX_SERVER, nil, IClassFactory, MimeFactory); - CoInternetGetSession(0, MimeInternetSession, 0); - Result := MIMEInternetSession.RegisterMimeFilter(MimeFactory, Clsid, MIME); -end; - -function UnregisterMIMEFilter(MIME: PWideChar): HRESULT; -begin - Result := MIMEInternetSession.UnregisterMimeFilter(MIMEFactory, MIME); -end; - -function RegisterNameSpace(clsid: TGUID): HRESULT; -begin - CoGetClassObject(Clsid, CLSCTX_SERVER, nil, IClassFactory, NSFactory); - CoInternetGetSession(0, NSInternetSession, 0); - Result := NSInternetSession.RegisterNameSpace(NSFactory, Clsid, 'http', 0, nil, 0); -end; - -function UnregisterNameSpace: HRESULT; -begin - Result := NSInternetSession.UnregisterNameSpace(NSFactory, 'http'); -end; - -procedure RestoreApplicationFormSize(WebBrowser: TEmbeddedWB); -var - ws: Integer; - RegPath: string; -begin - with TRegistry.Create do - begin - RootKey := HKEY_LOCAL_MACHINE; - RegPath := 'SOFTWARE\' + Forms.Application.Title + '\FormSize'; - if OpenKey(RegPath, False) then - try - with Forms.Application.MainForm do - begin - Left := ReadInteger('Left'); - Top := ReadInteger('Top'); - Width := ReadInteger('Width'); - Height := ReadInteger('Height'); - ws := ReadInteger('WindowState'); - case ws of - 0: WindowState := wsNormal; - 1: WindowState := wsMinimized; - 2: WindowState := wsMaximized; - end; - end; - except - end; - CloseKey; - Free; - end; -end; - -procedure SaveApplicationFormSize(WebBrowser: TEmbeddedWB); -var - RegPath: string; -begin - with TRegistry.Create do - begin - RootKey := HKEY_LOCAL_MACHINE; - RegPath := 'SOFTWARE\' + Forms.Application.Title + '\FormSize'; - if OpenKey(RegPath, True) then - try - with Forms.Application.MainForm do - begin - WriteInteger('Top', Top); - WriteInteger('Left', Left); - WriteInteger('Width', Width); - WriteInteger('Height', Height); - with Forms.Application.MainForm do - case WindowState of - wsNormal: WriteInteger('WindowState', 0); - wsMinimized: WriteInteger('WindowState', 0); - wsMaximized: WriteInteger('WindowState', 0); - end; - end; - CloseKey; - Free; - except - end; - end; -end; - -procedure Wait(WebBrowser: TEmbeddedWB); -begin - WebBrowser.Wait; -end; - -function InvokeCMD(Document: IDispatch; InvokeIE: Boolean; Value1, Value2: Integer; var vaIn, vaOut: OleVariant): HRESULT; -var - CmdTarget: IOleCommandTarget; - PtrGUID: PGUID; -begin - // New(PtrGUID); - Result := S_FALSE; - if InvokeIE then - begin - New(PtrGUID); - PtrGUID^ := CLSID_WebBrowser; - end - else - PtrGuid := PGUID(nil); - if DocumentLoaded(Document) then - try - Document.QueryInterface(IOleCommandTarget, CmdTarget); - if CmdTarget <> nil then - try - Result := CmdTarget.Exec(PtrGuid, Value1, Value2, vaIn, vaOut); - finally - //CmdTarget._Release; I4214 // I4214 - end; - except - end; - Dispose(PtrGUID); -end; - -function GetIEHandle(WebBrowser: TEmbeddedWB; ClassName: string): HWND; -begin - Result := WebBrowser.GetIEHandle(WebBrowser, ClassName); -end; - -procedure ShowIEVersionInfo(Handle: THandle); -begin - SendMessage(Handle, WM_COMMAND, ID_IE_HELP_VERSIONINFO, 0); -end; - -procedure SetNewHomePage(HomePage: string); -begin - with TRegistry.Create do - begin - try - OpenKey('\Software\Microsoft\Internet Explorer\Main', True); - WriteString('Start Page', HomePage); - CloseKey; - finally - Free; - end; - end; -end; - -function GetLastVisitedPage(var LastVisitedPage: string): Boolean; -begin - Result := False; - with TRegistry.Create do - begin - LastVisitedPage := ''; - RootKey := HKEY_LOCAL_MACHINE; - try - if OpenKey('SOFTWARE\' + Forms.Application.Title + '\WebPages', False) then - begin - LastVisitedPage := ReadString('LastVisitedPage'); - CloseKey; - Result := (LastVisitedPage <> '') and (AnsiPos('.', LastVisitedPage) > 0); - end; - finally - Free; - end; - end; -end; - -function SaveLastVisitedPage(WebBrowser: TEmbeddedWB; LocationURL: string): Boolean; -var - RegPath: string; -begin - Result := False; - with TRegistry.Create do - begin - RootKey := HKEY_LOCAL_MACHINE; - RegPath := 'SOFTWARE\' + Forms.Application.Title + '\WebPages'; - if OpenKey(RegPath, False) then - try - DeleteKey('LastVisitedPage'); - except - end; - Free; - end; - with TRegIniFile.Create do - begin - RootKey := HKEY_LOCAL_MACHINE; - RegPath := 'SOFTWARE\' + Forms.Application.Title; - if OpenKey(RegPath, True) then - begin - try - WriteString('WebPages', 'LastVisitedPage', LocationURL); - Result := True; - except - end; - CloseKey; - end; - Free; - end; -end; - -procedure CreateDesktopShortcut(Handle: THandle); -begin - SendMessage(Handle, WM_COMMAND, ID_IE_FILE_SENDDESKTOPSHORTCUT, 0); -end; - -procedure DisableNavSound(bDisable: Boolean); -const - REG_PATH = 'AppEvents\Schemes\Apps\Explorer\Navigating\'; -var - Reg: TRegIniFile; -begin - Reg := TRegIniFile.Create; - with Reg do - begin - RootKey := HKEY_CURRENT_USER; - try - if bDisable then - begin - if KeyExists(REG_PATH + '.Current') then - if OpenKey(REG_PATH, True) then - MoveKey('.Current', 'Old_Current', True); - end - else - begin - if KeyExists(REG_PATH + 'Old_Current') then - if OpenKey(REG_PATH, False) then - MoveKey('Old_Current', '.Current', True); - end; - finally - CloseKey; - Free; - end; - end; -end; - -function WBExecScript( - TargetObj: IDispatch; - MethodName: string; - ParamValues: array of const): OleVariant; -var - wide: WideString; - disps: TDispIDList; - panswer: ^OleVariant; - answer: OleVariant; - dispParams: TDispParams; - aexception: TExcepInfo; - pVarArg: PVariantArgList; - res: HRESULT; - ParamCount, i: Integer; -begin - Result := False; - - // prepare for function call - ParamCount := High(ParamValues) + 1; - wide := MethodName; - pVarArg := nil; - if ParamCount > 0 then - GetMem(pVarArg, ParamCount * sizeof(TVariantArg)); - - try - // get dispid of requested method - if not Succeeded(TargetObj.GetIDsOfNames(GUID_NULL, @wide, 1, 0, @disps)) then - raise Exception.Create('This object does not support this method'); - pAnswer := @answer; - - // prepare parameters - for i := 0 to Pred(ParamCount) do - begin - case ParamValues[ParamCount - 1 - i].VType of - vtBoolean: begin - pVarArg^[i].vt := VT_BOOL; - pVarArg^[i].vbool := ParamValues[ParamCount - 1 - i].VBoolean; - end; - vtCurrency: begin - pVarArg^[i].vt := VT_CY; - pVarArg^[i].cyVal := ParamValues[ParamCount - 1 - i].VCurrency^; - end; - vtInt64: begin - pVarArg^[i].vt := VT_I8; - PInt64(@pVarArg^[i].cyVal)^ := ParamValues[ParamCount - 1 - i].VInt64^; - end; - vtInteger: begin - pVarArg^[i].vt := VT_I4; - pVarArg^[i].lVal := ParamValues[ParamCount - 1 - i].VInteger; - end; - vtExtended: begin - pVarArg^[i].vt := VT_R8; - pVarArg^[i].dblVal := ParamValues[ParamCount - 1 - i].VExtended^; - end; - vtVariant: begin - pVarArg^[i].vt := VT_BYREF or VT_VARIANT; - pVarArg^[i].pvarVal := ParamValues[ParamCount - 1 - i].VVariant; - end; - vtChar: begin - {pVarArg^[i].vt := VT_I1; - pVarArg^[i].cVal := ParamValues[ParamCount - 1 - i].VChar;} - pVarArg^[i].vt := VT_BSTR; - pVarArg^[i].bstrVal := PWideChar(WideString(ParamValues[ParamCount - 1 - i].VChar)); - end; - vtWideChar: begin - pVarArg^[i].vt := VT_BSTR; - pVarArg^[i].bstrVal := PWideChar(WideString(ParamValues[ParamCount - 1 - i].VWideChar)); - end; - vtPChar: begin - pVarArg^[i].vt := VT_BSTR; - pVarArg^[i].bstrVal := PWideChar(WideString(ParamValues[ParamCount - 1 - i].VPChar)); - end; - vtPWideChar: begin - pVarArg^[i].vt := VT_BSTR; - pVarArg^[i].bstrVal := ParamValues[ParamCount - 1 - i].VPWideChar; - end; - vtAnsiString: begin - pVarArg^[i].vt := VT_BSTR; - pVarArg^[i].bstrVal := PWideChar(WideString(PAnsiChar(ParamValues[ParamCount - 1 - i].VAnsiString))); - end; - vtWideString: begin - pVarArg^[i].vt := VT_BSTR; - pVarArg^[i].bstrVal := PWideChar(WideString(ParamValues[ParamCount - 1 - i].VWideString)); - end; - vtString: begin - pVarArg^[i].vt := VT_BSTR; - pVarArg^[i].bstrVal := PWideChar(WideString(PAnsiChar(ParamValues[ParamCount - 1 - i].VString))); - end; -{$IFDEF UNICODE} - vtUnicodeString: begin - pVarArg^[i].vt := VT_BSTR; - pVarArg^[i].bstrVal := PWideChar(UnicodeString(ParamValues[ParamCount - 1 - i].VUnicodeString)); - end; -{$ENDIF UNICODE} - else - raise Exception.CreateFmt('Unsupported type for Parameter with Index %d', [i]); - end; - end; - - // prepare dispatch parameters - dispparams.rgvarg := pVarArg; - dispparams.rgdispidNamedArgs := nil; - dispparams.cArgs := ParamCount; - dispparams.cNamedArgs := 0; - - // make IDispatch call - res := TargetObj.Invoke(disps[0], - GUID_NULL, 0, DISPATCH_METHOD or DISPATCH_PROPERTYGET, - dispParams, pAnswer, @aexception, nil); - - // check the Result - if res <> 0 then - raise Exception.CreateFmt( - 'Method call unsuccessful. %s (%s).', - [string(aexception.bstrDescription), string(aexception.bstrSource)]); - - // return the Result - Result := answer; - finally - if ParamCount > 0 then - FreeMem(pVarArg, ParamCount * sizeof(TVariantArg)); - end; -end; - -function ExecScriptEx(WebBrowser: TEmbeddedWB; MethodName: string; ParamValues: array of const): OleVariant; -var - doc: IHTMLDocument2; - dScript: IDispatch; -begin - if WebBrowser.DocumentLoaded(Doc) then - begin - dScript := doc.Script; - if Assigned(dScript) then - Result := WBExecScript(DScript, MethodName, ParamValues); - end; -end; - -procedure ExecScript(WebBrowser: TEmbeddedWB; sExpression, sLanguage: string); -// e.g. sLanguage = 'JavaScript'; -var - Doc: IHTMLDocument2; // current HTML document - HTMLWin: IHTMLWindow2; // parent window of current HTML document -begin - if WebBrowser.DocumentLoaded(Doc) then - begin - HTMLWin := Doc.parentWindow; - if Assigned(HTMLWin) then - begin - try - HTMLWin.execScript(sExpression, sLanguage); - except - end; - end; - end; -end; - -//To Add-------------------------------------------------- - -function URLFromShortcut(const dotURL: string): string; -begin - Result := ''; - with TIniFile.Create(dotURL) do - try - Result := ReadString('InternetShortcut', 'URL', ''); - finally - Free; - end; -end; - -function ExtractUrl(ShellFolder: IShellFolder; pidl: PItemIDList): string; -var - Handle: THandle; - Info: IQueryInfo; - W: PWideChar; -begin - Handle := 0; - Info := nil; - Result := ''; - ShellFolder.GetUIObjectOf(Handle, 1, pidl, IID_IQUERYINFO, nil, Pointer(Info)); - if Assigned(Info) then - begin - Info.GetInfoTip(0, w); - Result := W; - end; - Result := Trim(Copy(Result, Pos(#10, Result) + 1, length(Result))); -end; - -function StringToVarArray(const S: string): Variant; -begin - Result := Unassigned; - if S <> '' then - begin - Result := VarArrayCreate([0, Length(S) - 1], varByte); - Move(Pointer(S)^, VarArrayLock(Result)^, Length(S)); - VarArrayUnlock(Result); - end; -end; - -function VarArrayToString(const V: Variant): string; -var - i, j: Integer; -begin - if VarIsArray(V) then - for i := 0 to VarArrayHighBound(V, 1) do - begin - j := V[i]; - Result := Result + chr(j); - end; -end; - -function Encode(const S: string): string; -var - I: Integer; - Hex: string; -begin - for I := 1 to Length(S) do - case S[i] of - ' ': Result := Result + '+'; - 'A'..'Z', 'a'..'z', '*', '@', '.', '_', '-', - '0'..'9', '$', '!', '''', '(', ')': - Result := Result + s[i]; - else - begin - Hex := IntToHex(ord(S[i]), 2); - if Length(Hex) = 2 then - Result := Result + '%' + Hex - else - Result := Result + '%0' + hex; - end; - end; -end; - -function IE5_Installed: Boolean; -var - Reg: TRegistry; - S: string; -begin - Reg := TRegistry.Create; - with Reg do - begin - RootKey := HKEY_LOCAL_MACHINE; - OpenKey('Software\Microsoft\Internet Explorer', False); - if ValueExists('Version') then - S := ReadString('Version') - else - S := '0'; - CloseKey; - Free; - end; - Result := (StrToInt(S[1]) > 4); -end; - -function GetIEVersionMajor: Integer; -var - i: Integer; - s: string; -begin - s := GetIEVersion; - i := Pos('.', s); - Result := -1; - if i <> 0 then - begin - try - Result := StrToInt(Copy(s, 1, Pos('.', s) - 1)); - except - Result := -1; - end; - end; -end; - -function GetIEVersion: string; -var - SysDir: PChar; - Info: Pointer; - InfoData: Pointer; - InfoSize: LongInt; - Len: DWORD; - FName: Pchar; - SystemDir, Infotype: string; - LangPtr: Pointer; -begin - Len := MAX_PATH + 1; - GetMem(SysDir, Len); - try - if Windows.GetSystemDirectory(SysDir, Len) <> 0 then - SystemDir := SysDir; - finally - FreeMem(SysDir); - end; - Result := ''; - InfoType := 'FileVersion'; - if FileExists(SystemDir + '\ieframe.dll') then - FName := PChar(SystemDir + '\ieframe.dll') - else - FName := PChar(SystemDir + '\shdocvw.dll'); - InfoSize := GetFileVersionInfoSize(Fname, Len); - if (InfoSize > 0) then - begin - GetMem(Info, InfoSize); - try - if GetFileVersionInfo(FName, Len, InfoSize, Info) then - begin - Len := 255; - if VerQueryValue(Info, '\VarFileInfo\Translation', LangPtr, Len) then - InfoType := Format('\StringFileInfo\%0.4x%0.4x\%s'#0, [LoWord(LongInt(LangPtr^)), - HiWord(LongInt(LangPtr^)), InfoType]); - if VerQueryValue(Info, Pchar(InfoType), InfoData, len) then -{$IFDEF UNICODE} - Result := Trim(PWideChar(InfoData)); -{$ELSE} - Result := StrPas(PAnsiChar(InfoData)); -{$ENDIF UNICODE} - end; - finally - FreeMem(Info, InfoSize); - end; - end; -end; - -function ResolveUrlIni(Filename: string): string; -var - ini: TiniFile; -begin - Result := ''; - ini := TIniFile.Create(Filename); - try - Result := ini.ReadString('InternetShortcut', 'URL', ''); - finally - ini.Free; - end; -end; - -function ResolveUrlIntShCut(Filename: string): string; -var - IURL: IUniformResourceLocator; - PersistFile: IPersistfile; - FName: array[0..MAX_PATH] of WideChar; - p: PChar; -begin - if Succeeded(CoCreateInstance(CLSID_InternetShortcut, nil, CLSCTX_INPROC_SERVER, - IID_IUniformResourceLocator, IURL)) then - begin - Persistfile := IUrl as IPersistFile; - StringToWideChar(FileName, FName, MAX_PATH); - PersistFile.Load(FName, STGM_READ); - IUrl.GetUrl(@P); - Result := P; - end; -end; - -function ResolveChannel(pFolder: IShellFolder; pidl: PItemIDList; var lpszURL: string): HRESULT; -var - pidlChannel: PItemIDList; - psfDesktop: IShellFolder; - pShellLink: IShellLink; -begin - Result := S_FALSE; - if Succeeded(pFolder.GetUIObjectOf(0, 1, pidl, IShellLink, nil, Pointer(pShellLink))) - then - if Succeeded(pShellLink.GetIDList(pidlChannel)) then - if Succeeded(SHGetDesktopFolder(psfDesktop)) then - begin - lpszURL := getDisplayName(psfDesktop, PidlChannel); - Result := S_OK; - end; - DisposePidl(PidlChannel); -end; - -function ResolveLink(const Path: string): string; -var - link: IShellLink; - storage: IPersistFile; - filedata: TWin32FindData; - buf: array[0..MAX_PATH] of Char; - widepath: WideString; -begin - OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, link)); - OleCheck(link.QueryInterface(IPersistFile, storage)); - widepath := path; - Result := ''; - if Succeeded(storage.Load(@widepath[1], STGM_READ)) then - if Succeeded(link.Resolve(GetActiveWindow, SLR_NOUPDATE)) then - if Succeeded(link.GetPath(buf, SizeOf(buf), filedata, SLGP_UNCPRIORITY)) then - Result := buf; - storage := nil; - link := nil; -end; - -function IsFolder(ShellFolder: IShellFolder; ID: PItemIDList): Boolean; -var - Flags: UINT; -begin - Flags := SFGAO_FOLDER; - ShellFolder.GetAttributesOf(1, ID, Flags); - Result := SFGAO_FOLDER and Flags <> 0; -end; - -function IsChannel(ChannelShortcut: string; ShellFolder: IShellFolder; ID: PItemIDList): Boolean; -var - FileInfo: TShFileInfo; -begin - SHGetFileInfo(Pchar(ID), 0, FileInfo, SizeOf(TSHFileInfo), SHGFI_PIDL or SHGFI_TYPENAME); - Result := BOOL(fileinfo.szTypeName = ChannelShortcut); -end; - -function IsFolderEx(ChannelShortcut: string; ShellFolder: IShellFolder; ID: PItemIDList): Boolean; -var - Flags: UINT; -begin - Flags := SFGAO_FOLDER; - ShellFolder.GetAttributesOf(1, ID, Flags); - if SFGAO_FOLDER and Flags <> 0 then - Result := not isChannel(ChannelShortcut, Shellfolder, id) - else - Result := False; -end; - -function GetImageIndex(pidl: PItemIDList): Integer; -var - Flags: UINT; - FileInfo: TSHFileInfo; -begin - Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_ICON or SHGFI_SMALLICON; - if SHGetFileInfo(PChar(pidl), 0, FileInfo, SizeOf(TSHFileInfo), Flags) = 0 then - Result := -1 - else - Result := FileInfo.iIcon; -end; - -{function GetDisplayName(Folder: IShellFolder; pidl: PItemIDList): string; -var - StrRet: TStrRet; -begin - Result := ''; - Folder.GetDisplayNameOf(pidl, SHGDN_NORMAL, StrRet); - case StrRet.uType of - STRRET_CSTR: - SetString(Result, StrRet.cStr, lStrLen(StrRet.cStr)); - STRRET_OFFSET: - Result := Pchar(@pidl.mkid.abID[StrRet.uOffset - SizeOf(pidl.mkid.cb)]); - STRRET_WSTR: - Result := StrRet.pOleStr; - end; -end; } - -function GetDisplayName(Folder: IShellFolder; PIDL: PItemIDList): string; -var - StrRet: TStrRet; - P: PChar; - Flags: Integer; -begin - Result := ''; - Flags := SHGDN_NORMAL; - Folder.GetDisplayNameOf(PIDL, Flags, StrRet); - case StrRet.uType of - STRRET_CSTR: - SetString(Result, StrRet.cStr, lStrLenA(StrRet.cStr)); - STRRET_OFFSET: - begin - P := @PIDL.mkid.abID[StrRet.uOffset - SizeOf(PIDL.mkid.cb)]; - SetString(Result, P, PIDL.mkid.cb - StrRet.uOffset); - end; - STRRET_WSTR: - Result := StrRet.pOleStr; - end; -end; - -{function GetFileName(Folder: IShellFolder; pidl: PItemIDList): string; -var - StrRet: TStrRet; -begin - Folder.GetDisplayNameOf(pidl, SHGDN_FORPARSING, StrRet); - case StrRet.uType of - STRRET_CSTR: - SetString(Result, StrRet.cStr, lStrLen(StrRet.cStr)); - STRRET_OFFSET: - Result := Pchar(@pidl.mkid.abID[StrRet.uOffset - SizeOf(pidl.mkid.cb)]); - STRRET_WSTR: - Result := StrRet.pOleStr; - end; -end; } - -function GetFileName(Folder: IShellFolder; pidl: PItemIDList): string; -var - StrRet: TStrRet; - P: PChar; -begin - Result := ''; - Folder.GetDisplayNameOf(PIDL, SHGDN_FORPARSING, StrRet); - case StrRet.uType of - STRRET_CSTR: - SetString(Result, StrRet.cStr, lStrLenA(StrRet.cStr)); - STRRET_OFFSET: - begin - P := @PIDL.mkid.abID[StrRet.uOffset - SizeOf(PIDL.mkid.cb)]; - SetString(Result, P, PIDL.mkid.cb - StrRet.uOffset); - end; - STRRET_WSTR: - Result := StrRet.pOleStr; - end; -end; - -procedure DisposePIDL(ID: PItemIDList); -var - Malloc: IMalloc; -begin - if ID <> nil then - begin - OLECheck(SHGetMalloc(Malloc)); - Malloc.Free(ID); - end; -end; - -function CopyITEMID(Malloc: IMalloc; ID: PItemIDList): PItemIDList; -begin - Result := Malloc.Alloc(ID^.mkid.cb + SizeOf(ID^.mkid.cb)); - CopyMemory(Result, ID, ID^.mkid.cb + SizeOf(ID^.mkid.cb)); -end; - -function NextPIDL(IDList: PItemIDList): PItemIDList; -begin - Result := IDList; - Inc(PAnsiChar(Result), IDList^.mkid.cb); -end; - -function GetPIDLSize(IDList: PItemIDList): Integer; -begin - Result := 0; - if Assigned(IDList) then - begin - Result := SizeOf(IDList^.mkid.cb); - while IDList^.mkid.cb <> 0 do - begin - Result := Result + IDList^.mkid.cb; - IDList := NextPIDL(IDList); - end; - end; -end; - -procedure StripLastID(IDList: PItemIDList); -var - MarkerID: PItemIDList; -begin - MarkerID := IDList; - if Assigned(IDList) then - begin - while IDList.mkid.cb <> 0 do - begin - MarkerID := IDList; - IDList := NextPIDL(IDList); - end; - MarkerID.mkid.cb := 0; - end; -end; - -function CreatePIDL(Size: Integer): PItemIDList; -var - Malloc: IMalloc; - HR: HResult; -begin - Result := nil; - HR := SHGetMalloc(Malloc); - if Failed(HR) then - Exit; - try - Result := Malloc.Alloc(Size); - if Assigned(Result) then - FillChar(Result^, Size, 0); - finally - end; -end; - -function CopyPIDL(IDList: PItemIDList): PItemIDList; -var - Size: Integer; -begin - Size := GetPIDLSize(IDList); - Result := CreatePIDL(Size); - if Assigned(Result) then - CopyMemory(Result, IDList, Size); -end; - -function ConcatPIDLs(IDList1, IDList2: PItemIDList): PItemIDList; -var - cb1, cb2: Integer; -begin - if Assigned(IDList1) then - cb1 := GetPIDLSize(IDList1) - SizeOf(IDList1^.mkid.cb) - else - cb1 := 0; - cb2 := GetPIDLSize(IDList2); - Result := CreatePIDL(cb1 + cb2); - if Assigned(Result) then - begin - if Assigned(IDList1) then - CopyMemory(Result, IDList1, cb1); - CopyMemory(PAnsiChar(Result) + cb1, IDList2, cb2); - end; -end; - -function DeleteUrl(Url: PWideChar): HResult; -begin - Result := DeleteUrl(Url); -end; - -function GetMailClients: TStrings; -var - Reg: TRegistry; - ts: TStrings; - i: Integer; -begin - ts := TStringList.Create; - Reg := TRegistry.Create; - with Reg do - begin - RootKey := HKEY_CURRENT_USER; - try - OpenKey(RegMail, False); - if HasSubKeys then - begin - GetKeyNames(ts); - CloseKey; - for i := 0 to ts.Count - 1 do - OpenKey(RegMail + ts.Strings[i], False); - end; - Result := ts; - finally - CloseKey; - Free; - end; - end; -end; - - - -end. - diff --git a/windows/src/ext/embeddedwb/Source/EwbUrl.pas b/windows/src/ext/embeddedwb/Source/EwbUrl.pas deleted file mode 100644 index bd0328541e..0000000000 --- a/windows/src/ext/embeddedwb/Source/EwbUrl.pas +++ /dev/null @@ -1,833 +0,0 @@ -//*********************************************************** -// URL Tools * -// (Uniform Resource identifier) * -// * -// For Borland Delphi * -// Freeware Unit * -// by Eran Bodankin - bsalsa - bsalsa@gmail.com * -// * -// QueryUrl function is based on Indy algorithm * -// from: http://www.indyproject.org/ * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -//$Id: EwbUrl.pas,v 1 2007/02/15 21:01:42 bsalsa Exp $ -{ -QueryUrl Structure: - Protocol + :// + UserName + : + Password + HostName + Port + Path + - Document + Parameters+ Bookmark - -CrackUrl Structure: -://:@:/ - Note by MS: -(Some fields are optional.) For example, consider this URL: -http://someone:secret@www.microsoft.com:80/visualc/stuff.htm#contents - -CrackUrl parses it as follows: -* Scheme: "http" or ATL_URL_SCHEME_HTTP -* UserName: "someone" -* Password: "secret" -* HostName: "www.microsoft.com" -* PortNumber: 80 -* UrlPath: "visualc/stuff.htm" -* ExtraInfo: "#contents" - -URL_COMPONENTS = record that contains: - dwStructSize: DWORD; = size of this structure. Used in version check - lpszScheme: LPSTR; = pointer to scheme name - dwSchemeLength: DWORD; = length of scheme name - nScheme: TInternetScheme; = enumerated scheme type (if known) - lpszHostName: LPSTR; = pointer to host name - dwHostNameLength: DWORD; = length of host name - nPort: INTERNET_PORT; = converted port number - pad: WORD; = force correct allignment regardless of comp. flags - lpszUserName: LPSTR; = pointer to user name - dwUserNameLength: DWORD; = length of user name - lpszPassword: LPSTR; = pointer to password - dwPasswordLength: DWORD; = length of password - lpszUrlPath: LPSTR; = pointer to URL-path - dwUrlPathLength: DWORD; = length of URL-path - lpszExtraInfo: LPSTR; = pointer to extra information (e.g. ?foo or #foo) - dwExtraInfoLength: DWORD; = length of extra information - -URL_COMPONENTS on MSDN: -http://msdn2.microsoft.com/en-us/library/aa385420.aspx - -CoInternetQueryInfo Function fags: -http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/moniker/reference/enums/queryoption.asp -} - -unit EwbUrl; - -{$I EWB.inc} - -{$DEFINE USE_DebugString} - -interface - -uses - Dialogs, Windows, WinInet; - -const - TEMP_SIZE = 1024; - MAX_BUFFER = 256; - WebDelim = '/'; - ProtocolDelim = '://'; - QueryDelim = '?'; - BookmarkDelim = '#'; - EqualDelim = '='; - DriveDelim = ':'; //I know it's in SysUtils already but, not in D5. -type - TQueryOption = ULONG; - TCoInternetQueryInfo = function(pwzUrl: LPCWSTR; QueryOptions: TQueryOption; dwQueryFlags: DWORD; - pvBuffer: Pointer; cbBuffer: DWORD; var pcbBuffer: DWORD; dwReserved: DWORD): HResult; stdcall; - -type - TOnError = procedure(Sender: TObject; ErrorCode: integer; ErrMessage: string) of object; -type - TUrl = class - private - FDocument: string; - FProtocol: string; - FUrl: string; - FPort: Integer; - FUrlPath: string; - FHostName: string; - FExtraInfo: string; - FUserName: string; - FPassword: string; - FBookmark: string; - FOnError: TOnError; - FParameters: string; - FUrlComponent: URL_COMPONENTS; - CoInternetQueryInfo: TCoInternetQueryInfo; - function initCoInternetQueryInfo: boolean; - protected - procedure SetUrl(const Value: string); - procedure FillUrlComponent; - public - function FixUrl(Url: string): string; - function BuildUrl: WideString; - function CanonicalizeUrl(const Url: string; dwFlags: integer): WideString; - function CombineUrl(const BaseUrl, RelativaUrl: string; dwFlags: DWord): WideString; - function CompareUrl(const pwzUrl1, pwzUrl2: WideString): HResult; - function CrackUrl(const Url: string; dwFlags: DWord): WideString; - function CreateUrl(const dwFlags: DWord): WideString; - function EncodeUrl(const InputStr: string; const bQueryStr: Boolean): string; - function DecodeUrl(const InputStr: string): string; - function IsUrlValid(const Url: string): boolean; - function IsUrlCached(const Url: string): boolean; - function GetUrlSize(const Url: string): string; - function GetUrlType(const Url: string): string; - function GetUrlProtocolVersion(const Url: string): string; - function GetUrlServerDetails(const Url: string): string; - function GetUrlCharSet(const Url: string): string; - function GetUrlServer(const Url: string): string; - function GetUrlLastModified(const Url: string): string; - function GetUrlDate(const Url: string): string; - function GetUrlStatusCode(const Url: string): string; - function GetUrlEntityTag(const Url: string): string; - function QueryInfo(const Url: string; dwInfoFlag: Integer): string; - function CoInetQueryInfo(const Url: WideString; QueryOptions: Cardinal): Boolean; - function ReadFile(const URL: string; TimeOut: LongWord): string; - procedure Clear; - procedure ClearUrlComponent; - procedure QueryUrl(Url: string); - constructor Create(const Url: string); overload; - public - property Bookmark: string read FBookmark write FBookmark; - property Document: string read FDocument write FDocument; - property ExtraInfo: string read FExtraInfo write FExtraInfo; - property HostName: string read FHostName write FHostName; - property Parameters: string read FParameters write FParameters; - property Password: string read FPassword write FPassword; - property Port: Integer read FPort write FPort; - property Protocol: string read FProtocol write FProtocol; - property OnError: TOnError read FOnError write FOnError; - property Url: string read FUrl write SetUrl; - property UrlComponent: URL_COMPONENTS read FUrlComponent write FUrlComponent; - property UrlPath: string read FUrlPath write FUrlPath; - property UserName: string read FUserName write FUserName; - end; - -implementation - -uses - EwbCoreTools, SysUtils, Forms, EwbIEConst; - -constructor TUrl.Create(const Url: string); -begin - if Length(Url) > 0 then - FUrl := Url; -end; - -procedure TUrl.SetUrl(const Value: string); -begin - if Length(Value) > 0 then - QueryUrl(Value); -end; - -//============================================================================== - -procedure TUrl.Clear; -begin - FBookmark := ''; - FHostName := ''; - FProtocol := ''; - FUrlPath := ''; - FDocument := ''; - FPort := 80; - FExtraInfo := ''; - FUserName := ''; - FPassword := ''; - FParameters := ''; - ClearUrlComponent; -end; - -procedure TUrl.ClearUrlComponent; -begin - with FUrlComponent do - begin - lpszScheme := nil; - lpszHostName := nil; - lpszUrlPath := nil; - lpszUserName := nil; - lpszPassword := nil; - lpszExtraInfo := nil; - end; -end; - -procedure TUrl.FillUrlComponent; -begin - ClearUrlComponent; - with FUrlComponent do - begin - dwStructSize := SizeOf(URL_COMPONENTS); - if FProtocol <> '' then - begin - lpszScheme := PChar(FProtocol); - dwSchemeLength := Length(FProtocol); - end - else - lpszScheme := nil; - if FHostName <> '' then - begin - lpszHostName := PChar(FHostName); - dwHostNameLength := Length(PChar(FHostName)); - end - else - lpszHostName := nil; - if FUrlPath <> '' then - begin - lpszUrlPath := PChar(FUrlPath); - dwUrlPathLength := Length(FUrlPath); - end - else - lpszUrlPath := nil; - if FUserName <> '' then - begin - lpszUserName := PChar(FUserName); - dwUserNameLength := Length(FUserName); - end - else - lpszUserName := nil; - if FPassword <> '' then - begin - lpszPassword := PChar(FPassword); - dwPasswordLength := Length(FPassword); - end - else - lpszPassword := nil; - if FExtraInfo = '' then - FExtraInfo := FDocument + FParameters; - if FBookmark <> '' then - FExtraInfo := FExtraInfo + BookmarkDelim + FBookmark; - if FExtraInfo <> '' then - begin - lpszExtraInfo := PChar(FExtraInfo); - dwExtraInfoLength := Length(FExtraInfo); - end - else - lpszExtraInfo := nil; - if (FPort = 0) then - nPort := FPort; -{$IFDEF DELPHI6_UP} -{$IFNDEF DELPHIXE2_UP} - pad := 1; //force correct allignment regardless of comp. flags -{$ENDIF} -{$ENDIF} - end; -end; - -function TUrl.initCoInternetQueryInfo: boolean; -var - lh: HMODULE; -begin - Result := False; - CoInternetQueryInfo := nil; - lh := loadlibrary('URLMON.DLL'); - if lh = 0 then - Exit; - CoInternetQueryInfo := GetProcAddress(lh, 'CoInternetQueryInfo'); - Result := (@CoInternetQueryInfo) <> nil; -end; - -procedure TUrl.QueryUrl(Url: string); -var - TmpStr: string; - IdxPos, CharPos: Integer; -begin - Clear; - Url := FixUrl(Url); - FormatPath(Url); - IdxPos := AnsiPos(ProtocolDelim, Url); - if IdxPos > 0 then - begin - FProtocol := Copy(Url, 1, IdxPos - 1); - Delete(Url, 1, IdxPos + 2); - TmpStr := CutString(Url, WebDelim, True); - IdxPos := AnsiPos('@', TmpStr); - FPassword := Copy(TmpStr, 1, IdxPos - 1); - if IdxPos > 0 then - Delete(TmpStr, 1, IdxPos); - FUserName := CutString(FPassword, DriveDelim, True); - if Length(FUserName) = 0 then - begin - FPassword := ''; - end; - if (AnsiPos('[', TmpStr) > 0) and (AnsiPos(']', TmpStr) > AnsiPos('[', TmpStr)) then - begin - FHostName := CutString(TmpStr, ']'); - CutString(FHostName, '['); - CutString(TmpStr, DriveDelim); - end - else - begin - FHostName := CutString(TmpStr, DriveDelim, True); - end; - FPort := StrToIntDef(TmpStr, 80); - CharPos := AnsiPos(QueryDelim, Url); - if CharPos > 0 then - begin - IdxPos := GetPos(WebDelim, Url, CharPos); - end - else - begin - CharPos := AnsiPos(EqualDelim, Url); - if CharPos > 0 then - begin - IdxPos := GetPos(WebDelim, Url, CharPos); - end - else - begin - IdxPos := GetPos(WebDelim, Url, -1); - end; - end; - FUrlPath := WebDelim + Copy(Url, 1, IdxPos); - if CharPos > 0 then - begin - FDocument := Copy(Url, 1, CharPos - 1); - Delete(Url, 1, CharPos - 1); - FParameters := Url; - end - else - FDocument := Url; - Delete(FDocument, 1, IdxPos); - FBookmark := FDocument; - FDocument := CutString(FBookmark, BookmarkDelim); - end - else - begin - CharPos := AnsiPos(QueryDelim, Url); - if CharPos > 0 then - begin - IdxPos := GetPos(WebDelim, Url, CharPos); - end - else - begin - CharPos := AnsiPos(EqualDelim, Url); - if CharPos > 0 then - begin - IdxPos := GetPos(WebDelim, Url, CharPos); - end - else - begin - IdxPos := GetPos(WebDelim, Url, -1); - end; - end; - FUrlPath := Copy(Url, 1, IdxPos); - if CharPos > 0 then - begin - FDocument := Copy(Url, 1, CharPos - 1); - Delete(Url, 1, CharPos - 1); - FParameters := Url; - end - else - begin - FDocument := Url; - end; - Delete(FDocument, 1, IdxPos); - end; - if FBookmark = '' then - begin - FBookmark := FParameters; - FParameters := CutString(FBookmark, BookmarkDelim); - end; - FillUrlComponent; -end; - -function TUrl.CrackUrl(const Url: string; dwFlags: DWord): WideString; -var - Buffers: array[0..5, 0..MAX_BUFFER - 1] of Char; - bResult: boolean; -begin - Clear; - FUrl := FixUrl(Url); - ZeroMemory(@FUrlComponent, SizeOf(URL_COMPONENTS)); - with FUrlComponent do - begin - dwStructSize := SizeOf(URL_COMPONENTS); - dwSchemeLength := INTERNET_MAX_SCHEME_LENGTH; - lpszScheme := Buffers[0]; - dwHostNameLength := INTERNET_MAX_HOST_NAME_LENGTH; - lpszHostName := Buffers[1]; - dwUserNameLength := INTERNET_MAX_USER_NAME_LENGTH; - lpszUserName := Buffers[2]; - dwPasswordLength := INTERNET_MAX_PASSWORD_LENGTH; - lpszPassword := Buffers[3]; - dwUrlPathLength := INTERNET_MAX_PATH_LENGTH; - lpszUrlPath := Buffers[4]; - dwExtraInfoLength := INTERNET_MAX_URL_LENGTH; - lpszExtraInfo := Buffers[5]; - end; - bResult := InternetCrackURL(PChar(Url), 0, dwFlags, FUrlComponent); - if bResult then - begin - with FUrlComponent do - begin - FHostName := lpszHostName; - FProtocol := lpszScheme; - FUrlPath := lpszUrlPath; - FPort := nPort; - FExtraInfo := lpszExtraInfo; - FUserName := lpszUserName; - FPassword := lpszPassword; - Result := Url; - end; - end - else - begin - Clear; - if Assigned(FOnError) then - FOnError(Self, GetLastError, SysErrorMessage(GetLastError)); -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Result := ''; - end; -end; - -function TUrl.CombineUrl(const BaseUrl, RelativaUrl: string; dwFlags: DWord): WideString; -var - Buffer: array[0..255] of Char; - Size: DWORD; - bResult: boolean; -begin - Size := SizeOf(Buffer); - bResult := InternetCombineUrl(PChar(BaseUrl), PChar(RelativaUrl), - Buffer, Size, dwFlags); - if bResult then - begin - Result := Buffer; - FUrl := Result; - end - else - begin - if Assigned(FOnError) then - FOnError(Self, GetLastError, SysErrorMessage(GetLastError)); -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Result := ''; - end; - -end; - -function TUrl.CanonicalizeUrl(const Url: string; dwFlags: integer): WideString; -var - Buffer: array[0..255] of Char; - Size: DWORD; - bResult: boolean; -begin - Size := SizeOf(Buffer); - bResult := InternetCanonicalizeUrl(PChar(Url), Buffer, Size, dwFlags); - if bResult then - begin - Result := Buffer; - FUrl := Result; - end - else - begin - if Assigned(FOnError) then - FOnError(Self, GetLastError, SysErrorMessage(GetLastError)); -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Result := ''; - end; -end; - -function TUrl.CreateUrl(const dwFlags: DWord): WideString; -var - Size: DWORD; - Buffer: array[0..511] of Char; - bResult: boolean; -begin - FillUrlComponent; - Size := FUrlComponent.dwStructSize; - bResult := InternetCreateUrl(FUrlComponent, dwFlags, Buffer, Size); - if bResult then - begin - Result := Buffer; - FUrl := Result; - end - else - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - if Assigned(FOnError) then - FOnError(Self, GetLastError, SysErrorMessage(GetLastError)); - end; -end; - -function TUrl.FixUrl(Url: string): string; - - function AnsiEndsStr(const ASubText, AText: string): Boolean; - var - SubTextLocation: Integer; - begin - SubTextLocation := Length(AText) - Length(ASubText) + 1; - if (SubTextLocation > 0) and (ASubText <> '') and - (ByteType(AText, SubTextLocation) <> mbTrailByte) then - Result := AnsiStrComp((PChar(ASubText)), Pointer(@AText[SubTextLocation])) = 0 - else - Result := False; - end; -var - DotPos, ipos: Integer; -begin - Result := Url; - if not AnsiEndsStr('/', Url) then - begin - ipos := LastDelimiter('/', Url); - DotPos := LastDelimiter('.', Url); - if DotPos < ipos then - Result := Url + '/'; - end; -end; - -function TUrl.EncodeURL(const InputStr: string; const bQueryStr: Boolean): string; -var - Idx: Integer; -begin - Result := ''; - for Idx := 1 to Length(InputStr) do - begin - case InputStr[Idx] of - 'A'..'Z', 'a'..'z', '0'..'9', '-', '_', '.': - Result := Result + InputStr[Idx]; - ' ': - if bQueryStr then - Result := Result + '+' - else - Result := Result + '%20'; - else - Result := Result + '%' + SysUtils.IntToHex(Ord(InputStr[Idx]), 2); - end; - end; -end; - -function TUrl.DecodeUrl(const InputStr: string): string; -var - Idx: Integer; - Hex: string; - Code: Integer; -begin - Result := ''; - Idx := 1; - while Idx <= Length(InputStr) do - begin - case InputStr[Idx] of - '%': - begin - if Idx <= Length(InputStr) - 2 then - begin - Hex := InputStr[Idx + 1] + InputStr[Idx + 2]; - Code := SysUtils.StrToIntDef('$' + Hex, -1); - Inc(Idx, 2); - end - else - Code := -1; - if Code = -1 then - raise SysUtils.EConvertError.Create('Invalid hex digit in URL'); - Result := Result + Chr(Code); - end; - '+': - Result := Result + ' ' - else - Result := Result + InputStr[Idx]; - end; - Inc(Idx); - end; -end; - -function TUrl.BuildUrl: WideString; -begin - FillUrlComponent; - if (FProtocol = '') or (FHostName = '') then - begin - if Assigned(FOnError) then - FOnError(Self, 0, 'Can not Create Url. Protocol or HostName are not valid!'); -{$IFDEF USE_DebugString} - OutputDebugString('Can not Create Url. Protocol or HostName are not valid!'); -{$ENDIF} - Exit; - end; - Result := FProtocol + ProtocolDelim; - if (FUserName <> '') then - begin - Result := Result + FUserName; - if FPassword <> '' then - begin - Result := Result + DriveDelim + FPassword; - end; - Result := Result + '@'; - end; - Result := Result + FHostName; - if (FPort <> 0) and (FPort <> 80) then - begin - Result := Result + DriveDelim + IntToStr(FPort); - end; - Result := Result + FUrlPath + FDocument + FParameters; - if (FBookmark <> '') then - begin - Result := Result + BookmarkDelim + FBookmark; - end; -end; - -function TUrl.CompareUrl(const pwzUrl1, pwzUrl2: WideString): HResult; -begin - if (pwzUrl1 = '') or (pwzUrl2 = '') then - begin -{$IFDEF USE_DebugString} - OutputDebugString('Can not Compare Url. pwzUrl1 or pwzUrl2 are empty!'); -{$ENDIF} - if Assigned(FOnError) then - FOnError(Self, 0, 'Can not Compare Url. pwzUrl1 or pwzUrl2 are empty!'); - end; - Result := AnsiCompareText(pwzUrl1, pwzUrl2); -end; - -function TUrl.CoInetQueryInfo(const Url: WideString; QueryOptions: Cardinal): boolean; -var - pcbBuffer: DWORD; - dwCached: DWORD; -begin - if not initCoInternetQueryInfo then - begin - Result := False; - Exit; - end; - pcbBuffer := SizeOf(dwCached); - if CoInternetQueryInfo(PWideChar(Url), QueryOptions, 0, @dwCached, - SizeOf(dwCached), pcbBuffer, 0) <> S_OK then - begin - if Assigned(FOnError) then - FOnError(Self, GetLastError, SysErrorMessage(GetLastError)); -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - end; - Result := dwCached <> 0; -end; - -function TUrl.QueryInfo(const Url: string; dwInfoFlag: Integer): string; -var - hInet: HINTERNET; - hConnect: HINTERNET; - infoBuffer: array[0..512] of char; - dummy: DWORD; - bufLen: DWORD; - ok: LongBool; -begin - hInet := InternetOpen(PChar(Forms.Application.Title), - INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, nil, nil, 0); - hConnect := InternetOpenUrl(hInet, PChar(Url), nil, 0, INTERNET_FLAG_NO_UI, 0); - if not Assigned(hConnect) then - begin - if Assigned(FOnError) then - FOnError(Self, GetLastError, SysErrorMessage(GetLastError)); -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Result := ''; - end - else - begin - dummy := 0; - bufLen := Length(infoBuffer); - ok := HttpQueryInfo(hConnect, dwInfoFlag, @infoBuffer[0], bufLen, dummy); - if ok then - Result := infoBuffer - else - Result := ''; - InternetCloseHandle(hConnect); - end; - InternetCloseHandle(hInet); -end; - -function TUrl.ReadFile(const URL: string; TimeOut: LongWord): string; -var - hInet: HInternet; - hConnect: HInternet; - infoBuffer: array[0..TEMP_SIZE - 1] of Char; - iRead, iTimeOut: DWORD; - strRead: string; -begin - strRead := ''; - hInet := InternetOpen(PChar(Forms.Application.Title), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, INTERNET_FLAG_NO_CACHE_WRITE); - if Assigned(hInet) then - begin - InternetQueryOption(hInet, INTERNET_OPTION_CONNECT_TIMEOUT, @iTimeOut, iRead); - iTimeOut := TimeOut; - InternetSetOption(hInet, INTERNET_OPTION_CONNECT_TIMEOUT, @iTimeOut, iRead); - try - hConnect := InternetOpenURL(hInet, PChar(Url), nil, 0, 0, 0); - if Assigned(hConnect) then - try - repeat - FillChar(infoBuffer, SizeOf(infoBuffer), #0); - InternetReadFile(hConnect, @infoBuffer, sizeof(infoBuffer), iRead); - strRead := strRead + string(infoBuffer); - until iRead < TEMP_SIZE; - finally - InternetCloseHandle(hConnect); - end - else - begin - if Assigned(FOnError) then - FOnError(Self, GetLastError, SysErrorMessage(GetLastError)); -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Result := ''; - end; - finally - InternetCloseHandle(hInet); - end; - Result := strRead; - end - else - begin - if Assigned(FOnError) then - FOnError(Self, GetLastError, SysErrorMessage(GetLastError)); -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Result := ''; - end; -end; - -function TUrl.IsUrlValid(const Url: string): boolean; -var - Reply: string; -begin - Reply := QueryInfo(Url, HTTP_QUERY_STATUS_CODE); - if (Reply = '200') or (Reply = '401') then - Result := True - else - Result := False; -end; - -function TUrl.GetUrlSize(const Url: string): string; -begin - Result := QueryInfo(Url, HTTP_QUERY_CONTENT_LENGTH); -end; - -function TUrl.GetUrlType(const Url: string): string; -begin - Result := QueryInfo(Url, HTTP_QUERY_CONTENT_TYPE); -end; - -function TUrl.GetUrlDate(const Url: string): string; -begin - Result := QueryInfo(Url, HTTP_QUERY_DATE); -end; - -function TUrl.GetUrlLastModified(const Url: string): string; -begin - Result := QueryInfo(Url, HTTP_QUERY_LAST_MODIFIED); -end; - -function TUrl.GetUrlStatusCode(const Url: string): string; -begin - Result := QueryInfo(Url, HTTP_QUERY_STATUS_CODE); -end; - -function TUrl.GetUrlServer(const Url: string): string; -begin - Result := QueryInfo(Url, HTTP_QUERY_SERVER); -end; - -function TUrl.GetUrlEntityTag(const Url: string): string; -begin - Result := QueryInfo(Url, HTTP_QUERY_ETAG); -end; - -function TUrl.GetUrlCharset(const Url: string): string; -begin - Result := QueryInfo(Url, HTTP_QUERY_ACCEPT_CHARSET); -end; - -function TUrl.GetUrlServerDetails(const Url: string): string; -begin - Result := QueryInfo(Url, HTTP_QUERY_RAW_HEADERS_CRLF); -end; - -function TUrl.GetUrlProtocolVersion(const Url: string): string; -begin - Result := QueryInfo(Url, HTTP_QUERY_VERSION); -end; - -function TUrl.IsUrlCached(const Url: string): boolean; -begin - Result := CoInetQueryInfo(Url, QUERY_IS_CACHED); -end; -{=====================================================================================} - -end. diff --git a/windows/src/ext/embeddedwb/Source/ExportFavorites.pas b/windows/src/ext/embeddedwb/Source/ExportFavorites.pas deleted file mode 100644 index 32644407f9..0000000000 --- a/windows/src/ext/embeddedwb/Source/ExportFavorites.pas +++ /dev/null @@ -1,481 +0,0 @@ -//*********************************************************** -// TExportFavorites * -// * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@gmail.com * -// * -// Based on ideas by: Troels Jakobsen * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: ExportFavorites.pas,v 1.3 2006/11/26 05:55:31 bsalsa Exp $ - -unit ExportFavorites; - -{$I EWB.inc} - -interface - -{$IFDEF DELPHI6_UP} -{$WARN UNIT_PLATFORM OFF} -{$ENDIF} - -uses - Classes, Dialogs, ShellApi, IniFiles, SHDocVw_EWB, ComCtrls, EwbCore, EmbeddedWB; - -const - ERROR_FAV_TARGET_PATH_INVALID = 101; - ERROR_FAV_TARGET_FILENAME_INVALID = 102; - ERROR_FAV_TARGET_FILENAME_EXTINVALID = 103; - ERROR_FAV_FAVORITES_PATH_INVALID = 104; - ERROR_FAV_NO_SUCCESS_MESSAGE = 105; - -type - PUrlRec = ^TUrlRec; - TUrlRec = record - Rep: string; - UrlName: string; - UrlPath: string; - Level: Integer; - end; - - TOnErrorEvent = procedure(Sender: TObject; const ErrorMsg: string; const ErrorCode: Byte) of object; - TOnMessageEvent = procedure(Sender: TObject; const Msg: string) of object; - - TLocalization = class(TPersistent) - private - FTargetPathInvalid: string; - FTargetFileNameInvalid: string; - FTargetFileNameExtInvalid: string; - FFavoritesPathInvalid: string; - FNoSuccessMessage: string; - FChangeItMessage: string; - FHTMLTitle: string; - published - property TargetPathInvalid: string read FTargetPathInvalid write FTargetPathInvalid; - property TargetFileNameInvalid: string read FTargetFileNameInvalid write FTargetFileNameInvalid; - property TargetFileNameExtInvalid: string read FTargetFileNameExtInvalid write FTargetFileNameExtInvalid; - property FavoritesPathInvalid: string read FFavoritesPathInvalid write FFavoritesPathInvalid; - property NoSuccessMessage: string read FNoSuccessMessage write FNoSuccessMessage; - property ChangeItMessage: string read FChangeItMessage write FChangeItMessage; - property HTMLTitle: string read FHTMLTitle write FHTMLTitle; - end; - - TExportFavorite = class(TComponent) - private - FAbout: string; - FBmkList: TStringList; - FLocalization: TLocalization; - FavFolder: string; - FavList: TList; - FEnabled: Boolean; - FExploreFavFileFolder: Boolean; - FFavoritesPath: string; - FNavigateOnComplete: Boolean; - FShowSuccessMessage: Boolean; - FStatusBar: TStatusBar; - FSuccessMessage: TStrings; - FTargetFileName: string; - FTargetPath: string; - FEmbeddedWB: TCustomEmbeddedWB; - FOnError: TOnErrorEvent; - FOnSuccess: TOnMessageEvent; - procedure GetFavoritesFolder; - function MakeBookMarkFile: Boolean; - procedure SearchURL(Folder: string; Level: Integer); - procedure SetAbout(Value: string); - procedure SetSuccessMessage(Value: TStrings); - procedure TraverseFavList(Idx, PrevIdx: Integer); - function Check: Boolean; - protected - procedure MakeBookmark(UrlRec: PUrlRec); - procedure MakeDocumentBottom; - procedure MakeDocumentTop; - procedure MakeHeaderBottom(UrlRec: PUrlRec); - procedure MakeHeaderTop(UrlRec: PUrlRec); - public - SuccessFlag: Boolean; - NavigatePath: string; - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function ExportFavorites: Boolean; - published - property About: string read FAbout write SetAbout; - property Enabled: boolean read FEnabled write FEnabled default True; - property ExploreFavFileOnComplete: Boolean read FExploreFavFileFolder write FExploreFavFileFolder default False; - property FavoritesPath: string read FFavoritesPath write FFavoritesPath; - property NavigateOnComplete: Boolean read FNavigateOnComplete write FNavigateOnComplete default False; - property StatusBar: TStatusBar read FStatusBar write FStatusBar; - property SuccessMessage: TStrings read FSuccessMessage write SetSuccessMessage; - property TargetFileName: string read FTargetFileName write FTargetFileName; - property TargetPath: string read FTargetPath write FTargetPath; - property EmbeddedWB: TCustomEmbeddedWB read FEmbeddedWB write FEmbeddedWB; - property Localization: TLocalization read FLocalization write FLocalization; - property OnError: TOnErrorEvent read FOnError write FOnError; - property OnSuccess: TOnMessageEvent read FOnSuccess write FOnSuccess; - end; - -implementation - -uses - Windows, SysUtils, {$IFDEF DELPHI5}EwbCoreTools, {$ENDIF}Registry, Forms, EwbIEConst; - -constructor TExportFavorite.Create; -begin - FFavoritesPath := 'Auto'; - FTargetPath := 'C:\'; - FTargetFileName := 'newbook.htm'; - - FLocalization := TLocalization.Create; - FLocalization.TargetPathInvalid := 'The target path is invalid.'; - FLocalization.TargetFileNameInvalid := 'The target file name is invalid.'; - FLocalization.TargetFileNameExtInvalid := 'The target file name extension is invalid. It must be "*.htm".'; - FLocalization.FavoritesPathInvalid := 'The Favorites Path is invalid.'; - FLocalization.NoSuccessMessage := 'You must enter a SuccessMessage or turn off messages.'; - FLocalization.ChangeItMessage := 'Please change it.'; - FLocalization.HTMLTitle := 'Exported Favorites'; - - FSuccessMessage := TStringList.Create; - FSuccessMessage.Add('Your favorites have been exported successfully!'); - FSuccessMessage.Text := 'Your favorites have been successfully exported to %s'; - FShowSuccessMessage := True; - FAbout := 'TExportFavorites by bsalsa. ' + WEB_SITE; - - FEnabled := True; - SuccessFlag := False; - FExploreFavFileFolder := False; - FNavigateOnComplete := False; - inherited; -end; - -destructor TExportFavorite.Destroy; -begin - FLocalization.Free; - FSuccessMessage.Free; - inherited Destroy; -end; - -procedure TExportFavorite.SetSuccessMessage(Value: TStrings); -begin - FSuccessMessage.Assign(Value) -end; - -procedure TExportFavorite.GetFavoritesFolder; -var - Reg: TRegistry; -begin - Reg := TRegistry.Create; - try - Reg.RootKey := HKEY_CURRENT_USER; - Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False); - FavFolder := Reg.ReadString('Favorites'); - finally - Reg.Free; - end; -end; - -procedure TExportFavorite.SearchURL(Folder: string; Level: Integer); -var - Found: Integer; - SearchRec: TSearchRec; - UrlFile: TIniFile; - UrlRec: PUrlRec; -begin - Found := FindFirst(Folder + '\*.*', faAnyFile, SearchRec); - while Found = 0 do - begin - if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then - if (SearchRec.Attr and faDirectory > 0) then - begin -{$WARNINGS OFF} - if not (SearchRec.Attr and faSysFile > 0) then - begin - UrlRec := New(PUrlRec); - UrlRec.Rep := Copy(Folder + '\' + SearchRec.Name, Length(FavFolder) + 2, Length(Folder + '\' + SearchRec.Name)); - UrlRec.UrlName := ''; - UrlRec.UrlPath := ''; - UrlRec.Level := Level; - FavList.Add(UrlRec); - end; - SearchURL(Folder + '\' + SearchRec.Name, Level + 1); // Recursion -{$WARNINGS ON} - end - else - begin - if UpperCase(ExtractFileExt(SearchRec.Name)) = '.URL' then - begin - UrlRec := New(PUrlRec); - UrlRec.Rep := Copy(Folder, Length(FavFolder) + 2, Length(Folder)); - UrlRec.UrlName := Copy(SearchRec.Name, 0, Length(SearchRec.Name) - 3); - UrlFile := TIniFile.Create(Folder + '\' + SearchRec.Name); - UrlRec.UrlPath := UrlFile.ReadString('InternetShortcut', 'URL', 'no path'); - UrlRec.Level := Level; - UrlFile.Free; - FavList.Add(UrlRec); - end; - end; - Found := FindNext(SearchRec); - end; - -end; - -procedure TExportFavorite.SetAbout(Value: string); -begin - Exit; -end; - -procedure TExportFavorite.TraverseFavList(Idx, PrevIdx: Integer); -var - UrlRec, PrevUrlRec: PUrlRec; - X: Integer; -begin - if Idx < FavList.Count then - begin - UrlRec := FavList[Idx]; - if PrevIdx = -1 then - PrevUrlRec := nil - else - PrevUrlRec := FavList[PrevIdx]; - if UrlRec.UrlName = '' then - begin - if PrevUrlRec <> nil then - begin - X := PrevUrlRec.Level; - while UrlRec.Level <= X do - begin - MakeHeaderBottom(PrevUrlRec); - Dec(PrevUrlRec.Level); - Dec(X); - end; - end; - MakeHeaderTop(UrlRec); - PrevIdx := Idx; - end - else - MakeBookmark(UrlRec); - TraverseFavList(Idx + 1, PrevIdx); - end; -end; - -procedure TExportFavorite.MakeDocumentTop; -begin - FBmkList.Add(''); - FBmkList.Add(''); - FBmkList.Add('' + FLocalization.HTMLTitle + ''); - FBmkList.Add('

' + FLocalization.HTMLTitle + '

'); - FBmkList.Add(''); - FBmkList.Add('

'); -end; - -procedure TExportFavorite.MakeDocumentBottom; -begin - FBmkList.Add(''); - FBmkList.Add('

'); -end; - -procedure TExportFavorite.MakeHeaderTop(UrlRec: PUrlRec); -var - I, Idx: Integer; - S: string; - A: array[0..255] of Char; -begin - FillChar(A, SizeOf(A), 0); - Idx := 1; - for I := 1 to Length(UrlRec.Rep) do - if UrlRec.Rep[I] = '\' then - Idx := I + 1; - for I := Idx to Length(UrlRec.Rep) do - A[I - Idx] := UrlRec.Rep[I]; - FBmkList.Add(''); - for I := 1 to UrlRec.Level do - S := S + ' '; - FBmkList.Add(S + '

' + A + '

'); - FBmkList.Add(S + '

'); -end; - -procedure TExportFavorite.MakeHeaderBottom(UrlRec: PUrlRec); -var - I: Integer; - S: string; -begin - for I := 1 to UrlRec.Level do - S := S + ' '; - FBmkList.Add(S + '

'); - FBmkList.Add(''); -end; - -procedure TExportFavorite.MakeBookmark(UrlRec: PUrlRec); -var - I: Integer; - S: string; -begin - Delete(UrlRec.UrlName, Length(UrlRec.UrlName), 1); - for I := 1 to UrlRec.Level do - S := S + ' '; - FBmkList.Add(S + '

' + - UrlRec.UrlName + '' + '
'); -end; - -function SortFunction(Item1, Item2: Pointer): Integer; -var - Rec1, Rec2: PUrlRec; -begin - Result := 0; - Rec1 := Item1; - Rec2 := Item2; - if Rec1.Rep < Rec2.Rep then - Result := -1; - if Rec1.Rep > Rec2.Rep then - Result := 1; - if Rec1.Rep = Rec2.Rep then - begin - if Rec1.UrlName < Rec2.UrlName then - Result := -1; - if Rec1.UrlName > Rec2.UrlName then - Result := 1; - if Rec1.UrlName = Rec2.UrlName then - Result := 0; - end; -end; - -function TExportFavorite.Check: Boolean; -begin - Result := (FTargetPath <> '') and DirectoryExists(FTargetPath); - if Result then - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.TargetPathInvalid + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_TARGET_PATH_INVALID); - Result := False; - end - else if FTargetFileName = '' then - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.TargetFileNameInvalid + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_TARGET_FILENAME_INVALID); - Result := False; - end - else if not (Pos('htm', FTargetFileName) > 1) then - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.TargetFileNameExtInvalid + #10#13 + FLocalization.ChangeItMessage + '"*.htm"', ERROR_FAV_TARGET_FILENAME_EXTINVALID); - Result := False; - end - else if Trim(FFavoritesPath) = '' then - begin - if Assigned(FOnError) then - FOnError(Self, Localization.FavoritesPathInvalid + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_FAVORITES_PATH_INVALID); - Result := False; - end - else if Trim(FSuccessMessage.Text) = '' then - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.NoSuccessMessage + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_NO_SUCCESS_MESSAGE); - Result := False; - end; -end; - -function TExportFavorite.MakeBookMarkFile: Boolean; -begin - Result := Check; - if Result then - begin -{$IFDEF DELPHI6_UP}{$WARN SYMBOL_PLATFORM OFF}{$ENDIF} - NavigatePath := IncludeTrailingBackslash(FTargetPath) + FTargetFileName; -{$IFDEF DELPHI6_UP}{$WARN SYMBOL_PLATFORM ON}{$ENDIF} - FBmkList := TStringList.Create; - try - MakeDocumentTop; - TraverseFavList(0, -1); - MakeDocumentBottom; - try - FBmkList.SaveToFile(NavigatePath); - except on EFCreateError do - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.TargetFileNameInvalid + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_TARGET_FILENAME_INVALID); - Result := False; - end; - end; - finally - FBmkList.Free; - end; - if Result then - begin - if Assigned(FOnSuccess) then - FOnSuccess(Self, Format(SuccessMessage.Text, [NavigatePath])); - if Assigned(FStatusBar) then - FStatusBar.SimpleText := Format(SuccessMessage.Text, [NavigatePath]); - end; - end; -end; - -function TExportFavorite.ExportFavorites: Boolean; -var - I: Integer; -begin - Result := Enabled; - if Result then - begin - FavList := TList.Create; - try - if FFavoritesPath = 'Auto' then - GetFavoritesFolder - else - FavFolder := FFavoritesPath; - if (Trim(FavFolder) <> '') then - begin - SearchURL(FavFolder, 1); - FavList.Sort(SortFunction); - Result := MakeBookMarkFile; - if Result then - begin - SuccessFlag := True; - if FExploreFavFileFolder then - ShellExecute(Forms.Application.Handle, 'explore', PChar(FTargetPath), nil, - nil, SW_SHOWNORMAL); - if FNavigateOnComplete then - if Assigned(FEmbeddedWB) then - FEmbeddedWB.Navigate(FTargetPath + FTargetFileName) - else - MessageDlg(ASS_MESS, mtError, [MbOk], 0); - end; - end - else if Assigned(FOnError) then - FOnError(Self, Localization.FavoritesPathInvalid, ERROR_FAV_FAVORITES_PATH_INVALID); - - for I := 0 to FavList.Count - 1 do - Dispose(PUrlRec(FavList[I])); - finally - FavList.Free; - end; - end; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Source/FavMenu.pas b/windows/src/ext/embeddedwb/Source/FavMenu.pas deleted file mode 100644 index a9e1a4e172..0000000000 --- a/windows/src/ext/embeddedwb/Source/FavMenu.pas +++ /dev/null @@ -1,621 +0,0 @@ -//****************************************************************** -// * -// TFavoritesMenu * * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Per Linds Larsen * -// per.lindsoe@larsen.dk * -// * -// * -// Contributions: * -// Pete Morris (MrPMorris@Hotmail.com) * -// Rob Young (rob@coolfocus.com) * -// Eran Bodankin (bsalsa) bsalsa@gmail.com * -// - D2005 update & added new functions * -// * -// Updated versions: * -// http://www.bsalsa.com * -//****************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: FavMenu.pas,v 1.4 2006/12/05 11:56:31 bsalsa Exp $ - -unit FavMenu; - -interface - -{$I EWB.inc} - -uses - - Classes, Controls, Forms, ShlObj, Imglist, Menus, EmbeddedWB; - - -type - PItem = ^TItem; - TItem = record - ID: PItemIDList; - FullID: PItemIDList; - Folder: Boolean; - Created: Boolean; - end; - -type - TErrorEvent = procedure(const ErrorCode: integer; ErrMessage: string) of object; - TFavOptions = (foAddFavorites, foOrganizeFavorites, foImportFavorites, - foExportFavorites, foImportExportWizard); - TOptions = set of TFavOptions; - TOnAddFavoritesEvent = procedure(const EmbeddedWB: TEmbeddedWB; Title, URL: WideString; Success: integer) of object; - TOnUrlSelectedEvent = procedure(Sender: TObject; Url: string) of object; - TResolveUrl = (IntShCut, IniFile); - - TLocalization = class(TPersistent) - private - FAddFavorites: string; - FOrganizeFavorites: string; - FImportFavorites: string; - FExportFavorites: string; - FImportExportWizard: string; - FEmptyCaption: string; - published - property AddFavorites: string read FAddFavorites write FAddFavorites; - property OrganizeFavorites: string read FOrganizeFavorites write FOrganizeFavorites; - property ImportFavorites: string read FImportFavorites write FImportFavorites; - property ExportFavorites: string read FExportFavorites write FExportFavorites; - property ImportExportWizard: string read FImportExportWizard write FImportExportWizard; - property EmptyCaption: string read FEmptyCaption write FEmptyCaption; - end; - - TFavoritesMenu = class(TComponent) - private - { Private declarations } - Counter: Integer; - Desktop: IShellFolder; - FavoritesMenu: TMenuItem; - FavoritesPidl: PItemIDList; - FAbout: string; - FCaption: string; - FChannels: Boolean; - FEmbeddedWB: TEmbeddedWB; - FEnabled: Boolean; - FOnError: TErrorEvent; - FLocalization: TLocalization; - FMainMenu: TMainmenu; - FMaxWidth: Integer; - FMenuPosition: Integer; - FOnAddFavorites: TOnAddFavoritesEvent; - FOnUrlSelected: TOnUrlSelectedEvent; - FOptions: TOptions; - FResolveUrl: TResolveUrl; - Images: TImageList; - Item: PItem; - List: TList; - procedure AddFavorite(Sender: TObject); - procedure FavoritesExport(Sender: TObject); - procedure FavoritesImport(Sender: TObject); - procedure OrganizeFavorite(Sender: TObject); - procedure ImportExportWizard(Sender: TObject); - procedure SetAbout(Value: string); - protected - { Protected declarations } - procedure AddDummy(menu: TMenuItem); - procedure AddEmpty(menu: TMenuItem); - procedure AddMenu(Menu: TMenuItem; FullID: PItemIDList); - procedure BuildOptionsMenu; - procedure DestroyList; - procedure MenuClick(Sender: TObject); - public - { Public declarations } - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure CreateMenu(mi: TMenuItem); overload; - procedure CreateMenu; overload; - procedure ReBuildMenu; - published - { Published declarations } - property About: string read fAbout write SetAbout; - property Caption: string read FCaption write FCaption; - property Channels: Boolean read FChannels write FChannels default False; - property EmbeddedWB: TEmbeddedWB read FEmbeddedWB write FEmbeddedWB; - property Enabled: Boolean read FEnabled write FEnabled default True; - property Localization: TLocalization read FLocalization write FLocalization; - property MainMenu: TMainMenu read FMainMenu write FMainMenu; - property MaxWidth: Integer read FMaxWidth write FMaxWidth default 50; - property MenuPosition: Integer read FMenuPosition write FMenuPosition default 1; - property OnAddFavorites: TOnAddFavoritesEvent read FOnAddFavorites write FOnAddFavorites; - property OnError: TErrorEvent read FOnError write FOnError; - property OnURLSelected: TOnURLSelectedEvent read FOnURLSelected write FOnURLSelected; - property Options: TOptions read FOptions write FOptions default [foAddFavorites, foOrganizeFavorites]; - property ResolveUrl: TResolveUrl read FResolveUrl write FResolveUrl default IntShCut; - end; - -implementation - -uses - ImportFavorites, ExportFavorites, Windows, ShellApi, SysUtils, SHDocVw_EWB, ActiveX, Registry, EwbTools; - -var - ChannelShortcut, InternetShortcut: string; - Folder: IShellFolder; - Procedur: procedure(Handle: THandle; Path: PAnsiChar); stdcall; - -function SortFunc(Item1, Item2: Pointer): Integer; -begin - Result := SmallInt(Folder.CompareIDs(0, PItem(Item1).ID, PItem(Item2).ID)); -end; - -function CheckShortcut(Shortcut, Flag: Integer): Boolean; -begin - Result := ShortCut and Flag <> 0; -end; - -function GetImageIndex(PIDL: PItemIDList; Large, Open: Boolean): Integer; -var - FileInfo: TSHFileInfo; - Flags: Integer; -begin - Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX; - if Open then - Flags := Flags or SHGFI_OPENICON; - if Large then - Flags := Flags or SHGFI_LARGEICON - else - Flags := Flags or SHGFI_SMALLICON; - SHGetFileInfo(PChar(PIDL), 0, FileInfo, SizeOf(FileInfo), Flags); - Result := FileInfo.iIcon; -end; - -constructor TFavoritesMenu.Create; -begin - FAbout := 'TFavoritesMenu - from http://www.bsalsa.com/'; - FEnabled := True; - FLocalization := TLocalization.Create; - FLocalization.FAddFavorites := 'Add to Favorites'; - FLocalization.FOrganizeFavorites := 'Organize Favorites'; - FLocalization.FImportFavorites := 'Import Favorites'; - FLocalization.FExportFavorites := 'Export Favorites'; - FLocalization.FImportExportWizard := 'Import Export Favorites Wizard'; - FLocalization.FEmptyCaption := ' (empty) '; - SHGetDesktopFolder(Desktop); - SHGetSpecialFolderLocation(Application.Handle, CSIDL_FAVORITES, FavoritesPIDL); - FCaption := ExtractFileName(GetFileName(Desktop, FavoritesPidl)); - with TRegistry.Create do - begin - RootKey := HKEY_CLASSES_ROOT; - if OpenKey('ChannelShortcut', FALSE) - then - ChannelShortCut := ReadString('') - else - ChannelShortCut := 'Channel Shortcut'; - Closekey; - if OpenKey('InternetShortcut', FALSE) - then - InternetShortCut := ReadString('') - else - InternetShortCut := 'Internet Shortcut'; - Closekey; - Free; - end; - FMaxWidth := 50; - FMenuPosition := 1; - FOptions := [foAddFavorites, foOrganizeFavorites]; - inherited; -end; - -procedure TFavoritesMenu.DestroyList; -var - I: Integer; -begin - if list <> nil then - begin - for I := 0 to List.Count - 1 do - begin - DisposePIDL(PItem(List[I]).ID); - DisposePIDL(PItem(List[i]).FULLID); - Dispose(PItem(List[i])); - end; - Counter := 0; - List.Free; - end; -end; - -destructor TFavoritesMenu.Destroy; -begin - FLocalization.Free; - DestroyList; - inherited; -end; - -procedure TFavoritesMenu.SetAbout(Value: string); -begin - Exit; -end; - -procedure TFavoritesMenu.FavoritesExport(Sender: TObject); -var - ExportFav: TExportFavorite; -begin - if FEnabled and Assigned(FEmbeddedWB) then - begin - if not FEmbeddedWB.DocumentLoaded then - FEmbeddedWB.AssignEmptyDocument(True); - ExportFAv := TExportFavorite.Create(Self); - with ExportFav do - begin - ExportFavorites; - Free; - end; - end; -end; - -procedure TFavoritesMenu.FavoritesImport(Sender: TObject); -var - ImportFav: TImportFavorite; -begin - if FEnabled and Assigned(FEmbeddedWB) then - begin - if not FEmbeddedWB.DocumentLoaded then - FEmbeddedWB.AssignEmptyDocument(True); - ImportFav := TImportFavorite.Create(Self); - with ImportFav do - begin - ImportFavorites; - Free; - end; - end; -end; - -procedure TFavoritesMenu.ImportExportWizard(Sender: TObject); -begin - if FEnabled and Assigned(FEmbeddedWB) then - begin - if not FEmbeddedWB.DocumentLoaded then - begin - FEmbeddedWB.AssignEmptyDocument; - FEmbeddedWB.Wait; - end; - FEmbeddedWB.ShowImportExportFavoritesAndCookies; - end; -end; - -procedure TFavoritesMenu.OrganizeFavorite(Sender: Tobject); -var - SpecialPath: array[0..MAX_PATH] of Char; - H: Cardinal; - bGet: Boolean; -begin - if FEnabled then - begin - H := LoadLibrary('shdocvw.dll'); - if H <> 0 then - begin - Procedur := GetProcAddress(H, 'DoOrganizeFavDlg'); - if Assigned(Procedur) then - begin - bGet := SHGetPathFromIDList(FavoritesPidl, SpecialPath); - if (not bGet) and Assigned(FOnError) then - FOnError(E_FAIL, 'Failed while getting path for the favorites!'); - Procedur(Application.Handle, PAnsiChar(AnsiString(SpecialPath))); - end; - end - else - if Assigned(FOnError) then - FOnError(E_FAIL, 'Failed while loading library!'); - FreeLibrary(H); - RebuildMenu; - end; -end; - -procedure TFavoritesMenu.AddFavorite(Sender: TObject); -const - CLSID_ShellUIHelper: TGUID = '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}'; -var - ShellUIHelper: ISHellUIHelper; - Url, Title: OleVariant; - Success: integer; -begin - if (FEnabled) and (Assigned(FEmbeddedWB)) then - begin - Title := FEmbeddedWB.LocationName; - Url := FEmbeddedWB.LocationUrl; - if (Url <> EmptyStr) and (url <> 'about:blank') then - begin - Success := CoCreateInstance(CLSID_SHELLUIHELPER, nil, CLSCTX_INPROC_SERVER, - IID_IShellUIHelper, ShellUIHelper); - if Assigned(FOnAddFavorites) then - FOnAddFavorites(FEmbeddedWB, Title, URL, Success); - if (Success <> S_OK) and (Assigned(FOnError)) then - FOnError(Success, 'Failed while adding to favorites!'); - ShellUIHelper.AddFavorite(Url, Title); - RebuildMenu; - end - else - if (Assigned(FOnError)) then - FOnError(E_FAIL, 'Failed - Empty URL string!'); - end - else - if (Assigned(FOnError)) then - FOnError(E_FAIL, 'Please assign a browser'); -end; - -procedure TFavoritesMenu.AddDummy(menu: TMenuItem); -var - Dummy: TMenuItem; -begin - Dummy := TMenuItem.Create(self); - Dummy.Visible := False; - Menu.Add(Dummy); -end; - -procedure TFavoritesMenu.AddEmpty(menu: TMenuItem); -var - Empty: TMenuItem; -begin - Empty := TMenuItem.Create(self); - Empty.Caption := FLocalization.FEmptyCaption; - Empty.Enabled := False; - Menu.add(Empty); -end; - -procedure TFavoritesMenu.AddMenu(Menu: TMenuItem; FullID: PItemIDList); -var - MenuItem: TMenuItem; - EnumList: IEnumIDList; - ID: PItemIDList; - NumIDs: LongWord; - TempList: TList; - I, J: Integer; - sfi: TShFileInfo; - Success: integer; -begin - if FEnabled then - begin - TempList := TList.Create; - try - Success := Desktop.BindToObject(FullID, nil, IID_IShellFolder, Pointer(Folder)); - if (Success <> S_OK) and (Assigned(FOnError)) then - FOnError(Success, 'Failed to retrieve an IShellFolder object for a subfolder!'); - Success := Folder.EnumObjects(Application.Handle, SHCONTF_FOLDERS or SHCONTF_NONFOLDERS, - EnumList); - if (Success <> S_OK) and (Assigned(FOnError)) then - FOnError(Success, 'Failed Enum objects!'); - while EnumList.Next(1, ID, NumIDs) = S_OK do - begin - if not Channels and IsChannel(ChannelShortCut, Folder, ID) then - Continue; - Item := New(PItem); - Item.ID := CopyPidl(ID); - Item.FullID := ConcatPIDLs(FullID, ID); - Item.Folder := IsFolderEx(ChannelShortCut, Folder, ID); - Item.Created := False; - TempList.Add(Item); - end; - DisposePidl(ID); - if TempList.Count = 0 then - begin - AddEmpty(Menu); - Exit; - end; - TempList.Sort(SortFunc); - for I := 0 to TempList.Count - 1 do - begin - List.Add(PItem(Templist[I])); - MenuItem := TMenuItem.Create(Menu); - with MenuItem do - begin - SubMenuImages := Images; - OnClick := MenuClick; - Tag := Counter; - Caption := GetDisplayName(Folder, PItem(TempList[I])^.ID); - end; - if Length(MenuItem.Caption) > FMaxWidth then - MenuItem.Caption := Copy(MenuItem.Caption, 1, FMaxWidth) + '...'; - J := GetImageIndex(PItem(TempList[I])^.FullID, False, False); - if (J = 3) and (CheckShortCut(SFGAO_LINK, SFGAO_DISPLAYATTRMASK)) then - begin - ShGetFileInfo('*.htm', FILE_ATTRIBUTE_NORMAL, sfi, SizeOf(sfi), - SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON); - J := sfi.iIcon; - DestroyIcon(sfi.iIcon); - end; - MenuItem.ImageIndex := J; - Menu.Add(MenuItem); - Inc(Counter); - if PItem(TempList[I])^.Folder then - AddDummy(MenuItem); - end; - - finally - TempList.Free; - end; - end; -end; - -procedure TFavoritesMenu.MenuClick(Sender: TObject); -var - Folder: IShellFOlder; - FileInfo: TSHFileInfo; - ID: PItemIDList; - X: OleVariant; - Url: string; - Success: integer; -begin - if FEnabled and not (csDesigning in ComponentState) then - begin - if PItem(list[(Sender as TMenuItem).Tag])^.folder then - begin - if not PItem(list[(Sender as TMenuItem).Tag]).Created then - begin - AddMenu(Sender as TMenuItem, - PItem(list[(Sender as TMenuItem).Tag])^.FULLID); - PItem(list[(Sender as TMenuItem).Tag]).Created := TRUE; - end; - end - else - begin - id := CopyPidl(PItem(list[(Sender as TMenuItem).Tag])^.FULLID); - StripLastID(ID); - Success := Desktop.BindToObject(ID, nil, IID_IShellFolder, Pointer(Folder)); - if (Success <> S_OK) and (Assigned(FOnError)) then - FOnError(Success, 'Failed to retrieve an IShellFolder object for a subfolder!'); - SHGetFileInfo(PChar(PItem(list[(Sender as TMenuItem).Tag])^.ID), 0, - FileInfo, SizeOf(TSHFileInfo), SHGFI_PIDL or SHGFI_TYPENAME or SHGFI_ATTRIBUTES); - if Fileinfo.szTypeName = ChannelShortcut then - ResolveChannel(Folder, PItem(list[(Sender as TMenuItem).Tag])^.ID, Url) - else - if fileinfo.szTypeName = InternetShortCut then - begin - if FResolveUrl = IntshCut then - Url := ResolveUrlIntShCut(GetFileName(Folder, - PItem(list[(Sender as TMenuItem).Tag])^.ID)) - else - Url := ResolveUrlIni(GetFileName(Folder, - PItem(list[(Sender as TMenuItem).Tag])^.ID)); - end - else - Url := Resolvelink(GetFileName(Folder, - PItem(list[(Sender as TMenuItem).Tag])^.ID)); - DisposePidl(ID); - if Assigned(FOnUrlSelected) then - FOnUrlSelected(Sender, Url) - else - if Assigned(FEmbeddedWB) then - FEmbeddedWB.Navigate(Url, X, X, X, X); - end; - end; -end; - -procedure TFavoritesMenu.BuildOptionsMenu; -begin - if FEnabled and not (csDesigning in ComponentState) then - begin - if foAddFavorites in FOptions then - FavoritesMenu.Add(NewItem(FLocalization.FAddFavorites, 0, - False, True, addfavorite, 0, '')); - if foOrganizeFavorites in FOptions then - FavoritesMenu.Add(NewItem(FLocalization.FOrganizeFavorites, 0, - False, True, organizefavorite, 0, '')); - if FavoritesMenu.Count > 0 then - FavoritesMenu.Add(NewItem('-', 0, False, True, nil, 0, '')); - if IE5_Installed then - begin - if foImportFavorites in FOptions then - FavoritesMenu.Add(NewItem(FLocalization.FImportFavorites, 0, - False, True, FavoritesImport, 0, '')); - if foExportFavorites in FOptions then - FavoritesMenu.Add(NewItem(FLocalization.FExportFavorites, 0, - False, True, FavoritesExport, 0, '')); - if foImportExportWizard in FOptions then - FavoritesMenu.Add(NewItem(FLocalization.FImportExportWizard, 0, - False, True, ImportExportWizard, 0, '')); - - if (foImportFavorites in FOptions) or (foExportFavorites in FOptions) then - FavoritesMenu.Add(NewItem('-', 0, False, True, nil, 0, '')); - end; - end; -end; - -procedure TFavoritesMenu.CreateMenu; -var - FileInfo: TSHFileInfo; -begin - if FEnabled and not (csDesigning in ComponentState) then - begin - Counter := 0; - List := TList.Create; - Images := TImagelist.Create(self); - Images.ShareImages := True; - Images.DrawingStyle := dsTransparent; - Images.Handle := SHGetFileInfo(Pchar(FavoritesPidl), 0, FileInfo, - SizeOf(FileInfo), SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); - FavoritesMenu := TMenuitem.Create(self); - with FavoritesMenu do - begin - SubMenuImages := Images; - Caption := FCaption; - end; - if Assigned(FMainMenu) then - begin - if FMenuPosition > FMainMenu.Items.Count + 1 then - FMenuPosition := FMainMenu.Items.Count + 1 - else - if FMenuPosition <= 0 then - FMenuPosition := 1; - FMainMenu.Items.Insert(FMenuPosition - 1, FavoritesMenu); - end; - BuildOptionsMenu; - AddMenu(FavoritesMenu, FavoritesPidl); - end; -end; - -procedure TFavoritesMenu.CreateMenu(mi: TMenuItem); -var - FileInfo: TSHFileInfo; -begin - if FEnabled and not (csDesigning in ComponentState) then - begin - Counter := 0; - List := TList.Create; - Images := TImagelist.Create(self); - with images do - begin - ShareImages := True; - DrawingStyle := dsTransparent; - Handle := SHGetFileInfo(Pchar(FavoritesPidl), 0, FileInfo, - SizeOf(FileInfo), SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); - end; - if mi = nil then - begin - FavoritesMenu := TMenuitem.Create(self); - FavoritesMenu.Caption := FCaption; - end - else - FavoritesMenu := mi; - FavoritesMenu.SubmenuImages := Images; - if Assigned(FMainMenu) then - begin - if FMenuPosition > FMainMenu.Items.Count + 1 then - FMenuPosition := FMainMenu.Items.Count + 1 - else - if FMenuPosition <= 0 then - FMenuPosition := 1; - FMainMenu.Items.Insert(FMenuPosition - 1, FavoritesMenu); - end; - BuildOptionsMenu; - AddMenu(FavoritesMenu, FavoritesPidl); - end; -end; - -procedure TFavoritesMenu.ReBuildMenu; -begin - DestroyList; - List := TList.Create; - FavoritesMenu.Clear; - BuildOptionsMenu; - AddMenu(FavoritesMenu, FavoritesPidl); -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Source/FavoritesListView.pas b/windows/src/ext/embeddedwb/Source/FavoritesListView.pas deleted file mode 100644 index f667a4a052..0000000000 --- a/windows/src/ext/embeddedwb/Source/FavoritesListView.pas +++ /dev/null @@ -1,630 +0,0 @@ -//****************************************************************** -// * -// TFavoritesListView * * -// Freeware Component * -// For Delphi 5 to XE * -// by * -// Per Linds Larsen * -// and Eran Bodankin * -// * -// Updated versions: * -// http://www.bsalsa.com * -//****************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -unit FavoritesListView; - -interface - -{$I EWB.inc} - -uses - Windows, SysUtils, Classes, Controls, Forms, Registry, ComCtrls, ShlObj, - Messages, MenuContext, ShellApi, ActiveX, ComObj, CommCtrl, EmbeddedWB; - -type - IShellCommandVerb = interface - ['{7D2A7245-2376-4D33-8008-A130935A2E8B}'] - procedure ExecuteCommand(Verb: string; var Handled: boolean); - procedure CommandCompleted(Verb: string; Succeeded: boolean); - end; - -type - PItem = ^TItem; - TItem = record - FullID, ID: PItemIDList; - Empty: Boolean; - DisplayName: string; - ImageIndex: Integer; - end; - - TResolveUrl = (IntShCut, IniFile); - TOnUrlSelectedEvent = procedure(Sender: TObject; Url: string) of object; - TPopupMenuMode = (pmm_System, pmm_PopupMenu); - TCustomFavoritesListView = class(TCustomListView, IShellCommandVerb) - private - { Private declarations } - FEmbeddedWB: TEmbeddedWB; - FPIDL: PItemIDList; - Desktop: IShellFolder; - List: TList; - Level: Integer; - FResolveUrl: TResolveUrl; - FChannels: Boolean; - FavoritesPIDL: PItemIDList; - FOnUrlSelected: TOnUrlSelectedEvent; - FSavePath: string; - FPopupMenuMode: TPopupMenuMode; - procedure EditText; - procedure ClearIDList; - - protected - { Protected declarations } - procedure SetPath(ID: PItemIDList); - function ShellItem(Index: Integer): PItem; - function CustomDrawSubItem(Item: TListItem; SubItem: Integer; - State: TCustomDrawState; Stage: TCustomDrawStage): Boolean; override; - function OwnerDataFetch(Item: TListItem; Request: TItemRequest): Boolean; - override; - function OwnerDataFind(Find: TItemFind; const FindString: string; - const FindPosition: TPoint; FindData: Pointer; StartIndex: Integer; - Direction: TSearchDirection; Wrap: Boolean): Integer; override; - function OwnerDataHint(StartIndex, EndIndex: Integer): Boolean; override; - procedure KeyDown(var Key: Word; Shift: TShiftState); override; - procedure DblClick; override; - procedure PopupSystemContextMenu(Item: TListItem; Point: TPoint); - procedure WMContextMenu(var Message: TMessage); message WM_Contextmenu; - public - constructor Create(AOwner: TComponent); override; - procedure Loaded; override; - destructor Destroy; override; - procedure LevelUp; - procedure RefreshList; - //IShellCommandVerb - procedure CommandCompleted(Verb: string; Succeeded: Boolean); - procedure ExecuteCommand(Verb: string; var Handled: Boolean); - // property Folders[Index: Integer]: TShellFolder read GetFolder; default; - { Public declarations } - published - { Published declarations } - property ResolveUrl: TResolveUrl read FResolveUrl write FResolveUrl; - property Channels: Boolean read FChannels write FChannels; - property OnURLSelected: TOnURLSelectedEvent read FOnURLSelected write - FOnURLSelected; - property EmbeddedWB: TEmbeddedWB read FEmbeddedWB write FEmbeddedWB; - property PopupMenuMode: TPopupMenuMode read FPopupMenuMode write - FPopupMenuMode; - end; - - TFavoritesListView = class(TCustomFavoritesListView) - published - property Align; - property AllocBy; - property Anchors; - property BiDiMode; - property BorderStyle; - property BorderWidth; - property Color; - property Constraints; - property Ctl3D; - property Enabled; - property Font; - property FlatScrollBars; - property HideSelection; - property HotTrack; - property HotTrackStyles; - property HoverTime; - property Items; - property ParentBiDiMode; - property ParentColor default False; - property ParentFont; - property ParentShowHint; - property PopupMenu; - property ShowColumnHeaders; - property TabOrder; - property TabStop default True; - property Visible; - property OnAdvancedCustomDraw; - property OnAdvancedCustomDrawItem; - property OnAdvancedCustomDrawSubItem; - property OnChange; - property OnChanging; - property OnClick; - property OnColumnClick; - property OnColumnDragged; - property OnColumnRightClick; - property OnCompare; - property OnContextPopup; - property OnCustomDraw; - property OnCustomDrawItem; - property OnCustomDrawSubItem; - property OnData; - property OnDataFind; - property OnDataHint; - property OnDataStateChange; - property OnDblClick; - property OnDeletion; - property OnDrawItem; - property OnEdited; - property OnEditing; - property OnEndDock; - property OnEndDrag; - property OnEnter; - property OnExit; - property OnGetImageIndex; - property OnGetSubItemImage; - property OnDragDrop; - property OnDragOver; - property OnInfoTip; - property OnInsert; - property OnKeyDown; - property OnKeyPress; - property OnKeyUp; - property OnMouseDown; - property OnMouseMove; - property OnMouseUp; - property OnResize; - property OnSelectItem; - property OnStartDock; - property OnStartDrag; - end; - -var - Folder: IShellFolder; - ChannelShortcut, InternetShortcut: string; - -implementation - -uses - EwbTools; - -procedure TCustomFavoritesListView.RefreshList; -begin - SetPath(FPIDL); -end; - -function ListSortFunc(Item1, Item2: Pointer): Integer; -begin - Result := SmallInt(Folder.CompareIDs(0, PItem(Item1).ID, PItem(Item2).ID)); -end; - -procedure TCustomFavoritesListView.SetPath(ID: PItemIDList); -var - PID: PItemIDList; - EnumList: IEnumIDList; - NumIDs: LongWord; - Item: PItem; - NewShellFolder: IShellFolder; -begin - OLECheck(Desktop.BindToObject(ID, nil, IID_IShellFolder, - Pointer(NewShellFolder))); - Items.BeginUpdate; - try - OleCheck(NewShellFolder.EnumObjects(Application.Handle, - SHCONTF_FOLDERS or SHCONTF_NONFOLDERS, EnumList)); - Folder := NewShellFolder; - ClearIDList; - while EnumList.Next(1, PID, NumIDs) = S_OK do - begin - if not Channels and IsChannel(ChannelShortcut, Folder, PID) then - Continue; - Item := New(PItem); - Item.ID := PID; - Item.DisplayName := GetDisplayName(Folder, PID); - Item.Empty := True; - List.Add(Item); - end; - List.Sort(ListSortFunc); - Items.Count := List.Count; - Repaint; - FPIDL := ID; - if Items.Count > 0 then - begin - Selected := Items[0]; - Selected.Focused := True; - Selected.MakeVisible(False); - if (Pos('Links', Caption) > 0) or (pos('Imported', Text) > 0) then - Selected.ImageIndex := -1 - end; - finally - Items.EndUpdate; - end; -end; - -function TCustomFavoritesListView.ShellItem(Index: Integer): PItem; -begin - Result := PItem(List[Index]); -end; - -procedure TCustomFavoritesListView.ClearIDList; -var - I: Integer; -begin - for I := 0 to List.Count - 1 do - begin - DisposePIDL(ShellItem(I).ID); - Dispose(ShellItem(I)); - end; - List.Clear; -end; - -{ TCustomFavoritesListView } - -function TCustomFavoritesListView.CustomDrawSubItem(Item: TListItem; SubItem: - Integer; - State: TCustomDrawState; Stage: TCustomDrawStage): Boolean; -begin - if (Stage = cdPrePaint) and (SubItem <> 0) then - Canvas.Font.Color := GetSysColor(COLOR_WINDOWTEXT); - Result := inherited CustomDrawSubItem(Item, SubItem, State, Stage); -end; - -procedure TCustomFavoritesListView.DblClick; -var - FileInfo: TSHFileInfo; - x: Olevariant; - url: string; - RootPIDL, ID: PItemIDList; -begin - inherited; - if Selected <> nil then - begin - ID := ShellItem(Selected.Index).ID; - if not IsFolderEx(ChannelShortcut, Folder, ID) then - begin - SHGetFileInfo(PChar(ID), 0, FileInfo, SizeOf(TSHFileInfo), - SHGFI_PIDL or SHGFI_TYPENAME or SHGFI_ATTRIBUTES); - if FileInfo.szTypeName = ChannelShortcut then - ResolveChannel(Folder, ID, Url) - else if FileInfo.szTypeName = InternetShortcut then - begin - if FResolveUrl = IntshCut then - Url := ResolveUrlIntShCut(GetFileName(Folder, ID)) - else - Url := ResolveUrlIni(GetFileName(Folder, ID)); - end - else - Url := Resolvelink(GetFileName(Folder, ID)); - if Assigned(FOnUrlSelected) then - FOnUrlSelected(self, Url) - else if Assigned(EmbeddedWB) then - EmbeddedWB.Navigate(Url, X, X, X, X); - end - else - begin - RootPIDL := ConcatPIDLs(FPIDL, ID); - SetPath(RootPIDL); - Inc(Level); - end; - end; -end; - -procedure TCustomFavoritesListView.LevelUp; -var - Temp: PItemIDList; -begin - Temp := CopyPIDL(FPIDL); - if Assigned(Temp) then - StripLastID(Temp); - if (Temp.mkid.cb <> 0) and (Level > 0) then - begin - Dec(Level); - SetPath(Temp) - end - else - Beep; -end; - -procedure TCustomFavoritesListView.KeyDown(var Key: Word; Shift: TShiftState); -begin - inherited; - case Key of - VK_RETURN: DblClick; - VK_BACK, VK_HOME, VK_ESCAPE: LevelUp; - end; -end; - -procedure TCustomFavoritesListView.Loaded; -var - FileInfo: TSHFileInfo; - ImageListHandle: THandle; -begin - inherited; - OLECheck(SHGetSpecialFolderLocation(Application.Handle, CSIDL_Favorites, - FavoritesPIDL)); - OLECheck(SHGetDesktopFolder(Desktop)); - Folder := Desktop; - if list = nil then - List := TList.Create; - ImageListHandle := SHGetFileInfo(PChar(FavoritesPidl), 0, FileInfo, - SizeOf(FileInfo), - SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); - SendMessage(Handle, LVM_SETIMAGELIST, LVSIL_SMALL, ImageListHandle); - SetPath(FavoritesPIDL); - Level := 0; -end; - -constructor TCustomFavoritesListView.Create(AOwner: TComponent); -var - FavoritesColumn: TListColumn; -begin - inherited; - ReadOnly := True; - Height := 300; - Width := 200; - ShowHint := True; - ColumnClick := False; - OwnerData := True; - ViewStyle := vsReport; - with TRegistry.Create do - begin - RootKey := HKEY_CLASSES_ROOT; - if OpenKey('ChannelShortcut', FALSE) then - ChannelShortCut := ReadString('') - else - ChannelShortcut := 'Channel Shortcut'; - Closekey; - if OpenKey('InternetShortcut', FALSE) then - InternetShortCut := ReadString('') - else - InternetShortcut := 'Internet Shortcut'; - Closekey; - Free; - end; - FavoritesColumn := Columns.Add; - SHGetDesktopFolder(Desktop); - SHGetSpecialFolderLocation(Application.Handle, CSIDL_FAVORITES, - FavoritesPIDL); - FavoritesColumn.Caption := ExtractfileName(GetFileName(Desktop, - FavoritesPidl)); - FavoritesColumn.Width := Width - 4; -end; - -destructor TCustomFavoritesListView.Destroy; -begin - if List <> nil then - begin - ClearIDList; - List.Free; - end; - inherited; -end; - -function TCustomFavoritesListView.OwnerDataFetch(Item: TListItem; - Request: TItemRequest): Boolean; -begin - inherited OwnerDataFetch(Item, Request); - Result := True; - if (Item.Index <= List.Count) then - with ShellItem(Item.Index)^ do - begin - Item.Caption := DisplayName; - Item.ImageIndex := ImageIndex; - end; -end; - -function TCustomFavoritesListView.OwnerDataFind(Find: TItemFind; - const FindString: string; const FindPosition: TPoint; FindData: Pointer; - StartIndex: Integer; Direction: TSearchDirection; - Wrap: Boolean): Integer; -var - I: Integer; - Found: Boolean; -begin - Result := inherited OwnerDataFind(Find, FindString, FindPosition, FindData, - StartIndex, Direction, Wrap); - I := StartIndex; - if (Find = ifExactString) or (Find = ifPartialString) then - begin - repeat - if (I = List.Count - 1) then - begin - if Wrap then - I := 0 - else - Exit; - end; - Found := Pos(UpperCase(FindString), UpperCase(ShellItem(I)^.DisplayName)) - = 1; - Inc(I); - until Found or (I = StartIndex); - if Found then - Result := I - 1; - end; -end; - -function CheckShortcut(Shortcut, Flag: Integer): Boolean; -begin - Result := Shortcut and Flag <> 0; -end; - -function GetImageIndex(PIDL: PItemIDList; Large, Open: Boolean): Integer; -var - FileInfo: TSHFileInfo; - Flags: Integer; -begin - Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX; - if Open then - Flags := Flags or SHGFI_OPENICON; - if Large then - Flags := Flags or SHGFI_LARGEICON - else - Flags := Flags or SHGFI_SMALLICON; - SHGetFileInfo(PChar(PIDL), 0, FileInfo, SizeOf(FileInfo), Flags); - Result := FileInfo.iIcon; -end; - -function TCustomFavoritesListView.OwnerDataHint(StartIndex, EndIndex: Integer): - Boolean; -var - FileInfo: TSHFileInfo; - Flags: Integer; - I, J: Integer; - sfi: TShFileInfo; -begin - Result := inherited OwnerDataHint(StartIndex, EndIndex); - if (StartIndex > List.Count) or (EndIndex > List.Count) then - Exit; - - for I := StartIndex to EndIndex do - begin - if ShellItem(I)^.Empty then - with ShellItem(I)^ do - begin - FullID := ConcatPIDLs(FPIDL, ID); - FillChar(FileInfo, SizeOf(FileInfo), #0); - Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_ICON or - SHGFI_SMALLICON; - SHGetFileInfo(PChar(FullID), 0, FileInfo, SizeOf(FileInfo), Flags); - J := GetImageIndex(FullID, False, False); - ImageIndex := J; - if (J = 3) and (CheckShortcut(SFGAO_LINK, SFGAO_DISPLAYATTRMASK)) - then - begin - ShGetFileInfo('*.htm', FILE_ATTRIBUTE_NORMAL, sfi, sizeOf(sfi), - SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or - SHGFI_SMALLICON); - J := sfi.iIcon; - DestroyIcon(sfi.iIcon); - end; - ImageIndex := j; - Empty := False; - end; - end; - Result := True; -end; - -procedure TCustomFavoritesListView.EditText; -begin - if Selected <> nil then - ListView_EditLabel(Handle, Selected.Index); -end; - -{ IShellCommandVerb} - -procedure TCustomFavoritesListView.CommandCompleted(Verb: string; - Succeeded: Boolean); -const - SCmdVerbOpen = 'open'; - SCmdVerbDelete = 'delete'; - SCmdVerbPaste = 'paste'; -begin - if Succeeded then - begin - if SameText(Verb, SCmdVerbDelete) or SameText(Verb, SCmdVerbPaste) then - Refresh - else if SameText(Verb, SCmdVerbOpen) then - SetCurrentDirectory(PChar(FSavePath)); - end; -end; - -procedure TCustomFavoritesListView.ExecuteCommand(Verb: string; - var Handled: Boolean); -const - SCmdVerbOpen = 'open'; - SCmdVerbRename = 'rename'; -var - szPath: array[0..MAX_PATH] of char; -begin - if SameText(Verb, SCmdVerbRename) then - begin - EditText; - Handled := True; - end - else if SameText(Verb, SCmdVerbOpen) then - begin - GetCurrentDirectory(MAX_PATH, szPath); - FSavePath := StrPas(szPath); - StrPCopy(szPath, ExtractFilePath(ShellItem(Selected.Index).DisplayName)); - // StrPCopy(szPath, ExtractFilePath(Folders[Selected.Index].PathName)); - SetCurrentDirectory(szPath); - end; -end; - -procedure TCustomFavoritesListView.PopupSystemContextMenu(Item: TListItem; - Point: TPoint); -var - ISF: IShellFolder; - Pidl: PItemIdList; -begin - if Assigned(Item) then - begin - ISF := Folder; - if Assigned(ISF) then - begin - Pidl := ShellItem(Selected.Index).ID; - try - MenuContext.DisplayContextMenu(ISF, Pidl, 0, Application.Handle, - Point, 1); - except - end; - end; - end; -end; - -procedure TCustomFavoritesListView.WMContextMenu(var Message: TMessage); -var - P: TPoint; - R: TRect; - NewSel, SelItem: TListItem; -begin - NewSel := nil; - if Message.lparam = -1 then - begin - SelItem := TListItem(Selected); - if not Assigned(SelItem) then - Exit; - R := SelItem.DisplayRect(drSelectBounds); - P.X := R.Left + ((R.Right - R.Left) div 2); - P.Y := R.Top - ((R.Top - R.Bottom) div 2); - end - else - begin - P.X := LOWORD(Message.lParam); - P.Y := HIWORD(Message.lParam); - P := ScreenToClient(P); - SelItem := Selected //TListItem(GetPosition(P.X,P.Y)); - end; - P := ClientToScreen(P); - if (Selected <> SelItem) then - NewSel := TListItem(Selected); - Selected := SelItem; - if PopupMenuMode = pmm_PopupMenu then - begin - if Assigned(PopupMenu) then - begin - PopupMenu.PopupComponent := Self; - PopupMenu.Popup(P.X, P.Y) - end; - end - else - begin - PopupSystemContextMenu(SelItem, P); - end; - if Assigned(NewSel) then - Selected := NewSel; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/FavoritesPopup.pas b/windows/src/ext/embeddedwb/Source/FavoritesPopup.pas deleted file mode 100644 index cb53ef1eed..0000000000 --- a/windows/src/ext/embeddedwb/Source/FavoritesPopup.pas +++ /dev/null @@ -1,577 +0,0 @@ -//****************************************************************** -// * -// TFavoritesPopup * * -// Freeware Component * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@gmail.com * -// Based on TFavoritesMenu code * -// by Per Linds Larsen * -// * -// Updated versions: * -// http://www.bsalsa.com * -//****************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: FavoritesPopup.pas,v 1.2 2006/12/05 11:56:31 bsalsa Exp $ - -unit FavoritesPopup; - -interface - -{$I EWB.inc} -uses - Dialogs, Classes, Controls, Forms, Shlobj, Menus, EmbeddedWB; - -type - PItem = ^TItem; - TItem = record - ID: PItemIDList; - FullID: PItemIDList; - Folder: Boolean; - Created: Boolean; - end; - -type - TErrorEvent = procedure(const ErrorCode: integer; ErrMessage: string) of object; - TFavOptions = (foAddFavorites, foOrganizeFavorites, foImportFavorites, - foExportFavorites, foImportExportWizard); - TOptions = set of TFavOptions; - TOnAddFavoritesEvent = procedure(const EmbeddedWB: TEmbeddedWB; Title, URL: WideString; Success: integer) of object; - TOnUrlSelectedEvent = procedure(Sender: TObject; Url: string) of object; - TResolveUrl = (IntShCut, IniFile); - TShellFolderProperty = (fpCut, fpIsLink, fpReadOnly, fpShared, fpFileSystem, - fpFileSystemAncestor, fpRemovable, fpValidate); - TShellFolderProperties = set of TShellFolderProperty; - TLocalization = class(TPersistent) - private - FAddFavorites: string; - FOrganizeFavorites: string; - FImportFavorites: string; - FExportFavorites: string; - FImportExportWizard: string; - published - property AddFavorites: string read FAddFavorites write FAddFavorites; - property OrganizeFavorites: string read FOrganizeFavorites write FOrganizeFavorites; - property ImportFavorites: string read FImportFavorites write FImportFavorites; - property ExportFavorites: string read FExportFavorites write FExportFavorites; - property ImportExportWizard: string read FImportExportWizard write FImportExportWizard; - end; - - TFavoritesPopup = class(TPopupMenu) - private - { Private declarations } - Counter: Integer; - Desktop: IShellFolder; - FavoritesPopup: TMenuItem; - FavoritesPidl: PItemIDList; - FAbout: string; - FCaption: string; - FChannels: Boolean; - FEmbeddedWB: TEmbeddedWB; - FEnabled: Boolean; - FOnError: TErrorEvent; - FLocalization: TLocalization; - FMaxWidth: Integer; - FOnAddFavorites: TOnAddFavoritesEvent; - FOnUrlSelected: TOnUrlSelectedEvent; - FOptions: TOptions; - FResolveUrl: TResolveUrl; - Images: TImageList; - Item: PItem; - List: TList; - procedure AddFavorite(Sender: TObject); - procedure FavoritesExport(Sender: TObject); - procedure FavoritesImport(Sender: TObject); - procedure OrganizeFavorite(Sender: TObject); - procedure ImportExportWizard(Sender: TObject); - procedure SetAbout(Value: string); - protected - { Protected declarations } - procedure AddDummy(menu: TMenuItem); - procedure AddEmpty(menu: TMenuItem); - procedure AddMenu(Menu: TMenuItem; FullID: PItemIDList); - procedure BuildOptionsMenu; - procedure DestroyList; - procedure MenuClick(Sender: TObject); - procedure Loaded; override; - public - { Public declarations } - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure CreateMenu(mi: TMenuItem); overload; - procedure ReBuildMenu; - published - { Published declarations } - property About: string read fAbout write SetAbout; - property Channels: Boolean read FChannels write FChannels default False; - property EmbeddedWB: TEmbeddedWB read FEmbeddedWB write FEmbeddedWB; - property Enabled: Boolean read FEnabled write FEnabled default True; - property Localization: TLocalization read FLocalization write FLocalization; - property MaxWidth: Integer read FMaxWidth write FMaxWidth default 50; - property OnAddFavorites: TOnAddFavoritesEvent read FOnAddFavorites write FOnAddFavorites; - property OnError: TErrorEvent read FOnError write FOnError; - property OnURLSelected: TOnURLSelectedEvent read FOnURLSelected write FOnURLSelected; - property Options: TOptions read FOptions write FOptions default [foAddFavorites, foOrganizeFavorites]; - property ResolveUrl: TResolveUrl read FResolveUrl write FResolveUrl default IntShCut; - end; - -implementation - -uses - ImportFavorites, ExportFavorites, Imglist, Windows, ShellApi, SysUtils, SHDocVw_EWB, ActiveX, Registry, EwbTools; - -var - ChannelShortcut, InternetShortcut: string; - Folder: IShellFolder; - Procedur: procedure(Handle: THandle; Path: PAnsiChar); stdcall; - -function SortFunc(Item1, Item2: Pointer): Integer; -begin - Result := SmallInt(Folder.CompareIDs(0, PItem(Item1).ID, PItem(Item2).ID)); -end; - -function GetImageIndex(PIDL: PItemIDList; Large, Open: Boolean): Integer; -var - FileInfo: TSHFileInfo; - Flags: Integer; -begin - Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX; - if Open then - Flags := Flags or SHGFI_OPENICON; - if Large then - Flags := Flags or SHGFI_LARGEICON - else - Flags := Flags or SHGFI_SMALLICON; - SHGetFileInfo(PChar(PIDL), 0, FileInfo, SizeOf(FileInfo), Flags); - Result := FileInfo.iIcon; -end; - -function CheckShortcut(Shortcut, Flag: Integer): Boolean; -begin - Result := Shortcut and Flag <> 0; -end; - -constructor TFavoritesPopup.Create; -begin - FAbout := 'TFavoritesPopup - from http://www.bsalsa.com/'; - FEnabled := True; - FLocalization := TLocalization.Create; - FLocalization.FAddFavorites := 'Add to Favorites'; - FLocalization.FOrganizeFavorites := 'Organize Favorites'; - FLocalization.FImportFavorites := 'Import Favorites'; - FLocalization.FExportFavorites := 'Export Favorites'; - FLocalization.FImportExportWizard := 'Import Export Favorites Wizard'; - SHGetDesktopFolder(Desktop); - SHGetSpecialFolderLocation(Application.Handle, CSIDL_FAVORITES, FavoritesPIDL); - FCaption := ExtractFileName(GetFileName(Desktop, FavoritesPidl)); - with TRegistry.Create do - begin - RootKey := HKEY_CLASSES_ROOT; - if OpenKey('ChannelShortcut', FALSE) - then - ChannelShortCut := ReadString('') - else - ChannelShortcut := 'Channel Shortcut'; - Closekey; - if OpenKey('InternetShortcut', FALSE) - then - InternetShortCut := ReadString('') - else - InternetShortcut := 'Internet Shortcut'; - Closekey; - Free; - end; - FMaxWidth := 50; - FOptions := [foAddFavorites, foOrganizeFavorites]; - inherited; -end; - -procedure TFavoritesPopup.Loaded; -begin - CreateMenu(Self.Items); - inherited; -end; - -procedure TFavoritesPopup.DestroyList; -var - I: Integer; -begin - if list <> nil then - begin - for I := 0 to List.Count - 1 do - begin - DisposePIDL(PItem(List[I]).ID); - DisposePIDL(PItem(List[i]).FULLID); - Dispose(PItem(List[i])); - end; - Counter := 0; - List.Free; - end; -end; - -destructor TFavoritesPopup.Destroy; -begin - FLocalization.Free; - DestroyList; - inherited; -end; - -procedure TFavoritesPopup.SetAbout(Value: string); -begin - Exit; -end; - -procedure TFavoritesPopup.FavoritesExport(Sender: TObject); -var - ExportFav: TExportFavorite; -begin - if FEnabled and Assigned(FEmbeddedWB) then - begin - if not FEmbeddedWB.DocumentLoaded then - begin - FEmbeddedWB.AssignEmptyDocument; - FEmbeddedWB.Wait; - end; - ExportFAv := TExportFavorite.Create(Self); - with ExportFav do - begin - ExportFavorites; - Free; - end; - end; -end; - -procedure TFavoritesPopup.FavoritesImport(Sender: TObject); -var - ImportFav: TImportFavorite; -begin - if FEnabled and Assigned(FEmbeddedWB) then - begin - if not FEmbeddedWB.DocumentLoaded then - begin - FEmbeddedWB.AssignEmptyDocument; - FEmbeddedWB.Wait; - end; - ImportFav := TImportFavorite.Create(Self); - with ImportFav do - begin - ImportFavorites; - Free; - end; - end; -end; - -procedure TFavoritesPopup.ImportExportWizard(Sender: TObject); -begin - if FEnabled and Assigned(FEmbeddedWB) then - begin - if not FEmbeddedWB.DocumentLoaded then - begin - FEmbeddedWB.AssignEmptyDocument; - FEmbeddedWB.Wait; - end; - FEmbeddedWB.ShowImportExportFavoritesAndCookies; - end; -end; - -procedure TFavoritesPopup.OrganizeFavorite(Sender: Tobject); -var - SpecialPath: array[0..MAX_PATH] of Char; - H: HWnd; - bGet: Boolean; -begin - if FEnabled then - begin - H := LoadLibrary('shdocvw.dll'); - if H <> 0 then - begin - Procedur := GetProcAddress(H, 'DoOrganizeFavDlg'); - if Assigned(Procedur) then - begin - bGet := SHGetPathFromIDList(FavoritesPidl, SpecialPath); - if (not bGet) and (Assigned(FOnError)) then - FOnError(E_FAIL, 'Failed while getting path for the favorites!'); - Procedur(Application.Handle, PAnsiChar(AnsiString(SpecialPath))); - end; - end - else - if Assigned(FOnError) then - FOnError(E_FAIL, 'Failed while loading library!'); - FreeLibrary(H); - RebuildMenu; - end; -end; - -procedure TFavoritesPopup.AddFavorite(Sender: TObject); -const - CLSID_ShellUIHelper: TGUID = '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}'; -var - ShellUIHelper: ISHellUIHelper; - Url, Title: Olevariant; - Success: integer; -begin - if FEnabled then - begin - if Assigned(FEmbeddedWB) then - begin - Title := FEmbeddedWB.LocationName; - Url := FEmbeddedWB.LocationUrl; - if Url <> '' then - begin - Success := CoCreateInstance(CLSID_SHELLUIHELPER, nil, CLSCTX_INPROC_SERVER, - IID_IShellUIHelper, ShellUIHelper); - if Assigned(FOnAddFavorites) then - FOnAddFavorites(FEmbeddedWB, Title, URL, Success); - if (Success <> S_OK) and (Assigned(FOnError)) then - FOnError(Success, 'Failed while adding to favorites!'); - ShellUIHelper.AddFavorite(Url, Title); - RebuildMenu; - end - else - if (Assigned(FOnError)) then - FOnError(E_FAIL, 'Failed - Empty URL string!'); - end - else - if (Assigned(FOnError)) then - FOnError(E_FAIL, 'Please assign a TEmbeddedWB'); - end; -end; - -procedure TFavoritesPopup.AddDummy(menu: TMenuItem); -var - Dummy: TMenuItem; -begin - Dummy := TMenuItem.Create(self); - Dummy.Visible := False; - Menu.Add(Dummy); -end; - -procedure TFavoritesPopup.AddEmpty(menu: TMenuItem); -var - Empty: TMenuItem; -begin - Empty := TMenuItem.Create(self); - Empty.Caption := ' (Empty) '; - Empty.Enabled := False; - Menu.add(Empty); -end; - -procedure TFavoritesPopup.AddMenu(Menu: TMenuItem; FullID: PItemIDList); -var - MenuItem: TMenuItem; - EnumList: IEnumIDList; - ID: PItemIDList; - NumIDs: LongWord; - TempList: TList; - I, j: Integer; - Success: integer; - sfi: TShFileInfo; -begin - if FEnabled then - begin - TempList := TList.Create; - Success := Desktop.BindToObject(FullID, nil, IID_IShellFolder, Pointer(Folder)); - if (Success <> S_OK) and (Assigned(FOnError)) then - FOnError(Success, 'Failed retrieves an IShellFolder object for a subfolder!'); - Success := Folder.EnumObjects(Application.Handle, SHCONTF_FOLDERS or SHCONTF_NONFOLDERS, - EnumList); - if (Success <> S_OK) and (Assigned(FOnError)) then - FOnError(Success, 'Failed Enum objects!'); - while EnumList.Next(1, ID, NumIDs) = S_OK do - begin - if not Channels and IsChannel(ChannelShortcut, Folder, ID) then - continue; - Item := New(PItem); - Item.ID := CopyPidl(ID); - Item.FullID := ConcatPIDLs(FullID, ID); - Item.Folder := IsFolderEx(ChannelShortcut, Folder, ID); - Item.Created := False; - TempList.Add(Item); - end; - DisposePidl(ID); - if TempList.Count = 0 then - begin - AddEmpty(Menu); - TempList.Free; - exit; - end; - TempList.Sort(SortFunc); - for I := 0 to TempList.Count - 1 do - begin - List.Add(PItem(Templist[I])); - MenuItem := TMenuItem.Create(Menu); - with MenuItem do - begin - SubMenuImages := Images; - OnClick := MenuClick; - Tag := Counter; - Caption := GetDisplayName(Folder, PItem(TempList[I])^.ID); - end; - if Length(MenuItem.Caption) > FMaxWidth then - MenuItem.Caption := Copy(MenuItem.Caption, 1, FMaxWidth) + '...'; - J := GetImageIndex(PItem(TempList[I])^.FullID, False, False); - if (J = 3) and (CheckShortcut(SFGAO_LINK, SFGAO_DISPLAYATTRMASK)) then - begin - ShGetFileInfo('*.htm', FILE_ATTRIBUTE_NORMAL, sfi, sizeOf(sfi), - SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON); - J := sfi.iIcon; - DestroyIcon(sfi.iIcon); - end; - MenuItem.ImageIndex := J; - Menu.Add(MenuItem); - Inc(Counter); - if PItem(TempList[I])^.Folder then - AddDummy(MenuItem); - end; - TempList.Free; - end; -end; - -procedure TFavoritesPopup.MenuClick(Sender: TObject); -var - Folder: IShellFOlder; - FileInfo: TSHFileInfo; - ID: PItemIDList; - X: OleVariant; - Url: string; - Success: integer; -begin - if FEnabled and not (csDesigning in ComponentState) then - begin - if PItem(list[(Sender as TMenuItem).Tag])^.folder - then - begin - if - not PItem(list[(Sender as TMenuItem).Tag]).Created then - begin - AddMenu(Sender as TMenuItem, - PItem(list[(Sender as TMenuItem).Tag])^.FULLID); - PItem(list[(Sender as TMenuItem).Tag]).Created := TRUE; - end; - end - else - begin - id := CopyPidl(PItem(list[(Sender as TMenuItem).Tag])^.FULLID); - StripLastID(ID); - Success := Desktop.BindToObject(ID, nil, IID_IShellFolder, Pointer(Folder)); - if (Success <> S_OK) and (Assigned(FOnError)) then - FOnError(Success, 'Failed Retrieves an IShellFolder object for a subfolder!'); - SHGetFileInfo(PChar(PItem(list[(Sender as TMenuItem).Tag])^.ID), 0, - FileInfo, SizeOf(TSHFileInfo), SHGFI_PIDL or SHGFI_TYPENAME or SHGFI_ATTRIBUTES); - if Fileinfo.szTypeName = ChannelShortcut then - ResolveChannel(Folder, PItem(list[(Sender as TMenuItem).Tag])^.ID, Url) - else - if fileinfo.szTypeName = InternetShortcut then - begin - if FResolveUrl = IntshCut then - Url := ResolveUrlIntShCut(GetFileName(Folder, - PItem(list[(Sender as TMenuItem).Tag])^.ID)) - else - Url := ResolveUrlIni(GetFileName(Folder, - PItem(list[(Sender as TMenuItem).Tag])^.ID)); - end - else - Url := Resolvelink(GetFileName(Folder, - PItem(list[(Sender as TMenuItem).Tag])^.ID)); - DisposePidl(ID); - if Assigned(FOnUrlSelected) then - FOnUrlSelected(Sender, Url) - else - if Assigned(FEmbeddedWB) then - FEmbeddedWB.Navigate(Url, X, X, X, X); - end; - end; -end; - -procedure TFavoritesPopup.BuildOptionsMenu; -begin - if FEnabled and not (csDesigning in ComponentState) then - begin - if foAddFavorites in FOptions then - FavoritesPopup.Add(NewItem(FLocalization.FAddFavorites, 0, - False, True, addfavorite, 0, '')); - if foOrganizeFavorites in FOptions then - FavoritesPopup.Add(NewItem(FLocalization.FOrganizeFavorites, 0, - False, True, organizefavorite, 0, '')); - if FavoritesPopup.Count > 0 then - FavoritesPopup.Add(NewItem('-', 0, False, True, nil, 0, '')); - if IE5_Installed then - begin - if foImportFavorites in FOptions then - FavoritesPopup.Add(NewItem(FLocalization.FImportFavorites, 0, - False, True, FavoritesImport, 0, '')); - if foExportFavorites in FOptions then - FavoritesPopup.Add(NewItem(FLocalization.FExportFavorites, 0, - False, True, FavoritesExport, 0, '')); - if foImportExportWizard in FOptions then - FavoritesPopup.Add(NewItem(FLocalization.FImportExportWizard, 0, - False, True, ImportExportWizard, 0, '')); - - if (foImportFavorites in FOptions) or (foExportFavorites in FOptions) - or (foImportExportWizard in FOptions) then - FavoritesPopup.Add(NewItem('-', 0, False, True, nil, 0, '')); - end; - end; -end; - -procedure TFavoritesPopup.CreateMenu(mi: TMenuItem); -var - FileInfo: TSHFileInfo; -begin - if FEnabled and not (csDesigning in ComponentState) then - begin - Counter := 0; - List := TList.Create; - Images := TImagelist.Create(self); - with images do - begin - ShareImages := True; - DrawingStyle := dsTransparent; - Handle := SHGetFileInfo(Pchar(FavoritesPidl), 0, FileInfo, - SizeOf(FileInfo), SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); - end; - if mi = nil then - begin - FavoritesPopup := TMenuitem.Create(self); - FavoritesPopup.Caption := FCaption; - end - else - FavoritesPopup := mi; - FavoritesPopup.SubmenuImages := Images; - BuildOptionsMenu; - AddMenu(FavoritesPopup, FavoritesPidl); - end; -end; - -procedure TFavoritesPopup.ReBuildMenu; -begin - DestroyList; - List := TList.Create; - FavoritesPopup.Clear; - BuildOptionsMenu; - AddMenu(FavoritesPopup, FavoritesPidl); -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/FavoritesTree.pas b/windows/src/ext/embeddedwb/Source/FavoritesTree.pas deleted file mode 100644 index 8a5bec46ce..0000000000 --- a/windows/src/ext/embeddedwb/Source/FavoritesTree.pas +++ /dev/null @@ -1,680 +0,0 @@ -//****************************************************************** -// * -// TFavoritesTree * -// Freeware Component * -// For Delphi 5 - DSelphi XE * -// by * -// Pete Morris * -// and Eran Bodankin * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//****************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: FavoritesTree.pas,v 1.4 2006/12/05 11:56:31 bsalsa Exp $ - -unit FavoritesTree; - -interface - -{$I EWB.inc} - -uses - ShlObj, Messages, Windows, SysUtils, Classes, Forms, ComCtrls, DIRMonitor, - iniFiles, EmbeddedWB, EwbCore, Controls, Imglist, - ExportFavorites, ImportFavorites, EwbAcc, EWBTools; - -type - TNodeType = (ntRoot, ntItem, ntEmptyFolder, ntFolder, ntOrganizeFavorites, - ntAddToFavorites, ntImportFavorites, ntExportFavorites, ntTools); - TFavoriteOption = (foShowRoot, foShowItems, foShowOrganize, foShowAdd, - foShowImport, foShowExport); - TFavoriteOptions = set of TFavoriteOption; - TNodeAddedEvent = procedure(Sender: TObject; const aNode: TTreeNode; - aNodeType: TNodeType) of object; - TNodeMissingEvent = procedure(Sender: TObject; const aNode: TTreeNode; - aNodeType: TNodeType) of object; - TNavigateEvent = procedure(Sender: TObject; const Url: string) of object; - TPopupMenuMode = (pmm_System, pmm_PopupMenu); - - - TLocalization = class(TPersistent) - private - FNodeOrganiseFavorites: string; - FNodeAddToFavorites: string; - FNodeImportFavorites: string; - FNodeExportFavorites: string; - FNodeTools: string; - FNodeFavorites: string; - FTextLinks: string; - FTextImported: string; - published - property NodeOrganiseFavorites: string read FNodeOrganiseFavorites write FNodeOrganiseFavorites; - property NodeAddToFavorites: string read FNodeAddToFavorites write FNodeAddToFavorites; - property NodeImportFavorites: string read FNodeImportFavorites write FNodeImportFavorites; - property NodeExportFavorites: string read FNodeExportFavorites write FNodeExportFavorites; - property NodeTools: string read FNodeTools write FNodeTools; - property NodeFavorites: string read FNodeFavorites write FNodeFavorites; - property TextLinks: string read FTextLinks write FTextLinks; - property TextImported: string read FTextImported write FTextImported; - end; - - TCustomFavoritesTree = class(TCustomTreeView) - private - foldericon: Integer; - myRootNode, myRootNode2: TTreeNode; - lFolder: PItemIDList; - lPath: array[0..MAX_PATH] of char; - FavIndex: integer; - FOptions: TFavoriteOptions; - FPath: string; - ImageList: TImageList; - FEmbeddedWB: TCustomEmbeddedWB; - fExportFavorites: TExportFavorite; - FImportFavorites: TImportFavorite; - FOnNavigate: TNavigateEvent; - FOnNodeAdded: TNodeAddedEvent; - FOnNodeMissing: TNodeMissingEvent; - FOnFavoritesChanged: TNotifyEvent; - FPopupMenuMode: TPopupMenuMode; - FLocalization: TLocalization; - procedure SetOption(const Value: TFavoriteOptions); - procedure CallDoOrganizeFavDlg(const DllName: string); - protected - procedure DblClick; override; - function InternalAdd(const aParent: TTreeNode; const aCaption: string; const - aNodeType: TNodeType): TTreeNode; virtual; - procedure Loaded; override; - property Options: TFavoriteOptions read FOptions write SetOption; - property OnFavoritesChanged: TNotifyEvent read FOnFavoritesChanged write - FOnFavoritesChanged; - property OnNavigate: TNavigateEvent read FOnNavigate write FOnNavigate; - property OnNodeAdded: TNodeAddedEvent read FOnNodeAdded write FOnNodeAdded; - property OnNodeMissing: TNodeMissingEvent read FOnNodeMissing write - FOnNodeMissing; - procedure PopupSystemContextMenu(Node: TTreeNode; Point: TPoint); - procedure WMContextMenu(var Msg: TMessage); message WM_Contextmenu; - public - constructor Create(AOwner: TComponent); override; - procedure GetSelectedIndex(Node: TTreeNode); override; - procedure NodeAdded(Sender: TObject; - const aNode: TTreeNode; aNodeType: TNodeType); - destructor Destroy; override; - procedure AddToFavorites; - procedure ExportTheFavorites; - function GetFileName(const aNode: TTreeNode): string; - procedure ImportTheFavorites; - procedure OrganizeFavorites; - procedure Refresh; dynamic; - procedure RefreshFolder(const aFolder: TTreeNode); dynamic; - function NodeURL(const aNode: TTreeNode): string; - published - - property PopupMenuMode: TPopupMenuMode read FPopupMenuMode write - FPopupMenuMode; - property EmbeddedWB: TCustomEmbeddedWB read FEmbeddedWB write FEmbeddedWB; - property ImportFavorites: TImportFavorite read FImportFavorites write - FImportFavorites; - property ExportFavorites: TExportFavorite read fExportFavorites write - FExportFavorites; - property Localization: TLocalization read FLocalization write FLocalization; - end; - - TFavoritesTree = class(TCustomFavoritesTree) - private - published - //new properties - property Options; - //inherited properties - property Align; - property Anchors; - property BiDiMode; - property BorderStyle; - property BorderWidth; - property ChangeDelay; - property Color; - property Constraints; - property Cursor; - property DragCursor; - property DragKind; - property DragMode; - property Enabled; - // property Expand; - property Font; - property Height; - property HelpContext; - property HideSelection; - property Hint; - property HotTrack; - property Images; - property Indent; - property ParentBiDiMode; - property ParentColor; - property ParentFont; - property PopupMenu; - property RightClickSelect; - property RowSelect; - property ShowButtons; - property ShowHint; - property ShowLines; - property ShowRoot; - property StateImages; - property TabOrder; - property TabStop; - property Tag; - property ToolTips; - property Top; - property Visible; - property Width; - //NewEvents - property OnFavoritesChanged; - //Called when you another app alters the favorites - property OnNavigate; //When you need to navigate somewhere - property OnNodeAdded; - //When a node is added, so you can set the image indexes if you like - property OnNodeMissing; - //When a node is clicked, but someone else has deleted the file/folder - property OnAdvancedCustomDraw; - property OnAdvancedCustomDrawItem; - property OnChange; - property OnChanging; - property OnClick; - property OnCollapsed; - property OnCollapsing; - property OnContextPopup; - property OnCustomDraw; - property OnCustomDrawItem; - property OnDblClick; - property OnDeletion; - property OnDragDrop; - property OnDragOver; - property OnEdited; - property OnEditing; - property OnEndDock; - property OnEndDrag; - property OnEnter; - property OnExit; - property OnExpanded; - property OnExpanding; - property OnGetImageIndex; - property OnGetSelectedIndex; - property OnKeyDown; - property OnKeyPress; - property OnKeyUp; - property OnMouseDown; - property OnMouseMove; - property OnMouseUp; - property OnStartDock; - property OnStartDrag; - end; - -var - Folder: IShellFolder; - - -implementation -uses -{$IFDEF DELPHI6_UP} -{$WARN UNIT_PLATFORM OFF} -{$ENDIF} - MenuContext, SHDocVw_EWB, ComObj, ActiveX, FileCtrl, Registry, ShellApi; - -{ TCustomFavoritesTree } - -procedure TCustomFavoritesTree.GetSelectedIndex(Node: TTreeNode); -begin - inherited; - Node.SelectedIndex := Node.ImageIndex; -end; - -procedure TCustomFavoritesTree.NodeAdded(Sender: TObject; - const aNode: TTreeNode; aNodeType: TNodeType); -begin - inherited; -end; - -constructor TCustomFavoritesTree.Create(AOwner: TComponent); -var FileInfo: TSHFileInfo; -begin - inherited; - - FLocalization := TLocalization.Create; - FLocalization.NodeOrganiseFavorites := 'Organize favorites'; - FLocalization.NodeAddToFavorites := 'Add To favorites'; - FLocalization.NodeImportFavorites := 'Import favorites'; - FLocalization.NodeExportFavorites := 'Export favorites'; - FLocalization.NodeTools := 'Tools'; - FLocalization.NodeFavorites := 'Favorites'; - FLocalization.TextLinks := 'Links'; - FLocalization.TextImported := 'Imported'; - - SHGetSpecialFolderLocation(0, CSIDL_FAVORITES, lFolder); - SHGetPathFromIDList(lFolder, lPath); - //SHGetSpecialFolderLocation(Application.Handle, CSIDL_FAVORITES, FavoritesPIDL); - - FPath := StrPas(lPath); - if FPath[Length(FPath)] <> '\' then - FPath := FPath + '\'; - FOptions := [foShowRoot, foShowItems, foShowOrganize, foShowAdd, foShowImport, - foShowExport]; - ShowRoot := True; - ImageList := TImagelist.Create(Self); - ImageList.ShareImages := True; -// ImageList.DrawingStyle := dsTransparent; - ImageList.Handle := SHGetFileInfo(Pchar(lFolder), 0, FileInfo, - SizeOf(FileInfo), SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); - Self.Images := ImageList; - foldericon := -1; -end; - -procedure TCustomFavoritesTree.Loaded; -begin - inherited; - ShowRoot := True; - Refresh; -end; - -destructor TCustomFavoritesTree.Destroy; -begin - FLocalization.Free; - ImageList.Free; - inherited; -end; - -function TCustomFavoritesTree.NodeURL(const aNode: TTreeNode): string; -const - CLSID_InternetShortCut: TGUID = (d1: $FBF23B40; D2: $E3F0; D3: $101B; D4: - ($84, $88, $00, $AA, $00, $3E, $56, $F8)); -var - FileName: string; - FName: array[0..MAX_PATH] of WideChar; - PURL: Pchar; - IUrl: IUniformResourceLocator; - PersistFile: IPersistFile; -begin - FileName := GetFileName(aNode); - IUrl := CreateComObject(CLSID_InternetShortCut) as IUniformResourceLocator; - PersistFile := IUrl as IPersistFile; - StringToWideChar(FileName, FName, MAX_PATH); - PersistFile.Load(FName, STGM_READ); - IUrl.GetURL(@PURL); - Result := PURL; -end; - -function TCustomFavoritesTree.GetFileName(const aNode: TTreeNode): string; -begin - if (aNode = nil) or ((aNode = Items[FavIndex]) {and (foShowRoot in Options)}) then - Result := FPath - else - begin - case TNodeType(aNode.Data) of - ntItem: Result := GetFileName(aNode.Parent) + aNode.Text + '.Url'; - ntFolder: Result := GetFileName(aNode.Parent) + aNode.Text + '\'; - ntEmptyFolder: Result := GetFileName(aNode.Parent) + aNode.Text + '\'; - ntTools: Result := GetFileName(aNode.Parent) + aNode.Text + '\'; - end; - end; -end; - -procedure TCustomFavoritesTree.RefreshFolder(const aFolder: TTreeNode); -var - CurrentPath: string; - SR: TSearchRec; - Found: Integer; - newnode: TTreeNode; - sfi: TShFileInfo; - i: Integer; -begin - CurrentPath := GetFileName(aFolder); - Found := FindFirst(CurrentPath + '*.*', faDirectory, SR); - - while Found = 0 do - begin - if (SR.Attr and faDirectory <> 0) and (SR.Name <> '.') and (SR.Name <> - '..') then - begin - newnode := InternalAdd(aFolder, SR.Name, ntEmptyFolder); - ShGetFileInfo('*.*', FILE_ATTRIBUTE_DIRECTORY, sfi, sizeOf(sfi), - SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON); - if foldericon < 0 then foldericon := sfi.iIcon; - newnode.ImageIndex := sfi.iIcon; - DestroyIcon(sfi.iIcon); - end; - Found := FindNext(SR); - end; - FindClose(SR); - - if foShowItems in Options then - begin - Found := FindFirst(CurrentPath + '*.Url', faAnyFile, SR); - while Found = 0 do - begin - if (SR.Attr and faDirectory = 0) then - begin - newnode := InternalAdd(aFolder, Copy(SR.Name, 1, Length(SR.Name) - 4), - ntItem); - {$IFDEF UNICODE} - ShGetFileInfo(LPWSTR((CurrentPath + SR.Name)), FILE_ATTRIBUTE_NORMAL, sfi, SizeOf(sfi), - SHGFI_SYSICONINDEX or - SHGFI_USEFILEATTRIBUTES or - SHGFI_SMALLICON); - {$ELSE} - ShGetFileInfo(LPCSTR((CurrentPath + SR.Name)), FILE_ATTRIBUTE_NORMAL, sfi, SizeOf(sfi), - SHGFI_SYSICONINDEX or - SHGFI_USEFILEATTRIBUTES or - SHGFI_SMALLICON); - {$ENDIF} - if sfi.iIcon > 3 then - begin - newnode.ImageIndex := sfi.iIcon; - end - else - begin - ShGetFileInfo('*.htm', FILE_ATTRIBUTE_NORMAL, sfi, SizeOf(sfi), - SHGFI_SYSICONINDEX or - SHGFI_USEFILEATTRIBUTES or - SHGFI_SMALLICON); - newnode.ImageIndex := sfi.iIcon; - end; - DestroyIcon(sfi.iIcon); - end; - Found := FindNext(SR); - end; - FindClose(SR); - end; - - if aFolder <> nil then - if TNodeType(aFolder.Data) = ntEmptyFolder then - aFolder.Data := Pointer(ntFolder); - - if aFolder <> nil then - if TNodeType(aFolder.Data) = ntFolder then - begin - aFolder.HasChildren := True; - aFolder.Data := Pointer(ntFolder); - aFolder.Expand(True); - end; - - for i := 0 to myRootNode.Count do - Self.Items[i].ImageIndex := foldericon; - - myRootNode.ImageIndex := foldericon; - myRootNode2.ImageIndex := foldericon; -end; - -function TCustomFavoritesTree.InternalAdd(const aParent: TTreeNode; - const aCaption: string; const aNodeType: TNodeType): TTreeNode; -begin - Result := Items.AddChild(aParent, aCaption); - Result.Data := Pointer(aNodeType); - if Assigned(OnNodeAdded) then - OnNodeAdded(Self, Result, aNodeType); -end; - -procedure TCustomFavoritesTree.Refresh; -var - RootNode, RootNode2: TTreeNode; -begin - Items.BeginUpdate; - try - while Items.Count > 0 do - Items[0].Delete; - - if foShowRoot in Options then - RootNode := InternalAdd(nil, FLocalization.NodeTools, ntTools) - else - RootNode := nil; - if foShowOrganize in Options then - InternalAdd(RootNode, FLocalization.NodeOrganiseFavorites, ntOrganizeFavorites); - if (foShowAdd in Options) then - InternalAdd(RootNode, FLocalization.NodeAddToFavorites, ntAddToFavorites); - if (foShowImport in Options) then - InternalAdd(RootNode, FLocalization.NodeImportFavorites, ntImportFavorites); - if (foShowExport in Options) then - InternalAdd(RootNode, FLocalization.NodeExportFavorites, ntExportFavorites); - if (RootNode <> nil) then - RootNode.Expanded := True; - if (Pos(FLocalization.TextLinks, RootNode.Text) > 0) or - (Pos(FLocalization.TextImported, RootNode.Text) > 0) then - RootNode.HasChildren := True; - - RootNode2 := InternalAdd(nil, FLocalization.NodeFavorites, ntRoot); - FavIndex := RootNode.Count + 1; - - myRootNode := RootNode; - myRootNode2 := RootNode2; - RefreshFolder(RootNode2); - RootNode2.Expand(True); - finally - Items.EndUpdate; - end; -end; - -procedure TCustomFavoritesTree.SetOption(const Value: TFavoriteOptions); -begin - FOptions := Value; -end; - -procedure TCustomFavoritesTree.ExportTheFavorites; -begin - if Assigned(ExportFavorites) then - FExportFavorites.ExportFavorites - else - Application.MessageBox('Please assign a TExportFavorites component to use this feature' + #13#10 + - 'or set Options.foshowExport to False.', 'Hint', MB_OK); -end; - -procedure TCustomFavoritesTree.ImportTheFavorites; -begin - if Assigned(ImportFavorites) then - begin - FImportFavorites.ImportFavorites; - Refresh; - end else - Application.MessageBox('Please assign a TImportFavorites component to use this feature' + #13#10 + - 'or set Options.foshowImport to False.', 'Hint',MB_OK); -end; - -procedure TCustomFavoritesTree.CallDoOrganizeFavDlg(const DllName: string); -var - H: HWND; - OrganizeFavDlg: procedure(Handle: THandle; Path: PAnsiChar); stdcall; -begin - H := LoadLibrary(PChar(DllName)); - if H <> 0 then - begin - OrganizeFavDlg := GetProcAddress(H, 'DoOrganizeFavDlg'); - if Assigned(OrganizeFavDlg) then - OrganizeFavDlg(Application.Handle, PAnsiChar(AnsiString(FPath))); - end; - FreeLibrary(H); -end; - -procedure TCustomFavoritesTree.OrganizeFavorites; -begin - if GetIEVersionMajor > 6 then - CallDoOrganizeFavDlg('ieframe.dll') - else - CallDoOrganizeFavDlg('shdocvw.dll'); - Refresh; -end; - -procedure AddToFav(const Url, Title: string); -const - CLSID_SHELLUIHELPER: TGUID = '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}'; -var - ShellUIHelper: ISHellUIHelper; - Url1, Title1: OleVariant; -begin - Title1 := Title; - Url1 := Url; - CoCreateInstance(CLSID_SHELLUIHELPER, nil, CLSCTX_INPROC_SERVER, - IID_IShellUIHelper, ShellUIHelper); - ShellUIHelper.AddFavorite(Url1, Title1); -end; - -procedure TCustomFavoritesTree.AddToFavorites; -begin - if Assigned(EmbeddedWB) then - begin - AddToFav(EmbeddedWB.LocationURL, EmbeddedWB.LocationName); - Refresh; - end; -end; - -function URLFromShortcut(const dotURL: string): string; -begin - with TIniFile.Create(dotURL) do - try - try - Result := ReadString('InternetShortcut', 'Url', ''); - except; - Result := ''; - end; - finally - Free; - end; -end; - -procedure TCustomFavoritesTree.DblClick; -var - URLPath: WideString; - X: OleVariant; - Url: string; -begin - inherited; - if Selected = nil then Exit; - - case TNodeType(Selected.Data) of - ntFolder, ntEmptyFolder: - if not {$IFDEF DELPHI6_UP}SysUtils.{$ENDIF}DirectoryExists(GetFileName(Selected)) then - begin - if Assigned(OnNodeMissing) then - OnNodeMissing(Self, Selected, TNodeType(Selected.Data)); - Selected.Delete; - Exit; - end; - - ntItem: - if not FileExists(GetFileName(Selected)) then - begin - if Assigned(OnNodeMissing) then - OnNodeMissing(Self, Selected, TNodeType(Selected.Data)); - Selected.Delete; - Exit; - end; - end; - - case TNodeType(Selected.Data) of - ntAddToFavorites: AddToFavorites; - ntOrganizeFavorites: OrganizeFavorites; - ntImportFavorites: ImportTheFavorites; - ntExportFavorites: ExportTheFavorites; - ntTools: Selected.Expand(True); - ntEmptyFolder: - begin - RefreshFolder(Selected); - Selected.Expand(False); - end; - ntItem: - begin - if Assigned(OnNavigate) then - FOnNavigate(Self, NodeURL(Selected)); - if Assigned(EmbeddedWB) then - begin - URLPath := GetFileName(Selected); - Url := URLFromShortcut(URLPath); - EmbeddedWB.Navigate(Url, X, X, X, X); - end; - end; - end; -end; - -procedure TCustomFavoritesTree.PopupSystemContextMenu(Node: TTreeNode; Point: - TPoint); -var - ISF: IShellFolder; - Pidl: PItemIdList; - Par: TTreeNode; -begin - if Assigned(Node) then - begin - Par := Node.Parent; - if Assigned(Par) then - begin - Pidl := Node.Data; - try - MenuContext.DisplayContextMenu(ISF, Pidl, 0, Application.Handle, Point, 1); - except - GetLastError; - end; - end; - end; -end; - -procedure TCustomFavoritesTree.WMContextMenu(var Msg: TMessage); -var - Point: TPoint; - R: TRect; - NewSel, SelItem: TTreeNode; -begin - NewSel := nil; - if Msg.lparam = -1 then - begin - SelItem := TTreeNode(Selected); - if not Assigned(SelItem) then - Exit; - R := SelItem.DisplayRect(True); - Point.X := R.Left + ((R.Right - R.Left) div 2); - Point.Y := R.Top - ((R.Top - R.Bottom) div 2); - end - else - begin - Point.X := LOWORD(Msg.lParam); - Point.Y := HIWORD(Msg.lParam); - Point := ScreenToClient(Point); - SelItem := Selected //TListItem(GetPosition(P.X,P.Y)); - end; - Point := ClientToScreen(Point); - if (Selected <> SelItem) then - NewSel := TTreeNode(Selected); - Selected := SelItem; - if PopupMenuMode = pmm_PopupMenu then - begin - if Assigned(Popupmenu) then - begin - PopupMenu.PopupComponent := Self; - PopupMenu.Popup(Point.X, Point.Y) - end; - end - else - PopupSystemContextMenu(SelItem, Point); - - if Assigned(NewSel) then - Selected := NewSel; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/FileExtAssociate.pas b/windows/src/ext/embeddedwb/Source/FileExtAssociate.pas deleted file mode 100644 index 70a99e3c19..0000000000 --- a/windows/src/ext/embeddedwb/Source/FileExtAssociate.pas +++ /dev/null @@ -1,970 +0,0 @@ -//*********************************************************** -// TFileExtAssociate * -// * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@gmail.com * -// * -// Based on idea by: Zarko Gajic * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: FileExtAssociate.pas,v 1.2 2006/11/15 21:01:41 sergev Exp $ - -unit FileExtAssociate; - -interface - -{$I EWB.inc} - -uses - Dialogs, Windows, Classes, Graphics, Forms; - -type - TFileInfo = record - Icon: hIcon; - Image: Integer; - DisplayName: string; - TypeName: string; - Size: Integer; - SizeAsString: string; - DateTime: TDateTime; - end; - -type - TOnErrorEvent = procedure(Text: string) of object; - TOnSuccessEvent = procedure(Text: string) of object; - TOnCompleteEvent = procedure(Extension, Status: string; HResult: HResult) of object; - TOnShortcutEvent = procedure(ShortcutItem, Status: string; HResult: HResult) of object; - TShortcutItems = (SendTo, StartMenu, StartUp, Desktop, OpenWith, Programs, - QuickLaunch, ProgramsSubDir); - TShortcutItem = set of TShortcutItems; - - TAppShortcuts = class(TPersistent) - private - FCreateShortcuts: Boolean; - FOptions: TShortcutItem; - FMenuSubDir: WideString; - FOnShortcut: TOnShortcutEvent; - public - published - property CreateShortcuts: Boolean read FCreateShortcuts write FCreateShortcuts default True; - property Options: TShortcutItem read FOptions write FOptions default [OpenWith]; - property MenuSubDir: WideString read FMenuSubDir write FMenuSubDir; - property OnShortcutEvent: TOnShortcutEvent read FOnShortcut write FOnShortcut; - end; - - TExtensionAssociate = class(TPersistent) - private - FCreateAssociation: Boolean; - FExtensions: TStrings; - protected - procedure SetExtensions(Value: TStrings); - public - published - property CreateAssociation: boolean read FCreateAssociation write FCreateAssociation default True; - property Extensions: TStrings read FExtensions write SetExtensions; - end; - - TAppDetails = class(TPersistent) - private - FAppTitle: string; - FAppExeName: string; - FIcon: TIcon; - published - property Title: string read FAppTitle write FAppTitle; - property ExeName: string read FAppExeName write FAppExeName; - property Icon: TIcon read FIcon write FIcon; - end; - -type - TFileExtAssociate = class(TComponent) - private - FAbout: string; - FBusy: Boolean; - FOnBusy: TNotifyEvent; - FEnabled: Boolean; - FApplicationDetails: TAppDetails; - FExtensionAssociate: TExtensionAssociate; - FOnError: TOnErrorEvent; - FOnSuccess: TOnSuccessEvent; - FOnComplete: TOnCompleteEvent; - FOnShortcut: TOnShortcutEvent; - FAppShortcuts: TAppShortcuts; - function RegisterFileType(rExt: string; rTitle: string; rIcon: TIcon): Boolean; - function UnRegisterFileType(uExt: string; uTitle: string): Boolean; - function UpdateAppExeName(sExeName: string): string; - function UpdateIcon(sIcon: TIcon): TIcon; - function UpdateAppTitle(sTitle: string): string; - function UpdateExtension(sExt: string): string; - function CreateShortcut(SourceFileName: string; ShellFolder: TShortcutItems; - SubFolder, WorkingDir, Parameters, Description: string): string; - function DoExtension(sExt, sTitle, sExeName: string; sIcon: TIcon): Boolean; - function DoShortcuts(dExeName, dTitle: string): Boolean; - procedure BusyChange; dynamic; - protected - procedure SetAbout(Value: string); - function UpdateShortcutItemValue: LongInt; - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function Execute: Boolean; overload; - function Execute(Extension, AppTitle, ExeName: string; Icon: TIcon): Boolean; overload; - function Execute(Extensions: TStrings; AppTitle, ExeName: string; Icon: TIcon): Boolean; overload; - function Remove: Boolean; overload; - function Remove(Ext: string; ExeName: string): Boolean; overload; - function GetExeByExtension(sExt: string): string; - function GetIconByExtension(Extension: string; Small: Boolean): HIcon; - function GetFileDisplayName(const Path: string): string; - function GetFileSize(const Path: string): string; - function GetFileTypeName(const Path: string): string; - function GetFileIcon(const Path: string): HIcon; - function GetFileImage(const Path: string): integer; - function GetFileDateTime(const Path: string): TDateTime; - function CreateShortcutSendTo(cExeName, cSubDir, cWorkDir, cParam, - cTitle: string; CShellDir: TShortcutItems): HResult; - function CreateShortcutStartUp(cExeName, cSubDir, cWorkDir, cParam, - cTitle: string; CShellDir: TShortcutItems): HResult; - function CreateShortcutStartMenu(cExeName, cSubDir, cWorkDir, cParam, - cTitle: string; CShellDir: TShortcutItems): HResult; - function CreateShortcutDesktop(cExeName, cSubDir, cWorkDir, cParam, - cTitle: string; CShellDir: TShortcutItems): HResult; - function CreateShortcutPrograms(cExeName, cSubDir, cWorkDir, cParam, - cTitle: string; CShellDir: TShortcutItems): HResult; - function CreateShortcutQuickLaunch(cExeName, cSubDir, cWorkDir, cParam, - cTitle: string; CShellDir: TShortcutItems): HResult; - function CreateShortcutOtherFolder(cExeName, cSubDir, cWorkDir, cParam, - cTitle: string; CShellDir: TShortcutItems): HResult; - function RemoveShortcuts(rmExeName: string): HResult; - property Busy: Boolean read FBusy write FBusy default False; - published - property About: string read FAbout write SetAbout; - property Enabled: boolean read FEnabled write FEnabled default True; - property ExtensionAssociate: TExtensionAssociate read FExtensionAssociate write FExtensionAssociate; - property ApplicationDetails: TAppDetails read FApplicationDetails write FApplicationDetails; - property ApplicationShortcuts: TAppShortcuts read FAppShortcuts write FAppShortcuts; - property OnBusyStateChange: TNotifyEvent read FOnBusy write FOnBusy; - property OnErrorText: TOnErrorEvent read FOnError write FOnError; - property OnSuccessText: TOnSuccessEvent read FOnSuccess write FOnSuccess; - property OnComplete: TOnCompleteEvent read FOnComplete write FOnComplete; - property OnShortcutEvent: TOnShortcutEvent read FOnShortcut write FOnShortcut; - end; - -implementation - -uses - ShellAPI, SysUtils, ActiveX, Registry, ShlObj, ComObj, EwbIEConst; - -// ExtensionAssociate=========================================================== - -procedure TExtensionAssociate.SetExtensions(Value: TStrings); -begin - FExtensions.Assign(Value) -end; -// FileExtAssociate============================================================= - -constructor TFileExtAssociate.Create; -begin - FAbout := 'File Extension Associate component by bsalsa. ' + WEB_SITE; - FApplicationDetails := TAppDetails.Create; - FApplicationDetails.FIcon := Application.Icon; - FEnabled := True; - FAppShortcuts := TAppShortcuts.Create; - FAppShortcuts.FOptions := [OpenWith]; - FAppShortcuts.FCreateShortcuts := True; - FExtensionAssociate := TExtensionAssociate.Create; - FExtensionAssociate.FExtensions := TStringList.Create; - FExtensionAssociate.FCreateAssociation := True; - inherited; -end; - -destructor TFileExtAssociate.Destroy; -begin - FApplicationDetails.Free; - FAppShortcuts.Free; - FExtensionAssociate.FExtensions.Free; - FExtensionAssociate.Free; - inherited Destroy; -end; - -procedure TFileExtAssociate.SetAbout(Value: string); -begin - Exit; -end; - -procedure TFileExtAssociate.BusyChange; -begin - if Assigned(FOnBusy) then - FOnBusy(Self); -end; - -function TFileExtAssociate.UpdateAppExeName(sExeName: string): string; -begin - if sExeName = '' then - sExeName := Application.ExeName; - FApplicationDetails.FAppExeName := sExeName; - Result := sExeName; - if not FileExists(sExeName) then - begin - if Assigned(FOnError) then - FOnError('Can not locate your Exe name and path'); - Result := ''; - end; -end; - -function TFileExtAssociate.UpdateAppTitle(sTitle: string): string; -begin - if sTitle = '' then - sTitle := Application.Title; - FApplicationDetails.FAppTitle := sTitle; - if sTitle = '' then - begin - if Assigned(FOnError) then - FOnError('Please enter a valid application title.'); - Result := ''; - end - else - Result := sTitle; -end; - -function TFileExtAssociate.UpdateIcon(sIcon: TIcon): TIcon; -begin - if (sIcon = nil) then - sIcon := Application.Icon; - FApplicationDetails.FIcon := sIcon; - Result := sIcon; -end; - -function TFileExtAssociate.UpdateExtension(sExt: string): string; -begin - if sExt = '' then - begin - if Assigned(FOnError) then - FOnError('Please Enter a valid extension.'); - end; - Result := sExt; -end; - -function TFileExtAssociate.Execute: Boolean; -var - i: integer; - stExt: string; - bExt, bSc: Boolean; -begin - FBusy := True; - BusyChange; - bExt := False; - Result := bExt; - for i := 0 to FExtensionAssociate.FExtensions.Count - 1 do - begin - stExt := FExtensionAssociate.FExtensions[i]; - bExt := DoExtension(stExt, FApplicationDetails.FAppTitle, - FApplicationDetails.FAppExeName, FApplicationDetails.FIcon); - end; - bSc := DoShortcuts(FApplicationDetails.FAppExeName, FApplicationDetails.FAppTitle); - if ((FAppShortcuts.FCreateShortcuts and bSc) or - (FExtensionAssociate.FCreateAssociation and bExt)) then - Result := True; - FBusy := False; - BusyChange; -end; - -function TFileExtAssociate.Execute(Extension, AppTitle, ExeName: string; Icon: - TIcon): Boolean; -begin - FBusy := True; - BusyChange; - Result := False; - if DoExtension(Extension, AppTitle, ExeName, Icon) and - DoShortcuts(ExeName, AppTitle) then - Result := True; - FBusy := False; - BusyChange; -end; - -function TFileExtAssociate.Execute(Extensions: TStrings; AppTitle, ExeName: string; - Icon: TIcon): Boolean; -var - i: integer; - stExt: string; - bExt, bSc: Boolean; -begin - FBusy := True; - BusyChange; - bExt := False; - Result := bExt; - for i := 0 to Extensions.Count - 1 do - begin - stExt := Extensions[i]; - bExt := DoExtension(stExt, AppTitle, ExeName, Icon); - end; - bSc := DoShortcuts(ExeName, AppTitle); - if ((FAppShortcuts.FCreateShortcuts and bSc) or - (FExtensionAssociate.FCreateAssociation and bExt)) then - Result := True; - FBusy := False; - BusyChange; -end; - -function TFileExtAssociate.DoExtension(sExt, sTitle, sExeName: string; sIcon: TIcon): Boolean; -begin - Result := False; - if FExtensionAssociate.FCreateAssociation then - begin - if Assigned(FOnError) then - FOnError(''); - if Assigned(FOnSuccess) then - FOnSuccess(''); - sTitle := UpdateAppTitle(sTitle); - if sTitle = '' then - Exit; - sExeName := UpdateAppExeName(sExeName); - if sExeName = '' then - Exit; - sIcon := UpdateIcon(sIcon); - if sIcon = nil then - Exit; - sExt := UpdateExtension(sExt); - if sExt = '' then - Exit; - if RegisterFileType(sExt, sExeName, sIcon) then - begin - if Assigned(FOnComplete) then - FOnComplete(sExt, 'Registration successful.', S_OK); - if Assigned(FOnSuccess) then - FOnSuccess('Done.'); - end - else - if Assigned(FOnError) then - FOnError('Registration failure.'); - end; -end; - -function TFileExtAssociate.DoShortcuts(dExeName, dTitle: string): Boolean; -begin - Result := False; - if FAppShortcuts.FCreateShortcuts then - begin - if Assigned(FOnError) then - FOnError(''); - if Assigned(FOnSuccess) then - FOnSuccess(''); - dExeName := UpdateAppExeName(dExeName); - if dExeName = '' then - Exit; - UpdateShortcutItemValue; - if SendTo in FAppShortcuts.FOptions then - CreateShortcutSendTo(dExeName, '', '', '', dTitle, SendTo); - if StartUp in FAppShortcuts.FOptions then - CreateShortcutStartUp(dExeName, '', '', '', dTitle, StartUp); - if StartMenu in FAppShortcuts.FOptions then - CreateShortcutStartMenu(dExeName, '', '', '', dTitle, StartMenu); - if Desktop in FAppShortcuts.FOptions then - CreateShortcutDesktop(dExeName, '', '', '', dTitle, Desktop); - if Programs in FAppShortcuts.FOptions then - CreateShortcutPrograms(dExeName, '', '', '', dTitle, Programs); - if QuickLaunch in FAppShortcuts.FOptions then - CreateShortcutQuickLaunch(dExeName, '', '', '', dTitle, QuickLaunch); - if ProgramsSubDir in FAppShortcuts.FOptions then - CreateShortcutOtherFolder(dExeName, FAppShortcuts.FMenuSubDir, '', '', - dTitle, ProgramsSubDir); - Result := True; - if Assigned(FOnSuccess) then - FOnSuccess('Done.'); - end; - if (not FAppShortcuts.FCreateShortcuts) and - (not FExtensionAssociate.FCreateAssociation) then - if Assigned(FOnComplete) then - FOnComplete('', 'No action selected.', S_FALSE); - -end; - -function TFileExtAssociate.Remove: Boolean; -var - i: integer; - stExt: string; -begin - FBusy := True; - BusyChange; - Result := False; - if Assigned(FOnError) then - FOnError(''); - if Assigned(FOnSuccess) then - FOnSuccess(''); - RemoveShortcuts(FApplicationDetails.FAppExeName); - for i := 0 to FExtensionAssociate.FExtensions.Count - 1 do - begin - stExt := FExtensionAssociate.FExtensions[i]; - if UnRegisterFileType(stExt, FApplicationDetails.FAppExeName) then - begin - if Assigned(FOnComplete) then - FOnComplete(stExt, 'Unregister', S_OK); - if Assigned(FOnSuccess) then - FOnSuccess('Successfuly removed ' + stExt); - Result := True; - end - else - begin - if Assigned(FOnComplete) then - FOnComplete(stExt, 'Unregister', S_FALSE); - Result := False; - end; - end; - FBusy := False; - BusyChange; -end; - -function TFileExtAssociate.Remove(Ext: string; ExeName: string): Boolean; -begin - FBusy := True; - BusyChange; - if Assigned(FOnError) then - FOnError(''); - if Assigned(FOnSuccess) then - FOnSuccess(''); - RemoveShortcuts(ExeName); - if UnRegisterFileType(Ext, ExeName) then - begin - if Assigned(FOnComplete) then - FOnComplete(Ext, 'Unregister', S_OK); - if Assigned(FOnSuccess) then - FOnSuccess('Successfuly removed ' + Ext); - Result := True; - end - else - begin - if Assigned(FOnComplete) then - FOnComplete(Ext, 'Unregister', S_FALSE); - Result := False; - end; - FBusy := False; - BusyChange; -end; - -function TFileExtAssociate.RegisterFileType(rExt: string; rTitle: string; rIcon: TIcon): Boolean; -begin - if rExt[1] = '.' then - rExt := Copy(rExt, 2, MaxInt); - with TRegistry.Create do - begin - try - RootKey := HKEY_CLASSES_ROOT; - OpenKey('.' + rExt, True); - WriteString('', rExt + 'file'); - CloseKey; - CreateKey(rExt + 'file'); - OpenKey(rExt + 'file\DefaultIcon', True); - WriteString('', rTitle + ',0'); - CloseKey; - OpenKey(rExt + 'file\shell\open\command', True); - WriteString('', rTitle + ' "%1"'); - CloseKey; - Result := True; - finally - Free; - end; - end; - SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); -end; - -function TFileExtAssociate.UnRegisterFileType(uExt: string; uTitle: string): Boolean; -var - st: string; -begin - if uExt = '' then - begin - if Assigned(FOnError) then - FOnError('Can not remove a null extension.'); - Result := False; - exit; - end; - with TRegistry.Create do - begin - try - if AnsiPos('.', uExt) = 0 then - st := '.' + uExt; - RootKey := HKEY_CLASSES_ROOT; - if KeyExists(st) then - DeleteKey(uExt) - else - begin - if Assigned(FOnError) then - FOnError('Error occured while removing ' + st); - //Result := False; - end; - if uExt[1] = '.' then - uExt := Copy(uExt, 2, MaxInt); - if KeyExists(uExt + 'file') then - DeleteKey(uExt + 'file') - else - begin - if Assigned(FOnError) then - FOnError('Error occured while removing ' + uExt + 'file'); - //Result := False; - end; - Result := True; - finally - Free; - end; - end; - SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil); -end; - -// Shortcuts==================================================================== - -function TFileExtAssociate.CreateShortcut(SourceFileName: string; ShellFolder: TShortcutItems; - SubFolder, WorkingDir, Parameters, Description: string): string; //Idea by Smot -var - MyObject: IUnknown; - MySLink: IShellLink; - MyPFile: IPersistFile; - FolderPath, LinkName: string; - ShortcutFile: WideString; - Reg: TRegIniFile; -begin - MyObject := CreateComObject(CLSID_ShellLink); - MySLink := MyObject as IShellLink; - MyPFile := MyObject as IPersistFile; - MySLink.SetPath(PChar(SourceFileName)); - MySLink.SetArguments(PChar(Parameters)); - MySLink.SetDescription(PChar(Description)); - LinkName := ChangeFileExt(SourceFileName, '.lnk'); - LinkName := ExtractFileName(LinkName); - if LinkName = '' then - begin - if Assigned(FOnError) then - FOnError('Error occured creating link.'); - Result := ''; - Exit; - end - else - begin - Reg := TRegIniFile.Create(SHELL_FOLDERS_ROOT); - try - case ShellFolder of - ProgramsSubDir: FolderPath := Reg.ReadString('Shell Folders', - 'Programs', '') + '\' + SubFolder; - Desktop: FolderPath := Reg.ReadString('Shell Folders', 'Desktop', ''); - StartUp: FolderPath := Reg.ReadString('Shell Folders', 'Startup', ''); - StartMenu: FolderPath := Reg.ReadString('Shell Folders', 'Start Menu', ''); - SendTo: FolderPath := Reg.ReadString('Shell Folders', 'SendTo', ''); - Programs: FolderPath := Reg.ReadString('Shell Folders', 'Programs', ''); - QuickLaunch: FolderPath := Reg.ReadString('Shell Folders', 'AppData', '') + - '\Microsoft\Internet Explorer\Quick Launch'; - end; - finally - Reg.Free; - end; - end; - if FolderPath <> '' then - begin - if (SubFolder <> '') and (ShellFolder = ProgramsSubDir) then - begin - if CreateDir(FolderPath) then - ShortcutFile := FolderPath + '\' + LinkName; - end - else - if (SubFolder <> '') and (ShellFolder <> ProgramsSubDir) then - ShortcutFile := FolderPath + '\' + SubFolder + '\' + LinkName - else - ShortcutFile := FolderPath + '\' + LinkName; - if WorkingDir = '' then - MySLink.SetWorkingDirectory(PChar(ExtractFilePath(SourceFileName))) - else - MySLink.SetWorkingDirectory(PChar(WorkingDir)); - MyPFile.Save(PWChar(ShortcutFile), False); - Result := ShortcutFile; - end - else - begin - if Assigned(FOnError) then - FOnError('Error occured while locating path to the shortcut.'); - Result := ''; - Exit; - end; -end; - -function TFileExtAssociate.CreateShortcutSendTo(cExeName, cSubDir, cWorkDir, cParam, cTitle: string; CShellDir: TShortcutItems): HResult; -begin - Result := S_OK; - CreateShortcut(cExeName, CShellDir, '', '', '', cTitle); - if Assigned(FOnShortcut) then - FOnShortcut('SendTo', 'Add', Result); -end; - -function TFileExtAssociate.CreateShortcutStartUp(cExeName, cSubDir, cWorkDir, cParam, cTitle: string; CShellDir: TShortcutItems): HResult; -begin - Result := S_OK; - CreateShortcut(cExeName, CShellDir, '', '', '', cTitle); - if Assigned(FOnShortcut) then - FOnShortcut('StartUp', 'Add', Result); -end; - -function TFileExtAssociate.CreateShortcutStartMenu(cExeName, cSubDir, cWorkDir, cParam, cTitle: string; CShellDir: TShortcutItems): HResult; -begin - Result := S_OK; - CreateShortcut(cExeName, CShellDir, '', '', '', cTitle); - if Assigned(FOnShortcut) then - FOnShortcut('StartMenu', 'Add', Result); -end; - -function TFileExtAssociate.CreateShortcutPrograms(cExeName, cSubDir, cWorkDir, cParam, cTitle: string; CShellDir: TShortcutItems): HResult; -begin - Result := S_OK; - CreateShortcut(cExeName, CShellDir, '', '', '', cTitle); - if Assigned(FOnShortcut) then - FOnShortcut('Programs', 'Add', Result); -end; - -function TFileExtAssociate.CreateShortcutDesktop(cExeName, cSubDir, cWorkDir, cParam, cTitle: string; CShellDir: TShortcutItems): HResult; -begin - Result := S_OK; - CreateShortcut(cExeName, CShellDir, '', '', '', cTitle); - if Assigned(FOnShortcut) then - FOnShortcut('Desktop', 'Add', Result); -end; - -function TFileExtAssociate.CreateShortcutOtherFolder(cExeName, cSubDir, cWorkDir, cParam, cTitle: string; CShellDir: TShortcutItems): HResult; -begin - Result := S_OK; - CreateShortcut(cExeName, CShellDir, cSubDir, '', '', cTitle); - if Assigned(FOnShortcut) then - FOnShortcut('ProgramsSubDir', 'Add', Result); -end; - -function TFileExtAssociate.CreateShortcutQuickLaunch(cExeName, cSubDir, cWorkDir, cParam, cTitle: string; CShellDir: TShortcutItems): HResult; -begin - Result := S_OK; - CreateShortcut(cExeName, CShellDir, '', '', '', cTitle); - if Assigned(FOnShortcut) then - FOnShortcut('QuickLaunch', 'Add', Result); -end; - -function TFileExtAssociate.RemoveShortcuts(rmExeName: string): HResult; -var - FolderPath: WideString; - Reg: TRegIniFile; - FName, IName: string; -begin - if rmExeName = '' then - begin - rmExeName := Application.ExeName; - FApplicationDetails.FAppExeName := rmExeName; - if not FileExists(rmExeName) then - if Assigned(FOnError) then - FOnError('Error occured while removing shortcuts. (nil Exe file)'); - Result := S_FALSE; - Exit; - end - else - begin - Reg := TRegIniFile.Create(SHELL_FOLDERS_ROOT); - IName := ExtractFileName(rmExeName); - FName := ChangeFileExt(IName, '.lnk'); - try - FolderPath := Reg.ReadString('Shell Folders', 'Programs', '') + '\' + FAppShortcuts.FMenuSubDir; - if FileExists(FolderPath + '\' + FName) and - DeleteFile(FolderPath + '\' + FName) then - begin - Result := S_OK; - RemoveDir(FolderPath); - if Assigned(FOnShortcut) then - FOnShortcut('ProgramsSubDir', 'Remove', Result); - end - else - begin - Result := S_FALSE; - if Assigned(FOnShortcut) then - FOnShortcut('ProgramsSubDir', 'Remove', Result); - end; - - FolderPath := Reg.ReadString('Shell Folders', 'Desktop', ''); - if FileExists(FolderPath + '\' + FName) and - DeleteFile(FolderPath + '\' + FName) then - begin - Result := S_OK; - if Assigned(FOnShortcut) then - FOnShortcut('Desktop', 'Remove', Result); - end - else - begin - Result := S_FALSE; - if Assigned(FOnShortcut) then - FOnShortcut('ProgramsSubDir', 'Remove', Result); - end; - FolderPath := Reg.ReadString('Shell Folders', 'Startup', ''); - if FileExists(FolderPath + '\' + FName) and - DeleteFile(FolderPath + '\' + FName) then - begin - Result := S_OK; - if Assigned(FOnShortcut) then - FOnShortcut('Startup', 'Remove', Result); - end - else - begin - Result := S_FALSE; - if Assigned(FOnShortcut) then - FOnShortcut('ProgramsSubDir', 'Remove', Result); - end; - FolderPath := Reg.ReadString('Shell Folders', 'Start Menu', ''); - if FileExists(FolderPath + '\' + FName) and - DeleteFile(FolderPath + '\' + FName) then - begin - Result := S_OK; - if Assigned(FOnShortcut) then - FOnShortcut('Start Menu', 'Remove', Result); - end - else - begin - Result := S_FALSE; - if Assigned(FOnShortcut) then - FOnShortcut('ProgramsSubDir', 'Remove', Result); - end; - FolderPath := Reg.ReadString('Shell Folders', 'SendTo', ''); - if FileExists(FolderPath + '\' + FName) and - DeleteFile(FolderPath + '\' + FName) then - begin - Result := S_OK; - if Assigned(FOnShortcut) then - FOnShortcut('SendTo', 'Remove', Result); - end - else - begin - Result := S_FALSE; - if Assigned(FOnShortcut) then - FOnShortcut('ProgramsSubDir', 'Remove', Result); - end; - FolderPath := Reg.ReadString('Shell Folders', 'Programs', ''); - if FileExists(FolderPath + '\' + FName) and - DeleteFile(FolderPath + '\' + FName) then - begin - Result := S_OK; - if Assigned(FOnShortcut) then - FOnShortcut('Programs', 'Remove', Result); - end - else - begin - Result := S_FALSE; - if Assigned(FOnShortcut) then - FOnShortcut('ProgramsSubDir', 'Remove', Result); - end; - FolderPath := Reg.ReadString('Shell Folders', 'AppData', '') + - '\Microsoft\Internet Explorer\Quick Launch'; - if FileExists(FolderPath + '\' + FName) and - DeleteFile(FolderPath + '\' + FName) then - begin - Result := S_OK; - if Assigned(FOnShortcut) then - FOnShortcut('Quick Launch', 'Remove', Result); - end - else - begin - Result := S_FALSE; - if Assigned(FOnShortcut) then - FOnShortcut('ProgramsSubDir', 'Remove', Result); - end; - finally - Reg.Free; - end; - end; -end; - -function TFileExtAssociate.UpdateShortcutItemValue: LongInt; -const - AcardShortcutItemValues: array[TShortcutItems] of Cardinal = - ($01, $02, $03, $04, $05, $06, $07, $08); -var - i: TShortcutItems; - j: Longint; -begin - j := 0; - if (FAppShortcuts.FOptions <> []) then - for i := Low(TShortcutItems) to High(TShortcutItems) - do - if (i in FAppShortcuts.FOptions) then - Inc(j, AcardShortcutItemValues[i]); - Result := j; -end; - -//============================================================================== - -function FormatSize(Byte: Double): string; -begin - if (Byte < 1024) then - Result := Format('%.2n b', [Byte]) - else - begin - Byte := (Byte / 1024); - if (Byte < 1024) then - Result := Format('%.2n Kb', [Byte]) - else - begin - Byte := (Byte / 1024); - Result := Format('%.2n Mb', [Byte]); - end; - end; -end; - -procedure GetFileInfo(Path: string; var Info: TFileInfo); -var - SHFileInfo: TSHFileInfo; - SearchRec: TSearchRec; - intFileAge: Integer; -begin - if Trim(Path) <> '' then - begin - ShGetFileInfo(PChar(Path), 0, SHFileInfo, SizeOf(TSHFileInfo), - SHGFI_TYPENAME or SHGFI_DISPLAYNAME or SHGFI_SYSICONINDEX or SHGFI_ICON); - ZeroMemory(@Info, 0); - with Info do - begin - Icon := SHFileInfo.hIcon; - Image := SHFileInfo.iIcon; - DisplayName := SHFileInfo.szDisplayName; - TypeName := SHFileInfo.szTypeName; -{$IFDEF DELPHI6_UP}{$WARN SYMBOL_DEPRECATED OFF}{$ENDIF} - intFileAge := FileAge(Path); - if intFileAge > -1 then - DateTime := FileDateToDateTime(intFileAge); -{$IFDEF DELPHI6_UP}{$WARN SYMBOL_DEPRECATED ON}{$ENDIF} - if FindFirst(Path, 0, SearchRec) = 0 then - begin - Size := SearchRec.Size; - SizeAsString := FormatSize(Size); - FindClose(searchRec); - end; - end; - end; -end; - -function TFileExtAssociate.GetExeByExtension(sExt: string): string; -var - sExtDesc: string; -begin - with TRegistry.Create do - begin - try - if sExt = '' then - begin - if Assigned(FOnError) then - FOnError('Can not locate a null extension'); - Result := ''; - Exit; - end; - if AnsiPos('.', sExt) = 0 then - sExt := '.' + sExt; - RootKey := HKEY_CLASSES_ROOT; - if OpenKeyReadOnly(sExt) then - begin - sExtDesc := ReadString(''); - CloseKey; - end; - if sExtDesc <> '' then - begin - if OpenKeyReadOnly(sExtDesc + '\Shell\Open\Command') then - Result := ReadString(''); - end; - finally - Free; - end; - end; - - if Result <> '' then - begin - if Result[1] = '"' then - begin - Result := Copy(Result, 2, -1 + Pos('"', Copy(Result, 2, MaxINt))); - end - end; -end; - -function TFileExtAssociate.GetIconByExtension(Extension: string; Small: Boolean): HIcon; -var - Info: TSHFileInfo; - Flags: Cardinal; -begin - if Small then - Flags := SHGFI_ICON or SHGFI_SMALLICON or SHGFI_USEFILEATTRIBUTES - else - Flags := SHGFI_ICON or SHGFI_LARGEICON or SHGFI_USEFILEATTRIBUTES; - if AnsiPos('.', Extension) = 0 then - Extension := '.' + Extension; - SHGetFileInfo(PChar(Extension), FILE_ATTRIBUTE_NORMAL, Info, SizeOf(TSHFileInfo), Flags); - Result := Info.hIcon; -end; - -function TFileExtAssociate.GetFileDisplayName(const Path: string): string; -var - Info: TFileInfo; -begin - GetFileInfo(Path, Info); - Result := Info.DisplayName; -end; - -function TFileExtAssociate.GetFileSize(const Path: string): string; -var - Info: TFileInfo; -begin - GetFileInfo(Path, Info); - Result := Info.SizeAsString; -end; - -function TFileExtAssociate.GetFileTypeName(const Path: string): string; -var - Info: TFileInfo; -begin - GetFileInfo(Path, Info); - Result := Info.TypeName; -end; - -function TFileExtAssociate.GetFileImage(const Path: string): Integer; -var - Info: TFileInfo; -begin - GetFileInfo(Path, Info); - Result := Info.Image; -end; - -function TFileExtAssociate.GetFileIcon(const Path: string): HIcon; -var - Info: TFileInfo; -begin - GetFileInfo(Path, Info); - Result := Info.Icon; -end; - -function TFileExtAssociate.GetFileDateTime(const Path: string): TDateTime; -var - Info: TFileInfo; -begin - GetFileInfo(Path, Info); - Result := Info.DateTime; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/HighLightHTML.pas b/windows/src/ext/embeddedwb/Source/HighLightHTML.pas deleted file mode 100644 index 550df89f00..0000000000 --- a/windows/src/ext/embeddedwb/Source/HighLightHTML.pas +++ /dev/null @@ -1,2639 +0,0 @@ -{*******************************************************} -{ RichEdit Syntax HighLight } -{ version 3.0 } -{ Author: } -{ Serhiy Perevoznyk } -{ serge_perevoznyk@hotmail.com } -{ bsalsa made some minor code changes } -{*******************************************************} - -{The contents of this file are subject to the Mozilla Public License -Version 1.1 (the "License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at -http://www.mozilla.org/MPL/ - -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. - -The Original Code is: SynHighlighterHTML.pas, released 2000-04-10. -The Original Code is based on the hkHTMLSyn.pas file from the -mwEdit component suite by Martin Waldenburg and other developers, the Initial -Author of this file is Hideo Koiso. -All Rights Reserved. -The Original Code can be obtained from http://synedit.sourceforge.net/ -} -//$Id: HighLightHTML.pas,v 1.2 2006/11/15 21:01:41 sergev Exp $ - -unit HighLightHTML; - -{$IFDEF UNICODE} -{$WARN WIDECHAR_REDUCED OFF} -{$ENDIF UNICODE} - -interface - - -{$I EWB.inc} - -uses - SysUtils, Windows, Messages, Classes, Controls, Graphics, HighLightRichSyntax; - -const - MAX_ESCAPEAMPS = 151; - - EscapeAmps: array[0..MAX_ESCAPEAMPS - 1] of PChar = ( - ('&'), { & } - ('<'), { > } - ('>'), { < } - ('"'), { " } - ('™'), { } - (' '), { space } - ('©'), { } - ('®'), { } - ('À'), { } - ('Á'), { } - ('Â'), { } - ('Ã'), { } - ('Ä'), { } - ('Å'), { } - ('Æ'), { } - ('Ç'), { } - ('È'), { } - ('É'), { } - ('Ê'), { } - ('Ë'), { } - ('Ì'), { } - ('Í'), { } - ('Î'), { } - ('Ï'), { } - ('Ð'), { } - ('Ñ'), { } - ('Ò'), { } - ('Ó'), { } - ('Ô'), { } - ('Õ'), { } - ('Ö'), { } - ('Ø'), { } - ('Ù'), { } - ('Ú'), { } - ('Û'), { } - ('Ü'), { } - ('Ý'), { } - ('Þ'), { } - ('ß'), { } - ('à'), { } - ('á'), { } - ('â'), { } - ('ã'), { } - ('ä'), { } - ('å'), { } - ('æ'), { } - ('ç'), { } - ('è'), { } - ('é'), { } - ('ê'), { } - ('ë'), { } - ('ì'), { } - ('í'), { } - ('î'), { } - ('ï'), { } - ('ð'), { } - ('ñ'), { } - ('ò'), { } - ('ó'), { } - ('ô'), { } - ('õ'), { } - ('ö'), { } - ('ø'), { } - ('ù'), { } - ('ú'), { } - ('û'), { } - ('ü'), { } - ('ý'), { } - ('þ'), { } - ('ÿ'), { } - ('¡'), { } - ('¢'), { } - ('£'), { } - ('¤'), { } - ('¥'), { } - ('¦'), { } - ('§'), { } - ('¨'), { } - ('ª'), { } - ('«'), { } - ('­'), { } - ('¯'), { } - ('°'), { } - ('±'), { } - ('²'), { } - ('³'), { } - ('´'), { } - ('µ'), { } - ('·'), { } - ('¸'), { } - ('¹'), { } - ('º'), { } - ('»'), { } - ('¼'), { } - ('½'), { } - ('¾'), { } - ('¿'), { } - ('×'), { } - ('÷'), { } - ('€'), { } - //used by very old HTML editors - (' '), { TAB } - (''), {  } - ('€'), { } - (''), { } - ('‚'), { } - ('ƒ'), { } - ('„'), { } - ('&ldots;'), { } - ('†'), { } - ('‡'), { } - ('ˆ'), { } - ('‰'), { } - ('Š'), { } - ('‹'), { } - ('Œ'), { } - (''), { } - ('Ž'), { } - (''), { } - (''), { } - ('˜'), { } - ('™'), { } - ('š'), { } - ('›'), { } - ('œ'), { } - (''), { } - ('ž'), { } - ('Ÿ'), { } - ('¡'), { } - ('¢'), { } - ('£'), { } - ('¤'), { } - ('¥'), { } - ('¦'), { } - ('§'), { } - ('¨'), { } - ('ª'), { } - ('¯'), { } - ('°'), { } - ('±'), { } - ('²'), { } - ('´'), { } - ('µ'), { } - ('·'), { } - ('¸'), { } - ('¹'), { } - ('º'), { } - ('¼'), { } - ('½'), { } - ('¾'), { } - ('¿'), { } - ('×') { } - ); - -type - TtkTokenKind = (tkAmpersand, tkASP, tkComment, tkIdentifier, tkKey, tkNull, - tkSpace, tkString, tkSymbol, tkText, tkUndefKey, tkValue); - - TRangeState = (rsAmpersand, rsASP, rsComment, rsKey, rsParam, rsText, - rsUnKnown, rsValue); - - TProcTableProc = procedure of object; - TIdentFuncTableFunc = function: TtkTokenKind of object; - - THighlightHTML = class(THighlightRichSyntax) - private - fAndCode: Integer; - fRange: TRangeState; - fLine: PChar; - fProcTable: array[#0..#255] of TProcTableProc; - Run: Longint; - Temp: PChar; - fStringLen: Integer; - fToIdent: PChar; - fIdentFuncTable: array[0..243] of TIdentFuncTableFunc; - fTokenPos: Integer; - fTokenID: TtkTokenKind; - fLineNumber: Integer; - function KeyHash(ToHash: PChar): Integer; - function KeyComp(const aKey: string): Boolean; - function Func1: TtkTokenKind; - function Func2: TtkTokenKind; - function Func8: TtkTokenKind; - function Func9: TtkTokenKind; - function Func10: TtkTokenKind; - function Func11: TtkTokenKind; - function Func12: TtkTokenKind; - function Func13: TtkTokenKind; - function Func14: TtkTokenKind; - function Func16: TtkTokenKind; - function Func17: TtkTokenKind; - function Func18: TtkTokenKind; - function Func19: TtkTokenKind; - function Func20: TtkTokenKind; - function Func21: TtkTokenKind; - function Func23: TtkTokenKind; - function Func24: TtkTokenKind; - function Func25: TtkTokenKind; - function Func26: TtkTokenKind; - function Func27: TtkTokenKind; - function Func28: TtkTokenKind; - function Func29: TtkTokenKind; - function Func30: TtkTokenKind; - function Func31: TtkTokenKind; - function Func32: TtkTokenKind; - function Func33: TtkTokenKind; - function Func35: TtkTokenKind; - function Func37: TtkTokenKind; - function Func38: TtkTokenKind; - function Func39: TtkTokenKind; - function Func40: TtkTokenKind; - function Func41: TtkTokenKind; - function Func42: TtkTokenKind; - function Func43: TtkTokenKind; - function Func46: TtkTokenKind; - function Func47: TtkTokenKind; - function Func48: TtkTokenKind; - function Func49: TtkTokenKind; - function Func50: TtkTokenKind; - function Func52: TtkTokenKind; - function Func53: TtkTokenKind; - function Func55: TtkTokenKind; - function Func56: TtkTokenKind; - function Func57: TtkTokenKind; - function Func58: TtkTokenKind; - function Func61: TtkTokenKind; - function Func62: TtkTokenKind; - function Func64: TtkTokenKind; - function Func65: TtkTokenKind; - function Func66: TtkTokenKind; - function Func67: TtkTokenKind; - function Func70: TtkTokenKind; - function Func76: TtkTokenKind; - function Func78: TtkTokenKind; - function Func80: TtkTokenKind; - function Func81: TtkTokenKind; - function Func82: TtkTokenKind; - function Func83: TtkTokenKind; - function Func84: TtkTokenKind; - function Func85: TtkTokenKind; - function Func87: TtkTokenKind; - function Func89: TtkTokenKind; - function Func90: TtkTokenKind; - function Func91: TtkTokenKind; - function Func92: TtkTokenKind; - function Func93: TtkTokenKind; - function Func94: TtkTokenKind; - function Func105: TtkTokenKind; - function Func107: TtkTokenKind; - function Func114: TtkTokenKind; - function Func121: TtkTokenKind; - function Func123: TtkTokenKind; - function Func124: TtkTokenKind; - function Func130: TtkTokenKind; - function Func131: TtkTokenKind; - function Func132: TtkTokenKind; - function Func133: TtkTokenKind; - function Func134: TtkTokenKind; - function Func135: TtkTokenKind; - function Func136: TtkTokenKind; - function Func138: TtkTokenKind; - function Func139: TtkTokenKind; - function Func140: TtkTokenKind; - function Func141: TtkTokenKind; - function Func143: TtkTokenKind; - function Func145: TtkTokenKind; - function Func146: TtkTokenKind; - function Func149: TtkTokenKind; - function Func150: TtkTokenKind; - function Func151: TtkTokenKind; - function Func152: TtkTokenKind; - function Func153: TtkTokenKind; - function Func154: TtkTokenKind; - function Func155: TtkTokenKind; - function Func157: TtkTokenKind; - function Func159: TtkTokenKind; - function Func160: TtkTokenKind; - function Func161: TtkTokenKind; - function Func162: TtkTokenKind; - function Func163: TtkTokenKind; - function Func164: TtkTokenKind; - function Func168: TtkTokenKind; - function Func169: TtkTokenKind; - function Func170: TtkTokenKind; - function Func171: TtkTokenKind; - function Func172: TtkTokenKind; - function Func174: TtkTokenKind; - function Func175: TtkTokenKind; - function Func177: TtkTokenKind; - function Func178: TtkTokenKind; - function Func179: TtkTokenKind; - function Func180: TtkTokenKind; - function Func183: TtkTokenKind; - function Func186: TtkTokenKind; - function Func187: TtkTokenKind; - function Func188: TtkTokenKind; - function Func192: TtkTokenKind; - function Func198: TtkTokenKind; - function Func200: TtkTokenKind; - function Func202: TtkTokenKind; - function Func203: TtkTokenKind; - function Func204: TtkTokenKind; - function Func205: TtkTokenKind; - function Func207: TtkTokenKind; - function Func209: TtkTokenKind; - function Func211: TtkTokenKind; - function Func212: TtkTokenKind; - function Func213: TtkTokenKind; - function Func214: TtkTokenKind; - function Func215: TtkTokenKind; - function Func216: TtkTokenKind; - function Func227: TtkTokenKind; - function Func229: TtkTokenKind; - function Func236: TtkTokenKind; - function Func243: TtkTokenKind; - function AltFunc: TtkTokenKind; - function IdentKind(MayBe: PChar): TtkTokenKind; - procedure InitIdent; - procedure MakeMethodTables; - procedure ASPProc; - procedure TextProc; - procedure CommentProc; - procedure BraceCloseProc; - procedure BraceOpenProc; - procedure CRProc; - procedure EqualProc; - procedure IdentProc; - procedure LFProc; - procedure NullProc; - procedure SpaceProc; - procedure StringProc; - procedure AmpersandProc; - protected - function GetEol: Boolean; override; - function GetRange: Pointer; - function GetTokenID: TtkTokenKind; - procedure SetLine(NewValue: string; LineNumber: Integer); override; - function GetToken: string; override; - function GetTokenAttribute: integer; override; - function GetTokenKind: integer; - function GetTokenPos: Integer; - procedure Next; override; - procedure SetRange(Value: Pointer); - procedure ReSetRange; - procedure PrepareToken(var AToken: string); override; - function PrepareOutput(Attr: integer; AToken: string): string; override; - public - constructor Create; override; - procedure SetupDefaultColors; override; - end; - -implementation - -var - mHashTable: array[#0..#255] of Integer; - - -procedure MakeIdentTable; -var - i: Char; -begin - for i := #0 to #255 do - case i of - 'a'..'z', 'A'..'Z': - mHashTable[i] := (Ord(UpCase(i)) - 64); - '!': - mHashTable[i] := $7B; - '/': - mHashTable[i] := $7A; - else - mHashTable[Char(i)] := 0; - end; -end; - -procedure THighlightHTML.InitIdent; -var - i: Integer; -begin - for i := 0 to 243 do - case i of - 1: fIdentFuncTable[i] := Func1; - 2: fIdentFuncTable[i] := Func2; - 8: fIdentFuncTable[i] := Func8; - 9: fIdentFuncTable[i] := Func9; - 10: fIdentFuncTable[i] := Func10; - 11: fIdentFuncTable[i] := Func11; - 12: fIdentFuncTable[i] := Func12; - 13: fIdentFuncTable[i] := Func13; - 14: fIdentFuncTable[i] := Func14; - 16: fIdentFuncTable[i] := Func16; - 17: fIdentFuncTable[i] := Func17; - 18: fIdentFuncTable[i] := Func18; - 19: fIdentFuncTable[i] := Func19; - 20: fIdentFuncTable[i] := Func20; - 21: fIdentFuncTable[i] := Func21; - 23: fIdentFuncTable[i] := Func23; - 24: fIdentFuncTable[i] := Func24; - 25: fIdentFuncTable[i] := Func25; - 26: fIdentFuncTable[i] := Func26; - 27: fIdentFuncTable[i] := Func27; - 28: fIdentFuncTable[i] := Func28; - 29: fIdentFuncTable[i] := Func29; - 30: fIdentFuncTable[i] := Func30; - 31: fIdentFuncTable[i] := Func31; - 32: fIdentFuncTable[i] := Func32; - 33: fIdentFuncTable[i] := Func33; - 35: fIdentFuncTable[i] := Func35; - 37: fIdentFuncTable[i] := Func37; - 38: fIdentFuncTable[i] := Func38; - 39: fIdentFuncTable[i] := Func39; - 40: fIdentFuncTable[i] := Func40; - 41: fIdentFuncTable[i] := Func41; - 42: fIdentFuncTable[i] := Func42; - 43: fIdentFuncTable[i] := Func43; - 46: fIdentFuncTable[i] := Func46; - 47: fIdentFuncTable[i] := Func47; - 48: fIdentFuncTable[i] := Func48; - 49: fIdentFuncTable[i] := Func49; - 50: fIdentFuncTable[i] := Func50; - 52: fIdentFuncTable[i] := Func52; - 53: fIdentFuncTable[i] := Func53; - 55: fIdentFuncTable[i] := Func55; - 56: fIdentFuncTable[i] := Func56; - 57: fIdentFuncTable[i] := Func57; - 58: fIdentFuncTable[i] := Func58; - 61: fIdentFuncTable[i] := Func61; - 62: fIdentFuncTable[i] := Func62; - 64: fIdentFuncTable[i] := Func64; - 65: fIdentFuncTable[i] := Func65; - 66: fIdentFuncTable[i] := Func66; - 67: fIdentFuncTable[i] := Func67; - 70: fIdentFuncTable[i] := Func70; - 76: fIdentFuncTable[i] := Func76; - 78: fIdentFuncTable[i] := Func78; - 80: fIdentFuncTable[i] := Func80; - 81: fIdentFuncTable[i] := Func81; - 82: fIdentFuncTable[i] := Func82; - 83: fIdentFuncTable[i] := Func83; - 84: fIdentFuncTable[i] := Func84; - 85: fIdentFuncTable[i] := Func85; - 87: fIdentFuncTable[i] := Func87; - 89: fIdentFuncTable[i] := Func89; - 90: fIdentFuncTable[i] := Func90; - 91: fIdentFuncTable[i] := Func91; - 92: fIdentFuncTable[i] := Func92; - 93: fIdentFuncTable[i] := Func93; - 94: fIdentFuncTable[i] := Func94; - 105: fIdentFuncTable[i] := Func105; - 107: fIdentFuncTable[i] := Func107; - 114: fIdentFuncTable[i] := Func114; - 121: fIdentFuncTable[i] := Func121; - 123: fIdentFuncTable[i] := Func123; - 124: fIdentFuncTable[i] := Func124; - 130: fIdentFuncTable[i] := Func130; - 131: fIdentFuncTable[i] := Func131; - 132: fIdentFuncTable[i] := Func132; - 133: fIdentFuncTable[i] := Func133; - 134: fIdentFuncTable[i] := Func134; - 135: fIdentFuncTable[i] := Func135; - 136: fIdentFuncTable[i] := Func136; - 138: fIdentFuncTable[i] := Func138; - 139: fIdentFuncTable[i] := Func139; - 140: fIdentFuncTable[i] := Func140; - 141: fIdentFuncTable[i] := Func141; - 143: fIdentFuncTable[i] := Func143; - 145: fIdentFuncTable[i] := Func145; - 146: fIdentFuncTable[i] := Func146; - 149: fIdentFuncTable[i] := Func149; - 150: fIdentFuncTable[i] := Func150; - 151: fIdentFuncTable[i] := Func151; - 152: fIdentFuncTable[i] := Func152; - 153: fIdentFuncTable[i] := Func153; - 154: fIdentFuncTable[i] := Func154; - 155: fIdentFuncTable[i] := Func155; - 157: fIdentFuncTable[i] := Func157; - 159: fIdentFuncTable[i] := Func159; - 160: fIdentFuncTable[i] := Func160; - 161: fIdentFuncTable[i] := Func161; - 162: fIdentFuncTable[i] := Func162; - 163: fIdentFuncTable[i] := Func163; - 164: fIdentFuncTable[i] := Func164; - 168: fIdentFuncTable[i] := Func168; - 169: fIdentFuncTable[i] := Func169; - 170: fIdentFuncTable[i] := Func170; - 171: fIdentFuncTable[i] := Func171; - 172: fIdentFuncTable[i] := Func172; - 174: fIdentFuncTable[i] := Func174; - 175: fIdentFuncTable[i] := Func175; - 177: fIdentFuncTable[i] := Func177; - 178: fIdentFuncTable[i] := Func178; - 179: fIdentFuncTable[i] := Func179; - 180: fIdentFuncTable[i] := Func180; - 183: fIdentFuncTable[i] := Func183; - 186: fIdentFuncTable[i] := Func186; - 187: fIdentFuncTable[i] := Func187; - 188: fIdentFuncTable[i] := Func188; - 192: fIdentFuncTable[i] := Func192; - 198: fIdentFuncTable[i] := Func198; - 200: fIdentFuncTable[i] := Func200; - 202: fIdentFuncTable[i] := Func202; - 203: fIdentFuncTable[i] := Func203; - 204: fIdentFuncTable[i] := Func204; - 205: fIdentFuncTable[i] := Func205; - 207: fIdentFuncTable[i] := Func207; - 209: fIdentFuncTable[i] := Func209; - 211: fIdentFuncTable[i] := Func211; - 212: fIdentFuncTable[i] := Func212; - 213: fIdentFuncTable[i] := Func213; - 214: fIdentFuncTable[i] := Func214; - 215: fIdentFuncTable[i] := Func215; - 216: fIdentFuncTable[i] := Func216; - 227: fIdentFuncTable[i] := Func227; - 229: fIdentFuncTable[i] := Func229; - 236: fIdentFuncTable[i] := Func236; - 243: fIdentFuncTable[i] := Func243; - else - fIdentFuncTable[i] := AltFunc; - end; -end; - -function THighlightHTML.KeyHash(ToHash: PChar): Integer; -begin - Result := 0; - while (ToHash^ in ['a'..'z', 'A'..'Z', '!', '/']) do - begin - Inc(Result, mHashTable[ToHash^]); - Inc(ToHash); - end; - while (ToHash^ in ['0'..'9']) do - begin - Inc(Result, (Ord(ToHash^) - Ord('0'))); - Inc(ToHash); - end; - fStringLen := (ToHash - fToIdent); -end; - -function THighlightHTML.KeyComp(const aKey: string): Boolean; -var - i: Integer; -begin - Temp := fToIdent; - if (Length(aKey) = fStringLen) then - begin - Result := True; - for i := 1 to fStringLen do - begin - if (mHashTable[Temp^] <> mHashTable[aKey[i]]) then - begin - Result := False; - Break; - end; - Inc(Temp); - end; - end - else - begin - Result := False; - end; -end; - -function THighlightHTML.Func1: TtkTokenKind; -begin - if KeyComp('A') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func2: TtkTokenKind; -begin - if KeyComp('B') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func8: TtkTokenKind; -begin - if KeyComp('DD') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func9: TtkTokenKind; -begin - if KeyComp('I') or KeyComp('H1') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func10: TtkTokenKind; -begin - if KeyComp('H2') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func11: TtkTokenKind; -begin - if KeyComp('H3') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func12: TtkTokenKind; -begin - if KeyComp('H4') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func13: TtkTokenKind; -begin - if KeyComp('H5') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func14: TtkTokenKind; -begin - if KeyComp('H6') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func16: TtkTokenKind; -begin - if KeyComp('DL') or KeyComp('P') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func17: TtkTokenKind; -begin - if KeyComp('KBD') or KeyComp('Q') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func18: TtkTokenKind; -begin - if KeyComp('BIG') or KeyComp('EM') or KeyComp('HEAD') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func19: TtkTokenKind; -begin - if KeyComp('S') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func20: TtkTokenKind; -begin - if KeyComp('BR') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func21: TtkTokenKind; -begin - if KeyComp('DEL') or KeyComp('LI') or KeyComp('U') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func23: TtkTokenKind; -begin - if KeyComp('ABBR') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func24: TtkTokenKind; -begin - if KeyComp('DFN') or KeyComp('DT') or KeyComp('TD') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func25: TtkTokenKind; -begin - if KeyComp('AREA') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func26: TtkTokenKind; -begin - if KeyComp('HR') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func27: TtkTokenKind; -begin - if KeyComp('BASE') or KeyComp('CODE') or KeyComp('OL') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func28: TtkTokenKind; -begin - if KeyComp('TH') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func29: TtkTokenKind; -begin - if KeyComp('EMBED') or KeyComp('IMG') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func30: TtkTokenKind; -begin - if KeyComp('COL') or KeyComp('MAP') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func31: TtkTokenKind; -begin - if KeyComp('DIR') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func32: TtkTokenKind; -begin - if KeyComp('LABEL') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func33: TtkTokenKind; -begin - if KeyComp('UL') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func35: TtkTokenKind; -begin - if KeyComp('DIV') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func37: TtkTokenKind; -begin - if KeyComp('CITE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func38: TtkTokenKind; -begin - if KeyComp('THEAD') or KeyComp('TR') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func39: TtkTokenKind; -begin - if KeyComp('META') or KeyComp('PRE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func40: TtkTokenKind; -begin - if KeyComp('TABLE') or KeyComp('TT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func41: TtkTokenKind; -begin - if KeyComp('var') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func42: TtkTokenKind; -begin - if KeyComp('INS') or KeyComp('SUB') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func43: TtkTokenKind; -begin - if KeyComp('FRAME') or KeyComp('WBR') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func46: TtkTokenKind; -begin - if KeyComp('BODY') or KeyComp('LINK') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func47: TtkTokenKind; -begin - if KeyComp('LEGend') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func48: TtkTokenKind; -begin - if KeyComp('BLINK') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func49: TtkTokenKind; -begin - if KeyComp('NOBR') or KeyComp('PARAM') or KeyComp('SAMP') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func50: TtkTokenKind; -begin - if KeyComp('SPAN') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func52: TtkTokenKind; -begin - if KeyComp('FORM') or KeyComp('IFRAME') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func53: TtkTokenKind; -begin - if KeyComp('HTML') or KeyComp('MENU') or KeyComp('XMP') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func55: TtkTokenKind; -begin - if KeyComp('FONT') or KeyComp('object') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func56: TtkTokenKind; -begin - if KeyComp('SUP') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func57: TtkTokenKind; -begin - if KeyComp('SMALL') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func58: TtkTokenKind; -begin - if KeyComp('NOEMBED') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func61: TtkTokenKind; -begin - if KeyComp('LAYER') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func62: TtkTokenKind; -begin - if KeyComp('SPACER') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func64: TtkTokenKind; -begin - if KeyComp('SELECT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func65: TtkTokenKind; -begin - if KeyComp('CENTER') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func66: TtkTokenKind; -begin - if KeyComp('TBODY') or KeyComp('TITLE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func67: TtkTokenKind; -begin - if KeyComp('KEYGEN') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func70: TtkTokenKind; -begin - if KeyComp('ADDRESS') or KeyComp('APPLET') or KeyComp('ILAYER') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func76: TtkTokenKind; -begin - if KeyComp('NEXTID') or KeyComp('TFOOT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func78: TtkTokenKind; -begin - if KeyComp('CAPTION') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func80: TtkTokenKind; -begin - if KeyComp('FIELDSET') or KeyComp('INPUT') or KeyComp('MARQUEE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func81: TtkTokenKind; -begin - if KeyComp('STYLE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func82: TtkTokenKind; -begin - if KeyComp('BASEFONT') or KeyComp('BGSOUND') or KeyComp('STRIKE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func83: TtkTokenKind; -begin - if KeyComp('COMMENT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func84: TtkTokenKind; -begin - if KeyComp('ISINDEX') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func85: TtkTokenKind; -begin - if KeyComp('SCRIPT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func87: TtkTokenKind; -begin - if KeyComp('SERVER') or KeyComp('FRAMESET') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func89: TtkTokenKind; -begin - if KeyComp('ACRONYM') or KeyComp('OPTION') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func90: TtkTokenKind; -begin - if KeyComp('LISTING') or KeyComp('NOLAYER') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func91: TtkTokenKind; -begin - if KeyComp('NOFRAMES') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func92: TtkTokenKind; -begin - if KeyComp('BUTTON') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func93: TtkTokenKind; -begin - if KeyComp('STRONG') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func94: TtkTokenKind; -begin - if KeyComp('TEXTAREA') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func105: TtkTokenKind; -begin - if KeyComp('MULTICOL') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func107: TtkTokenKind; -begin - if KeyComp('COLGROUP') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func114: TtkTokenKind; -begin - if KeyComp('NOSCRIPT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func121: TtkTokenKind; -begin - if KeyComp('BLOCKQUOTE') or KeyComp('PLAINTEXT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func123: TtkTokenKind; -begin - if KeyComp('/A') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func124: TtkTokenKind; -begin - if KeyComp('/B') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func130: TtkTokenKind; -begin - if KeyComp('/DD') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func131: TtkTokenKind; -begin - if KeyComp('/I') or KeyComp('/H1') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func132: TtkTokenKind; -begin - if KeyComp('/H2') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func133: TtkTokenKind; -begin - if KeyComp('/H3') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func134: TtkTokenKind; -begin - if KeyComp('/H4') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func135: TtkTokenKind; -begin - if KeyComp('/H5') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func136: TtkTokenKind; -begin - if KeyComp('/H6') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func138: TtkTokenKind; -begin - if KeyComp('/DL') or KeyComp('/P') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func139: TtkTokenKind; -begin - if KeyComp('/KBD') or KeyComp('/Q') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func140: TtkTokenKind; -begin - if KeyComp('/BIG') or KeyComp('/EM') or KeyComp('/HEAD') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func141: TtkTokenKind; -begin - if KeyComp('/S') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func143: TtkTokenKind; -begin - if KeyComp('/DEL') or KeyComp('/LI') or KeyComp('/U') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func145: TtkTokenKind; -begin - if KeyComp('/ABBR') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func146: TtkTokenKind; -begin - if KeyComp('/DFN') or KeyComp('/DT') or KeyComp('/TD') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func149: TtkTokenKind; -begin - if KeyComp('/CODE') or KeyComp('/OL') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func150: TtkTokenKind; -begin - if KeyComp('/TH') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func151: TtkTokenKind; -begin - if KeyComp('/EMBED') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func152: TtkTokenKind; -begin - if KeyComp('/MAP') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func153: TtkTokenKind; -begin - if KeyComp('/DIR') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func154: TtkTokenKind; -begin - if KeyComp('/LABEL') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func155: TtkTokenKind; -begin - if KeyComp('/UL') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func157: TtkTokenKind; -begin - if KeyComp('/DIV') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func159: TtkTokenKind; -begin - if KeyComp('/CITE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func160: TtkTokenKind; -begin - if KeyComp('/THEAD') or KeyComp('/TR') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func161: TtkTokenKind; -begin - if KeyComp('/PRE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func162: TtkTokenKind; -begin - if KeyComp('/TABLE') or KeyComp('/TT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func163: TtkTokenKind; -begin - if KeyComp('/var') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func164: TtkTokenKind; -begin - if KeyComp('/INS') or KeyComp('/SUB') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func168: TtkTokenKind; -begin - if KeyComp('/BODY') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func169: TtkTokenKind; -begin - if KeyComp('/LEGend') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func170: TtkTokenKind; -begin - if KeyComp('/BLINK') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func171: TtkTokenKind; -begin - if KeyComp('/NOBR') or KeyComp('/SAMP') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func172: TtkTokenKind; -begin - if KeyComp('/SPAN') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func174: TtkTokenKind; -begin - if KeyComp('/FORM') or KeyComp('/IFRAME') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func175: TtkTokenKind; -begin - if KeyComp('/HTML') or KeyComp('/MENU') or KeyComp('/XMP') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func177: TtkTokenKind; -begin - if KeyComp('/FONT') or KeyComp('/object') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func178: TtkTokenKind; -begin - if KeyComp('/SUP') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func179: TtkTokenKind; -begin - if KeyComp('/SMALL') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func180: TtkTokenKind; -begin - if KeyComp('/NOEMBED') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func183: TtkTokenKind; -begin - if KeyComp('/LAYER') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func186: TtkTokenKind; -begin - if KeyComp('/SELECT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func187: TtkTokenKind; -begin - if KeyComp('/CENTER') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func188: TtkTokenKind; -begin - if KeyComp('/TBODY') or KeyComp('/TITLE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func192: TtkTokenKind; -begin - if KeyComp('/ADDRESS') or KeyComp('/APPLET') or KeyComp('/ILAYER') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func198: TtkTokenKind; -begin - if KeyComp('/TFOOT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func200: TtkTokenKind; -begin - if KeyComp('/CAPTION') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func202: TtkTokenKind; -begin - if KeyComp('/FIELDSET') or KeyComp('/MARQUEE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func203: TtkTokenKind; -begin - if KeyComp('/STYLE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func204: TtkTokenKind; -begin - if KeyComp('/STRIKE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func205: TtkTokenKind; -begin - if KeyComp('/COMMENT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func207: TtkTokenKind; -begin - if KeyComp('/SCRIPT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func209: TtkTokenKind; -begin - if KeyComp('/FRAMESET') or KeyComp('/SERVER') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func211: TtkTokenKind; -begin - if KeyComp('/ACRONYM') or KeyComp('/OPTION') or KeyComp('!DOCTYPE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func212: TtkTokenKind; -begin - if KeyComp('/LISTING') or KeyComp('/NOLAYER') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func213: TtkTokenKind; -begin - if KeyComp('/NOFRAMES') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func214: TtkTokenKind; -begin - if KeyComp('/BUTTON') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func215: TtkTokenKind; -begin - if KeyComp('/STRONG') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func216: TtkTokenKind; -begin - if KeyComp('/TEXTAREA') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func227: TtkTokenKind; -begin - if KeyComp('/MULTICOL') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func229: TtkTokenKind; -begin - if KeyComp('/COLGROUP') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func236: TtkTokenKind; -begin - if KeyComp('/NOSCRIPT') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.Func243: TtkTokenKind; -begin - if KeyComp('/BLOCKQUOTE') then - begin - Result := tkKey; - end - else - begin - Result := tkUndefKey; - end; -end; - -function THighlightHTML.AltFunc: TtkTokenKind; -begin - Result := tkUndefKey; -end; - -procedure THighlightHTML.MakeMethodTables; -var - i: Char; -begin - for i := #0 to #255 do - begin - case i of - #0: - begin - fProcTable[i] := NullProc; - end; - #10: - begin - fProcTable[i] := LFProc; - end; - #13: - begin - fProcTable[i] := CRProc; - end; - #1..#9, #11, #12, #14..#32: - begin - fProcTable[i] := SpaceProc; - end; - '&': - begin - fProcTable[i] := AmpersandProc; - end; - '"': - begin - fProcTable[i] := StringProc; - end; - '<': - begin - fProcTable[i] := BraceOpenProc; - end; - '>': - begin - fProcTable[i] := BraceCloseProc; - end; - '=': - begin - fProcTable[i] := EqualProc; - end; - else - fProcTable[i] := IdentProc; - end; - end; -end; - -constructor THighlightHTML.Create; -begin - inherited Create; - InitIdent; - MakeMethodTables; - CreateColorTable([clGreen, clMaroon, clBlack, clBlue, clBlack, clGreen, - clBlue, clBlack, clRed, clBlack, clBlack]); -end; - -procedure THighlightHTML.SetLine(NewValue: string; LineNumber: Integer); -begin - fLine := PChar(NewValue); - Run := 0; - fLineNumber := LineNumber; - Next; -end; - -procedure THighlightHTML.ASPProc; -begin - fTokenID := tkASP; - if (fLine[Run] in [#0, #10, #13]) then - begin - fProcTable[fLine[Run]]; - Exit; - end; - - while not (fLine[Run] in [#0, #10, #13]) do - begin - if (fLine[Run] = '>') and (fLine[Run - 1] = '%') - then - begin - fRange := rsText; - Inc(Run); - break; - end; - Inc(Run); - end; -end; - -procedure THighlightHTML.BraceCloseProc; -begin - fRange := rsText; - fTokenId := tkSymbol; - Inc(Run); -end; - -procedure THighlightHTML.CommentProc; -begin - fTokenID := tkComment; - - if (fLine[Run] in [#0, #10, #13]) then - begin - fProcTable[fLine[Run]]; - Exit; - end; - - while not (fLine[Run] in [#0, #10, #13]) do - begin - if (fLine[Run] = '>') and (fLine[Run - 1] = '-') and (fLine[Run - 2] = '-') - then - begin - fRange := rsText; - Inc(Run); - break; - end; - Inc(Run); - end; -end; - -procedure THighlightHTML.BraceOpenProc; -begin - Inc(Run); - if (fLine[Run] = '!') and (fLine[Run + 1] = '-') and (fLine[Run + 2] = '-') - then - begin - fRange := rsComment; - fTokenID := tkComment; - Inc(Run, 3); - end - else - begin - - if fLine[Run] = '%' then - begin - fRange := rsASP; - fTokenID := tkASP; - Inc(Run); - end - else - begin - fRange := rsKey; - fTokenID := tkSymbol; - end; - - end; - -end; - -procedure THighlightHTML.CRProc; -begin - fTokenID := tkSpace; - Inc(Run); - if fLine[Run] = #10 then - Inc(Run); -end; - -procedure THighlightHTML.EqualProc; -begin - fRange := rsValue; - fTokenID := tkSymbol; - Inc(Run); -end; - -function THighlightHTML.IdentKind(MayBe: PChar): TtkTokenKind; -var - hashKey: Integer; -begin - fToIdent := MayBe; - hashKey := KeyHash(MayBe); - if (hashKey < 244) then - begin - Result := fIdentFuncTable[hashKey]; - end - else - begin - Result := tkIdentifier; - end; -end; - -procedure THighlightHTML.IdentProc; -begin - case fRange of - rsKey: - begin - fRange := rsParam; - fTokenID := IdentKind((fLine + Run)); - Inc(Run, fStringLen); - end; - rsValue: - begin - fRange := rsParam; - fTokenID := tkValue; - repeat - Inc(Run); - until (fLine[Run] in [#0..#32, '>']); - end; - else - fTokenID := tkIdentifier; - repeat - Inc(Run); - until (fLine[Run] in [#0..#32, '=', '"', '>']); - end; -end; - -procedure THighlightHTML.LFProc; -begin - fTokenID := tkSpace; - Inc(Run); -end; - -procedure THighlightHTML.NullProc; -begin - fTokenID := tkNull; -end; - -procedure THighlightHTML.TextProc; -const - StopSet = [#0..#31, '<', '&']; -var - i: Integer; -begin - if fLine[Run] in (StopSet - ['&']) then - begin - fProcTable[fLine[Run]]; - exit; - end; - - fTokenID := tkText; - while True do - begin - while not (fLine[Run] in StopSet) do - Inc(Run); - - if (fLine[Run] = '&') then - begin - for i := Low(EscapeAmps) to High(EscapeAmps) do - begin - if (StrLIComp((fLine + Run), PChar(EscapeAmps[i]), StrLen(EscapeAmps[i])) = 0) then - begin - fAndCode := i; - fRange := rsAmpersand; - Exit; - end; - end; - - Inc(Run); - end - else - begin - Break; - end; - end; - -end; - -procedure THighlightHTML.AmpersandProc; -begin - case fAndCode of - Low(EscapeAmps)..High(EscapeAmps): - begin - fTokenID := tkAmpersand; - Inc(Run, StrLen(EscapeAmps[fAndCode])); - end; - end; - fAndCode := -1; - fRange := rsText; -end; - -procedure THighlightHTML.SpaceProc; -begin - Inc(Run); - fTokenID := tkSpace; - while fLine[Run] <= #32 do - begin - if fLine[Run] in [#0, #9, #10, #13] then - break; - Inc(Run); - end; -end; - -procedure THighlightHTML.StringProc; -begin - if (fRange = rsValue) then - begin - fRange := rsParam; - fTokenID := tkValue; - end - else - begin - fTokenID := tkString; - end; - Inc(Run); // first '"' - while not (fLine[Run] in [#0, #10, #13, '"']) do - Inc(Run); - if fLine[Run] = '"' then - Inc(Run); // last '"' -end; - -procedure THighlightHTML.Next; -begin - fTokenPos := Run; - case fRange of - rsText: - begin - TextProc; - end; - rsComment: - begin - CommentProc; - end; - rsASP: - begin - ASPProc; - end; - else - fProcTable[fLine[Run]]; - end; -end; - -function THighlightHTML.GetEol: Boolean; -begin - Result := fTokenId = tkNull; -end; - -function THighlightHTML.GetToken: string; -var - len: Longint; -begin - Len := (Run - fTokenPos); - SetString(Result, (FLine + fTokenPos), len); -end; - -function THighlightHTML.GetTokenID: TtkTokenKind; -begin - Result := fTokenId; -end; - -function THighlightHTML.GetTokenAttribute: integer; -begin - case fTokenID of - tkAmpersand: Result := 11; - tkASP: Result := 1; - tkComment: Result := 2; - tkIdentifier: Result := 3; - tkKey: Result := 4; - tkSpace: Result := 5; - tkString: Result := 6; - tkSymbol: Result := 7; - tkText: Result := 8; - tkUndefKey: Result := 9; - tkValue: Result := 10; - else - Result := 11; - end; - -end; - -function THighlightHTML.GetTokenKind: integer; -begin - Result := Ord(fTokenId); -end; - -function THighlightHTML.GetTokenPos: Integer; -begin - Result := fTokenPos; -end; - -function THighlightHTML.GetRange: Pointer; -begin - Result := Pointer(fRange); -end; - -procedure THighlightHTML.SetRange(Value: Pointer); -begin - fRange := TRangeState(Value); -end; - -procedure THighlightHTML.ReSetRange; -begin - fRange := rsText; -end; - -function THighlightHTML.PrepareOutput(Attr: integer; AToken: string): string; -var - A: integer; -begin - A := Attr; - if Pos('//', Trim(AToken)) = 1 then - A := 2; - if ((Attr = 10) and (Pos('"', AToken) = 1)) then - A := 6; - Result := Format('\cf%d %s', [A, AToken]); -end; - -procedure THighlightHTML.PrepareToken(var AToken: string); -begin - AToken := StringReplace(AToken, '\', '\\', [rfReplaceAll]); - AToken := StringReplace(AToken, '{', '\{', [rfReplaceAll]); - AToken := StringReplace(AToken, '}', '\}', [rfReplaceAll]); -end; - -procedure THighlightHTML.SetupDefaultColors; -begin - CreateColorTable([clGreen, clMaroon, clBlack, clBlue, clBlack, clGreen, - clBlue, clBlack, clRed, clBlack, clBlack]); -end; - -initialization - MakeIdentTable; -end. diff --git a/windows/src/ext/embeddedwb/Source/HighLightRichSyntax.pas b/windows/src/ext/embeddedwb/Source/HighLightRichSyntax.pas deleted file mode 100644 index d441752e93..0000000000 --- a/windows/src/ext/embeddedwb/Source/HighLightRichSyntax.pas +++ /dev/null @@ -1,241 +0,0 @@ -{*******************************************************} -{ RichEdit Syntax HighLight } -{ version 3.2 } -{ Author: } -{ Serhiy Perevoznyk } -{ serge_perevoznyk@hotmail.com } -{ } -{ Anderson Rodrigues Barbieri } -{ bsalsa made some minor code changes } -{*******************************************************} - -{The contents of this file are subject to the Mozilla Public License -Version 1.1 (the "License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at -http://www.mozilla.org/MPL/ - -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. - -The Original Code is: psvSyntax.pas, released 2002-30-04 -Initial Author of these files is Serhiy Perevoznyk. -All Rights Reserved.} -//$Id: HighLightRichSyntax.pas,v 1.2 2006/11/15 21:01:42 sergev Exp $ - -unit HighLightRichSyntax; - -interface - -{$I EWB.inc} - -uses - Windows, SysUtils, Classes, Graphics; - -type - THighlightRichSyntax = class - private - FRTFHeader: string; - FRTFFooter: string; - FNewLine: string; - FColorTable: string; - FFontTable: string; - FCodePage: integer; - protected - property RTFHeader: string read FRTFHeader write FRTFHeader; - property RTFFooter: string read FRTFFooter write FRTFFooter; - property ColorTable: string read FColorTable write FColorTable; - property FontTable: string read FFontTable write FFontTable; - procedure PrepareToken(var AToken: string); virtual; - function PrepareOutput(Attr: integer; AToken: string): string; virtual; - procedure Next; virtual; - function GetEol: Boolean; virtual; - function GetToken: string; virtual; - function GetTokenAttribute: integer; virtual; - function ColorToStr(AColor: TColor): string; virtual; - procedure SetLine(NewValue: string; LineNumber: Integer); virtual; - public - constructor Create; virtual; - procedure SetText(Atext: string); virtual; - procedure CreateFontTable(const AFonts: array of TFont); virtual; - procedure CreateColorTable(const AColors: array of TColor); virtual; - procedure ConvertToRTFStream(AStream: TStream); virtual; - function ConvertToRTFString: string; virtual; - procedure SetupDefaultColors; virtual; - property CodePage: integer read FCodePage write FCodePage; - end; - -implementation - -{ THighlightRichSyntax } - -function THighlightRichSyntax.ColorToStr(AColor: TColor): string; -begin - Result := '\red' + IntToStr(GetRValue(ColorToRGB(AColor))) + - '\green' + IntToStr(GetGValue(ColorToRGB(AColor))) + - '\blue' + IntToStr(GetBValue(ColorToRGB(AColor))) + ';'; -end; - -procedure THighlightRichSyntax.ConvertToRTFStream(AStream: TStream); -var - Attr: integer; - St: string; - OutSt: string; -begin - AStream.Write(RTFHeader[1], Length(RTFHeader)); - AStream.Write(FFontTable[1], Length(FFontTable)); - AStream.Write(RTFFooter[1], Length(RTFFooter)); - AStream.Write(FColorTable[1], Length(FColorTable)); - AStream.Write(FNewLine[1], Length(FNewLine)); - AStream.Write('\f0 ', 4); - while not GetEol do - begin - St := GetToken; - Attr := GetTokenAttribute; - PrepareToken(St); - OutSt := PrepareOutput(Attr, St); - - if (St = #13#10) or (St = #13) then - AStream.Write('\par ', 4); - - AStream.Write(OutSt[1], Length(OutSt)); - Next; - end; - AStream.Write(' }', 6); -// AStream.Write('\par }',6); -end; - -function THighlightRichSyntax.ConvertToRTFString: string; -var - St: TStringStream; -begin - St := TStringStream.Create(''); - try - ConvertToRTFStream(St); - Result := St.DataString; - finally - St.Free; - end; -end; - -constructor THighlightRichSyntax.Create; -var - Font: TFont; -begin - inherited; - FCodePage := 1252; - Font := TFont.Create; - Font.Name := 'Courier New'; - CreateFontTable([Font]); - Font.Free; - RTFHeader := '{\rtf1\ansi\ansicpg' + IntToStr(FCodePage) + '\deff0\deftab720{\fonttbl'; - RTFFooter := '}'#13#10; - FNewLine := '\deflang1033\pard\plain\f0\fs20'; - FColorTable := ''; -end; - -procedure THighlightRichSyntax.CreateColorTable(const AColors: array of TColor); -var - I: integer; -begin - FColorTable := '{\colortbl\red0\green0\blue0;'; - for I := 0 to Length(AColors) - 1 do - FColorTable := FColorTable + ColorToStr(AColors[i]); - FColorTable := FColorTable + '}' + #13#10; -end; - -procedure THighlightRichSyntax.CreateFontTable(const AFonts: array of TFont); -var - DC: HDC; - SaveFont: HFont; - Metrics: TTextMetric; - Temp: byte; - I: Integer; - charset, family: string; -begin - FFontTable := ''; - - for i := 0 to Length(AFonts) - 1 do - begin - DC := GetDC(0); - try - SaveFont := SelectObject(DC, AFonts[i].Handle); - GetTextMetrics(DC, Metrics); - SelectObject(DC, SaveFont); - finally - ReleaseDC(0, DC); - end; - - case Metrics.tmCharSet of - ANSI_CHARSET: charset := 'fcharset0'; - DEFAULT_CHARSET: charset := 'fcharset1'; - SYMBOL_CHARSET: charset := 'fcharset2'; - SHIFTJIS_CHARSET: charset := 'fcharset128'; - OEM_CHARSET: charset := 'fcharset255'; - else - charset := ''; - end; - - Temp := Metrics.tmPitchAndFamily; - Temp := (Temp shr 4) shl 4; - - case Temp of - FF_DECORATIVE: family := 'fdecorative'; - FF_DONTCARE: family := 'fdontcare'; - FF_MODERN: family := 'fmodern'; - FF_ROMAN: family := 'froman'; - FF_SCRIPT: family := 'fscript'; - FF_SWISS: family := 'fswiss'; - else - family := 'froman'; - end; - FFontTable := FFontTable + '{\f' + IntToStr(i) + '\' + family + '\' + charset + ' ' + Afonts[i].name + ';}'; - end; -end; - -function THighlightRichSyntax.GetEol: Boolean; -begin - result := true; -end; - -function THighlightRichSyntax.GetToken: string; -begin - result := ''; -end; - -function THighlightRichSyntax.GetTokenAttribute: integer; -begin - result := 0; -end; - -function THighlightRichSyntax.PrepareOutput(Attr: integer; AToken: string): string; -begin - Result := Format('\cf%d %s', [Attr, AToken]); -end; - -procedure THighlightRichSyntax.PrepareToken(var AToken: string); -begin - // -end; - -procedure THighlightRichSyntax.Next; -begin - // -end; - -procedure THighlightRichSyntax.SetLine(NewValue: string; LineNumber: Integer); -begin - // -end; - -procedure THighlightRichSyntax.SetText(AText: string); -begin - SetLine(AText, 1); -end; - -procedure THighlightRichSyntax.SetupDefaultColors; -begin - // -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/HighLightXML.pas b/windows/src/ext/embeddedwb/Source/HighLightXML.pas deleted file mode 100644 index 219e2c4afe..0000000000 --- a/windows/src/ext/embeddedwb/Source/HighLightXML.pas +++ /dev/null @@ -1,751 +0,0 @@ - { I got Permition to add the XML HighLighter unit and to change the code - by my needs from Ajay Tandon - We thank him for that. - bsalsa } - -{*******************************************************} -{ RichEdit Syntax HighLight } -{ version 3.0 } -{ Author: } -{ Ajay Tandon } -{ } -{ bsalsa made some minor code changes } -{*******************************************************} -{------------------------------------------------------------------------------- -The contents of this file are subject to the Mozilla Public License -Version 1.1 (the "License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at -http://www.mozilla.org/MPL/ - -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. - -The Original Code is: SynHighlighterXML.pas, released 2000-11-20. -The Original Code is based on the SynHighlighterHTML.pas file from the -mwEdit component suite by Martin Waldenburg and other developers, the Initial -Author of this file is Jeff Rafter. -All Rights Reserved. - -Contributors to the SynEdit and mwEdit projects are listed in the -Contributors.txt file. - -Alternatively, the contents of this file may be used under the terms of the -GNU General Public License Version 2 or later (the "GPL"), in which case -the provisions of the GPL are applicable instead of those above. -If you wish to allow use of your version of this file only under the terms -of the GPL and not to allow others to use your version of this file -under the MPL, indicate your decision by deleting the provisions above and -replace them with the notice and other provisions required by the GPL. -If you do not delete the provisions above, a recipient may use your version -of this file under either the MPL or the GPL. - -$Id: HighLightXML.pas,v 1.2 2006/11/15 21:01:42 sergev Exp $ - -You may retrieve the latest version of this file at the SynEdit home page, -located at http://SynEdit.SourceForge.net - -History: -------------------------------------------------------------------------------- -2000-11-30 Removed mHashTable and MakeIdentTable per Michael Hieke - -Known Issues: --------------------------------------------------------------------------------} -//Nothing is really constrained (properly) to valid name chars -//Entity Refs are not constrained to valid name chars -//Support for "Combining Chars and Extender Chars" in names are lacking -//The internal DTD is not parsed (and not handled correctly) -//$Id: HighLightXML.pas,v 1.2 2006/11/15 21:01:42 sergev Exp $ - -{ -@abstract(Provides an XML highlighter for SynEdit) -@author(Jeff Rafter-- Phil 4:13, based on SynHighlighterHTML by Hideo Koiso, converted to SynEdit by Michael Hieke) -@created(2000-11-17) -@lastmod(2000-11-17) -The SynHighlighterXML unit provides SynEdit with an XML highlighter. } - -unit HighLightXML; - -interface - -{$IFDEF UNICODE} -{$WARN WIDECHAR_REDUCED OFF} -{$ENDIF UNICODE} - -{$I EWB.inc} - -uses - SysUtils, Windows, Messages, Classes, Controls, Graphics, HighLightRichSyntax; - -type - - TtkTokenKind = (tkNull, tkElement, tkAttribute, tkText, tkCDATA, tkEntityRef, - tkProcessingInstruction, tkComment, tkQuoteAttrValue, tkAposAttrValue, - tkQuoteEntityRef, tkAposEntityRef, tkSymbol, tkSpace, tkEqual, tknsAttribute, - tknsQuoteAttrValue, tknsAposAttrValue, tknsQuoteEntityRef, tknsAposEntityRef, - tknsEqual, tkDocType); - - TRangeState = (rsElement, rsEqual, rsAttribute, rsQuoteAttrValue, rsAposAttrValue, - rsQuoteEntityRef, rsAPosEntityRef, rsText, rsCDATA, rsEntityRef, rsProcessingInstruction, - rsComment, rsnsEqual, rsnsQuoteAttrValue, rsnsAposAttrValue, rsnsQuoteEntityRef, - rsnsAPosEntityRef, rsDocType); - - TProcTableProc = procedure of object; - - THighlightXML = class(THighlightRichSyntax) - private - fRange: TRangeState; - fLine: PChar; - Run: Longint; - fTokenPos: Integer; - fTokenID: TtkTokenKind; - fLineNumber: Integer; - fProcTable: array[#0..#255] of TProcTableProc; - procedure NullProc; - procedure CarriageReturnProc; - procedure LineFeedProc; - procedure SpaceProc; - procedure LessThanProc; - procedure GreaterThanProc; - procedure CommentProc; - procedure ProcessingInstructionProc; - procedure DocTypeProc; - procedure CDATAProc; - procedure TextProc; - procedure ElementProc; - procedure AttributeProc; - procedure QAttributeValueProc; - procedure AAttributeValueProc; - procedure EqualProc; - procedure IdentProc; - procedure MakeMethodTables; - function NextTokenIs(T: string): Boolean; - procedure EntityRefProc; - procedure QEntityRefProc; - procedure AEntityRefProc; - protected - function GetEol: Boolean; override; - function GetRange: Pointer; - function GetTokenID: TtkTokenKind; - procedure SetLine(NewValue: string; LineNumber: Integer); override; - function GetToken: string; override; - function GetTokenAttribute: integer; override; - function GetTokenKind: integer; - function GetTokenPos: Integer; - procedure Next; override; - procedure SetRange(Value: Pointer); - procedure ReSetRange; - procedure PrepareToken(var AToken: string); override; - function PrepareOutput(Attr: integer; AToken: string): string; override; - public - constructor Create; override; - procedure SetupDefaultColors; override; - end; - -implementation - -const - SYNS_FilterXML = 'XML Document (*.xml,*.xsd,*.xsl,*.xslt)|*.xml;*.xsd;*.xsl;*.xslt'; - SYNS_LangXML = 'XML Document'; - - NameChars: set of char = ['0'..'9', 'a'..'z', 'A'..'Z', '_', '.', ':', '-']; - -constructor THighlightXML.Create; -begin - inherited Create; - inherited Create; - MakeMethodTables; - CreateColorTable([clGreen, //1 - clMaroon, //2 - clBlack, //3 - clBlue, //4 - clBlack, //5 - clGreen, //6 - clBlue, //7 - clBlack, //8 - clRed, //9 - clBlack, //10 - clBlack]); //11 - fRange := rsText; -end; - -procedure THighlightXML.MakeMethodTables; -var - i: Char; -begin - for i := #0 to #255 do - begin - case i of - #0: - begin - fProcTable[i] := NullProc; - end; - #10: - begin - fProcTable[i] := LineFeedProc; - end; - #13: - begin - fProcTable[i] := CarriageReturnProc; - end; - #1..#9, #11, #12, #14..#32: - begin - fProcTable[i] := SpaceProc; - end; - '<': - begin - fProcTable[i] := LessThanProc; - end; - '>': - begin - fProcTable[i] := GreaterThanProc; - end; - else - fProcTable[i] := IdentProc; - end; - end; -end; - -procedure THighlightXML.SetLine(NewValue: string; LineNumber: Integer); -begin - fLine := PChar(NewValue); - Run := 0; - fLineNumber := LineNumber; - Next; -end; - -procedure THighlightXML.NullProc; -begin - fTokenID := tkNull; -end; - -procedure THighlightXML.CarriageReturnProc; -begin - fTokenID := tkSpace; - Inc(Run); - if fLine[Run] = #10 then - Inc(Run); -end; - -procedure THighlightXML.LineFeedProc; -begin - fTokenID := tkSpace; - Inc(Run); -end; - -procedure THighlightXML.SpaceProc; -begin - Inc(Run); - fTokenID := tkSpace; - while fLine[Run] <= #32 do - begin - if fLine[Run] in [#0, #9, #10, #13] then - break; - Inc(Run); - end; -end; - -procedure THighlightXML.LessThanProc; -begin - Inc(Run); - if (fLine[Run] = '/') then - Inc(Run); - - if (fLine[Run] = '!') then - begin - if NextTokenIs('--') then - begin - fTokenID := tkSymbol; - fRange := rsComment; - Inc(Run, 3); - end - else - if NextTokenIs('DOCTYPE') then - begin - fTokenID := tkDocType; - fRange := rsDocType; - Inc(Run, 7); - end - else - if NextTokenIs('[CDATA[') then - begin - fTokenID := tkCDATA; - fRange := rsCDATA; - Inc(Run, 7); - end - else - begin - fTokenID := tkSymbol; - fRange := rsElement; - Inc(Run); - end; - end - else - if fLine[Run] = '?' then - begin - fTokenID := tkProcessingInstruction; - fRange := rsProcessingInstruction; - Inc(Run); - end - else - begin - fTokenID := tkSymbol; - fRange := rsElement; - end; -end; - -procedure THighlightXML.GreaterThanProc; -begin - fTokenId := tkSymbol; - fRange := rsText; - Inc(Run); -end; - -procedure THighlightXML.CommentProc; -begin - if (fLine[Run] = '-') and (fLine[Run + 1] = '-') and (fLine[Run + 2] = '>') - then - begin - fTokenID := tkSymbol; - fRange := rsText; - Inc(Run, 3); - Exit; - end; - - fTokenID := tkComment; - - if (fLine[Run] in [#0, #10, #13]) then - begin - fProcTable[fLine[Run]]; - Exit; - end; - - while not (fLine[Run] in [#0, #10, #13]) do - begin - if (fLine[Run] = '-') and (fLine[Run + 1] = '-') and (fLine[Run + 2] = '>') - then - begin - fRange := rsComment; - break; - end; - Inc(Run); - end; -end; - -procedure THighlightXML.ProcessingInstructionProc; -begin - fTokenID := tkProcessingInstruction; - if (fLine[Run] in [#0, #10, #13]) then - begin - fProcTable[fLine[Run]]; - Exit; - end; - - while not (fLine[Run] in [#0, #10, #13]) do - begin - if (fLine[Run] = '>') and (fLine[Run - 1] = '?') - then - begin - fRange := rsText; - Inc(Run); - break; - end; - Inc(Run); - end; -end; - -procedure THighlightXML.DocTypeProc; -begin - fTokenID := tkDocType; - fRange := rsDocType; - - if (fLine[Run] in [#0, #10, #13]) then - begin - fProcTable[fLine[Run]]; - Exit; - end; - - while not (fLine[Run] in [#0, #10, #13]) do - begin - if (fLine[Run - 1] = ']') and (fLine[Run] = '>') then - begin - fRange := rsAttribute; - Inc(Run); - break; - end; - Inc(Run); - end; -end; - -procedure THighlightXML.CDATAProc; -begin - fTokenID := tkCDATA; - if (fLine[Run] in [#0, #10, #13]) then - begin - fProcTable[fLine[Run]]; - Exit; - end; - - while not (fLine[Run] in [#0, #10, #13]) do - begin - if (fLine[Run] = '>') and (fLine[Run - 1] = ']') - then - begin - fRange := rsText; - Inc(Run); - break; - end; - Inc(Run); - end; -end; - -procedure THighlightXML.ElementProc; -begin - if fLine[Run] = '/' then - Inc(Run); - while (fLine[Run] in NameChars) do - Inc(Run); - fRange := rsAttribute; - fTokenID := tkElement; -end; - -procedure THighlightXML.AttributeProc; -begin - //Check if we are starting on a closing quote - if (fLine[Run] in [#34, #39]) then - begin - fTokenID := tkSymbol; - fRange := rsAttribute; - Inc(Run); - Exit; - end; - //Read the name - while (fLine[Run] in NameChars) do - Inc(Run); - //Check if this is an xmlns: attribute - if (Pos('xmlns', GetToken) > 0) then - begin - fTokenID := tknsAttribute; - fRange := rsnsEqual; - end - else - begin - fTokenID := tkAttribute; - fRange := rsEqual; - end; -end; - -procedure THighlightXML.EqualProc; -begin - if fRange = rsnsEqual then - fTokenID := tknsEqual - else - fTokenID := tkEqual; - - while not (fLine[Run] in [#0, #10, #13]) do - begin - if (fLine[Run] = '/') then - begin - fTokenID := tkSymbol; - fRange := rsElement; - Inc(Run); - Exit; - end - else - if (fLine[Run] = #34) then - begin - if fRange = rsnsEqual then - fRange := rsnsQuoteAttrValue - else - fRange := rsQuoteAttrValue; - Inc(Run); - Exit; - end - else - if (fLine[Run] = #39) then - begin - if fRange = rsnsEqual then - fRange := rsnsAPosAttrValue - else - fRange := rsAPosAttrValue; - Inc(Run); - Exit; - end; - Inc(Run); - end; -end; - -procedure THighlightXML.QAttributeValueProc; -begin - if fRange = rsnsQuoteAttrValue then - fTokenID := tknsQuoteAttrValue - else - fTokenID := tkQuoteAttrValue; - - while not (fLine[Run] in [#0, #10, #13, '&', #34]) do - Inc(Run); - - if fLine[Run] = '&' then - begin - if fRange = rsnsQuoteAttrValue then - fRange := rsnsQuoteEntityRef - else - fRange := rsQuoteEntityRef; - Exit; - end - else - if fLine[Run] <> #34 then - begin - Exit; - end; - - fRange := rsAttribute; -end; - -procedure THighlightXML.AAttributeValueProc; -begin - if fRange = rsnsAPosAttrValue then - fTokenID := tknsAPosAttrValue - else - fTokenID := tkAPosAttrValue; - - while not (fLine[Run] in [#0, #10, #13, '&', #39]) do - Inc(Run); - - if fLine[Run] = '&' then - begin - if fRange = rsnsAPosAttrValue then - fRange := rsnsAPosEntityRef - else - fRange := rsAPosEntityRef; - Exit; - end - else - if fLine[Run] <> #39 then - begin - Exit; - end; - - fRange := rsAttribute; -end; - -procedure THighlightXML.TextProc; -const - StopSet = [#0..#31, '<', '&']; -begin - if fLine[Run] in (StopSet - ['&']) then - begin - fProcTable[fLine[Run]]; - exit; - end; - - fTokenID := tkText; - while not (fLine[Run] in StopSet) do - Inc(Run); - - if (fLine[Run] = '&') then - begin - fRange := rsEntityRef; - Exit; - end; -end; - -procedure THighlightXML.EntityRefProc; -begin - fTokenID := tkEntityRef; - fRange := rsEntityRef; - while not (fLine[Run] in [#0..#32, ';']) do - Inc(Run); - if (fLine[Run] = ';') then - Inc(Run); - fRange := rsText; -end; - -procedure THighlightXML.QEntityRefProc; -begin - if fRange = rsnsQuoteEntityRef then - fTokenID := tknsQuoteEntityRef - else - fTokenID := tkQuoteEntityRef; - - while not (fLine[Run] in [#0..#32, ';']) do - Inc(Run); - if (fLine[Run] = ';') then - Inc(Run); - - if fRange = rsnsQuoteEntityRef then - fRange := rsnsQuoteAttrValue - else - fRange := rsQuoteAttrValue; -end; - -procedure THighlightXML.AEntityRefProc; -begin - if fRange = rsnsAPosEntityRef then - fTokenID := tknsAPosEntityRef - else - fTokenID := tkAPosEntityRef; - - while not (fLine[Run] in [#0..#32, ';']) do - Inc(Run); - if (fLine[Run] = ';') then - Inc(Run); - - if fRange = rsnsAPosEntityRef then - fRange := rsnsAPosAttrValue - else - fRange := rsAPosAttrValue; -end; - -procedure THighlightXML.IdentProc; -begin - case fRange of - rsElement: ElementProc; - rsAttribute: AttributeProc; - rsEqual, rsnsEqual: EqualProc; - rsQuoteAttrValue, rsnsQuoteAttrValue: QAttributeValueProc; - rsAposAttrValue, rsnsAPosAttrValue: AAttributeValueProc; - rsQuoteEntityRef, rsnsQuoteEntityRef: QEntityRefProc; - rsAposEntityRef, rsnsAPosEntityRef: AEntityRefProc; - rsEntityRef: - begin - EntityRefProc; - end; - else - ; - end; -end; - -procedure THighlightXML.Next; -begin - fTokenPos := Run; - case fRange of - rsText: TextProc; - rsComment: CommentProc; - rsProcessingInstruction: ProcessingInstructionProc; - rsDocType: DocTypeProc; - rsCDATA: CDATAProc; - else - fProcTable[fLine[Run]]; - end; -end; - -function THighlightXML.NextTokenIs(T: string): Boolean; -var - I, Len: Integer; -begin - Result := True; - Len := Length(T); - for I := 1 to Len do - if (fLine[Run + I] <> T[I]) then - begin - Result := False; - Break; - end; -end; - -function THighlightXML.GetEol: Boolean; -begin - Result := fTokenId = tkNull; -end; - -function THighlightXML.GetToken: string; -var - len: Longint; -begin - Len := (Run - fTokenPos); - SetString(Result, (FLine + fTokenPos), len); -end; - -function THighlightXML.GetTokenID: TtkTokenKind; -begin - Result := fTokenId; -end; - -function THighlightXML.GetTokenAttribute: integer; -begin - case fTokenID of - tkElement: Result := 1; //fElementAttri; - tkAttribute: Result := 2; //fAttributeAttri; - tknsAttribute: Result := 3; //fnsAttributeAttri; - tkEqual: Result := 4; //fSymbolAttri; - tknsEqual: Result := 5; //fSymbolAttri; - tkQuoteAttrValue: Result := 6; //fAttributeValueAttri; - tkAPosAttrValue: Result := 7; //fAttributeValueAttri; - tknsQuoteAttrValue: Result := 8; //fnsAttributeValueAttri; - tknsAPosAttrValue: Result := 9; //fnsAttributeValueAttri; - tkText: Result := 10; //fTextAttri; - tkCDATA: Result := 11; //fCDATAAttri; - tkEntityRef: Result := 1; //fEntityRefAttri; - tkQuoteEntityRef: Result := 2; //fEntityRefAttri; - tkAposEntityRef: Result := 3; //fEntityRefAttri; - tknsQuoteEntityRef: Result := 4; //fEntityRefAttri; - tknsAposEntityRef: Result := 5; //fEntityRefAttri; - tkProcessingInstruction: Result := 6; //fProcessingInstructionAttri; - tkComment: Result := 7; //fCommentAttri; - tkDocType: Result := 8; //fDocTypeAttri; - tkSymbol: Result := 9; //fSymbolAttri; - tkSpace: Result := 10; //fSpaceAttri; - else - Result := 1; //nil; - end; -end; - -function THighlightXML.GetTokenKind: integer; -begin - Result := Ord(fTokenId); -end; - -function THighlightXML.GetTokenPos: Integer; -begin - Result := fTokenPos; -end; - -function THighlightXML.GetRange: Pointer; -begin - Result := Pointer(fRange); -end; - -procedure THighlightXML.SetRange(Value: Pointer); -begin - fRange := TRangeState(Value); -end; - -procedure THighlightXML.ReSetRange; -begin - fRange := rsText; -end; - -function THighlightXML.PrepareOutput(Attr: integer; AToken: string): string; -var - A: integer; -begin - A := Attr; - if Pos('//', Trim(AToken)) = 1 then - A := 2; - if ((Attr = 10) and (Pos('"', AToken) = 1)) then - A := 6; - Result := Format('\cf%d %s', [A, AToken]); -end; - -procedure THighlightXML.PrepareToken(var AToken: string); -begin - AToken := StringReplace(AToken, '\', '\\', [rfReplaceAll]); -end; - -procedure THighlightXML.SetupDefaultColors; -begin - CreateColorTable([clGreen, //1 - clMaroon, //2 - clBlack, //3 - clBlue, //4 - clBlack, //5 - clGreen, //6 - clBlue, //7 - clBlack, //8 - clRed, //9 - clBlack, //10 - clBlack]); //11 -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/HistoryListView.pas b/windows/src/ext/embeddedwb/Source/HistoryListView.pas deleted file mode 100644 index 512b111456..0000000000 --- a/windows/src/ext/embeddedwb/Source/HistoryListView.pas +++ /dev/null @@ -1,431 +0,0 @@ -//************************************************************** -// * -// THistoryListView * * -// Freeware Component * -// For Delphi 5 to XE * -// by * -// Per Linds Larsen * -// and Eran Bodankin * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: HistoryListView.pas,v 1.2 2006/11/15 21:01:42 sergev Exp $ - -unit HistoryListView; - -interface - -{$I EWB.inc} - -uses - Windows, SysUtils, Classes, Forms, Registry, ComCtrls, ShlObj, - SHDocVw_EWB, EmbeddedWB; - -type - - PItem = ^TItem; - TItem = record - FullID, ID: PItemIDList; - Empty: Boolean; - DisplayName: string; - ImageIndex: Integer; - end; - - TOnUrlSelectedEvent = procedure(Sender: TObject; Url: string) of object; - TCustomHistoryListView = class(TCustomListView) - private - { Private declarations } - fEmbeddedWB: TEmbeddedWB; - fPIDL: PItemIDList; - List: TList; - Desktop: IShellFolder; - Level: Integer; - fOnUrlSelected: TOnUrlSelectedEvent; - procedure ClearIDList; - function ShellItem(Index: Integer): PItem; - protected - { Protected declarations } - procedure SetPath(ID: PItemIDList); - function CustomDrawSubItem(Item: TListItem; SubItem: Integer; - State: TCustomDrawState; Stage: TCustomDrawStage): Boolean; override; - function OwnerDataFetch(Item: TListItem; Request: TItemRequest): Boolean; - override; - function OwnerDataFind(Find: TItemFind; const FindString: string; - const FindPosition: TPoint; FindData: Pointer; StartIndex: Integer; - Direction: TSearchDirection; Wrap: Boolean): Integer; override; - function OwnerDataHint(StartIndex, EndIndex: Integer): Boolean; override; - procedure KeyDown(var Key: Word; Shift: TShiftState); override; - procedure DblClick; override; - public - constructor Create(AOwner: TComponent); override; - procedure Loaded; override; - destructor Destroy; override; - procedure LevelUp; - { Public declarations } - published - { Published declarations } - property EmbeddedWB: TEmbeddedWB read fEmbeddedWB write fEmbeddedWB; - property OnURLSelected: TOnUrlSelectedEvent read fOnUrlSelected write - fOnUrlSelected; - end; - - THistoryListView = class(TCustomHistoryListView) - published - property Align; - property AllocBy; - property Anchors; - property BiDiMode; - property BorderStyle; - property BorderWidth; - property Color; - property Constraints; - property Ctl3D; - property Enabled; - property Font; - property FlatScrollBars; - property HideSelection; - property HotTrack; - property HotTrackStyles; - property HoverTime; - property ParentBiDiMode; - property ParentColor default False; - property ParentFont; - property ParentShowHint; - property PopupMenu; - property ShowColumnHeaders; - property TabOrder; - property TabStop default True; - property Visible; - property OnAdvancedCustomDraw; - property OnAdvancedCustomDrawItem; - property OnAdvancedCustomDrawSubItem; - property OnChange; - property OnChanging; - property OnClick; - property OnColumnClick; - property OnColumnDragged; - property OnColumnRightClick; - property OnCompare; - property OnContextPopup; - property OnCustomDraw; - property OnCustomDrawItem; - property OnCustomDrawSubItem; - property OnData; - property OnDataFind; - property OnDataHint; - property OnDataStateChange; - property OnDblClick; - property OnDeletion; - property OnDrawItem; - property OnEdited; - property OnEditing; - property OnEndDock; - property OnEndDrag; - property OnEnter; - property OnExit; - property OnGetImageIndex; - property OnGetSubItemImage; - property OnDragDrop; - property OnDragOver; - property OnInfoTip; - property OnInsert; - property OnKeyDown; - property OnKeyPress; - property OnKeyUp; - property OnMouseDown; - property OnMouseMove; - property OnMouseUp; - property OnResize; - property OnSelectItem; - property OnStartDock; - property OnStartDrag; - end; - -var - Folder: IShellFolder; - -implementation - -uses ShellApi, ActiveX, ComObj, CommCtrl, EwbTools; - -function ListSortFunc(Item1, Item2: Pointer): Integer; -begin - Result := SmallInt(Folder.CompareIDs(0, PItem(Item1).ID, PItem(Item2).ID)); -end; - -procedure TCustomHistoryListView.SetPath(ID: PItemIDList); -var - PID: PItemIDList; - EnumList: IEnumIDList; - NumIDs: LongWord; - ShellItem: PItem; - NewShellFolder: IShellFolder; -begin - OLECheck(Desktop.BindToObject(ID, nil, IID_IShellFolder, - Pointer(NewShellFolder))); - Items.BeginUpdate; - try - OleCheck(NewShellFolder.EnumObjects(Application.Handle, - SHCONTF_FOLDERS or SHCONTF_NONFOLDERS or SHCONTF_INCLUDEHIDDEN, - EnumList)); - Folder := NewShellFolder; - ClearIDList; - while EnumList.Next(1, PID, NumIDs) = S_OK do - begin - ShellItem := New(PItem); - ShellItem.ID := PID; - ShellItem.DisplayName := GetDisplayName(Folder, PID); - ShellItem.Empty := True; - List.Add(ShellItem); - end; - List.Sort(ListSortFunc); - Items.Count := List.Count; - Repaint; - fPIDL := ID; - if Items.Count > 0 then - begin - Selected := Items[0]; - Selected.Focused := True; - Selected.MakeVisible(False); - end; - finally - Items.EndUpdate; - end; -end; - -function TCustomHistoryListView.ShellItem(Index: Integer): PItem; -begin - Result := PItem(List[Index]); -end; - -procedure TCustomHistoryListView.ClearIDList; -var - I: Integer; -begin - for I := 0 to List.Count - 1 do - begin - DisposePIDL(ShellItem(I).ID); - Dispose(ShellItem(I)); - end; - List.Clear; -end; - -{ TCustomHistoryListView } - -function TCustomHistoryListView.CustomDrawSubItem(Item: TListItem; SubItem: - Integer; - State: TCustomDrawState; Stage: TCustomDrawStage): Boolean; -begin - if (Stage = cdPrePaint) and (SubItem <> 0) then - Canvas.Font.Color := GetSysColor(COLOR_WINDOWTEXT); - Result := inherited CustomDrawSubItem(Item, SubItem, State, Stage); -end; - -procedure TCustomHistoryListView.DblClick; -var - X: Olevariant; - Url: string; - RootPIDL, ID: PItemIDList; -begin - inherited; - if Selected <> nil then - begin - ID := ShellItem(Selected.Index).ID; - if not IsFolder(Folder, ID) then - begin - Url := ExtractUrl(Folder, ID); - if Assigned(fOnUrlSelected) then - fOnUrlSelected(self, Url) - else if Assigned(fEmbeddedWB) then - fEmbeddedWB.Navigate(Url, X, X, X, X); - end - else - begin - RootPIDL := ConcatPIDLs(fPIDL, ID); - SetPath(RootPIDL); - Inc(Level); - end; - end; -end; - -destructor TCustomHistoryListView.Destroy; -begin - if List <> nil then - begin - ClearIDList; - List.Free; - end; - inherited; -end; - -procedure TCustomHistoryListView.LevelUp; -var - Temp: PItemIDList; -begin - Temp := CopyPIDL(fPIDL); - if Assigned(Temp) then - StripLastID(Temp); - if (Temp.mkid.cb <> 0) and (Level > 0) then - begin - Dec(Level); - SetPath(Temp) - end - else - Beep; -end; - -procedure TCustomHistoryListView.KeyDown(var Key: Word; Shift: TShiftState); -begin - inherited; - case Key of - VK_RETURN: - DblClick; - VK_BACK: - LevelUp; - end; -end; - -procedure TCustomHistoryListView.Loaded; -var - FileInfo: TSHFileInfo; - ImageListHandle: THandle; - szPath: array[0..MAX_PATH] of char; - NewPIDL: PItemIDList; -begin - inherited; - OLECheck(SHGetSpecialFolderLocation(Application.Handle, CSIDL_HISTORY, - NewPIDL)); - ShGetPathFromIDList(NewPIDL, szPath); - OLECheck(SHGetDesktopFolder(Desktop)); - Folder := Desktop; - if List = nil then - begin - List := TList.Create; - List.Clear; - end; - ImageListHandle := SHGetFileInfo(szPath, 0, FileInfo, SizeOf(FileInfo), - SHGFI_SYSICONINDEX or SHGFI_SMALLICON); - SendMessage(Handle, LVM_SETIMAGELIST, LVSIL_SMALL, ImageListHandle); - SetPath(NewPIDL); - Level := 0; - // Column[0].Width := width - 4; -end; - -constructor TCustomHistoryListView.Create(AOwner: TComponent); -var - HistoryColumn: TListColumn; -begin - inherited; - ReadOnly := True; - Height := 300; - Width := 200; - ShowHint := True; - ColumnClick := False; - OwnerData := True; - ViewStyle := vsReport; - HistoryColumn := Columns.Add; - with TRegistry.Create do - begin - RootKey := HKEY_CLASSES_ROOT; - OpenKey('CLSID\{FF393560-C2A7-11CF-BFF4-444553540000}', FALSE); - HistoryColumn.Caption := ReadString(''); - Closekey; - Free; - end; - HistoryColumn.Width := width - 4; -end; - -function TCustomHistoryListView.OwnerDataFetch(Item: TListItem; - Request: TItemRequest): Boolean; -begin - inherited OwnerDataFetch(Item, Request); - Result := True; - if (Item.Index <= List.Count) then - with ShellItem(Item.Index)^ do - begin - Item.Caption := DisplayName; - Item.ImageIndex := ImageIndex; - end; -end; - -function TCustomHistoryListView.OwnerDataFind(Find: TItemFind; - const FindString: string; const FindPosition: TPoint; FindData: Pointer; - StartIndex: Integer; Direction: TSearchDirection; - Wrap: Boolean): Integer; -var - I: Integer; - Found: Boolean; -begin - Result := inherited OwnerDataFind(Find, FindString, FindPosition, FindData, - StartIndex, Direction, Wrap); - I := StartIndex; - if (Find = ifExactString) or (Find = ifPartialString) then - begin - repeat - if (I = List.Count - 1) then - if Wrap then - I := 0 - else - Exit; - Found := Pos(UpperCase(FindString), UpperCase(ShellItem(I)^.DisplayName)) - = 1; - Inc(I); - until Found or (I = StartIndex); - if Found then - Result := I - 1; - end; -end; - -function TCustomHistoryListView.OwnerDataHint(StartIndex, - EndIndex: Integer): Boolean; -var - FileInfo: TSHFileInfo; - Flags: Integer; - I: Integer; -begin - Result := inherited OwnerDataHint(StartIndex, EndIndex); - if (StartIndex > List.Count) or (EndIndex > List.Count) then - Exit; - for I := StartIndex to EndIndex do - begin - if ShellItem(I)^.Empty then - with ShellItem(I)^ do - begin - FullID := ConcatPIDLs(fPIDL, ID); - FillChar(FileInfo, SizeOf(FileInfo), #0); - Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_ICON or - SHGFI_SMALLICON; - SHGetFileInfo(PChar(FullID), 0, FileInfo, SizeOf(FileInfo), Flags); - ImageIndex := FileInfo.iIcon; - Empty := False; - end; - end; - Result := True; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/HistoryMenu.pas b/windows/src/ext/embeddedwb/Source/HistoryMenu.pas deleted file mode 100644 index 0c989e050e..0000000000 --- a/windows/src/ext/embeddedwb/Source/HistoryMenu.pas +++ /dev/null @@ -1,346 +0,0 @@ -//************************************************************** -// * -// THistoryMenu * * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Per Linds Larsen * -// per.lindsoe@larsen.dk * -// * -// Contributions: * -// Eran Bodankin (bsalsa) bsalsa@gmail.com * -// - D2005 update & added new functions * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: HistoryMenu.pas,v 1.2 2006/11/15 21:01:42 sergev Exp $ - -unit HistoryMenu; - -interface - -{$I EWB.inc} - -uses - Windows, Classes, Controls, Forms, Registry, Menus, SHellApi, shlobj, - imglist, ActiveX, EmbeddedWB, Dialogs; - -type - PItem = ^TItem; - TItem = record - ID, FullID: PItemIDList; - Folder: Boolean; - Created: Boolean; - end; - TOnUrlSelectedEvent = procedure(Sender: TObject; Url: string) of object; - THistoryMenu = class(TComponent) - private - { Private declarations } - FCaption: string; - FMenuPosition: Integer; - FMainMenu: TMainmenu; - FOnUrlSelected: TOnUrlSelectedEvent; - FEmbeddedWB: TEmbeddedWB; - Desktop: IShellFolder; - HistoryPidl: PItemIDList; - HistMenu: TMenuItem; - List: TList; - Images: TImageList; - Item: PItem; - protected - procedure AddMenu(Menu: TMenuItem; MenuTag: Integer); - procedure AddDummy(menu: TMenuItem); - procedure MenuClick(Sender: TObject); - procedure AddEmpty(menu: TMenuItem); - procedure DestroyList; - procedure BuildMenu; - { Protected declarations } - - public - { Public declarations } - procedure CreateMenu; overload; - procedure CreateMenu(mi: TMenuItem); overload; - procedure RebuildMenu; - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - published - { Published declarations } - property EmbeddedWB: TEmbeddedWB read FEmbeddedWB write FEmbeddedWB; - property MainMenu: TMainMenu read FMainMenu write FMainMenu; - property MenuPosition: Integer read FMenuPosition write FMenuPosition; - property Caption: string read FCaption write FCaption; - property OnURLSelected: TOnURLSelectedEvent read FOnURLSelected write FOnURLSelected; - end; - -implementation - -uses - EwbTools; - -var - Counter: Integer; - Folder: IShellFolder; - -function SortFunc(Item1, Item2: Pointer): Integer; -begin - Result := SmallInt(Folder.CompareIDs(0, PItem(Item1).ID, PItem(Item2).ID)); -end; - -procedure THistoryMenu.AddDummy(menu: TMenuItem); -var - Dummy: TMenuItem; -begin - Dummy := TMenuItem.Create(self); - Dummy.Visible := False; - Menu.add(Dummy); -end; - -procedure THistoryMenu.AddEmpty(menu: TMenuItem); -var - Empty: TMenuItem; -begin - Empty := TMenuItem.Create(self); - Empty.Caption := ' (Empty) '; - Empty.Enabled := False; - Menu.add(Empty); -end; - -procedure THistoryMenu.AddMenu(Menu: TMenuItem; MenuTag: Integer); -var - MenuItem: TMenuItem; - EnumList: IEnumIDList; - FullID, ID: PItemIDList; - NumIDs: LongWord; - TempList: TList; - I: Integer; -begin - TempList := TList.Create; - FullID := CopyPidl(PItem(List[menuTag])^.FullID); - Desktop.BindToObject(FullID, nil, IID_IShellFolder, Pointer(Folder)); - Folder.EnumObjects(Application.Handle, SHCONTF_FOLDERS or SHCONTF_NONFOLDERS or SHCONTF_INCLUDEHIDDEN, EnumList); - while EnumList.Next(1, ID, NumIDs) = S_OK do - begin - Item := New(PItem); - Item.ID := CopyPidl(ID); - Item.FullID := ConcatPIDLs(FullID, ID); - Item.Folder := IsFolder(Folder, ID); - Item.Created := False; - TempList.Add(Item); - end; - if TempList.Count = 0 then - begin - AddEmpty(Menu); - exit; - end; - TempList.Sort(SortFunc); - for I := 0 to TempList.Count - 1 do - begin - List.Add(PItem(Templist[I])); - MenuItem := TMenuItem.Create(Menu); - MenuItem.SubmenuImages := Images; - MenuItem.OnClick := MenuClick; - MenuItem.Tag := Counter; - MenuItem.Caption := GetDisplayName(Folder, PItem(TempList[I])^.ID); - MenuItem.ImageIndex := GetImageIndex(PItem(TempList[I])^.FullID); - if not PItem(TempList[I])^.Folder then - Menuitem.Hint := ExtractUrl(Folder, PItem(TempList[I])^.ID); - Menu.Add(MenuItem); - Inc(Counter); - if Item.Folder then - AddDummy(MenuItem); - end; - TempList.Free; -end; - -procedure THistoryMenu.MenuClick(Sender: TObject); -var - X: OleVariant; - Url: string; -begin - if not PItem(list[(Sender as TMenuItem).Tag])^.Folder then - begin - url := ((Sender as TMenuItem).Hint); - if Assigned(FOnUrlSelected) then - FOnUrlSelected(Sender, (Sender as TMenuItem).Hint); - rebuildmenu; - if Assigned(FEmbeddedWB) then - FEmbeddedWB.Navigate(Url, X, X, X, X); - - end - else - if - not PItem(list[(Sender as TMenuItem).Tag]).Created then - begin - AddMenu(Sender as TMenuItem, (Sender as TMenuItem).Tag); - PItem(list[(Sender as TMenuItem).Tag]).Created := TRUE; - end; -end; - -procedure THistoryMenu.BuildMenu; -var - DateFolder: IShellFolder; - DateEnumList: IEnumIDList; - DateMenuItem: TMenuItem; - DateId: PItemIDList; - NumIDs: UINT; -begin - List := TList.Create; - Counter := 0; - Desktop.BindToObject(HistoryPidl, nil, IID_IShellFolder, Pointer(DateFolder)); - DateFolder.EnumObjects(Application.Handle, - SHCONTF_FOLDERS or SHCONTF_NONFOLDERS or SHCONTF_INCLUDEHIDDEN, DateEnumList); - while DateEnumList.Next(1, DateID, NumIDs) = S_OK do - begin - DateMenuItem := TMenuItem.Create(Application); - DateMenuItem.SubmenuImages := Images; - DateMenuItem.OnClick := MenuClick; - DateMenuItem.Tag := Counter; - Inc(Counter); - DateMenuItem.Caption := GetDisplayName(DateFolder, DateID); - Item := New(PItem); - Item.Id := CopyPidl(DateID); - Item.FullID := ConcatPIDLs(HistoryPidl, DateID); - DateMenuItem.ImageIndex := GetImageIndex(Item.FullID); - Item.Folder := IsFolder(DateFolder, DateID); - Item.Created := False; - List.Add(Item); - HistMenu.Add(DateMenuItem); - if Item.Folder then - AddDummy(DateMenuItem); - end; -end; - -procedure THistoryMenu.RebuildMenu; -begin - DestroyList; - Histmenu.Clear; - BuildMenu; -end; - -procedure THistoryMenu.CreateMenu; -var - FileInfo: TSHFileInfo; -begin - SHGetDesktopFolder(Desktop); - SHGetSpecialFolderLocation(Application.Handle, CSIDL_HISTORY, HistoryPIDL); - Images := TImagelist.Create(self); - with images do - begin - ShareImages := True; - DrawingStyle := dsTransparent; - Handle := SHGetFileInfo(Pchar(HistoryPidl), 0, FileInfo, SizeOf(FileInfo), - SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); - end; - HistMenu := TMenuitem.Create(self); - with HistMenu do - begin - SubmenuImages := Images; - Caption := FCaption; - end; - if Assigned(FMainMenu) then - begin - if FMenuPosition > FMainMenu.Items.Count + 1 then - FMenuPosition := FMainMenu.Items.Count + 1 - else - if FMenuPosition <= 0 then - FMenuPosition := 1; - FMainMenu.Items.Insert(FMenuPosition - 1, HistMenu); - end; - BuildMenu; -end; - -procedure THistoryMenu.CreateMenu(mi: TMenuItem); -var - FileInfo: TSHFileInfo; -begin - SHGetDesktopFolder(Desktop); - SHGetSpecialFolderLocation(Application.Handle, CSIDL_HISTORY, HistoryPIDL); - Images := TImagelist.Create(self); - with images do - begin - ShareImages := True; - DrawingStyle := dsTransparent; - Handle := SHGetFileInfo(Pchar(HistoryPidl), 0, FileInfo, SizeOf(FileInfo), - SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_SMALLICON); - end; - if mi = nil then - begin - HistMenu := TMenuitem.Create(self); - HistMenu.Caption := FCaption; - end - else - HistMenu := mi; - HistMenu.SubmenuImages := Images; - if Assigned(FMainMenu) then - begin - if FMenuPosition > FMainMenu.Items.Count + 1 then - FMenuPosition := FMainMenu.Items.Count + 1 - else - if FMenuPosition <= 0 then - FMenuPosition := 1; - FMainMenu.Items.Insert(FMenuPosition - 1, HistMenu); - end; - BuildMenu; -end; - -constructor THistoryMenu.Create; -begin - FMenuPosition := 1; - with TRegistry.Create do - begin - RootKey := HKEY_CLASSES_ROOT; - OpenKey('CLSID\{FF393560-C2A7-11CF-BFF4-444553540000}', FALSE); - FCaption := ReadString(''); - Closekey; - Free; - end; - inherited; -end; - -procedure THistoryMenu.DestroyList; -var - I: Integer; -begin - if Assigned(list) then - begin - for I := 0 to List.Count - 1 do - begin - DisposePIDL(PItem(List[I]).ID); - DisposePIDL(PItem(List[i]).FULLID); - Dispose(PItem(List[i])); - end; - List.Free; - end; -end; - -destructor THistoryMenu.Destroy; -begin - DestroyList; - inherited; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/IEAddress.pas b/windows/src/ext/embeddedwb/Source/IEAddress.pas deleted file mode 100644 index 2e51c6e4be..0000000000 --- a/windows/src/ext/embeddedwb/Source/IEAddress.pas +++ /dev/null @@ -1,1903 +0,0 @@ -{*******************************************************} -{ IEAddress Component } -{ STAGE 3 } -{ For Delphi 5 to XE } -{ Freeware Component } -{ } -{ CONTRIBUTORS: } -{ Eran Bodankin (bsalsa) } -{ Per Linds Larsen } -{ Peter Morris } -{ Thomas Stutz } -{ } -{ Enjoy! } -{ UPDATES: } -{ http://www.bsalsa.com } -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -{ Remove the dot from the define below to enable support for TFlatComboBox. - (FlatStyle Components, All Components look like MS Money und MS Encarta) - http://www.torry.net/vcl/packs/interfacemiddle/flatstyl.zip} - -{.$DEFINE USE_TFlatComboBox} - -unit IEAddress; - -interface - -{$I EWB.inc} - -uses - ActiveX, ComCtrls, ShlObj, Windows, Messages, Classes, Controls, StdCtrls, - Graphics, EmbeddedWB, Dialogs{$IFDEF USE_TFlatComboBox}, TFlatComboBoxUnit{$ENDIF}; //By Smot - -type - IObjMgr = interface(IUnknown) - ['{00BB2761-6A77-11D0-A535-00C04FD7D062}'] - function Append(punk: IUnknown): HResult; stdcall; - function Remove(punk: IUnknown): HResult; stdcall; - end; - - IACList = interface(IUnknown) - ['{77A130B0-94FD-11D0-A544-00C04FD7d062}'] - function Expand(pszExpand: POLESTR): HResult; stdcall; - end; - - IACList2 = interface(IACList) - ['{470141a0-5186-11d2-bbb6-0060977b464c}'] - function SetOptions(dwFlag: DWORD): HResult; stdcall; - function GetOptions(var pdwFlag: DWORD): HResult; stdcall; - end; - IAutoComplete = interface(IUnknown) - ['{00bb2762-6a77-11d0-a535-00c04fd7d062}'] - function Init(hwndEdit: HWND; const punkACL: IUnknown; pwszRegKeyPath, - pwszQuickComplete: POLESTR): HResult; stdcall; - function Enable(fEnable: BOOL): HResult; stdcall; - end; -type - IAutoComplete2 = interface(IAutoComplete) - ['{EAC04BC0-3791-11d2-BB95-0060977B464C}'] - function SetOptions(dwFlag: DWORD): HResult; stdcall; - function GetOptions(out pdwFlag: DWORD): HResult; stdcall; - end; - - TEnumString = class(TInterfacedObject, IEnumString) - private - FStrings: TStringList; - FCurrIndex: integer; - public - {IEnumString} - function Next(celt: Longint; out elt; pceltFetched: PLongint): HResult; stdcall; - function Skip(celt: Longint): HResult; stdcall; - function Reset: HResult; stdcall; - function Clone(out enm: IEnumString): HResult; stdcall; - {VCL} - constructor Create; - destructor Destroy; override; - end; - - TAutoComplete2Option = (acoNone, acoAutoSuggest, acoAutoAppend, acoSearch, acoFilterPrefix, - acoUseTab, acoUpDownKeyDropList, acoRtlReading, acoWordFilter, - acoNoPrefixFiltering); - TAutoComplete2Options = set of TAutoComplete2Option; - TACSource = (acsList, acsHistory, acsMRU, acsShell); - TAutoComplete2Source = set of TACSource; - TAComp = (AutoComplete1, AutoComplete2); - TAutoCompleteOption = (acAutoSuggest, acAutoAppend, acFileSystem, acUrlHistory, - acUrlMRU, acUrlAll, acUseTab); - TAutoCompleteOptions = set of TAutoCompleteOption; - TIEAddressState = set of (csButtonPressed, csMouseCaptured); - TThemes = (tmNone, tmXP, tmSilver, tmSoil); - TGUI = (gsCombobox, gsThemes); - TTypedUrlsMethod = (tuCommon, tuExtended); - TTextAfterNav = (anLocationUrl, anLocationName); - TTextOnLoad = (tlIELastVisited, tlIEHomePage, tlBlank, tlUserDefine); - TOnUrlSelectedEvent = procedure(Sender: TObject; Url: WideString; var Cancel: boolean) of object; - TOnGetFaviconEvent = procedure(Sender: TObject; Favicon, SiteUrl: WideString; var Cancel: boolean; Icon: TIcon) of object; - TOnGetAppIconEvent = procedure(Sender: TObject; var Cancel: boolean; Icon: TIcon) of object; - TOnGetIconEvent = procedure(Sender: TObject; Ext: string; hIco: hIcon) of object; - TOnUpdateRegistryEvent = procedure(Sender: TObject; Url: WideString; var Cancel: boolean) of object; - TOnUpdateTextEvent = procedure(Sender: TObject; OldUrl, NewUrl: WideString; var Cancel: boolean) of object; - TOnPaintEvent = procedure(Sender: TObject; var Continue: boolean) of object; - -type -{$IFDEF USE_TFlatComboBox} //By Smot - TComboBoxType = TFlatComboBox; -{$ELSE} - TComboBoxType = TCustomComboBox; -{$ENDIF} - -type - TCustomIEAddress = class(TComboBoxType) - private - dllVer: Extended; - FAbout: string; - FArrowColor: TColor; - FBorderColor: TColor; - FButtonColor: TColor; - FButtonPressedColor: TColor; - FButtonWidth: Integer; - FCanvas: TControlCanvas; - FCustomProperty: string; - FEditState: TIEAddressState; - FEmbeddedWB: TEmbeddedWB; - FFlat: Boolean; - FGUI: TGUI; - FHasBorder: Boolean; - FHasDropDown: Boolean; - FHintColor: TColor; - FIconLeft: Integer; - FIconTop: Integer; - FImageIndex: Integer; - FImageList: TImageList; - FImageSize: Integer; - FModified: Boolean; - FMouseActive: Boolean; - FNavOnDblClk: Boolean; - FNavOnEnterKey: Boolean; - FNavOnLoad: Boolean; - FNavOnSelected: Boolean; - FOldBGColor: TColor; - FOldHintColor: TColor; - FOnGetAppIcon: TOnGetAppIconEvent; - FOnGetFavicon: TOnGetFaviconEvent; - FOnGetIcon: TOnGetIconEvent; - FOnPaint: TOnPaintEvent; - FOnUpdateRegistry: TOnUpdateRegistryEvent; - FOnUpdateText: TOnUpdateTextEvent; - FOnUrlSelected: TOnUrlSelectedEvent; - FSecureSiteBG: TColor; - FSelImageIndex: Integer; - FShowFavicons: Boolean; - FShowSiteHint: Boolean; - FTextAfterNav: TTextAfterNav; - FTextOnLoad: TTextOnLoad; - FTextOnShow: WideString; - FThemes: TThemes; - FTypedUrlsMethod: TTypedUrlsMethod; - FUAfterNav: Boolean; - FUpdateRegistry: Boolean; - FUseAppIcon: Boolean; - FUseSecureSiteBGColor: Boolean; - FAutoComplete2Source: TAutoComplete2Source; - FAutoComplete: IAutoComplete; - FAutoCompleteOptions: TAutoCompleteOptions; - FAutoComplete2Options: TAutoComplete2Options; - FAComp: TAComp; - function AddFaviconToImageList: integer; - function GetImageIndex(aUrl: string; IntoLV: Boolean): Integer; - function GrabFavicon(URL: string; dest: string): Boolean; - function RemovePrefix(UrlIn, Prefix: WideString): WideString; - function FixUrl(Url: string): string; - function GetModified: Boolean; - procedure SetModified(Value: Boolean); - procedure GetTypedURLs; - procedure InsertTextToList; - procedure RegistryUpdate; - procedure RepaintIEAddress(MouseActive: Boolean); - procedure SetAbout(Value: string); - procedure SetDropDown(const Value: Boolean); - procedure SetTextPosition; - procedure SetFlat(const Value: Boolean); - procedure SetHasBorder(const Value: Boolean); - procedure SetSiteHint; - procedure SetTextOnLd; - procedure SetTheme; - procedure SetAutoCompleteOptions(const Value: TAutoCompleteOptions); - procedure SetAutoComplete2Source(const Value: TAutoComplete2Source); - procedure SetACOptions(const Value: TAutoComplete2Options); - procedure TextUpdate; - procedure UpdateIAutoComplete2; - procedure UpdateAutoComplete; - protected - procedure CalculateRGN; - procedure Change; override; - procedure CheckButtonState(X, Y: Integer); - procedure Click; override; - procedure CreateParams(var Params: TCreateParams); override; - procedure CreateWindowHandle(const Params: TCreateParams); override; - procedure CreateWnd; override; - procedure DblClick; override; - procedure DestroyWnd; override; - procedure DrawIEAddress(MouseInControl, DroppedDown: boolean); - procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override; - procedure KeyDown(var Key: Word; Shift: TShiftState); override; - procedure Loaded; override; - procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; - procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; - procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; - procedure WndProc(var Message: TMessage); override; - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function IsValidURL(const URL: WideString): Boolean; - function GetDllVersion(const ADll: string): Extended; - procedure DragOver(Source: TObject; X, Y: Integer; - State: TDragState; var Accept: Boolean); override; - procedure DragDrop(Source: TObject; X, Y: Integer); override; - procedure CheckSecureSite; - procedure ClearList; - procedure AddToList; -{$IFDEF DELPHI6_UP} - procedure DeleteSelected; override; -{$ENDIF} - procedure LoadFromFile(FileName: WideString); - procedure SaveToFile(FileName: WideString); - procedure SetBounds(Left, Top, Width, Height: Integer); override; - {published} - property AutoCompleteVersion: TAComp read FAComp write FAComp default AutoComplete2; - property AutoComplete2Source: TAutoComplete2Source read FAutoComplete2Source - write SetAutoComplete2Source default [acsList, acsHistory, acsMRU, acsShell]; - property AutoComplete2Options: TAutoComplete2Options read FAutoComplete2Options - write FAutoComplete2Options default [acoAutoSuggest, acoAutoAppend, acoSearch]; - property AutoCompleteOptions: TAutoCompleteOptions read FAutoCompleteOptions - write SetAutoCompleteOptions default [acAutoAppend, acUrlHistory]; - property About: string read FAbout write SetAbout; - property ArrowColor: Tcolor read FArrowColor write FArrowColor default clblack; - property AutoNavigateOnDblClk: Boolean read FNavOnDblClk write FNavOnDblClk default True; - property AutoNavigateOnEnterKey: Boolean read FNavOnEnterKey write FNavOnEnterKey default True; - property AutoNavigateOnLoad: Boolean read FNavOnLoad write FNavOnLoad default True; - property AutoNavigateOnSelected: Boolean read FNavOnSelected write FNavOnSelected default True; - property BorderColor: Tcolor read FBorderColor write FBorderColor default clblack; - property ButtonColor: Tcolor read FButtonColor write FButtonColor default clBtnFace; - property ButtonPressedColor: Tcolor read FButtonPressedColor write FButtonPressedColor default clBtnFace; - property ButtonWidth: integer read FButtonWidth; - property DropDownCount; - property EmbeddedWB: TEmbeddedWB read FEmbeddedWB write FEmbeddedWB; - property Flat: Boolean read FFlat write SetFlat default False; - property GUI: TGUI read FGUI write FGUI default gsThemes; - property HasBorder: Boolean read FHasBorder write SetHasBorder default True; - property HasDropDown: Boolean read FHasDropDown write SetDropDown default True; - property HintColor: Tcolor read FHintColor write FHintColor default clInfoBK; - property IconLeft: Integer read FIconLeft write FIconLeft; - property IconTop: Integer read FIconTop write FIconTop; - property Modified: Boolean read GetModified write SetModified; - property OnGetAppIcon: TOnGetAppIconEvent read FOnGetAppIcon write FOnGetAppIcon; - property OnGetFavicon: TOnGetFaviconEvent read FOnGetFavicon write FOnGetFavicon; - property OnGetIcon: TOnGetIconEvent read FOnGetIcon write FOnGetIcon; - property OnUpdateRegistry: TOnUpdateRegistryEvent read FOnUpdateRegistry write FOnUpdateRegistry; - property OnUpdateText: TOnUpdateTextEvent read FOnUpdateText write FOnUpdateText; - property OnUrlSelected: TOnUrlSelectedEvent read FOnUrlSelected write FOnUrlSelected; - property SecureSiteBG: TColor read FSecureSiteBG write FSecureSiteBG default clInfobk; - property ShowFavicon: Boolean read FShowFavicons write FShowFavicons default False; - property ShowSiteToolTip: Boolean read FShowSiteHint write FShowSiteHint default True; - property TextAfterNav: TTextAfterNav read FTextAfterNav write FTextAfterNav default anLocationUrl; - property TextOnLoad: TTextOnLoad read FTextOnLoad write FTextOnLoad default tlIEHomepage; - property TextOnShow: WideString read FTextOnShow write FTextOnShow; - property Themes: TThemes read FThemes write FThemes default tmNone; - property UpdateItemsToRegistry: Boolean read FUpdateRegistry write FUpdateRegistry default True; - property UpdateTextAfterNav: Boolean read FUAfterNav write FUAfterNav default True; - property UseAppIcon: Boolean read FUseAppIcon write FUseAppIcon default False; - property UseSecureSiteBGColor: Boolean read FUseSecureSiteBGColor write FUseSecureSiteBGColor default True; - end; - - TIEAddress = class(TCustomIEAddress) - published - property Style; //Apparently this must be published first (see VCL); - //New stuff----------------------------------------------------------------- - property AutoComplete2Source default [acsList, acsHistory, acsMRU, acsShell]; - property AutoComplete2Options default [acoAutoSuggest, acoAutoAppend, acoSearch]; - property AutoCompleteOptions default [acAutoAppend, acUrlHistory]; - property AutoNavigateOnDblClk default True; - property AutoNavigateOnEnterKey default True; - property AutoNavigateOnLoad default True; - property AutoNavigateOnSelected default True; - property AutoCompleteVersion default AutoComplete2; - property About; - property Align; - property Anchors; - property ArrowColor; - property BiDiMode; - property BorderColor; - property ButtonColor; - property ButtonPressedColor; - property Color; - property Constraints; - property Cursor; - property DragCursor; - property DragKind; - property DragMode; - property DropDownCount; - property EmbeddedWB; - property Enabled; - property Flat; - property Font; - property GUI; - property HasBorder; - property HasDropDown; - property HelpContext; - property Hint; - property HintColor; - property IconLeft; - property IconTop; - property ImeMode; - property ImeName; - property ItemHeight; - property MaxLength; - property OnChange; - property OnClick; - property OnContextPopup; - property OnDblClick; - property OnDragDrop; - property OnDragOver; - property OnDrawItem; - property OnDropDown; - property OnEndDock; - property OnEndDrag; - property OnEnter; - property OnExit; - property OnGetAppIcon; - property OnGetFavicon; - property OnGetIcon; - property OnKeyDown; - property OnKeyPress; - property OnKeyUp; - property OnMeasureItem; - property OnStartDock; - property OnStartDrag; - property OnUpdateRegistry; - property OnUpdateText; - property OnUrlSelected; - property ParentBiDiMode default False; - property ParentColor; - property ParentFont; - property ParentShowHint default False; - property PopupMenu; - property SecureSiteBG; - property ShowFavicon; - property ShowHint default True; - property ShowSiteToolTip; - property Sorted; - property TabOrder; - property TabStop; - property Text; - property TextAfterNav; - property TextOnLoad; - property TextOnShow; - property Themes; - property UpdateTextAfterNav default True; - property UseAppIcon; - property UseSecureSiteBGColor; - property Visible; - property Items; //And this must be published last - end; - -implementation - -uses - ComObj, UrlMon, ImgList, ShellAPI, Forms, SysUtils, Registry, EwbIEConst, EwbCoreTools; - -function TEnumString.Clone(out enm: IEnumString): HResult; -begin - Result := E_NOTIMPL; - pointer(enm) := nil; -end; - -constructor TEnumString.Create; -begin - inherited Create; - FStrings := TStringList.Create; - FCurrIndex := 0; -end; - -destructor TEnumString.Destroy; -begin - FStrings.Free; - inherited; -end; - -function TEnumString.Next(celt: Integer; out elt; pceltFetched: PLongint): HResult; -var - I: Integer; - wStr: WideString; -begin - I := 0; - while (I < celt) and (FCurrIndex < FStrings.Count) do - begin - wStr := FStrings[FCurrIndex]; - TPointerList(elt)[I] := PWideChar(WideString(wStr)); - /// TPointerList(elt)[I] := CoTaskMemAlloc(2 * (Length(wStr) + 1)); - StringToWideChar(wStr, TPointerList(elt)[I], 2 * (Length(wStr) + 1)); - Inc(I); - Inc(FCurrIndex); - end; - if pceltFetched <> nil then - pceltFetched^ := I; - if I = celt then - Result := S_OK - else - Result := S_FALSE; -end; - -function TEnumString.Reset: HResult; -begin - FCurrIndex := 0; - Result := S_OK; -end; - -function TEnumString.Skip(celt: Integer): HResult; -begin - if (FCurrIndex + celt) <= FStrings.Count then - begin - Inc(FCurrIndex, celt); - Result := S_OK; - end - else - begin - FCurrIndex := FStrings.Count; - Result := S_FALSE; - end; -end; - -//Accesories-------------------------------------------------------------------- - -function SHAutoComplete(hwndEdit: HWND; dwFlags: DWORD): HRESULT; stdcall; external 'shlwapi.dll'; -{$R-} - -function GetExtension(Url: WideString): string; -var - st: string; -begin - st := LowerCase(Trim(ExtractFileExt(Url))); - if (AnsiPos('.xml', st) <> 0) or (AnsiPos('.txt', st) <> 0) or (AnsiPos('.doc', st) <> 0) - or (AnsiPos('.bmp', st) <> 0) or (AnsiPos('.zip', st) <> 0) or (AnsiPos('.rar', st) <> 0) - or (AnsiPos('.jpg', st) <> 0) or (AnsiPos('.gif', st) <> 0) or (AnsiPos('.jpeg', st) <> 0) then - Result := st - else - Result := '*.htm'; -end; - -function GetCacheFolder: WideString; -var - Reg: TRegistry; -begin - Result := ''; - Reg := TRegistry.Create; - with Reg do - try - begin - RootKey := HKEY_CURRENT_USER; - if OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False) then - Result := ReadString('Cache') + '\'; - end; - finally - CloseKey; - Free; - end; -end; - -function StrToCase(StringOf: string; CasesList: array of string): Integer; -var - Idx: integer; -begin - Result := -1; - for Idx := 0 to Length(CasesList) - 1 do - begin - if CompareText(StringOf, CasesList[Idx]) = 0 then - begin - Result := Idx; - Break; - end; - end; -end; - -function GetSpecialFolderNo(bUrl: WideString): Cardinal; -var - Url: string; -begin - Result := 3000; - Url := AnsiUpperCase(Trim(bUrl)); - case StrToCase(Url, ['DESKTOP', 'INTERNET', 'PROGRAMS', 'CONTROL PANEL', 'PRINTERS', - 'MY DOCUMENTS', 'FAVORITES', 'STARTUP', 'RECENT', 'SENDTO', - 'RECYCLE BIN', 'STARTMENU', 'DESKTOP DIRECTORY', 'MY COMPUTER', - 'NETWORK NEIGHBORHOOD', 'NETHOOD', 'FONTS', 'TEMPLATES', 'START MENU', - 'COMMON PROGRAMS', 'COMMON STARTUP', 'COMMON DESKTOP', 'APPDATA', - 'PRINTHOOD', 'APPLICATION DATA', 'TEMPORARY INTERNET FILES', - 'COOKIES', 'HISTORY', 'USERPROFILE', 'DIAL UP CONNECTIONS', - 'MY MUSIC', 'MY PICTURES', 'MY VIDEO', 'CD BURNING', - 'COMPUTERS NEAR ME', 'PROFILES']) of - 0: Result := CSIDL_DESKTOP; - 1: Result := CSIDL_INTERNET; - 2: Result := CSIDL_PROGRAMS; - 3: Result := CSIDL_CONTROLS; - 4: Result := CSIDL_PRINTERS; - 5: Result := CSIDL_PERSONAL; - 6: Result := CSIDL_FAVORITES; - 7: Result := CSIDL_STARTUP; - 8: Result := CSIDL_RECENT; - 9: Result := CSIDL_SENDTO; - 10: Result := CSIDL_BITBUCKET; - 11: Result := CSIDL_STARTMENU; - 12: Result := CSIDL_DESKTOPDIRECTORY; - 13: Result := CSIDL_DRIVES; - 14: Result := CSIDL_NETWORK; - 15: Result := CSIDL_NETHOOD; - 16: Result := CSIDL_FONTS; - 17: Result := CSIDL_TEMPLATES; - 18: Result := CSIDL_COMMON_STARTMENU; - 19: Result := CSIDL_COMMON_PROGRAMS; - 20: Result := CSIDL_COMMON_STARTUP; - 21: Result := CSIDL_COMMON_DESKTOPDIRECTORY; - 22: Result := CSIDL_APPDATA; - 23: Result := CSIDL_PRINTHOOD; -{$IFDEF DELPHI9_UP} - 24: Result := CSIDL_LOCAL_APPDATA; - 25: Result := CSIDL_INTERNET_CACHE; - 26: Result := CSIDL_COOKIES; - 27: Result := CSIDL_HISTORY; - 28: Result := CSIDL_PROFILE; - 29: Result := CSIDL_CONNECTIONS; - 30: Result := CSIDL_COMMON_MUSIC; - 31: Result := CSIDL_COMMON_PICTURES; - 32: Result := CSIDL_COMMON_VIDEO; - 33: Result := CSIDL_CDBURN_AREA; - 34: Result := CSIDL_COMPUTERSNEARME; -{$IFNDEF DELPHI16_UP} - 35: Result := CSIDL_PROFILES -{$ENDIF} -{$ENDIF} - end; -end; - -function TCustomIEAddress.GetDllVersion(const ADll: string): Extended; -type //by Fabio Lucarelli - DLLVERSIONINFO = packed record - cbSize: DWORD; - dwMajorVersion: DWORD; - dwMinorVersion: DWORD; - dwBuildNumber: DWORD; - dwPlatformID: DWORD; - end; - DLLGETVERSIONPROC = function(var pdvi: DLLVERSIONINFO): HRESULT; stdcall; -var - hinstDll: THANDLE; - pBuffer: POINTER; - dvi: DLLVERSIONINFO; - pDllGetVersion: DLLGETVERSIONPROC; -begin - hinstDll := LoadLibrary(PChar(ADll)); - if hinstDll = 0 then - Result := 0 - else - try - pBuffer := GetProcAddress(hinstDll, 'DllGetVersion'); - if Assigned(pBuffer) then - begin - ZeroMemory(@dvi, SizeOf(dvi)); - dvi.cbSize := SizeOf(dvi); - pDllGetVersion := DLLGETVERSIONPROC(pBuffer); - if pDllGetVersion(dvi) = NOERROR then - begin - Result := (dvi.dwMajorVersion + dvi.dwMinorVersion); - end - else - Result := 0; - end - else - Result := 0; - finally - FreeLibrary(hinstDll); - end; -end; - -function TCustomIEAddress.GetModified: Boolean; -begin - Result := FModified; - if HandleAllocated then - Result := SendMessage(EditHandle, EM_GETMODIFY, 0, 0) <> 0; -end; - -function TCustomIEAddress.IsValidURL(const URL: WideString): Boolean; -begin - if (URL <> EmptyStr) and (UrlMon.IsValidURL(nil, PWideChar(URL), 0) = S_OK) then - Result := True - else - Result := False; -end; - -function TCustomIEAddress.RemovePrefix(UrlIn, Prefix: WideString): WideString; -var - i, j: integer; -begin - if (UrlIn = EmptyStr) then Exit; - i := Length(Prefix); - j := AnsiPos(Prefix, UPPERCASE(URLIn)); - if j <> 0 then - System.delete(UrlIn, j, i); - Result := UrlIn; -end; - -procedure TCustomIEAddress.ClearList; -begin - if Items.Count > 0 then - Items.Clear; -end; - -{$IFDEF DELPHI6_UP} - -procedure TCustomIEAddress.DeleteSelected; -begin - if ItemIndex <> -1 then - Items.Delete(ItemIndex); -end; -{$ENDIF} - -procedure TCustomIEAddress.AddToList; -begin - if not (csDesigning in ComponentState) then - begin - if (Text = EmptyStr) then Exit; - Text := FixUrl(Text); - RegistryUpdate; - CheckSecureSite; - TextUpdate; - InsertTextToList; - SetSiteHint; - AddFaviconToImageList; - end; -end; - -procedure TCustomIEAddress.CheckButtonState(X, Y: Integer); -var - ARect: TRect; -begin - SetRect(ARect, ClientWidth - FButtonWidth, 0, ClientWidth, ClientHeight); - if (csButtonPressed in FEditState) and not PtInRect(ARect, Point(X, Y)) then - begin - Exclude(FEditState, csButtonPressed); - RepaintIEAddress(True); - end; -end; - -function TCustomIEAddress.FixUrl(Url: string): string; - function AnsiEndsStr(const ASubText, AText: string): Boolean; - var - SubTextLocation: Integer; - begin - SubTextLocation := Length(AText) - Length(ASubText) + 1; - if (SubTextLocation > 0) and (ASubText <> '') and - (ByteType(AText, SubTextLocation) <> mbTrailByte) then - Result := AnsiStrComp((PChar(ASubText)), Pointer(@AText[SubTextLocation])) = 0 - else - Result := False; - end; - -var - DotPos, ipos: Integer; -begin - Result := Url; - if (Text <> EmptyStr) and (not AnsiEndsStr('/', Url)) then - begin - ipos := LastDelimiter('/', Url); - DotPos := LastDelimiter('.', Url); - if DotPos < ipos then - Result := Url + '/'; - end; -end; - -procedure TCustomIEAddress.InsertTextToList; -var - i: integer; - Found: boolean; -begin - Found := False; - if (Text = EmptyStr) then Exit; - for i := 0 to Items.Count do - begin - if Text = Items.Strings[i] then - Found := True; - end; - if Items.Count = 0 then - Found := False; - if not Found then - Items.Insert(0, Text); -end; - -procedure TCustomIEAddress.CheckSecureSite; - - function AnsiStartsStr(const ASubText, AText: WideString): Boolean; - begin - Result := AnsiSameStr(ASubText, Copy(AText, 1, Length(ASubText))); - end; -begin - if FUseSecureSiteBGColor and (Text = EmptyStr) then - begin - if AnsiStartsStr('https', Text) then - Color := FSecureSiteBG - else - Color := FOldBGColor; - end; -end; - -procedure TCustomIEAddress.LoadFromFile(FileName: WideString); -begin - Clear; - if (FileName = EmptyStr) then Exit; - try - Items.LoadFromFile(FileName); - finally - end; -end; - -procedure TCustomIEAddress.SaveToFile(FileName: WideString); -begin - if (FileName = EmptyStr) then Exit; - try - Items.SaveToFile(FileName); - finally - end; -end; - -procedure TCustomIEAddress.TextUpdate; -var - st: string; - bCancel: Boolean; -begin - bCancel := False; - if Assigned(FEmbeddedWB) and FUAfterNav and (Text <> EmptyStr)then - begin - if Assigned(FOnUpdateText) then - FOnUpdateText(Self, Text, st, bCancel); - if bCancel then - Text := st; - FEmbeddedWB.WaitWhileBusy; - case FTextAfterNav of - anLocationUrl: Text := FEmbeddedWB.LocationURL; - anLocationName: Text := FEmbeddedWB.LocationName; - end; - end; -end; - -//End of Accesories------------------------------------------------------------- - -//Graphical interface---------------------------------------------------------- - -procedure TCustomIEAddress.DrawIEAddress(MouseInControl, DroppedDown: boolean); -var - CanvasCtrl: TControlCanvas; - Rect: TRect; - Position, RectT: integer; -begin - case FGUI of - gsThemes: - begin - CanvasCtrl := TControlCanvas.Create; - try - CanvasCtrl.Control := Self; - Rect := ClientRect; - CanvasCtrl.Brush.Style := bsClear; //bsSolid; - - with CanvasCtrl do - begin - if BorderColor <> clNone then - begin - Brush.Color := BorderColor; - if FHasBorder then - begin - FrameRect(Rect); - end; - end - else - begin - Brush.Color := clwhite; //Color; - if FHasBorder then - begin - FrameRect(Rect); - end; - end; - end; - Rect.Left := Rect.Right - GetSystemMetrics(SM_CXHTHUMB) - 3; - Dec(Rect.Right); - InflateRect(Rect, 0, -1); - if DroppedDown then - with CanvasCtrl do - begin //the button backround - Brush.Color := FButtonPressedColor; - FillRect(Rect); - Rect.Right := Rect.Left + 6; - Brush.Color := Color; - FillRect(Rect); - end - else - with CanvasCtrl do - begin - Brush.Color := ButtonColor; - FillRect(Rect); - Rect.Right := Rect.Left + 6; - Brush.Color := Color; - FillRect(Rect); - end; - if BorderColor <> clNone then - begin - Dec(Rect.Right); - with CanvasCtrl do - begin - Pen.Color := BorderColor; - MoveTo(Rect.Right, Rect.Top); - LineTo(Rect.Right, Rect.Bottom); - end; - end; - CanvasCtrl.Pen.Color := ArrowColor; - Rect := ClientRect; - Position := Rect.Right - 10; - RectT := Rect.Top; - if not DroppedDown then - with CanvasCtrl do - begin //Draw the arrow Head Down - Moveto(Position + 0, RectT + 10); - LineTo(Position + 5, RectT + 10); - MoveTo(Position + 1, RectT + 11); - LineTo(Position + 4, RectT + 11); - MoveTo(Position + 2, RectT + 12); - LineTo(Position + 3, RectT + 12); - end - else - with CanvasCtrl do - begin //Draw the arrow Head Up - MoveTo(Position + 3, RectT + 10); - LineTo(Position + 2, RectT + 10); - MoveTo(Position + 4, RectT + 11); - LineTo(Position + 1, RectT + 11); - MoveTo(Position + 5, RectT + 12); - LineTo(Position + 0, RectT + 12); - end; - finally - CanvasCtrl.Free; - end; - end; - end; -end; - -procedure TCustomIEAddress.RepaintIEAddress(MouseActive: Boolean); -var - bCont: boolean; -begin - bCont := True; - if Assigned(FonPaint) then - FOnPaint(Self, bCont); - try - if not bCont then - begin - ValidateRect(EditHandle, nil); - Refresh; - Exit; - end; - if not (csDesigning in ComponentState) then - DrawIEAddress(FMouseActive, DroppedDown); - finally - end; -end; - -procedure TCustomIEAddress.CalculateRGN; -var - BorderRGN, DropDownRGN: HRGN; - BorderWidth, W: Integer; -begin - if Parent = nil then - Exit; - BorderRGN := CreateRectRGN(0, 0, Width, Height); - BorderWidth := GetSystemMetrics(SM_CXDLGFRAME); - - if not FHasDropDown and not (Style in [csSimple]) then - begin - W := GetSystemMetrics(SM_CXVSCROLL); - Invalidate; - DropDownRGN := CreateRectRGN(Width - W - BorderWidth, 0, Width, Height); - CombineRgn(BorderRGN, BorderRGN, DropDownRGN, RGN_XOR); - DeleteObject(DropDownRGN); - end; - SetWindowRGN(Handle, BorderRGN, True); -end; - -procedure TCustomIEAddress.DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); -var - ImageIndex: Integer; - Bitmap: TBitmap; - Offset: Integer; -begin - if (Text = EmptyStr) then Exit; - Offset := 16; - if not (csDesigning in ComponentState) and DroppedDown then - begin - ImageIndex := GetImageIndex(Items[Index], True); //ListV - if (odSelected in State) then - FImageIndex := ImageIndex; - Bitmap := TBitMap.Create(); - with Canvas do - begin - FillRect(Rect); - if Index < Items.Count then - begin - FImageList.GetBitmap(ImageIndex, Bitmap); - if Assigned(Bitmap) then - begin - Bitmap.Canvas.Brush.Style := bsClear; - BrushCopy(Bounds(Rect.Left + 4, (Rect.Top + Rect.Bottom - Bitmap.Height) div 2, - Bitmap.Width, Bitmap.Height), Bitmap, Bounds(0, 0, Bitmap.Width, Bitmap.Height), - Bitmap.Canvas.Pixels[0, Bitmap.Height - 1]); - Offset := Bitmap.Width + 6; - end; - TextOut(Rect.Left + OffSet, Rect.Top, Items[Index]); - end; - end; - BitMap.free; - end; -end; -//End of Graphical interface---------------------------------------------------- - -//Icons Section----------------------------------------------------------------- - -function TCustomIEAddress.GetImageIndex(aUrl: string; IntoLV: Boolean): Integer; -var - Malloc: Imalloc; - SpecialFolder: Cardinal; - sfi: TShFileInfo; - pidl: PItemIDList; - ImgIdx: integer; - Ext: string; - bCancel: Boolean; - Icon: TIcon; -begin - Result := -1; - if (aUrl = EmptyStr) then Exit; - try - ShGetMalloc(Malloc); - //If its a MS special folder - SpecialFolder := GetSpecialFolderNo(aUrl); - if (SUCCEEDED(SHGetSpecialFolderLocation(Handle, SpecialFolder, Pidl))) then - begin - ShGetFileInfo(PChar(pidl), 0, sfi, sizeof(sfi), SHGFI_ICON or SHGFI_PIDL); - Result := sfi.iIcon; - end - else - begin //If its a local file - if FileExists(aUrl) or (AnsiCompareText(Copy(aURL, 1, 7), 'file://') = 0) then - begin - ShGetFileInfo(PChar(aUrl), FILE_ATTRIBUTE_NORMAL, sfi, sizeOf(sfi), - SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON); - Result := sfi.iIcon; - end - // If its a folder - else - if DirectoryExists(aUrl) then - begin - ShGetFileInfo(PChar(aUrl), FILE_ATTRIBUTE_DIRECTORY, sfi, SHGFI_EXETYPE, - SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON); - Result := sfi.iIcon; - end - // if its a a url (File/internet Address or Shortcut). so, lets start ;) - else - if aURL <> '' then - begin - Ext := GetExtension(aUrl); - if Ext = '*.htm' then - begin - if (not (DroppedDown)) and FShowFavicons then - begin //Get Favicon - ImgIdx := AddFaviconToImageList; - if ImgIdx > -1 then - begin - sfi.iIcon := AddFaviconToImageList; - Result := sfi.iIcon; - DestroyIcon(sfi.iIcon); - Malloc.Free(pidl); - Exit; - end; - end; - if FUseAppIcon then - begin //Get app icon - icon := Forms.Application.Icon; - if Assigned(FOnGetAppIcon) then - FOnGetAppIcon(Self, bCancel, Icon); - if not bCancel then - begin - ImgIdx := FImageList.AddIcon(Icon); - sfi.iIcon := ImgIdx; - Result := sfi.iIcon; - end; - end - else - begin //Get icon for internet shortcuts and addresses - ShGetFileInfo('*.htm', FILE_ATTRIBUTE_NORMAL, sfi, sizeOf(sfi), - SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON); - if Assigned(FOnGetIcon) then - FOnGetIcon(Self, 'htm', sfi.hIcon); - Result := sfi.iIcon; - end - end - else - begin //Get all the rest system icons - ShGetFileInfo(Pchar(Ext), FILE_ATTRIBUTE_NORMAL, sfi, sizeOf(sfi), - SHGFI_SYSICONINDEX or SHGFI_USEFILEATTRIBUTES or SHGFI_SMALLICON); - Result := sfi.iIcon; - end; - end; - end; - finally - try - if Result <> -1 then - DestroyIcon(sfi.iIcon) - else - Result := 0; - finally - end; - Malloc.Free(pidl); - end; -end; - -function TCustomIEAddress.GrabFavicon(URL: string; dest: string): Boolean; -var - i: Integer; - St: string; - bCancel: Boolean; -begin - Result := False; - if (URL = EmptyStr) then Exit; - try - bCancel := False; - St := RemovePrefix(URL, 'HTTP://'); - I := AnsiPos('/', RemovePrefix(St, 'HTTP://')); - if I > 0 then - St := 'http://' + System.Copy(St, 1, I); - if Assigned(FOnGetFavicon) then - FOnGetFavicon(Self, (GetCacheFolder + 'favicon.ico'), Text, bCancel, nil); - if not bCancel then - try - Result := UrlDownloadToFile(nil, PChar(St + 'favicon.ico'), PChar(dest), 0, nil) = 0; - except - Result := False; - end; - finally - end; -end; - -function TCustomIEAddress.AddFaviconToImageList: integer; -var - ImgIdx: integer; - Icon: TIcon; - bCancel: Boolean; - st: WideString; -begin - Result := -1; - bCancel := False; - Application.ProcessMessages; - Sleep(10); - if (Text <> EmptyStr) and FShowFavicons and (not DroppedDown) and IsValidURL(Text) and - (not (csDesigning in ComponentState)) then - begin - st := GetCacheFolder + 'favicon.ico'; - if GrabFavIcon(Text, st) then - begin - ImgIdx := -1; - Icon := TIcon.Create(); - if Icon <> nil then - try - Icon.LoadFromFile(st); - except - Icon.Free; - Exit; - end; -{$IFDEF DELPHI10_UP} - Icon.SetSize(16, 16); -{$ELSE} - Icon.Height := 16; - Icon.Width := 16; -{$ENDIF} - if Assigned(FOnGetFavicon) then - FOnGetFavicon(Self, st, Text, bCancel, Icon); - if not bCancel then - try - ImgIdx := FImageList.AddIcon(Icon) - except - end; - if ImgIdx > 0 then - begin - Result := ImgIdx; - if not bCancel then - FImageList.Draw(FCanvas, IconLeft, IConTop, ImgIdx, True); - end; - Icon.Free; - end; - end; -end; - -//End of Icons section---------------------------------------------------------- - -// Registry Section ------------------------------------------------------------ - -procedure TCustomIEAddress.GetTypedURLs; -var - Counter: Integer; - S: WideString; - GetTextTmp: PChar; -begin - Items.Clear; - with TRegistry.Create do - try - RootKey := HKEY_CURRENT_USER; - if FTypedUrlsMethod = tuCommon then - begin - if OpenKey('Software\Microsoft\Internet Explorer\TypedURLs', False) then - begin - for Counter := 1 to 25 do - begin - if ValueExists('Url' + IntToStr(Counter)) then - begin - S := ReadString('Url' + IntToStr(Counter)); - GetTextTmp := Items.GetText; - if (AnsiPos(S, GetTextTmp) = 0) and (Trim(S) <> '') then - Items.Add(Trim(S)); - StrDispose(GetTextTmp); - end; - end; - CloseKey; - end; - end; - if FTypedUrlsMethod = tuExtended then - begin - if OpenKey('Software\Microsoft\Internet Explorer\TypedAddress', False) then - begin - for Counter := 1 to 25 do - begin - if ValueExists('Url' + IntToStr(Counter)) then - begin - S := ReadString('Url' + IntToStr(Counter)); - GetTextTmp := Items.GetText; - if (Ansipos(S, GetTextTmp) = 0) and (Trim(S) <> '') then - Items.Add(S); - StrDispose(GetTextTmp); - end; - end; - CloseKey; - end; - end; - finally - Free; - end; - if {not Assigned(FEmbeddedWB) and }(TextOnLoad <> tlUserDefine) then - if Items.Count <> 0 then - Text := Trim(Items[0]) - else - Text := ''; -end; - -procedure TCustomIEAddress.RegistryUpdate; -var - MaxItems, Counter: Integer; - Name, SName: WideString; - Reg: TRegistry; - bCancel: Boolean; -begin - if (Trim(Text) <> '') and FUpdateRegistry then - begin - Reg := TRegistry.Create; - bCancel := False; - try - with Reg do - begin - if Assigned(FOnUpdateRegistry) then - FOnUpdateRegistry(Self, Text, bCancel); - if not bCancel then - begin - RootKey := HKEY_CURRENT_USER; - if FTypedUrlsMethod = tuCommon then - begin - if OpenKey('Software\Microsoft\Internet Explorer\TypedURLs', True) then - begin - if Items.Count < 24 then - MaxItems := Items.Count + 1 - else - MaxItems := 25; - for Counter := 0 to MaxItems - 1 do - begin - Name := 'Url' + IntToStr(Counter); - if items[Counter - 1] <> '' then - WriteString(Name, items[Counter - 1]); - end; - end; - CloseKey; - end; - if FTypedUrlsMethod = tuExtended then - begin - if OpenKey('Software\Microsoft\Internet Explorer\TypedAddress', True) then - begin - if Items.Count < 24 then - MaxItems := Items.Count + 1 - else - MaxItems := 25; - for Counter := 0 to MaxItems - 1 do - begin - Name := 'Url' + IntToStr(Counter); - if items[Counter - 1] <> '' then - begin - if Assigned(FEmbeddedWB) then - begin - FEmbeddedWB.Wait; - SName := items[Counter - 1] + ' SiteName:' + - FEmbeddedWB.LocationName; - WriteString(Name, SName); - end; - end; - end; - end; - end; - CloseKey; - end; - end; - finally - Reg.Free; - end; - end; -end; -// End of Registry Section ----------------------------------------------------- - -// Set-------------------------------------------------------------------------- - -procedure TCustomIEAddress.SetAbout(Value: string); -begin - Exit; -end; - -procedure TCustomIEAddress.SetBounds(Left, Top, Width, Height: Integer); -begin - inherited SetBounds(Left, Top, Width, Height); - SetTextPosition; - CalculateRGN; -end; - -procedure TCustomIEAddress.SetDropDown(const Value: Boolean); -begin - FHasDropDown := Value; - CalculateRGN; -end; - -procedure TCustomIEAddress.SetFlat(const Value: Boolean); -begin - if Value <> FFlat then - begin - FFlat := Value; - Ctl3D := not Value; - FHasBorder := False; - Invalidate; - end; -end; - -procedure TCustomIEAddress.SetTextPosition; -begin - SetWindowPos(EditHandle, 0, FImageSize + 7, 5, Width - 46, Height - 7, 0); -end; - -procedure TCustomIEAddress.SetHasBorder(const Value: Boolean); -begin - FHasBorder := Value; - Invalidate; - CalculateRGN; - DrawIEAddress(FMouseActive, DroppedDown); -end; - -procedure TCustomIEAddress.SetSiteHint; -begin - if Assigned(FEmbeddedWB) and FShowSiteHint then - begin - FEmbeddedWB.Wait; - ShowHint := True; - Application.HintColor := FHintColor; - if FEmbeddedWB.LocationUrl = Text then - Hint := FEmbeddedWB.LocationName; - end; -end; - -procedure TCustomIEAddress.SetTheme; -begin - case FGUI of - gsThemes: - begin - case FThemes of - tmNone: - begin - FBorderColor := clblack; - FArrowColor := clblack; - FButtonPressedColor := clBtnShadow; - FButtonColor := clBtnFace; - end; - tmXP: - begin - FBorderColor := $00B99D7F; - FArrowColor := $0085614D; - FButtonColor := $00FCD5C2; - FButtonPressedColor := $00F1A680; - end; - tmSilver: - begin - FBorderColor := clGray; - FArrowColor := cl3DDKShadow; - FButtonColor := clSilver; - FButtonPressedColor := clActiveBorder; - end; - tmSoil: - begin - FBorderColor := clMaroon; - FArrowColor := clMaroon; - FButtonColor := clInfoBk; - FButtonPressedColor := cl3DLight; - end; - end; - RepaintIEAddress(True); - end; - end; -end; - -function GetIEHomePage: string; -var - IEHomePage: string; -begin - IEHomePage := ''; - with TRegistry.Create do - try - RootKey := HKEY_CURRENT_USER; - OpenKey('\Software\Microsoft\Internet Explorer\Main', False); - IEHomePage := ReadString('Start Page'); - CloseKey; - finally - Free; - end; - Result := IEHomePage; -end; - -procedure TCustomIEAddress.SetTextOnLd; -begin - case FTextOnLoad of - tlIELastVisited: ; - tlIEHomePage: Text := GetIEHomePage; - tlBlank: - begin - if Assigned(FEmbeddedWB) then - FEmbeddedWB.AssignEmptyDocument - else - Text := EmptyStr; - end; - tlUserDefine: Text := FTextOnShow; - end; - if Assigned(FEmbeddedWB) and FNavOnLoad then - FEmbeddedWB.Go(Text); -end; - -procedure TCustomIEAddress.SetModified(Value: Boolean); -begin - if HandleAllocated then - PostMessage(EditHandle, EM_SETMODIFY, Byte(Value), 0) - else - FModified := Value; -end; - -procedure TCustomIEAddress.SetAutoCompleteOptions(const Value: TAutoCompleteOptions); -begin - if FAutoCompleteOptions <> Value then - begin - FAutoCompleteOptions := Value; - case FAComp of - AutoComplete1: UpdateAutoComplete; - AutoComplete2: Exit; - end; - - end; -end; - -procedure TCustomIEAddress.SetACOptions(const Value: TAutoComplete2Options); -const - IID_IAutoComplete2: TGUID = '{EAC04BC0-3791-11d2-BB95-0060977B464C}'; - Options: array[TAutoComplete2Option] of integer = - ($0000, $0001, $0002, $0004, $0008, $0010, $0020, $0040, $0080, $0100); -var - Option: TAutoComplete2Option; - Opt: DWORD; - AC2: IAutoComplete2; -begin - if (FAutoComplete <> nil) then - begin - if S_OK = FAutoComplete.QueryInterface(IID_IAutoComplete2, AC2) then - begin - Opt := ACO_NONE; - for Option := Low(Options) to High(Options) do - begin - if (Option in FAutoComplete2Options) then - Opt := Opt or DWORD(Options[Option]); - end; - AC2.SetOptions(Opt); - end; - end; - FAutoComplete2Options := Value; -end; - -procedure TCustomIEAddress.SetAutoComplete2Source(const Value: TAutoComplete2Source); -begin - if FAutoComplete2Source <> Value then - begin - FAutoComplete2Source := Value; - RecreateWnd; - end; -end; - -// End of Set------------------------------------------------------------------- - -//events------------------------------------------------------------------ - -constructor TCustomIEAddress.Create(AOwner: TComponent); -var - sfi: TShFileInfo; - aHandle: Cardinal; -begin - inherited Create(AOwner); - ControlStyle := ControlStyle + [csOpaque] - [csSetCaption]; - DoubleBuffered := True; - FAbout := 'TIEAddress. ' + WEB_SITE; - FButtonWidth := GetSystemMetrics(SM_CXVSCROLL); - FButtonColor := clBtnFace; - FButtonPressedColor := clBtnFace; - AutoComplete2Options := [acoAutoSuggest, acoAutoAppend, acoSearch]; - AutoComplete2Source := [acsList, acsHistory, acsMRU, acsShell]; - AutoCompleteOptions := [acAutoAppend, acUrlHistory]; - AutoCompleteVersion := AutoComplete2; - AutoNavigateOnDblClk := True; - AutoNavigateOnEnterKey := True; - AutoNavigateOnLoad := True; - AutoNavigateOnSelected := True; - FCustomProperty := ''; - FGUI := gsThemes; - FHasBorder := True; - FHasDropDown := True; - FHintColor := clInfoBK; - FImageIndex := -1; - FImageSize := 16; - FMouseActive := False; - ShowHint := True; - FSecureSiteBG := clInfobk; - FSelImageIndex := -1; - FShowFavicons := False; - FShowSiteHint := True; - FTextOnLoad := tlIEHomePage; - FTypedUrlsMethod := tuCommon; - FUAfterNav := True; - FUpdateRegistry := True; - FUseAppIcon := False; - FUseSecureSiteBGColor := True; - Height := 22; - IconLeft := 4; - IconTop := 3; - ItemHeight := 16; - Sorted := False; - Style := csDropDown; - TabOrder := 0; - Width := 145; - FImageList := TImageList.Create(self); - FImageList.DrawingStyle := dsNormal; - FImageList.ShareImages := True; - FImageList.Height := 16; - FImageList.Width := 16; - FCanvas := TControlCanvas.Create; - FCanvas.Control := Self; - FCanvas.Brush.Style := bsClear; - FCanvas.Handle := EditHandle; - dllVer := GetDllVersion('Shlwapi.dll'); - aHandle := ShGetFileInfo('', 0, sfi, sizeOf(sfi), SHGFI_SYSICONINDEX or SHGFI_SMALLICON); - if (aHandle <> 0) then - FImageList.Handle := aHandle; -end; - -destructor TCustomIEAddress.Destroy; -begin - Application.HintColor := FOldHintColor; - Color := FOldBGColor; - FImageList.Free; - FCanvas.Free; - inherited Destroy; -end; - -procedure TCustomIEAddress.Loaded; -begin - inherited; - FOldBGColor := Self.Color; - FOldHintColor := Application.HintColor; - DoubleBuffered := True; - Modified := False; - if not (csDesigning in ComponentState) then - begin - case FGUI of - gsThemes: - begin - BevelEdges := []; - BevelInner := bvnone; - BevelKind := bkFlat; - BevelOuter := BVNone; - BiDiMode := bdLeftToRight; - Ctl3D := False; - ParentBiDiMode := False; - ParentCtl3D := False; - ImeMode := imDontCare; - ImeName := ''; - SetTheme; - end; - end; - CalculateRGN; - GetTypedURLs; - SetTextOnLd; - Text := FixUrl(Text); - CheckSecureSite; - TextUpdate; - SetSiteHint; - AddFaviconToImageList; - end; -end; - -procedure TCustomIEAddress.CreateParams(var Params: TCreateParams); -begin - inherited CreateParams(Params); - Params.Style := Params.Style or cbs_OwnerDrawFixed or ES_MULTILINE; -end; - -procedure TCustomIEAddress.CreateWindowHandle(const Params: TCreateParams); -begin - inherited CreateWindowHandle(Params); - SetTextPosition; -end; - -procedure TCustomIEAddress.CreateWnd; -begin - inherited CreateWnd; - case FAComp of - AutoComplete1: UpdateAutoComplete; - AutoComplete2: - if (GetDllVersion('Shlwapi.dll') > 4.72) then - UpdateIAutoComplete2 - else - UpdateAutoComplete; - end; -end; - -procedure TCustomIEAddress.UpdateAutoComplete; -var - SelOptions: DWORD; -begin - SelOptions := 0; - if acAutoSuggest in FAutoCompleteOptions then - SelOptions := SelOptions or SHACF_AUTOSUGGEST_FORCE_ON - else - SelOptions := SelOptions or SHACF_AUTOSUGGEST_FORCE_OFF; - if acAutoAppend in FAutoCompleteOptions then - SelOptions := SelOptions or SHACF_AUTOAPPEND_FORCE_ON - else - SelOptions := SelOptions or SHACF_AUTOAPPEND_FORCE_OFF; - if acFileSystem in FAutoCompleteOptions then - SelOptions := SelOptions or SHACF_FILESYSTEM - else - SelOptions := SelOptions or SHACF_FILESYSTEM; - if acUrlHistory in FAutoCompleteOptions then - SelOptions := SelOptions or SHACF_URLHISTORY - else - SelOptions := SelOptions or SHACF_URLHISTORY; - if acUrlMRU in FAutoCompleteOptions then - SelOptions := SelOptions or SHACF_URLMRU - else - SelOptions := SelOptions or SHACF_URLMRU; - if acUrlAll in FAutoCompleteOptions then - SelOptions := SelOptions or SHACF_URLALL - else - SelOptions := SelOptions or SHACF_URLALL; - if acUseTab in FAutoCompleteOptions then - SelOptions := SelOptions or SHACF_USETAB - else - SelOptions := SelOptions or SHACF_USETAB; - SHAutoComplete(EditHandle, SelOptions); -end; - -procedure TCustomIEAddress.UpdateIAutoComplete2; -const - IID_IAutoComplete: TGUID = '{00bb2762-6a77-11d0-a535-00c04fd7d062}'; - CLSID_IAutoComplete: TGUID = '{00BB2763-6A77-11D0-A535-00C04FD7D062}'; - CLSID_ACLHistory: TGUID = (D1: $00BB2764; D2: $6A77; D3: $11D0; D4: ($A5, $35, $00, $C0, $4F, $D7, $D0, $62)); - CLSID_ACListISF: TGUID = (D1: $03C036F1; D2: $A186; D3: $11D0; D4: ($82, $4A, $00, $AA, $00, $5B, $43, $83)); - CLSID_ACLMRU: TGUID = (D1: $6756A641; D2: $DE71; D3: $11D0; D4: ($83, $1B, $00, $AA, $00, $5B, $43, $83)); -var - Uk: IUnknown; - ACInterface: IEnumString; -begin - try - Uk := CreateComObject(CLSID_IAutoComplete); - if (Uk <> nil) and (Uk.QueryInterface(IID_IAutoComplete, FAutoComplete) = S_OK) then - begin - if acsHistory in FAutoComplete2Source then - ACInterface := CreateComObject(CLSID_ACLHistory) as IEnumString - else - if acsMRU in FAutoComplete2Source then - ACInterface := CreateComObject(CLSID_ACLMRU) as IEnumString - else - if acsShell in FAutoComplete2Source then - ACInterface := CreateComObject(CLSID_ACListISF) as IEnumString; - ACInterface := CreateComObject(CLSID_ACLHistory) as IEnumString; - SetACOptions(FAutoComplete2Options); - FAutoComplete.Init(Edithandle, ACInterface, nil, nil) - end; - except - end; -end; - -procedure TCustomIEAddress.DestroyWnd; -begin - FModified := Modified; - inherited DestroyWnd; -end; - -procedure TCustomIEAddress.WndProc(var Message: TMessage); -var - i: integer; -begin - inherited; - case Message.Msg of - CBN_DropDown or CB_ShowDropDown: SetTextPosition; - CM_MouseEnter: RepaintIEAddress(True); - - WM_MOUSEACTIVATE: - begin - if not DroppedDown then - Exit; - Message.Result := MA_NOACTIVATE; - SetWindowPos(Parent.Handle, HWND_TOP, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE); - if (GetActiveWindow <> Parent.Handle) then - SetActiveWindow(Parent.Handle); - end; - - WM_PAINT: - begin - if not (csReading in ComponentState) then - begin - ControlStyle := ControlStyle + [csOpaque]; - RepaintIEAddress(False); - SetTextPosition; - i := GetImageIndex(Text, False); - if i > 0 then - FImageList.Draw(FCanvas, IconLeft, IconTop, - GetImageIndex(Text, False), True); - end; - end; - end; -end; - -procedure TCustomIEAddress.MouseMove(Shift: TShiftState; X, Y: Integer); -begin - CheckButtonState(-1, -1); - inherited; -end; - -procedure TCustomIEAddress.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); -begin - if DroppedDown then - begin - Include(FEditState, csButtonPressed); - Include(FEditState, csMouseCaptured); - end; - inherited; -end; - -procedure TCustomIEAddress.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); -begin - CheckButtonState(-1, -1); - inherited; -end; - -procedure TCustomIEAddress.Change; -// var - //Key: Word; -begin - PostMessage(Handle, CB_SHOWDROPDOWN, 0, 0); - FImageList.Draw(FCanvas, IconLeft, IconTop, GetImageIndex(Text, False), True); -// key := VK_RETURN; -// KeyDown(key, []); -end; - -procedure TCustomIEAddress.Click; -var - Rec: TRect; - pt: TPoint; - bCancel: Boolean; -begin - inherited; - if not (csDesigning in ComponentState) then - begin - bCancel := False; - GetCursorPos(pt); - PostMessage(Handle, CB_GETDROPPEDCONTROLRECT, 0, longint(@rec)); - if ((pt.x >= Rec.Left) and (pt.x <= Rec.Right) - and (pt.y >= Rec.Top) and (pt.y <= Rec.Bottom)) then - begin - if Assigned(FOnUrlSelected) then - FOnUrlSelected(Self, Text, bCancel); - if not bCancel then - begin - FSelImageIndex := FImageIndex; - FImageList.Draw(FCanvas, 4, 3, FSelImageIndex, True); - if FNavOnSelected and Assigned(FEmbeddedWB) then - FEmbeddedWB.Go(Text); - end; - AddToList; - end; - // PostMessage(EditHandle, EM_SETREADONLY, 0, 0); - // PostMessage(EditHandle, EM_SETSEL, 0, -1); - end; -end; - -procedure TCustomIEAddress.DblClick; -var - Rect: TRect; - pt: TPoint; -begin - inherited; - GetCursorPos(pt); - PostMessage(Handle, CB_GETDROPPEDCONTROLRECT, 0, longint(@Rect)); - {if ((pt.x >= Rect.Left) and (pt.x <= Rect.Right) - and (pt.y >= Rect.Top) and (pt.y <= Rect.Bottom)) then } - begin - fSelImageIndex := FImageIndex; - fImageList.Draw(FCanvas, 4, 3, fSelImageIndex, True); - if FNavOnDblClk and Assigned(FEmbeddedWB) then - FEmbeddedWB.Go(Text); - AddToList; - end; - PostMessage(EditHandle, EM_SETREADONLY, 0, 0); - PostMessage(EditHandle, EM_SETSEL, 0, -1); -end; - -procedure TCustomIEAddress.KeyDown(var Key: Word; Shift: TShiftState); -var - FListIndex: integer; - bCancel: Boolean; - newText: string; -begin - newText := Text; - inherited; - bCancel := False; - if (DroppedDown) then - begin - if (Key = VK_RETURN) then - begin - if Assigned(FOnUrlSelected) then - FOnUrlSelected(Self, Text, bCancel); - if not bCancel then - begin - Key := VK_CLEAR; - FListIndex := SendMessage(Handle, CB_GETCURSEL, 0, 0); - if FListIndex > 0 then - Items.Move(FListIndex, 0); - Text := Items[0]; - PostMessage(Handle, CB_SHOWDROPDOWN, 0, 0); - PostMessage(handle, CB_SETCURSEL, 0, 0); - PostMessage(EditHandle, EM_SETREADONLY, 0, 0); - PostMessage(EditHandle, EM_SETSEL, 0, -1); - AddToList; - if Assigned(FEmbeddedWB) then - begin - if FNavOnEnterKey then - FEmbeddedWB.Go(Text); - if FNavOnSelected then - FEmbeddedWB.Go(Text); - end; - FSelImageIndex := FImageIndex; - if Modified then - FImageList.Draw(FCanvas, 4, 3, FSelImageIndex, True); - end; - end - else - if NewText <> Text then - begin - if ((ssAlt in Shift) and ((Key = VK_DOWN) or (Key = VK_UP))) or - (Key = VK_ESCAPE) then - begin - Key := VK_CLEAR; - PostMessage(Handle, CB_SHOWDROPDOWN, 0, 0); - PostMessage(EditHandle, EM_SETREADONLY, 0, 0); - PostMessage(EditHandle, EM_SETSEL, 0, -1); - end - else - if (not (ssAlt in Shift)) and (Key = VK_DOWN) then - begin - Key := VK_CLEAR; - FListIndex := SendMessage(Handle, CB_GETCURSEL, 0, 0); - if FListIndex >= 24 then - Exit; - PostMessage(Handle, CB_SETCURSEL, (FListIndex + 1), 0); - PostMessage(EditHandle, EM_SETSEL, WPARAM(-1), 0); - FSelImageIndex := FImageIndex; - FImageList.Draw(FCanvas, 4, 3, FSelImageIndex, True); - if FNavOnSelected and Assigned(FEmbeddedWB) then - FEmbeddedWB.Go(Text); - end; - end - else - if (not (ssAlt in Shift)) and (Key = VK_UP) then - begin - Key := VK_CLEAR; - FListIndex := SendMessage(Handle, CB_GETCURSEL, 0, 0); - if FListIndex <= 0 then - Exit; - PostMessage(Handle, CB_SETCURSEL, (FListIndex - 1), 0); - PostMessage(EditHandle, EM_SETSEL, WPARAM(-1), 0); - FSelImageIndex := FImageIndex; - FImageList.Draw(FCanvas, 4, 3, FSelImageIndex, True); - if FNavOnSelected and Assigned(FEmbeddedWB) then - FEmbeddedWB.Go(Text); - end; - end - else //Not the Droped Down. Its the text in the ComboBox - begin - if (Key = VK_RETURN) and (NewText <> Text) then - begin - if Text <> '' then - begin - if Assigned(FOnUrlSelected) then - FOnUrlSelected(Self, Text, bCancel); - if not bCancel then - begin - if FNavOnEnterKey and Assigned(FEmbeddedWB) then - FEmbeddedWB.Go(Text); - end; - AddToList; - end; - end - else - if (NewText <> Text) and (Key = VK_DOWN) or ((ssAlt in Shift) and (Key = VK_DOWN) and (NewText <> Text)) then - begin - Key := VK_CLEAR; - PostMessage(Handle, CB_GETCURSEL, 0, 0); - // PostMessage(EditHandle, EM_SETREADONLY, 1, 0); - PostMessage(EditHandle, EM_SETSEL, WPARAM(-1), 0); - PostMessage(Handle, CB_SHOWDROPDOWN, 1, 0); - if FNavOnSelected and Assigned(FEmbeddedWB) then - FEmbeddedWB.Go(Text); - end - else - if (Key = VK_UP) then - begin - Key := VK_CLEAR; - Exit; - end; - end; -end; - -procedure TCustomIEAddress.DragDrop(Source: TObject; X, Y: Integer); -begin - inherited; -end; - -procedure TCustomIEAddress.DragOver(Source: TObject; X, Y: Integer; - State: TDragState; var Accept: Boolean); -begin - inherited; -end; - -initialization //Must have for ShGetFileInfo - OleInitialize(nil); - -finalization - OleUninitialize; -end. - diff --git a/windows/src/ext/embeddedwb/Source/IECache.pas b/windows/src/ext/embeddedwb/Source/IECache.pas deleted file mode 100644 index 024287854d..0000000000 --- a/windows/src/ext/embeddedwb/Source/IECache.pas +++ /dev/null @@ -1,761 +0,0 @@ -//************************************************************** -// * -// TIECache * // * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Per Linds Larsen * -// per.lindsoe@larsen.dk * -// * -// Contributions: * -// Christian Lovis for lib dynamic linking * -// {christian.lovis@dim.hcuge.ch] * -// Eran Bodankin (bsalsa) bsalsa@gmail.com * -// - D2005 update * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -unit IECache; - -interface - -{$I EWB.inc} - -uses - WinInet, Windows, Messages, SysUtils, Classes, EwbIeConst; - -type - PInternetCacheTimeStamps = ^TInternetCacheTimeStamps; - TInternetCacheTimeStamps = record - ftExpires: TFileTime; - ftLastModified: TFileTime; - end; - PInternetCacheGroupInfo = ^TInternetCacheGroupInfo; - TInternetCacheGroupInfo = record - dwGroupSize: DWORD; - dwGroupFlags: DWORD; - dwGroupType: DWORD; - dwDiskUsage: DWORD; - dwDiskQuota: DWORD; - dwOwnerStorage: array[0..GROUP_OWNER_STORAGE_SIZE - 1] of DWORD; - szGroupName: array[0..GROUPNAME_MAX_LENGTH - 1] of AnsiChar; - end; - TEntryInfo = record - SourceUrlName: string; - LocalFileName: string; - EntryType: DWORD; - UseCount: DWORD; - HitRate: DWORD; - FSize: DWORD; - LastModifiedTime: TDateTime; - ExpireTime: TDateTime; - LastAccessTime: TDateTime; - LastSyncTime: TDateTime; - HeaderInfo: string; - FileExtension: string; - ExemptDelta: DWORD; - end; - TGroupInfo = record - DiskUsage: DWORD; - DiskQuota: DWORD; - OwnerStorage: array[0..GROUP_OWNER_STORAGE_SIZE - 1] of DWORD; - GroupName: string; - end; - TContent = record - Buffer: Pointer; - BufferLength: Integer; - end; - TFilterOption = (NORMAL_ENTRY, - STABLE_ENTRY, - STICKY_ENTRY, - COOKIE_ENTRY, - URLHISTORY_ENTRY, - TRACK_OFFLINE_ENTRY, - TRACK_ONLINE_ENTRY, - SPARSE_ENTRY, - OCX_ENTRY); - TFilterOptions = set of TFilterOption; - TOnEntryEvent = procedure(Sender: TObject; var Cancel: Boolean) of object; - TOnGroupEvent = procedure(Sender: TObject; GroupID: GROUPID; var Cancel: Boolean) of object; - TSearchPattern = (spAll, spCookies, spHistory, spUrl); - - TIECache = class(TComponent) - private - FSearchPattern: TSearchPattern; - FOnEntry: TOnEntryEvent; - FOnGroup: TOnGroupEvent; - GrpHandle: THandle; - H: THandle; - FCancel: Boolean; - FFilterOptions: TFilterOptions; - FFilterOptionValue: Cardinal; - procedure SetFilterOptions(const Value: TFilterOptions); - procedure UpdateFilterOptionValue; - procedure GetEntryValues(Info: PInternetCacheEntryInfo); - procedure ClearEntryValues; - protected { Protected declarations } - public - GroupInfo: TGroupInfo; - EntryInfo: TEntryInfo; - Content: TContent; - constructor Create(AOwner: TComponent); override; - function AddUrlToGroup(GroupID: INT64; URL: string): DWORD; - function CloseFindEntry: BOOL; - function CopyFileToCache(URL, FileName: string; CacheType: DWORD; Expire: TDateTime): DWORD; - // function CopyFileToCache(UrlName, FileName: Pchar): string; - function CreateEntry(URL, FileExtension: string; ExpectedFileSize: DWORD; var FName: string): DWORD; - function CreateGroup: INT64; - function DeleteEntry(URL: string): DWORD; - function DeleteGroup(GroupID: INT64): DWORD; - function FindFirstEntry(GroupID: INT64): DWORD; - function FindFirstGroup(var GroupID: Int64): DWORD; - function FindNextEntry: DWORD; - function FindNextGroup(var GroupID: Int64): BOOL; - function GetEntryContent(URL: string): DWORD; - function GetEntryInfo(URL: string): DWORD; - function GetGroupInfo(GroupID: INT64): DWORD; - function getLibraryFound: Boolean; - function RemoveUrlFromGroup(GroupID: INT64; URL: string): DWORD; - function RetrieveGroups: DWORD; - function SetEntryInfo(URL: string): DWORD; - function SetGroupInfo(GroupID: INT64): DWORD; - procedure ClearAllEntries; - procedure RetrieveEntries(GroupID: INT64); - { Public declarations } - published - property FilterOptions: TFilterOptions read FFilterOptions write SetFilterOptions; - property LibraryFound: Boolean read getLibraryFound; - property OnEntry: TOnEntryEvent read FOnEntry write FOnEntry; - property OnGroup: TOnGroupEvent read FOnGroup write FOnGroup; - property SearchPattern: TSearchpattern read FSearchpattern write FSearchPattern; - { Published declarations } - end; - -implementation - -type - - TFindFirstUrlCacheGroup = - function(dwFlags, dwFilter: DWORD; - lpSearchCondition: Pointer; dwSearchCondition: DWORD; - var Group: Int64; lpReserved: Pointer): THandle; stdcall; - - TFindNextUrlCacheGroup = - function(hFind: THandle; var GroupID: Int64; lpReserved: Pointer): BOOL; stdcall; - - TSetUrlCacheGroupAttribute = - function(gid: Int64; dwFlags, dwAttributes: DWORD; var lpGroupInfo: TInternetCacheGroupInfo; - lpReserved: Pointer): BOOL; stdcall; - - TGetUrlCacheGroupAttribute = - function(gid: Int64; dwFlags, dwAttributes: DWORD; - var GroupInfo: TInternetCacheGroupInfo; var dwGroupInfo: DWORD; lpReserved: Pointer): BOOL; stdcall; - -var - FindFirstUrlCacheGroup: tFindFirstUrlCacheGroup; - FindNextUrlCacheGroup: tFindNextUrlCacheGroup; - GetUrlCacheGroupAttribute: tGetUrlCacheGroupAttribute; - SetUrlCacheGroupAttribute: tSetUrlCacheGroupAttribute; - winInetLibFound: Boolean; - -const - winetdll = 'wininet.dll'; - -//====Accessories=============================================================== - -function InitializeWinInet: Boolean; -var - fPointer: tFarProc; - hInst: tHandle; -begin - if winInetLibFound then - Result := true - else - begin - Result := False; - hInst := loadLibrary(winetdll); - if hInst > 0 then - try - fPointer := getProcAddress(hInst, 'FindFirstUrlCacheGroup'); - if fPointer <> nil then - begin - FindFirstUrlCacheGroup := tFindFirstUrlCacheGroup(fPointer); - fPointer := getProcAddress(hInst, 'FindNextUrlCacheGroup'); - if fPointer <> nil then - begin - FindNextUrlCacheGroup := tFindNextUrlCacheGroup(fPointer); - fPointer := getProcAddress(hInst, 'GetUrlCacheGroupAttributeA'); - if fPointer <> nil then - begin - GetUrlCacheGroupAttribute := tGetUrlCacheGroupAttribute(fPointer); - fPointer := getProcAddress(hInst, 'SetUrlCacheGroupAttributeA'); - if fPointer <> nil then - begin - SetUrlCacheGroupAttribute := tSetUrlCacheGroupAttribute(fPointer); - fPointer := getProcAddress(hInst, 'FindFirstUrlCacheEntryExA'); - if fPointer <> nil then - Result := true; - end; // SetUrlCacheGroupAttribute - end; // GetUrlCacheGroupAttribute - end; // FindNextUrlCacheGroup - end; // FindFirstUrlCacheGroup - except - end; // loadLib - winInetLibFound := Result; - end; -end; - -function FileTimeToDateTime(Ft: TFileTime): TDateTime; -var - St: TSystemTime; - lft: TFileTime; -begin - Result := 0; - try - if FileTimeToLocalFiletime(Ft, lft) then - if FileTimeToSyStemTime(lft, st) then - Result := SystemTimeTODateTime(st); - except - end; -end; - -function DateTimeToFileTime(Dt: TDateTime): TFileTime; -var - St: TSystemTime; - lft: TFileTime; -begin - try - DateTimeToSystemTime(Dt, ST); - if SystemTimeToFileTime(st, lft) then - LocalFileTimeToFileTime(lft, Result); - except - Result.dwLowDateTime := 0; - Result.dwHighDateTime := 0; - end; -end; - -//====IE Cache================================================================== - -constructor TIECache.Create(AOwner: TComponent); -begin - inherited; - Content.Buffer := nil; - ClearEntryValues; - // Identical to URLCACHE_FIND_DEFAULT_FILTER - FFilterOptions := [NORMAL_ENTRY, COOKIE_ENTRY, URLHISTORY_ENTRY, - TRACK_OFFLINE_ENTRY, TRACK_ONLINE_ENTRY, STICKY_ENTRY]; -end; - -function TIECache.getLibraryFound: Boolean; -begin - Result := InitializeWinInet; -end; - -function TIECache.RemoveUrlFromGroup(GroupID: INT64; URL: string): DWORD; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - if not SetUrlCacheEntryGroup(Pchar(URL), INTERNET_CACHE_GROUP_REMOVE, GroupID, nil, 0, nil) - then - Result := GetLastError; -end; - -function TIECache.AddUrlToGroup(GroupID: INT64; URL: string): DWORD; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - if not SetUrlCacheEntryGroup(Pchar(URL), INTERNET_CACHE_GROUP_ADD, GroupID, nil, 0, nil) - then - Result := GetLastError; -end; - -function TIECache.CopyFileToCache(URL, FileName: string; CacheType: DWORD; Expire: TDateTime): DWORD; -var - FName: string; - Ext: string; - F: file of Byte; - Size: DWORD; -begin - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - if not FileExists(FileName) then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - AssignFile(F, FileName); - Reset(F); - Size := FileSize(F); - CloseFile(F); - Ext := ExtractFileExt(FileName); - Ext := Copy(Ext, 2, Length(ext)); - Result := CreateEntry(URL, Ext, Size, FName); - if Result <> S_OK then - Exit; - if not windows.copyfile(PChar(FileName), Pchar(FName), False) then - begin - Result := GetLastError; - Exit; - end; - if not CommitUrlCacheEntry(Pchar(URL), Pchar(Fname), DateTimeToFileTime(Expire), DateTimeToFileTime(now), CacheType, nil, 0, Pchar(Ext), 0) - then - Result := GetLastError; -end; - -function TIECache.CreateEntry(URL, FileExtension: string; ExpectedFileSize: DWORD; var FName: string): DWORD; -var - PC: array[0..MAX_PATH] of Char; -begin - PC := ''; - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - if not CreateUrlCacheEntry(Pchar(URL), ExpectedFileSize, Pchar(FileExtension), PC, 0) then - Result := GetLastError - else - FName := StrPas(PC); -end; - -function TIECache.GetGroupInfo(GroupID: INT64): DWORD; -var - info: TInternetCacheGroupInfo; - dw: DWORD; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - dw := SizeOf(TInternetCacheGroupInfo); - if not GetUrlCacheGroupAttribute(GroupID, 0, CACHEGROUP_ATTRIBUTE_GET_ALL, info, dw, nil) - then - Result := GetLastError - else - with GroupInfo do - begin - DiskUsage := info.dwDiskUsage; - DiskQuota := info.dwDiskQuota; - Move(info.dwOwnerStorage, OwnerStorage, Sizeof(OwnerStorage)); - GroupName := string(info.szGroupName); - end; -end; - -function TIECache.SetGroupInfo(GroupID: INT64): DWORD; -var - info: TInternetCacheGroupInfo; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - info.dwGroupSize := SizeOf(Info); - info.dwGroupFlags := CACHEGROUP_FLAG_NONPURGEABLE; - info.dwGroupType := CACHEGROUP_TYPE_INVALID; - info.dwDiskQuota := GroupInfo.DiskQuota; - move(GroupInfo.OwnerStorage, info.dwOwnerStorage, Sizeof(info.dwOwnerStorage)); - move(GroupInfo.Groupname[1], info.szGroupName[0], length(GroupInfo.Groupname)); - if not SetUrlCacheGroupAttribute(GroupID, 0, CACHEGROUP_READWRITE_MASK, info, nil) then - Result := GetLastError; -end; - -function TIECache.CreateGroup: INT64; -begin - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - Result := CreateUrlCacheGroup(0, nil); -end; - -function TIECache.DeleteGroup(GroupID: INT64): DWORD; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - if not DeleteUrlCacheGroup(GroupID, CACHEGROUP_FLAG_FLUSHURL_ONDELETE, nil) then - Result := GetLastError; -end; - -function TIECache.SetEntryInfo(URL: string): DWORD; -var - Info: TInternetCacheEntryInfo; - FC: DWORD; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - FC := CACHE_ENTRY_ATTRIBUTE_FC + - CACHE_ENTRY_HITRATE_FC + - CACHE_ENTRY_MODTIME_FC + - CACHE_ENTRY_EXPTIME_FC + - CACHE_ENTRY_ACCTIME_FC + - CACHE_ENTRY_SYNCTIME_FC + - CACHE_ENTRY_EXEMPT_DELTA_FC; - with Info do - begin - CacheEntryType := EntryInfo.EntryType; - dwHitRate := EntryInfo.HitRate; - LastModifiedTime := DateTimeToFileTime(EntryInfo.LastModifiedTime); - ExpireTime := DateTimeToFileTime(EntryInfo.ExpireTime); - LastAccessTime := DateTimeToFileTime(EntryInfo.LastAccessTime); - LastSyncTime := DateTimeToFileTime(EntryInfo.LastSyncTime); - dwReserved := EntryInfo.ExemptDelta; - end; - if not SetUrlCacheEntryInfo(Pchar(URL), Info, FC) then - Result := GetLastError; -end; - -function TIECache.GetEntryInfo(URL: string): DWORD; -var - D: DWORD; - T: PInternetCacheEntryInfo; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - if (D <= 0) or (not GetUrlCacheEntryInfoEx(Pchar(URL), nil, @D, nil, nil, nil, 0)) then - begin - // (PChar(SysErrorMessage(GetLastError))); - // https objects are not stored in cache - Result := GetLastError(); - end - else - begin - GetMem(T, D); - try - if GetUrlCacheEntryInfoEx(Pchar(URL), T, @D, nil, nil, nil, 0) - then - GetEntryValues(t) - else - Result := GetLastError; - finally - FreeMem(T, D); - end; - end; -end; - -function TIECache.GetEntryContent(URL: string): DWORD; -var - HR: THandle; - D: Cardinal; - T: PInternetCacheEntryInfo; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - D := 0; - T := nil; - RetrieveUrlCacheEntryStream(PChar(URL), T^, D, TRUE, 0); - Getmem(T, D); - try - HR := THandle(RetrieveUrlCacheEntryStream(PChar(URL), T^, D, TRUE, 0)); - if HR <> 0 then - begin - Content.BufferLength := T^.dwSizeLow + 1; - GetEntryValues(T); - Getmem(Content.Buffer, Content.BufferLength); - Fillchar(Content.Buffer^, Content.BufferLength, #0); - if not ReadUrlCacheEntryStream(Hr, 0, Content.Buffer, T^.DwSizeLow, 0) - then - Result := GetLastError; - end; - finally - FreeMem(T, D); - end; - UnLockUrlCacheEntryStream(HR, 0); -end; - -function TIECache.FindNextGroup(var GroupID: Int64): BOOL; -begin - if not InitializeWinInet then - begin - Result := False; - Exit; - end; - Result := FindNextUrlCacheGroup(GrpHandle, GroupID, nil); - GetGroupInfo(GroupID); -end; - -function TIECache.FindFirstGroup(var GroupID: Int64): DWORD; -begin - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - GrpHandle := FindFirstUrlCacheGroup(0, 0, nil, 0, GroupID, nil); - if GrpHandle <> 0 then - Result := S_OK - else - Result := GetLastError; - if Result = S_OK then - GetGroupInfo(GroupID); -end; - -function TIECache.RetrieveGroups: DWORD; -var - GroupID: INT64; - Res: DWORD; - NewGroup, Cancel: Boolean; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - Cancel := False; - NewGroup := True; - Res := FindFirstGroup(GroupID); - if Res = S_OK then - begin - GetGroupInfo(GroupID); - if Assigned(FOngroup) then - FOnGroup(self, GroupID, FCancel); - while not Cancel and NewGroup do - begin - NewGroup := FindNextGroup(GroupID); - GetGroupInfo(GroupID); - if Assigned(FOngroup) and NewGroup then - FOnGroup(self, GroupID, Cancel); - end; - end - else - Result := GetLastError; -end; - -function TIECache.DeleteEntry(URL: string): DWORD; -begin - Result := S_OK; - if not InitializeWinInet then Exit; - if not DeleteUrlCacheEntry(PChar(URL)) then - Result := GetLastError - else - ClearEntryValues; -end; - -procedure TIECache.ClearAllEntries; -var - HR: DWord; -begin - if not InitializeWinInet then Exit; - if FindFirstEntry(0) = S_OK then - begin - repeat - DeleteEntry(EntryInfo.SourceUrlName); - HR := FindNextEntry; - until HR = ERROR_NO_MORE_ITEMS; - end; - FindCloseUrlCache(H); -end; - -procedure TIECache.ClearEntryValues; -begin - if not InitializeWinInet then Exit; - Content.Buffer := nil; - Content.BufferLength := 0; - with EntryInfo do - begin - SourceUrlName := ''; - LocalFileName := ''; - EntryType := 0; - UseCount := 0; - Hitrate := 0; - LastModifiedTime := 0; - ExpireTime := 0; - LastAccessTime := 0; - LastSyncTime := 0; - FileExtension := ''; - FSize := 0; - HeaderInfo := ''; - ExemptDelta := 0; - end; -end; - -procedure TIECache.GetEntryValues(Info: PInternetCacheEntryInfo); -begin - if not InitializeWinInet then Exit; - with entryInfo do - begin - SourceUrlName := info^.lpszSourceUrlName; - LocalFileName := info^.lpszLocalFileName; - EntryType := info^.CacheEntryType; - UseCount := info^.dwUseCount; - Hitrate := info^.dwHitRate; - LastModifiedTime := FileTimeToDateTime(info^.LastModifiedTime); - ExpireTime := FileTimeToDateTime(info^.ExpireTime); - LastAccessTime := FileTimeToDateTime(info^.LastAccessTime); - LastSyncTime := FileTimeToDateTime(info^.LastSyncTime); - FileExtension := info^.lpszFileExtension; - FSize := (info^.dwSizeHigh shl 32) + info^.dwSizeLow; - HeaderInfo := StrPas(PChar(info^.lpHeaderInfo)); - ExemptDelta := info^.dwReserved; - end; -end; - -function TIECache.FindFirstEntry(GroupID: INT64): DWORD; -const - Pattern: array[TSearchPattern] of PChar = (nil, 'Cookie:', 'Visited:', ''); -var - T: PInternetCacheEntryInfo; - D: DWORD; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - H := 0; - D := 0; - FindFirstUrlCacheEntryEx(Pattern[SearchPattern], 0, FFilterOptionValue, GroupID, nil, @D, nil, nil, nil); - GetMem(T, D); - try - H := FindFirstUrlCacheEntryEx(Pattern[SearchPattern], 0, FFilterOptionValue, GroupID, T, @D, nil, nil, nil); - if (H = 0) then - Result := GetLastError - else - GetEntryValues(T); - finally - FreeMem(T, D) - end; -end; - -function TIECache.FindNextEntry: DWORD; -var - T: PInternetCacheEntryInfo; - D: DWORD; -begin - Result := S_OK; - if not InitializeWinInet then - begin - Result := ERROR_FILE_NOT_FOUND; - Exit; - end; - D := 0; - FindNextUrlCacheEntryEx(H, nil, @D, nil, nil, nil); - GetMem(T, D); - try - if not FindNextUrlCacheEntryEx(H, T, @D, nil, nil, nil) - then - Result := GetLastError - else - GetEntryValues(T); - finally - FreeMem(T, D) - end; -end; - -procedure TIECache.RetrieveEntries(GroupID: INT64); -var - HR: DWORD; -begin - if not InitializeWinInet then Exit; - FCancel := False; - HR := FindFirstEntry(GroupID); - if (HR = S_OK) then - begin - if Assigned(FOnEntry) then - with EntryInfo do - FOnEntry(self, FCancel); - while (HR = S_OK) and not FCancel do - begin - HR := FindNextEntry; - if (HR = S_OK) and Assigned(FOnEntry) then - with EntryInfo do - FOnEntry(self, FCancel); - end; - end; - FindCloseUrlCache(H); -end; - -function TIECache.CloseFindEntry: BOOL; -begin - if not InitializeWinInet then - begin - Result := False; - Exit; - end; - Result := FindCloseUrlCache(H); -end; - -procedure TIECache.SetFilterOptions(const Value: TFilterOptions); -begin - FFilterOptions := Value; - UpdateFilterOptionValue; -end; - -procedure TIECache.UpdateFilterOptionValue; -const - AcardFilterOptionValues: array[TFilterOption] of Cardinal = ( - $00000001, $00000002, $00000004, $00100000, $00200000, - $00000010, $00000020, $00010000, $00020000); -var - i: TFilterOption; -begin - FFilterOptionValue := 0; - if (FFilterOptions <> []) then - for i := Low(TFilterOption) to High(TFilterOption) do - if (i in FFilterOptions) then - Inc(FFilterOptionValue, AcardFilterOptionValues[i]); -end; - -initialization - wininetLibFound := InitializeWinInet; - -end. diff --git a/windows/src/ext/embeddedwb/Source/IEDownload.pas b/windows/src/ext/embeddedwb/Source/IEDownload.pas deleted file mode 100644 index a96766e617..0000000000 --- a/windows/src/ext/embeddedwb/Source/IEDownload.pas +++ /dev/null @@ -1,3077 +0,0 @@ -//************************************************************************* -// * -// IEDownload 2010 * -// IEDownload is a UrlMon wrapper with a build-in Callback * -// * -// Freeware Component * -// for Delphi by * -// Eran Bodankin * -// and Per Linds Larsen * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -//$Id: IEDownload.pas,v 1.6 2009/02/25 11:56:31 bsalsa Exp $ - -unit IEDownload; - -{To use the MSHTML, just remove the dot in the line below like {$DEFINE USE_MSHTML}{ -and re-compile the package.} -{$DEFINE USE_MSHTML} - -interface - -{$I EWB.inc} - -{$IFDEF DELPHI6_UP} -{$WARN SYMBOL_PLATFORM OFF} -{$ENDIF} - -{$IFDEF DELPHI7_UP} -{$WARN SYMBOL_DEPRECATED OFF} -{$ENDIF} - -uses - Dialogs, IEDownloadAcc, Controls, Shellapi, EwbIEConst, ActiveX, - Contnrs, ExtCtrls, Windows, WinInet, UrlMon, Classes, SysUtils -{$IFDEF DELPHI5}, FileCtrl{$ENDIF}{$IFDEF USE_MSHTML}, MSHTML_EWB{$ENDIF}; - -const - WAIT_BSCB = WAIT_OBJECT_0 + 1; - -{$IFNDEF UNICODE} -type - RawByteString = AnsiString; -{$ENDIF UNICODE} - -type - TProxySettings = class(TPersistent) - private - FPort: Integer; - FServer: string; - FAutoLoadProxy: Boolean; - public - function SetProxy(const FullUserAgent, ProxyServer: string): Boolean; - published - property AutoLoadProxy: Boolean read FAutoLoadProxy write FAutoLoadProxy - default False; - property Port: Integer read FPort write FPort default 80; - property Server: string read FServer write FServer; - end; - - TCustomIEDownload = class; - - TInfoData = class(TList) - public - infAdditionalHeader: TStrings; - infBindF_Value: Cardinal; - infBindF2_Value: Cardinal; - infBindInfoF_Value: Cardinal; - infBindInfoOptions_Value: Cardinal; - infBindVerb_Value: Cardinal; - infCodePage_Value: Cardinal; - infCustomVerb: string; - infDescriptor: RawByteString; - infDownloadFolder: string; - infExtraInfo: string; - infFileExt: string; - infFileName: string; - infFileSize: Cardinal; - infHost: string; - infIndex: Integer; - infInheritHandle: Boolean; - infPassword: string; - infPostData: string; - infPutFileName: string; - infRangeBegin: Cardinal; - infRangeEnd: Integer; - infSender: TCustomIEDownload; - infTimeOut: Integer; - infUrl: PWideChar; - infUserAgent: string; - infUserName: string; - Sender: TObject; - public - constructor Create; - destructor Destroy; override; - end; - - TThreadStatus = (tsRunning, tsSuspended, tsWaiting, tsTerminated); - TState = (sBusy, sReady, sStopped); - - TBSCB = class(TThread, - IAuthenticate, -{$IFDEF DELPHI6_UP} - IAuthenticateEx, - IMonikerProp, -{$ENDIF} - IBindHost, - IWindowForBindingUI, - IBindStatusCallback, - IBindStatusCallbackEx, - ICodeInstall, - IHttpNegotiate, - IHttpNegotiate2, - IHttpNegotiate3, - IHTTPSecurity, -{$IFDEF USE_MSHTML} - IPropertyNotifySink, -{$ENDIF} - IServiceProvider, - IUnknown) - - private - Frequency: Int64; - TimeStarted: Int64; - TimeNow: Int64; - FSender: TCustomIEDownload; - FBindCtx: IBindCtx; - FBSCBTimer: TTimer; - FDataSize: Integer; - FGlobalData: HGLOBAL; - FMoniker: IMoniker; - FRedirect: Boolean; - fOutStream: IStream; - FTimedOut: Boolean; - FTotalRead: Cardinal; - m_pPrevBSCB: IBindStatusCallback; - fsOutputFile: TFileStream; - - function GetSerializedClientCertContext(out ppbCert: Byte; var pcbCert: - DWORD): HResult; stdcall; -{$IFDEF DELPHI6_UP} - function AuthenticateEx(out phwnd: HWND; out pszUsername, - pszPassword: LPWSTR; var pauthinfo: AUTHENTICATEINFO): HResult; stdcall; - {IMonikerProp Interface} - function PutProperty(mkp: MONIKERPROPERTY; val: LPCWSTR): HResult; - stdcall; -{$ENDIF} - - {IBindStatusCallbackEx} - function GetBindInfoEx(out grfBINDF: DWORD; var pbindinfo: BINDINFO; - out grfBINDF2: DWORD; out pdwReserved: DWORD): HResult; stdcall; - -{$IFDEF USE_MSHTML} - {IPropertyNotifySink Interface} - function OnChanged(dispId: TDispId): HRESULT; stdcall; - function OnRequestEdit(dispId: TDispId): HRESULT; stdcall; -{$ENDIF} - - {IHttpNegotiate2 Interface} - function GetRootSecurityId(var SecurityIdBuffer: TByteArray; var - BufferSize: DWord; dwReserved: DWORD): HResult; stdcall; - - {IBindStatusCallback Interface} - function GetBindInfo(out grfBINDF: DWORD; var BindInfo: TBindInfo): HRESULT; - stdcall; - function GetPriority(out nPriority): HRESULT; stdcall; - function OnDataAvailable(grfBSCF: DWORD; dwSize: DWORD; FormatEtc: - PFormatEtc; stgmed: PStgMedium): HRESULT; stdcall; - function OnLowResource(Reserved: DWORD): HRESULT; stdcall; - function OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; - szStatusText: LPCWSTR): HRESULT; stdcall; - function OnObjectAvailable(const IID: TGUID; punk: IUnknown): HRESULT; - stdcall; - function OnStartBinding(dwReserved: DWORD; pib: IBinding): HRESULT; stdcall; - function OnStopBinding(HRESULT: HRESULT; szError: LPCWSTR): HRESULT; - stdcall; - function OnSecurityProblem(dwProblem: DWORD): HRESULT; stdcall; - - {IHTTPNegotiate methods} - function OnResponse(dwResponseCode: DWORD; szResponseHeaders, - szRequestHeaders: LPCWSTR; - out szAdditionalRequestHeaders: LPWSTR): HRESULT; stdcall; - function BeginningTransaction(szURL, szHeaders: LPCWSTR; dwReserved: DWORD; - out szAdditionalHeaders: LPWSTR): HRESULT; stdcall; - - {IUnknown Interface} - function QueryInterface(const IID: TGUID; out Obj): HRESULT; stdcall; - function _AddRef: Integer; stdcall; - function _Release: Integer; stdcall; - - {IWindowForBindingUI methods} - function GetWindow(const GUIDReason: TGUID; out hwnd): HRESULT; stdcall; - - {IAuthenticate Interface} - function Authenticate(var hwnd: HWnd; var szUserName, szPassWord: LPWSTR): - HResult; stdcall; - - {ICodeInstall Interface} - function OnCodeInstallProblem(ulStatusCode: ULONG; szDestination, szSource: - LPCWSTR; - dwReserved: DWORD): HResult; stdcall; - - {IBindHost Interface} - function CreateMoniker(szName: POLEStr; BC: IBindCtx; out mk: IMoniker; - dwReserved: DWORD): HResult; stdcall; - function MonikerBindToStorage(Mk: IMoniker; BC: IBindCtx; BSC: - IBindStatusCallback; - const iid: TGUID; out pvObj{$IFNDEF DELPHI8_UP}: Pointer{$ENDIF}): HResult; - stdcall; - function MonikerBindToObject(Mk: IMoniker; BC: IBindCtx; BSC: - IBindStatusCallback; - const iid: TGUID; out pvObj{$IFNDEF DELPHI8_UP}: Pointer{$ENDIF}): HResult; - stdcall; - - {IServiceProvider Interface} - function QueryService(const rsid, iid: TGUID; out Obj): HRESULT; stdcall; - - function GetBindResult(out clsidProtocol: TCLSID; out dwResult: DWORD; - out szResult: POLEStr): HRESULT; - private - function CheckCancelState: Integer; - procedure ClearAll; - procedure TimerExpired(Sender: TObject); - procedure DoConnect; - procedure DoDownloadToFile; - procedure DoDownloadToCache; - procedure ReceiveData; - procedure ReturnData; - procedure GetData(aSender: TCustomIEDownload); - procedure SetComponents; - protected - procedure Execute; override; - procedure Suspend; - procedure Terminate; - procedure Resume; - - public - Stream: TStream; - Binding: IBinding; - BscbInfo: TInfoData; - ThreadStatus: TThreadStatus; - constructor Create(aSender: TCustomIEDownload; const pmk: IMoniker; - const pbc: IBindCtx; CreateSuspended: boolean); - destructor Destroy; override; - function QueryInfoFileName: HRESULT; - function DoSaveFileAs: string; - function QueryInfo(dwOption: DWORD; var Info: Cardinal): Boolean; overload; - function QueryInfo(dwOption: DWORD; var Info: string): Boolean; overload; - function QueryInfo(dwOption: DWORD; var Info: TDateTime): Boolean; overload; - function IsRunning: Boolean; - function GetDisplayName: PWideChar; - function GetFileNameFromUrl(Url: string): string; - function AbortBinding: Hresult; - function MkParseDisplayName(var DisplayName: PWideChar): IMoniker; - end; - - TBSCBList = class(TObjectList) {by Jury Gerasimov} - private - function GetItem(Index: Integer): TBSCB; - procedure SetItem(Index: Integer; Value: TBSCB); - public - SessionList: TStrings; - constructor Create; - destructor Destroy; override; - property Items[Index: Integer]: TBSCB read GetItem write SetItem; default; - function byURL(Url: string): TBSCB; - end; - - TSecurity = class(TPersistent) - private - FInheritHandle: Boolean; - FDescriptor: RawByteString; - published - property InheritHandle: boolean read FInheritHandle write FInheritHandle - default False; - property Descriptor: RawByteString read FDescriptor write FDescriptor; - end; - - TRange = class(TPersistent) - private - FRangeBegin: Integer; - FRangeEnd: Integer; - published - property RangeBegin: Integer read FRangeBegin write FRangeBegin default 0; - property RangeEnd: Integer read FRangeEnd write FRangeEnd default 0; - end; - {http://msdn.microsoft.com/en-us/library/ms775130(VS.85).aspx} - TBindF = (Asynchronous, AsyncStorage, NoProgressiveRendering, - OfflineOperation, GetNewestVersion, NoWriteCache, NeedFile, PullData, - IgnoreSecurityProblem, Resynchronize, AllowHyperlink, No_UI, - SilentOperation, Pragma_No_Cache, GetClassObject, Reserved_1, - Free_Threaded, DirectReadIgnoreSize, HandleAsFormsSubmit, - GetFromCacheIfNetFail, FromUrlmon, FisrtTryCache, PreferDefaultHandler, - RestrictedSitesZone); - TBindF_Options = set of TBindF; - TBindF2 = (DisableBasicAuth, DisableAutoCookie, DisableRedirectUnlessSID, - ReadDataOver4GB, Reserved_2, Reserved_11); - TBindF2_Options = set of TBindF2; - TBindInfoF = (PostData, ExtraInfo); - TBindInfoF_Options = set of TBindInfoF; - TBindInfoOption = (UseBindInfoOptions, EnableUtf8, DisableUtf8, - UseIE_Encoding, - BindToObject, SecurityOptOut, IgnoreMimeTextPlain, UseBindStrCredentials, - IgnoreHttp2HttpsRedirect, IgnoreSslErrOnce, WpcDownloadBlocked, - WpcLoggingEnabled, - DisableAutoRedirect, ShDocVw_Reserved, AllowConnectMessages); - TBindInfoOptions_Options = set of TBindInfoOption; - TBindVerb = (Get, Post, Put, Custom); - TCodePageOption = ( - Ansi, {default to ANSI code page} - OEM, {default to OEM code page} - Mac, {default to MAC code page} - ThreadsAnsi, {Current thread's ANSI code page} - Symbol, {Symbol code page (42)} - UTF7, {Translate using UTF-7} - UTF8); {Translate using UTF-8} - - TDownloadTo = (dtNormal, dtDownloadToFile, dtDownloadToCache, dtMoniker); - TDownloadMethod = (dmStream, dmFile); {Set download to a file or astream} - TFileExistsOption = (feOverWrite, feSkip, feRename); {If file exsits then..} - - TQueryInterfaceEvent = function(const IID: TGUID; out Obj): HRESULT of object; - TAuthenticateEvent = procedure(Sender: TBSCB; var tmpHWND: HWnd; - var szUserName, szPassWord: WideString; var Rezult: HRESULT) of object; -{$IFDEF DELPHI6_UP} - TAuthenticateExEvent = procedure(Sender: TBSCB; var tmpHWND: HWnd; - var szUserName, szPassWord: WideString; pauthinfo: AUTHENTICATEINFO; - var Rezult: HRESULT) of object; - TOnPutPropertyEvent = function(Sender: TBSCB; mkp: MONIKERPROPERTY; val: - LPCWSTR): HResult of object; -{$ENDIF} - - TOnCodeInstallProblemEvent = function(Sender: TBSCB; ulStatusCode: ULONG; - szDestination, szSource: LPCWSTR; - dwReserved: DWORD; stResult: string): HRESULT of object; - TStateChangeEvent = procedure(const State: TState) of object; - TErrorEvent = procedure(const ErrorCode: integer; const - stError: string) of object; - TOnConnectEvent = procedure(Sender: TBSCB; Res: HRESULT; stMessage: string) of - object; - TOnGetBindInfoEvent = function(Sender: TBSCB; out grfBINDF: DWORD; var - BindInfo: TBindInfo): HRESULT of object; - TOnGetBindInfoExEvent = function(Sender: TBSCB; out grfBINDF: DWORD; - pbindinfo: BINDINFO; - out grfBINDF2: DWORD): HRESULT of object; - TRedirect = procedure(Sender: TBSCB; var AbortRedirect: boolean; const - FromUrl: string; const DestUrl: string) of object; - TBeginningTransactionEvent = function(Sender: TBSCB; szURL, szHeaders: - LPCWSTR; dwReserved: DWORD; - out szAdditionalHeaders: LPWSTR): HRESULT of object; - TOnResponseEvent = function(Sender: TBSCB; dwResponseCode: DWORD; - szResponseHeaders, szRequestHeaders: LPCWSTR; - out szAdditionalRequestHeaders: LPWSTR): HRESULT of object; - TOnSecurityProblemEvent = function(Sender: TBSCB; dwProblem: DWORD; Problem: - string): HRESULT of object; - TFileExistsEvent = procedure(var Action: TFileExistsOption; const aFileName: - WideString; var NewFileName: WideString) of object; - TOnProgressEvent = procedure(Sender: TBSCB; ulProgress, ulProgressMax, - ulStatusCode, FileSize: ULONG; szStatusText: LPCWSTR; Downloaded, - ElapsedTime, Speed, RemainingTime, Status, Percent: string) of object; - TOnDataAvailableEvent = procedure(Sender: TBSCB; var Buffer: PByte; var - BufLength: Cardinal) of object; - TOnDataAvailableInfoEvent = procedure(Sender: TBSCB; grfBSCF: DWORD; - Status: string {; FormatEtc: PFormatEtc}) of object; - TOnCompleteEvent = procedure(Sender: TCustomIEDownload; aFileNameAndPath, - aFileName, - aFolderName, aExtension: WideString; const ActiveConnections: Integer) of - object; - TOnStreamCompleteEvent = procedure(Sender: TBSCB; Stream: TStream; Result: - HRESULT) of object; - TOnResumeEvent = procedure(Sender: TBSCB; FileName: string; var Action: - Cardinal) of object; - TGetWindowEvent = function(Sender: TBSCB; const GUIDReason: TGUID; out hwnd: - LongWord): HRESULT of object; - TOnStartBindingEvent = procedure(Sender: TBSCB; var Cancel: Boolean; pib: - IBinding; const FileName: WideString; const FileSize: integer) of object; - TOnStopBindingEvent = procedure(Sender: TBSCB; HRESULT: HRESULT; - szError: LPCWSTR) of object; - TOnGetBindResultsEvent = procedure(var Sender: TBSCB; out clsidProtocol: - TCLSID; out dwResult: DWORD; out szResult: POLEStr; - const stResult: string) of object; - TOnGetClientCertEvent = function(var Sender: TBSCB; out ppbCert: Byte; var - pcbCert: DWORD): HResult of object; - TTerminateEvent = procedure(const Sender: TBSCB; const ThreadId: Integer; - const aFileName: Widestring; var bCancel: Boolean) of object; - TOnGetRootSecurityIdEvent = function(var SecurityIdBuffer: TByteArray; var - BufferSize: DWord): HRESULT of object; - {IServiceProvider Interface} - TQueryServiceEvent = procedure(Sender: TObject; const rsid, iid: TGUID; var - Obj: IUnknown) of object; - TOnBeforeDownloadEvent = procedure(Sender: TInfoData; const Url, FileName, - FileExtension, Host, DownloadFolder: string; const FileSize: Integer; var - Cancel: Boolean) of object; - - TCustomIEDownload = class(TComponent) - - private - FAbout: string; -{$IFNDEF DELPHI7_UP} - FOldTimeSep: Char; -{$ENDIF} - bCancelAll: boolean; - bDone: boolean; - bRenamed: boolean; - BS: TBSCB; - FActiveConnections: integer; - FAdditionalHeader: TStrings; - FBeginningTransaction: TBeginningTransactionEvent; - FBindF: TBindF_Options; - FBindF_Value: Cardinal; - FBindF2: TBindF2_Options; - FBindF2_Value: Cardinal; - FBindInfoF: TBindInfoF_Options; - FBindInfoF_Value: Cardinal; - FBindInfoOption_: TBindInfoOptions_Options; - FBindInfoOption_Value: Cardinal; - FBindVerb: TBindVerb; - FBindVerb_Value: Cardinal; - FBusy: Boolean; - FCancel: Boolean; - FCodePageOption: TCodePageOption; - FCodePageValue: Cardinal; - FCustomVerb: string; - FDefaultProtocol: string; - FDefaultUrlFileName: string; - FDisplayName: PWideChar; - FdlCounter: integer; - FDownloadedFile: string; - FDownloadFolder: string; - FDownloadMethod: TDownloadMethod; - FDownloadTo: TDownloadTo; - FExtraInfo: string; - FFileExistsOption: TFileExistsOption; - FFileExtension: string; - FFileName: string; - FFileSize: ULong; - FFullUserAgent: string; - FGetWindow: TGetWindowEvent; - FHWnd: HWND; - FMimeType: string; - FOnAuthenticate: TAuthenticateEvent; -{$IFDEF DELPHI6_UP} - FOnAuthenticateEx: TAuthenticateExEvent; - FOnPutProperty: TOnPutPropertyEvent; -{$ENDIF} -{$IFDEF DELPHI7_UP} - FFormatSettings: TFormatSettings; -{$ENDIF} - FOnCodeInstallProblem: TOnCodeInstallProblemEvent; - FOnComplete: TOnCompleteEvent; - FOnConnect: TOnConnectEvent; - FOnBeforeDownload: TOnBeforeDownloadEvent; - FOnDataAvailable: TOnDataAvailableEvent; - FOnDataAvailableInfo: TOnDataAvailableInfoEvent; - FOnError: TErrorEvent; - FOnFileExists: TFileExistsEvent; - FOnGetBindInfo: TOnGetBindInfoEvent; - FOnGetBindInfoEx: TOnGetBindInfoExEvent; - FOnGetBindResults: TOnGetBindResultsEvent; - FOnGetClientCert: TOnGetClientCertEvent; - FOnGetRootSecurityId: TOnGetRootSecurityIdEvent; - FOnProgress: TOnProgressEvent; - FOnQueryInterface: TQueryInterfaceEvent; - FOnQueryService: TQueryServiceEvent; - FOnRedirect: TRedirect; - FOnResponse: TOnResponseEvent; - FOnResume: TOnResumeEvent; - FOnSecurityProblem: TOnSecurityProblemEvent; - FOnStartBinding: TOnStartBindingEvent; - FOnStateChange: TStateChangeEvent; - FOnStopBinding: TOnStopBindingEvent; - FOnStreamComplete: TOnStreamCompleteEvent; - FOnTerminate: TTerminateEvent; - FOpenDownloadFolder: Boolean; - FPassword: string; - FPostData: string; - FProxySettings: TProxySettings; - FPutFileName: string; - FRange: TRange; - FRefCount: Integer; - FSecurity: TSecurity; - FServerAddress: string; - FServerIP: string; - FStartTick: Integer; - FState: TState; - FTimeOut: Integer; - FUrl: string; - FUserAgent: string; - FUserName: string; - FUseSystemDownloadFolder: boolean; - FValidateUrl: boolean; - hProcess: THandle; - hStop: THandle; - - private - function GoAction(const actUrl, actFileName, actDownloadFolder: string; - pmk: IMoniker; pbc: IBindCtx): boolean; - function GoInit(const inUrl: string; const inFileName: string; - const inDownloadFolder: string): boolean; - function SetDownloadFolder(const aDownloadFolder: string): string; - function SetHttpProtocol(const aUrl: string): string; - procedure DoUpdate; - procedure ExtractDataFromFile(const aFileName: string); - procedure PrepareForExit; - procedure PrepareForStart; - procedure SetAbout(Value: string); - procedure SetAdditionalHeader(const Value: TStrings); - procedure SetBeforeExit; - procedure SetBindF(const Value: TBindF_Options); - procedure SetBindF2(const Value: TBindF2_Options); - procedure SetBindInfoF(const Value: TBindInfoF_Options); - procedure SetBindInfoOption(const Value: TBindInfoOptions_Options); - procedure SetBindVerb(const Value: TBindVerb); - procedure SetCodePage(const Value: TCodePageOption); - procedure SetDefaultProtocol(const Value: string); - procedure SetDownloadMethod(const Value: TDownloadMethod); - procedure SetFileName(const Value: string); - procedure SetUserAgent; - procedure Update_BindF_Value; - procedure Update_BindF2_Value; - procedure Update_BindInfoF_Value; - procedure Update_BindInfoOptions_Value; - - public - ItemsManager: TBSCBList; - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function CheckFileExists(const aFileName: string): boolean; - function CodeInstallProblemToStr(const ulStatusCode: Integer): string; - function FormatSize(const Byte: Double): string; - function FormatTickToTime(const TickCount: Cardinal): string; - function IsAsyncMoniker(const pmk: IMoniker): HRESULT; - function IsSynchronous(iedInfo: TInfoData): boolean; - function IsUrlValid(const isUrl: string): Boolean; - function OpenFolder(const aFolderName: string): Boolean; - function ResponseCodeToStr(const dwResponse: Integer): string; - function SetFileNameFromUrl(const aUrl: string): string; - function URLDownloadToCacheFile(const aUrl: string): string; - function UrlDownloadToFile(const aUrl: string): HRESULT; - function WaitForProcess(var EventName: THandle; var aStartTick, - aTimeOut: Integer): Boolean; - function WideStringToLPOLESTR(const Source: string): POleStr; - procedure BeforeDestruction; override; - procedure Cancel(const Item: TBSCB); overload; - procedure Cancel; overload; - procedure Reset; - procedure CancelAll; - procedure Download(const pmk: IMoniker; const pbc: IBindCtx); overload; - procedure Go(const aUrl: string); overload; - procedure Go(const aUrl: string; const aFileName: string); overload; - procedure Go(const aUrl: string; const aFileName: string; const - aDownloadFolder: string); overload; - procedure GoList(const UrlsList: TStrings); overload; - procedure GoList(const UrlsList: TStrings; const FileNameList: TStrings); - overload; - procedure GoList(const UrlsList: TStrings; const FileNameList: TStrings; - const DownloadFolderList: TStrings); overload; - procedure Loaded; override; - procedure Resume; - procedure Suspend; - - public - property ActiveConnections: integer read FActiveConnections; - property Busy: Boolean read FBusy; - property DisplayName: PWideChar read FDisplayName; - property DownloadedFile: string read FDownloadedFile; - property DownloadsCounter: integer read FdlCounter; - property FileExtension: string read FFileExtension; - property FileSize: ULong read FFileSize; - property MimeType: string read FMimeType; - property ServerAddress: string read FServerAddress; - property ServerIP: string read FServerIP; - property State: TState read FState; - - published - property About: string read FAbout write SetAbout; - property AdditionalHeader: TStrings read FAdditionalHeader write - SetAdditionalHeader; - property BindF: TBindF_Options read FBindF write - SetBindF default [Asynchronous, AsyncStorage, PullData, - NoWriteCache, GetNewestVersion]; - property BindF2: TBindF2_Options read FBindF2 write - SetBindF2 default [ReadDataOver4GB]; - property BindInfoF: TBindInfoF_Options read FBindInfoF write - SetBindInfoF default []; - property BindVerb: TBindVerb read FBindVerb write - SetBindVerb default Get; - property BindInfoOptions: TBindInfoOptions_Options read FBindInfoOption_ - write SetBindInfoOption default [UseBindInfoOptions, - AllowConnectMessages]; - property CodePage: TCodePageOption read FCodePageOption write - SetCodePage default Ansi; - property CustomVerb: string read FCustomVerb write FCustomVerb; - property DefaultProtocol: string read FDefaultProtocol write - SetDefaultProtocol; - property DefaultUrlFileName: string read FDefaultUrlFileName write - FDefaultUrlFileName; - property DownloadFolder: string read FDownloadFolder write - FDownloadFolder; - property DownloadMethod: TDownloadMethod read FDownloadMethod write - SetDownloadMethod default dmFile; - property ExtraInfo: string read FExtraInfo write FExtraInfo; - property FileExistsOption: TFileExistsOption read FFileExistsOption write - FFileExistsOption default feOverwrite; - property FileName: string read FFileName write SetFileName; - property OnAuthenticate: TAuthenticateEvent read FOnAuthenticate - write FOnAuthenticate; -{$IFDEF DELPHI6_UP} - property OnAuthenticateEx: TAuthenticateExEvent read FOnAuthenticateEx - write FOnAuthenticateEx; - property OnPutProperty: TOnPutPropertyEvent read FOnPutProperty write - FOnPutProperty; -{$ENDIF} - property OnBeforeDownload: TOnBeforeDownloadEvent read FOnBeforeDownload - write FOnBeforeDownload; - property OnBeginningTransaction: TBeginningTransactionEvent read - FBeginningTransaction write FBeginningTransaction; - property OnCodeInstallProblem: TOnCodeInstallProblemEvent read - FOnCodeInstallProblem write FOnCodeInstallProblem; - property OnDataAvailable: TOnDataAvailableEvent read - FOnDataAvailable write FOnDataAvailable; - property OnDataAvailableInfo: TOnDataAvailableInfoEvent read - FOnDataAvailableInfo write FOnDataAvailableInfo; - property OnConnect: TOnConnectEvent read FOnConnect write FOnConnect; - property OnComplete: TOnCompleteEvent read FOnComplete write FOnComplete; - property OnStreamComplete: TOnStreamCompleteEvent read - FOnStreamComplete write FOnStreamComplete; - property OnError: TErrorEvent read FOnError write FOnError; - property OnGetBindResults: TOnGetBindResultsEvent read - FOnGetBindResults write FOnGetBindResults; - property OnGetBindInfo: TOnGetBindInfoEvent read - FOnGetBindInfo write FOnGetBindInfo; - property OnGetBindInfoEx: TOnGetBindInfoExEvent read - FOnGetBindInfoEx write FOnGetBindInfoEx; - property OnGetSerializedClientCertContext: TOnGetClientCertEvent read - FOnGetClientCert - write FOnGetClientCert; - property OnGetRootSecurityId: TOnGetRootSecurityIdEvent - read FOnGetRootSecurityId write FOnGetRootSecurityId; - property OnGetWindow: TGetWindowEvent read FGetWindow write - FGetWindow; - property OnFileExists: TFileExistsEvent read FOnFileExists write - FOnFileExists; - property OnProgress: TOnProgressEvent read FOnProgress write - FOnProgress; - property OnQueryInterface: TQueryInterfaceEvent read - FOnQueryInterface write FOnQueryInterface; - property OnQueryService: TQueryServiceEvent read FOnQueryService write - FOnQueryService; - property OnRedirect: TRedirect read FOnRedirect write FOnRedirect; - property OnResponse: TOnResponseEvent read FOnResponse - write FOnResponse; - property OnResume: TOnResumeEvent read FOnResume write FOnResume; - property OnSecurityProblem: TOnSecurityProblemEvent read FOnSecurityProblem - write FOnSecurityProblem; - property OnStartBinding: TOnStartBindingEvent read FOnStartBinding write - FOnStartBinding; - property OnStateChange: TStateChangeEvent read FOnStateChange write - FOnStateChange; - property OnTerminate: TTerminateEvent read FOnTerminate write FOnTerminate; - property OnStopBinding: TOnStopBindingEvent read FOnStopBinding - write FOnStopBinding; - property OpenDownloadFolder: Boolean read FOpenDownloadFolder write - FOpenDownloadFolder default False; - property Password: string read FPassword write FPassword; - property PostData: string read FPostData write FPostData; - property ProxySettings: TProxySettings read FProxySettings write - FProxySettings; - property PutFileName: string read FPutFileName write FPutFileName; - property Range: TRange read FRange write FRange; - property Security: TSecurity read FSecurity write FSecurity; - property TimeOut: Integer read FTimeOut write FTimeOut default 0; - property Url: string read FUrl write FUrl; - property UserAgent: string read FUserAgent write FUserAgent; - property UserName: string read FUserName write FUserName; - property UseSystemDownloadFolder: boolean read FUseSystemDownloadFolder write - FUseSystemDownloadFolder default False; - property ValidateUrl: boolean read FValidateUrl write FValidateUrl default - False; - end; - - TIEDownload = class(TCustomIEDownload) - published - end; - -var - ThreadStatusDesc: array[TThreadStatus] of string = ('Running', 'Suspended', - 'Waiting', 'Terminated'); - -implementation - -uses - IEDownloadStrings, EwbUrl, IEDownloadTools, Forms -{$IFDEF DELPHI6_UP}, StrUtils{$ENDIF}; - -{TInfoData---------------------------------------------------------------------} - -constructor TInfoData.Create; -begin - inherited Create; - InfAdditionalHeader := TStringList.Create; -end; - -destructor TInfoData.Destroy; -begin {Cleaning out and free our resources} - Clear; - Remove(Sender); - Extract(Self); - {Its just to make sure we cleanly remove the IEDownload as an object} - Remove(infSender); - Extract(Self); - if Assigned(infAdditionalHeader) then - FreeAndNil(infAdditionalHeader); - inherited; -end; -{End of TInfoData--------------------------------------------------------------} - -{Proxy Settings-----------------------------------------------------------------} - -function TProxySettings.SetProxy(const FullUserAgent, ProxyServer: string): - Boolean; //mladen -var - intList: INTERNET_PER_CONN_OPTION_List; - dwBufSize: DWORD; - hInternet: Pointer; - intOptions: array[1..3] of INTERNET_PER_CONN_OPTION; -begin - Result := False; - dwBufSize := SizeOf(intList); - intList.dwSize := SizeOf(intList); - intList.pszConnection := nil; - intList.dwOptionCount := High(intOptions); - // the highest index of the array (in this case 3) - intOptions[1].dwOption := INTERNET_PER_CONN_FLAGS; - intOptions[1].Value.dwValue := PROXY_TYPE_DIRECT or PROXY_TYPE_PROXY; - intOptions[2].dwOption := INTERNET_PER_CONN_PROXY_SERVER; - intOptions[2].Value.pszValue := PChar(ProxyServer); - intOptions[3].dwOption := INTERNET_PER_CONN_PROXY_BYPASS; - intOptions[3].Value.pszValue := ''; - intList.intOptions := @intOptions; - hInternet := InternetOpen(PChar(FullUserAgent), INTERNET_OPEN_TYPE_DIRECT, - nil, nil, 0); - if hInternet <> nil then - try - Result := InternetSetOption(hInternet, - INTERNET_OPTION_PER_CONNECTION_OPTION, - @intList, dwBufSize); - Result := Result and InternetSetOption(hInternet, INTERNET_OPTION_REFRESH, - nil, 0); - finally - InternetCloseHandle(hInternet) - end; -end; -{End of Proxy Settings-----------------------------------------------------------} - -{$IFDEF USE_MSHTML} - -function TBSCB.OnChanged(dispId: TDispId): HRESULT; -var - DP: TDispParams; - vResult: OLEVariant; - Doc: IHTMLDocument2; -begin - if (DISPID_READYSTATE = DispId) then - if Succeeded((Doc as IHTMLDocument2).Invoke(DISPId_READYSTATE, GUId_null, - LOCALE_System_DEFAULT, DISPATCH_PROPERTYGET, DP, @vResult, nil, nil)) then - if Integer(vResult) = READYSTATE_COMPLETE then - PostThreadMessage(GetCurrentThreadId, WM_USER_STARTWALKING, 0, 0); - Result := S_OK; -end; - -function TBSCB.OnRequestEdit(dispId: TDispId): HRESULT; -begin - Result := E_NOTIMPL; -end; -{$ENDIF} -{Callback procedure--------------------------------------------------------------} -{IAuthenticate Interface -Provides the URL moniker with information to authenticate the user} - -function TBSCB.Authenticate(var hwnd: HWnd; var szUserName, szPassWord: LPWSTR): - HResult; -{Provides the URL moniker with information to authenticate the user. -S_OK Authentication was successful. -E_ACCESSDENIED Authentication failed. -E_INVALIDARG One or more parameters are invalid. } -var - aUser, aPwd: WideString; -begin - Result := S_OK; - hwnd := FSender.FHWnd; - aUser := EmptyStr; - aPwd := EmptyStr; - if Assigned(FSender.FOnAuthenticate) then - FSender.FOnAuthenticate(Self, hwnd, aUser, aPwd, Result); - if aUser <> EmptyStr then - szUserName := WidestringToLPOLESTR(aUser) - else - szUserName := nil; - if aPwd <> EmptyStr then - szPassWord := WidestringToLPOLESTR(aPwd) - else - szPassWord := nil; -end; - -{IHttpNegotiate Interface -Implemented by a client application to provide support for HTTP negotiations} - -function TBSCB.BeginningTransaction(szURL, szHeaders: LPCWSTR; dwReserved: - DWORD; out szAdditionalHeaders: LPWSTR): HRESULT; -{IHttpNegotiate::BeginningTransaction Method -Notifies the client of the URL that is being bound to at the beginning of an HTTP transaction. -S_OK The HTTP transaction completed successfully and any additional headers specified have been appended. -E_ABORT The HTTP transaction has been terminated. -E_INVALIDARG A parameter is invalid.} -var - sr: TSearchRec; - Action: Cardinal; - tmpNewName: WideString; - NewHeaders: string; - Size: Longint; - x, Len: Integer; - ActExists: TFileExistsOption; -begin - ActExists := FSender.FFileExistsOption; - tmpNewName := ''; - dwReserved := 0; - if (FSender.FCancel) and (Binding <> nil) then - begin - Result := E_ABORT; - binding.Abort; - Exit; - end; - NewHeaders := FSender.FFullUserAgent + #13 + #10; - if (BscbInfo.infFileName <> EmptyStr) then - begin - if FindFirst(BscbInfo.infFileName, faAnyFile, sr) = 0 then - begin - Size := sr.Size; - FindClose(sr); - BscbInfo.infRangeEnd := 0; - Action := 0; - - {IBinding still do not support resume (By MS 4.2009)} - if Assigned(FSender.FOnResume) then - begin - FSender.FOnResume(Self, BscbInfo.infFileName, Action); - BscbInfo.infRangeBegin := Size; - end; - - if Assigned(FSender.FOnFileExists) then - FSender.FOnFileExists(ActExists, BscbInfo.infFileName, tmpNewName); - - if tmpNewName = EmptyStr then - tmpNewName := TimeToStr(now) + '_' + BscbInfo.infFileName; - case ActExists of - feOverwrite: - begin - Binding.Resume; - if Assigned(FSender.FOnResume) then - FSender.FOnResume(Self, BscbInfo.infFileName, Action); - BscbInfo.infRangeBegin := 0 - end; - feSkip: - begin - Result := E_ABORT; - Binding.Abort; - Exit; - end; - feRename: BscbInfo.infFileName := tmpNewName; - end - end; - end - else {Download is starting} - begin {Set the range to 0 which means start download from scratch} - BscbInfo.infRangeBegin := 0; - BscbInfo.infRangeEnd := 0; - end; - - if ((BscbInfo.infRangeBegin <> 0) or (BscbInfo.infRangeEnd <> 0)) then - begin {We set the new headers to send to the server} - NewHeaders := NewHeaders + 'Range: bytes=' + - IntToStr(BscbInfo.infRangeBegin) + '-'; - if BscbInfo.infRangeEnd <> 0 then - NewHeaders := NewHeaders + IntToStr(BscbInfo.infRangeEnd) + #13#10 - else - NewHeaders := NewHeaders + #13#10; - end; - if (BscbInfo.infAdditionalHeader.Text <> EmptyStr) then - for x := 0 to BscbInfo.infAdditionalHeader.Count - 1 do - NewHeaders := NewHeaders + BscbInfo.infAdditionalHeader[x] + #13#10; - Len := Length(NewHeaders); - szAdditionalHeaders := CoTaskMemAlloc((Len + 1) * SizeOf(WideChar)); - StringToWideChar(NewHeaders, szAdditionalHeaders, Len + 1); - {We will post the event} - if Assigned(FSender.FBeginningTransaction) then - Result := FSender.FBeginningTransaction(Self, szURL, szHeaders, - dwReserved, szAdditionalHeaders) - else - Result := S_OK; - FBSCBTimer.Enabled := True; {Timeout timer} - FTimedOut := False; - Self._Release; -end; - -function TBSCB.OnResponse(dwResponseCode: DWORD; szResponseHeaders, - szRequestHeaders: LPCWSTR; out szAdditionalRequestHeaders: LPWSTR): HRESULT; -{Enables the client of a bind operation to examine the response headers, - optionally terminate the bind operation, and add HTTP headers to a - request before resending the request. -Returns one of the following values. -S_OK The operation completed successfully. -E_ABORT Terminate the HTTP transaction. -E_INVALIDARG The parameter is invalid.} -var - Len: Cardinal; - S: string; - tmpName: string; -begin - if (FSender.FCancel) and (Binding <> nil) then - begin - Result := E_ABORT; - binding.Abort; - Exit; - end; - Result := S_OK; - if (QueryInfo(HTTP_QUERY_CUSTOM, Len) and (Len = 0)) {file size = 0} - or (QueryInfo(HTTP_QUERY_CONTENT_LENGTH, Len) and (Len = 0)) {file size = 0} - or (dwResponseCode >= 400) then {An Error} - begin - Result := E_ABORT; - if Assigned(FSender.FOnError) then - FSender.FOnError(dwResponseCode, - ResponseCodeToStr(dwResponseCode)); - end; - begin {Publish the event} - if Assigned(FSender.FOnResponse) then - Result := FSender.FOnResponse(Self, dwResponseCode, - szResponseHeaders, szRequestHeaders, szAdditionalRequestHeaders); - if (FSender.FDownloadTo = dtDownloadToFile) - or (FSender.FDownloadTo = dtDownloadToCache) then - begin - Result := S_OK; - Exit; - end; - - if (BscbInfo.infRangeBegin <> 0) and (BscbInfo.infFileName <> EmptyStr) then - begin {Retrieves the types of range requests that are accepted for a resource.} - QueryInfo(HTTP_QUERY_ACCEPT_RANGES, S); - {'Partial Content'} - if (S = 'bytes') or (dwResponseCode = 206) then - begin {Create an output file as a stream back from where we finished} - tmpName := DoSaveFileAs; - if tmpName <> EmptyStr then - begin - fsOutputFile := TFileStream.Create(tmpName, fmOpenReadWrite); - fsOutputFile.Seek(0, soFromEnd); - end; - end - else - begin {'Create an output file as a stream from range begin 0'} - // not needed - tmpName := DoSaveFileAs; - if tmpName <> EmptyStr then - begin - fsOutputFile := TFileStream.Create(tmpName, fmCreate); - BscbInfo.infRangeBegin := 0; - end; - end; - end - else - begin {Here we create the file} - if (FSender.FDownloadMethod = dmFile) then - begin - tmpName := DoSaveFileAs; - if tmpName <> EmptyStr then - begin - fsOutputFile := TFileStream.Create(tmpName, fmCreate); - fsOutputFile.Seek(0, soFromBeginning); - end; - end; - end - end; -end; - -{IHttpNegotiate2 Interface} - -function TBSCB.GetRootSecurityId(var SecurityIdBuffer: TByteArray; var - BufferSize: DWord; dwReserved: DWORD): HResult; -begin {Gets a root security ID.} - if Assigned(FSender.FOnGetRootSecurityId) then - Result := FSender.FOnGetRootSecurityId(SecurityIdBuffer, BufferSize) - else - Result := E_NOTIMPL; -end; - -function TBSCB.GetBindInfoEx(out grfBINDF: DWORD; var pbindinfo: BINDINFO; - out grfBINDF2: DWORD; out pdwReserved: DWORD): HResult; -var - PutFile: TFileStream; - Len: Integer; -begin - pdwReserved := 0; - if Assigned(FSender.FOnGetBindInfoEx) then - FSender.FOnGetBindInfoEx(Self, grfBINDF, pbindinfo, grfBINDF2); - grfBINDF := BscbInfo.infBindF_Value; {Insert our options.} - grfBINDF2 := BscbInfo.infBindF2_Value; {Insert our options 2.} - with pbindinfo do {Lets play with our options.} - begin - cbSize := SizeOf(TBindInfo); - if FRedirect then - begin {Set method to get in case of redirect} - dwBindVerb := BINDVERB_GET; - end - else {Insert the options} - dwBindVerb := BscbInfo.infBindVerb_Value; - grfBindInfoF := BscbInfo.infBindInfoF_Value; - dwCodePage := BscbInfo.infCodePage_Value; - {Insert security arguments} - with SecurityAttributes do - begin - nLength := SizeOf(TSecurityAttributes); - bInheritHandle := BscbInfo.infInheritHandle; - if BscbInfo.infDescriptor <> '' then - lpSecurityDescriptor := PAnsiChar(BscbInfo.infDescriptor) - else - lpSecurityDescriptor := nil; - end; - {Insert Extra Info} - if BscbInfo.infExtraInfo <> EmptyStr then - begin - Len := Length(BscbInfo.infExtraInfo); - szExtraInfo := CoTaskMemAlloc((Len + 1) * SizeOf(WideChar)); - StringToWideChar(BscbInfo.infExtraInfo, szExtraInfo, Len + 1); - end - else - szExtraInfo := nil; - case BscbInfo.infBindVerb_Value of - {Now we will set by our BindVerbOption} - BINDVERB_PUT: {Perform an HTTP PUT operation. The data to put should be - specified in the stgmedData member of the BINDINFO structure.} - if BscbInfo.infPutFileName <> EmptyStr then - begin - PutFile := TFileStream.Create(BscbInfo.infPutFileName, - fmOpenRead); - try - PutFile.Seek(0, 0); - FGlobalData := GlobalAlloc(GPTR, PutFile.Size); - FDataSize := PutFile.Size; - PutFile.ReadBuffer(Pointer(FGlobalData)^, PutFile.Size); - finally - PutFile.Free; - end; - end; - BINDVERB_POST: {Perform an HTTP POST operation. - The data to be posted should be specified in the stgmedData - member of the BINDINFO structure.} - if BscbInfo.infPostData <> EmptyStr then - begin - FGlobalData := GlobalAlloc(GPTR, Length(BscbInfo.infPostData) - + 1); - FDataSize := Length(BscbInfo.infPostData) + 1; - Move(BscbInfo.infPostData[1], Pointer(FGlobalData)^, - Length(BscbInfo.infPostData)); - end; - BINDVERB_CUSTOM: {Perform a custom operation that is protocol-specific - See the szCustomVerb member of the BINDINFO structure. - The data to be used in the custom operation should be specified - in the stgmedData structure.} - if (BscbInfo.infCustomVerb <> EmptyStr) then - begin - Len := Length(BscbInfo.infCustomVerb); - szCustomVerb := CoTaskMemAlloc((Len + 1) * SizeOf(WideChar)); - StringToWideChar(BscbInfo.infCustomVerb, szCustomVerb, Len + 1); - end - else {BINDVERB_GET so no need to play arround.} - szCustomVerb := nil; - end; - FillChar(stgmedData, 0, SizeOf(STGMEDIUM)); - cbStgmedData := FDataSize; - with StgmedData do - begin - if dwBindVerb = BINDVERB_GET then - {The stgmedData member of the BINDINFO - structure should be set to TYMED_NULL for the GET operation} - Tymed := TYMED_NULL - else - Tymed := TYMED_HGLOBAL; - {this is the only medium urlmon supports right now} - hGlobal := FGlobalData; - IUnknown(unkForRelease) := Self; {Set the IUnknown interface} - end; - end; - Result := S_OK; -end; - -{IBindStatusCallback Interface} -{Accepts information on an asynchronous bind operation.} - -function TBSCB.GetBindInfo(out grfBINDF: DWORD; var BindInfo: TBindInfo): - HRESULT; -{Provides information about how the bind operation is handled when - it is called by an asynchronous moniker. -Returns S_OK if this is successful or E_INVALIDARG if one or more parameters are invalid.} -var - PutFile: TFileStream; - Len: Integer; -begin - grfBINDF := BscbInfo.infBindF_Value; {Insert our options.} - with BindInfo do {Lets play with our options.} - begin - cbSize := SizeOf(TBindInfo); - if FRedirect then - begin {Set method to get in case of redirect} - dwBindVerb := BINDVERB_GET; - end - else {Insert the options} - dwBindVerb := BscbInfo.infBindVerb_Value; - grfBindInfoF := BscbInfo.infBindInfoF_Value; - dwCodePage := BscbInfo.infCodePage_Value; - {Insert security arguments} - with SecurityAttributes do - begin - nLength := SizeOf(TSecurityAttributes); - bInheritHandle := BscbInfo.infInheritHandle; - if BscbInfo.infDescriptor <> '' then - lpSecurityDescriptor := PAnsiChar(BscbInfo.infDescriptor) - else - lpSecurityDescriptor := nil; - end; - {Insert Extra Info} - if BscbInfo.infExtraInfo <> EmptyStr then - begin - Len := Length(BscbInfo.infExtraInfo); - szExtraInfo := CoTaskMemAlloc((Len + 1) * SizeOf(WideChar)); - StringToWideChar(BscbInfo.infExtraInfo, szExtraInfo, Len + 1); - end - else - szExtraInfo := nil; - case BscbInfo.infBindVerb_Value of - {Now we will set by our BindVerbOption} - BINDVERB_PUT: {Perform an HTTP PUT operation. The data to put should be - specified in the stgmedData member of the BINDINFO structure.} - if BscbInfo.infPutFileName <> EmptyStr then - begin {Create a process to put a file} - PutFile := TFileStream.Create(BscbInfo.infPutFileName, - fmOpenRead); - try - PutFile.Seek(0, 0); - FGlobalData := GlobalAlloc(GPTR, PutFile.Size); - FDataSize := PutFile.Size; - PutFile.ReadBuffer(Pointer(FGlobalData)^, PutFile.Size); - finally - PutFile.Free; - end; - end; - - BINDVERB_POST: {Perform an HTTP POST operation. - The data to be posted should be specified in the stgmedData - member of the BINDINFO structure.} - if BscbInfo.infPostData <> EmptyStr then - begin - FGlobalData := GlobalAlloc(GPTR, Length(BscbInfo.infPostData) - + 1); - FDataSize := Length(BscbInfo.infPostData) + 1; - Move(BscbInfo.infPostData[1], Pointer(FGlobalData)^, - Length(BscbInfo.infPostData)); - end; - BINDVERB_CUSTOM: {Perform a custom operation that is protocol-specific - See the szCustomVerb member of the BINDINFO structure. - The data to be used in the custom operation should be specified - in the stgmedData structure.} - if (BscbInfo.infCustomVerb <> EmptyStr) then - begin - Len := Length(BscbInfo.infCustomVerb); - szCustomVerb := CoTaskMemAlloc((Len + 1) * SizeOf(WideChar)); - StringToWideChar(BscbInfo.infCustomVerb, szCustomVerb, Len + 1); - end - else {BINDVERB_GET so no need to play arround.} - szCustomVerb := nil; - end; - FillChar(stgmedData, 0, SizeOf(STGMEDIUM)); - cbStgmedData := FDataSize; - with StgmedData do - begin - if dwBindVerb = BINDVERB_GET then - {The stgmedData member of the BINDINFO - structure should be set to TYMED_NULL for the GET operation} - Tymed := TYMED_NULL - else - Tymed := TYMED_HGLOBAL; - {this is the only medium urlmon supports right now} - hGlobal := FGlobalData; - IUnknown(unkForRelease) := Self; {Set the IUnknown interface} - end; - end; - if Assigned(FSender.FOnGetBindInfo) then - FSender.FOnGetBindInfo(Self, grfBINDF, BindInfo); - Result := S_OK; -end; - -function TBSCB.GetPriority(out nPriority): HRESULT; -{Gets the priority for the bind operation when it is called by an asynchronous moniker.} -{Returns S_OK if this is successful or E_INVALIDARG if the pnPriority parameter is invalid.} -begin {if you want to set priority you should implement SetPriority in your application} - Result := S_OK; - if (FSender.FCancel) and (Binding <> nil) then - binding.Abort -end; - -function TBSCB.OnDataAvailable(grfBSCF, dwSize: DWORD; FormatEtc: PFormatEtc; - stgmed: PStgMedium): HRESULT; -{Provides data to the client as it becomes available during -asynchronous bind operations.OnDataAvailable return E_PENDING -when they reference data not yet available through their read -methods, rather than blocking until the data becomes available. - This flag applies only to ASYNCHRONOUS operations} -{Returns S_OK if this is successful or E_INVALIDARG if one or more parameters are invalid.} -var - Data: PByte; - BufL, dwRead, dwActuallyRead: Cardinal; -begin - if (FSender.FCancel) and (Binding <> nil) then - binding.Abort - else - begin - - if Assigned(FSender.FOnDataAvailableInfo) then - FSender.FOnDataAvailableInfo(Self, grfBSCF, - DataAvalibleToStr(grfBSCF) {, FormatEtc}); - - if Assigned(FBSCBTimer) then {reset our timer.} - begin - FBSCBTimer.Enabled := False; - FBSCBTimer.Enabled := True; - end; - - if (grfBSCF = grfBSCF or BSCF_FIRSTDATANOTIFICATION) then - begin - - if (fOutStream = nil) and (stgmed.tymed = TYMED_ISTREAM) then - fOutStream := IStream(stgmed.stm); - if Assigned(m_pPrevBSCB) and not Assigned(fsOutputFile) - and (BscbInfo.infFileName <> '') then - try - //TODO: check for resume - fsOutputFile := TFileStream.Create(DoSaveFileAs, fmCreate); - BscbInfo.infRangeBegin := 0; - except on EFCreateError do - begin - Binding.Abort; - Result := E_FAIL; - Exit; - fsOutputFile.Free; - end; - end; - end; - dwRead := dwSize - FTotalRead; - dwActuallyRead := 0; - if (dwRead > 0) then - repeat - Data := AllocMem(dwRead + 1); - fOutStream.Read(Data, dwRead, @dwActuallyRead); - BufL := dwActuallyRead; - if Assigned(FSender.FOnDataAvailable) then - begin - FSender.FOnDataAvailable(self, Data, BufL); - end; - if (BscbInfo.infFileName <> '') and Assigned(fsOutputFile) then - begin - fsOutputFile.WriteBuffer(Data^, BufL); - end - else if Assigned(Stream) then - Stream.WriteBuffer(Data^, BufL); - Inc(FTotalRead, dwActuallyRead); - FreeMem(Data); - until dwActuallyRead = 0; - end; - Result := S_OK; - {if (grfBSCF = grfBSCF or BSCF_FIRSTDATANOTIFICATION) then - begin - if (fOutStream = nil) and (stgmed.tymed = TYMED_ISTREAM) then - fOutStream := IStream(stgmed.stm); - if Assigned(m_pPrevBSCB) and not Assigned(fsOutputFile) - //and (BscbInfo.infFileName <> '') - then - // and (FSender.FDownloadMethod = dmFile) then - try - fsOutputFile := TFileStream.Create(DoSaveFileAs, fmCreate); - BscbInfo.infRangeBegin := 0; - except on EFCreateError do - begin - Binding.Abort; - Result := E_INVALIDARG; - if Assigned(FSender.FOnError) then - FSender.FOnError(GetLastError, SysErrorMessage(GetLastError)); - fsOutputFile.Free; - Exit; - end; - end; - end; - dwRead := dwSize - FTotalRead; - dwActuallyRead := 0; - if (dwRead > 0) then - repeat - Data := AllocMem(dwRead + 1); //to fix stack overflow - fOutStream.Read(Data, dwRead, @dwActuallyRead); - BufL := dwActuallyRead; - if Assigned(FSender.FOnDataAvailable) then - FSender.FOnDataAvailable(Self, Data, Bufl); - try - Stream.WriteBuffer(Data^, Bufl); - except - on EWriteError do - begin - Binding.Abort; - Result := E_INVALIDARG; - if Assigned(FSender.FOnError) then - FSender.FOnError(GetLastError, SysErrorMessage(GetLastError)); - fsOutputFile.Free; - Exit; - end; - end; - - if (FSender.FDownloadMethod = dmFile) and Assigned(fsOutputFile) then - begin - try - fsOutputFile.WriteBuffer(Data^, bufl); - except - on EWriteError do - begin - Binding.Abort; - Result := E_INVALIDARG; - if Assigned(FSender.FOnError) then - FSender.FOnError(GetLastError, SysErrorMessage(GetLastError)); - fsOutputFile.Free; - Exit; - end - end; - end; - Inc(FTotalRead, dwActuallyRead); - FreeMem(Data); - until dwActuallyRead = 0; -end; -Result := S_OK;} -end; - -function TBSCB.OnLowResource(Reserved: DWORD): HRESULT; -{Not implemented by MS.} -begin - Result := E_NOTIMPL; -end; - -function TBSCB.OnObjectAvailable(const IID: TGUID; punk: IUnknown): HRESULT; -{Passes the requested object interface pointer to the client.} -{Returns S_OK if this is successful or E_INVALIDARG if one or more parameters are invalid.} -begin - Self._AddRef; - if (FSender.FCancel) and (Binding <> nil) then - binding.Abort; - Result := S_OK; -end; - -function TBSCB.OnProgress(ulProgress, ulProgressMax, ulStatusCode: ULONG; - szStatusText: LPCWSTR): HRESULT; -{Indicates the progress and the status of the bind operation.} -{Returns S_OK if this is successful or E_INVALIDARG if one or more parameters are invalid.} -{Avalible flags: http://msdn.microsoft.com/en-us/library/ms775133(VS.85).aspx} -var - Percent, Speed, Elapsed, Downloaded, RemainingTime, Status: string; - _Speed: Single; - bAbort: Boolean; - tmpElapsed, iFileSize: integer; -begin - if (FSender.FCancel) and (Binding <> nil) then - Binding.Abort - else - begin - tmpElapsed := 0; - bAbort := False; - Status := ResponseCodeToStr(ulStatusCode); - if (ulProgress > ulProgressMax) then - ulProgressMax := ulProgress; - iFileSize := ulProgressMax; - FSender.FFileSize := ulProgressMax; - {For a download manager} - if Assigned(m_pPrevBSCB) then - begin - {Weed to do this otherwise a filedownload dlg will be displayed - as we are downloading the file.} - if (ulStatusCode = BINDSTATUS_CONTENTDISPOSITIONATTACH) then - begin - Result := S_OK; - Exit; {We must exit so no DLG will be displayed} - end; - m_pPrevBSCB.OnProgress(ulProgress, ulProgressMax, ulStatusCode, - szStatusText); - end; - case ulStatusCode of - BINDSTATUS_REDIRECTING: {redirecting} - begin - FRedirect := True; - FSender.FServerAddress := szStatusText; - if (Assigned(FSender.FOnRedirect)) and - (FSender.FUrl <> szStatusText) then - FSender.FOnRedirect(Self, bAbort, FSender.FUrl, szStatusText); - if bAbort then {If we do not wish to be redirect} - begin - FSender.FCancel := True; - Result := E_INVALIDARG; - Exit; - end; - {Get the new addreess after redirecing} - if (FSender.FDownloadMethod = dmFile) then - FSender.SetFileNameFromUrl(szStatusText); - end; - BINDSTATUS_CONNECTING: FSender.FServerIP := szStatusText; - BINDSTATUS_MIMETYPEAVAILABLE: FSender.FMimeType := szStatusText; - BINDSTATUS_BEGINDOWNLOADDATA: FSender.FServerAddress := szStatusText; - BINDSTATUS_DOWNLOADINGDATA: {We are downloading so here we will calculate download variables} - if Assigned(FSender.FOnProgress) then - begin - if (ulProgress {+ BscbInfo.infRangeBegin} > 0) then - Downloaded := FormatSize(ulProgress {+ BscbInfo.infRangeBegin}); - if (ulProgressMax > 0) and (ulProgress > 0) then - Percent := Format('%.1f %%', [ulProgress / ulProgressMax * 100]); - QueryPerformanceCounter(TimeNow); - if (TimeNow > TimeStarted) - {and (Round((TimeNow-TimeStarted)/Frequency) <= tmpElapsed)}then - begin - tmpElapsed := Round((TimeNow - TimeStarted) / Frequency); - Elapsed := SecToStr(tmpElapsed); - end; - try - if (ulProgress > 0) and (tmpElapsed > 0) then - _Speed := ulProgress / 1024 / tmpElapsed - else - _Speed := 0; - Speed := Format('%.1f ' + kb_sec, [_Speed]); - if (ulProgressMax > 0) and ((_Speed) > 0) and (ulProgressMax > - ulProgress) then - RemainingTime := SecToStr(Round(ulProgressMax / _speed / 1000) - - Round(ulProgress / _speed / 1000)) - else - RemainingTime := TimeToStr(0); - except - on EZeroDivide do - RemainingTime := TimeToStr(0); - end; - end; - - BINDSTATUS_ENDDOWNLOADDATA: {You are joking right? NO MORE DATA TO DOWNLOAD} - begin - Downloaded := done; - ulProgress := 0; - ulProgressMax := 0; - Speed := '0/00' + kb_sec; - RemainingTime := '00.00.00'; - Status := done; - Percent := '100%'; - end; - {Here you can add more handlers to any BINDSTATUS_ you like} - end; - - if Assigned(FSender.FOnProgress) then {Publish the event} - FSender.FOnProgress(Self, ulProgress {+ BscbInfo.infRangeBegin}, - ulProgressMax {+ BscbInfo.infRangeBegin}, ulStatusCode, iFileSize, - szStatusText, - Downloaded, Elapsed, Speed, RemainingTime, Status, Percent); - end; - Result := S_OK; -end; - -function TBSCB.GetFileNameFromUrl(Url: string): string; -var - Ut: TUrl; -begin - Ut := TUrl.Create(Url); - try - Ut.CrackUrl(Url, ICU_ESCAPE); - if AnsiPos('.', Ut.ExtraInfo) = 0 then - Result := FSender.FDefaultUrlFileName - else - Result := Ut.ExtraInfo; - finally - Ut.Free; - end; -end; - -function TBSCB.OnStartBinding(dwReserved: DWORD; pib: IBinding): HRESULT; -{Notifies the client about the callback methods that it is registered to receive.} -{Returns S_OK if this is successful or - E_INVALIDARG if the pib parameter is invalid. -To abort the binding we should return E_FAIL.} -var - bAbort: Boolean; -begin - //dwReserved:= 0; // A demand by ms that is not needed.} - if FSender.FCancel then - Result := E_FAIL - else - begin - - Result := S_OK; - bAbort := False; - Binding := pib; {A pointer to the IBinding interface} - Binding._AddRef; {To be released on StopBinding} - {We will try to get the file size using query info} - QueryInfo(HTTP_QUERY_CONTENT_LENGTH, BscbInfo.infFileSize); - QueryInfoFileName; - if Assigned(FSender.FOnBeforeDownload) then - FSender.FOnBeforeDownload(BscbInfo, BscbInfo.infUrl, BscbInfo.infFileName, - BscbInfo.infFileExt, BscbInfo.infHost, BscbInfo.infDownloadFolder, - BscbInfo.infFileSize, bAbort); - - {For the download manager} - FSender.FFileName := BscbInfo.infFileName; - FSender.FDownloadFolder := BscbInfo.infDownloadFolder; - if Assigned(m_pPrevBSCB) then - m_pPrevBSCB.OnStopBinding(HTTP_STATUS_OK, nil); - - {Remove file name which is not needed for stream} - case FSender.FDownloadMethod of - dmStream: BscbInfo.infFileName := EmptyStr; - dmFile: - begin {Try # 2} - if (BscbInfo.infFileName = EmptyStr) and (FSender.FDownloadTo = - dtMoniker) then - BscbInfo.infFileName := GetFileNameFromUrl(FSender.FUrl) - else - begin - if (BscbInfo.infFileName = EmptyStr) and (not FSender.bRenamed) and - (BscbInfo.infFileName <> GetFileNameFromUrl(BscbInfo.infUrl)) then - BscbInfo.infFileName := GetFileNameFromUrl(BscbInfo.infUrl); - end; - end; - end; - if Assigned(FSender.FOnStartBinding) then - FSender.FOnStartBinding(Self, bAbort, Binding, BscbInfo.infFileName, - BscbInfo.infFileSize); - if bAbort then - begin {Note: We are still in busy state until OnStopBinding!!} - Result := E_FAIL; {Do not use Binding.Abort! Just send E_FAIL} - FSender.FCancel := True; - end; - end; -end; - -function TBSCB.OnStopBinding(HRESULT: HRESULT; szError: LPCWSTR): HRESULT; -{This method indicates the end of the bind operation. -Returns S_OK if this is successful or an error value otherwise.} -var - clsidProtocol: TCLSID; - dwResult: DWORD; - szResult: POLEStr; - HR: System.HRESULT; -begin //OK - if (FSender.FDownloadTo = dtDownloadToFile) - or (FSender.FDownloadTo = dtDownloadToCache) then - begin - Result := S_OK; - Exit; - end; - - if (Assigned(m_pPrevBSCB) and Assigned(FBindCtx)) then - {Stores an IUnknown pointer on the specified object } - begin {To be used with a download manager} - HR := FBindCtx.RegisterObjectParam('_BSCB_Holder_', m_pPrevBSCB); - if Failed(HR) and Assigned(FSender.FOnError) then - FSender.FOnError(GetLastError, SysErrorMessage(GetLastError)) - else if (Assigned(FSender.FOnConnect)) then - FSender.FOnConnect(Self, HR, Registering_new_moniker + - ResponseCodeToStr(HR)); - m_pPrevBSCB._Release; - m_pPrevBSCB := nil; - FBindCtx._Release; - FBindCtx := nil; - Dec(FSender.FRefCount); - end; - - GetBindResult(clsidProtocol, dwResult, szResult); - if FTimedOut then - begin {If we reached TimeOut them we will post the event} - HRESULT := INET_E_CONNECTION_TIMEOUT; - if Assigned(FSender.FOnError) then - FSender.FOnError(HRESULT, ResponseCodeToStr(HRESULT)); - end; - if Assigned(FSender.FOnStopBinding) then - FSender.FOnStopBinding(Self, HRESULT, szError); - Result := HRESULT; - FSender.FState := sStopped; - if Assigned(FSender.FOnStateChange) then - FSender.FOnStateChange(FSender.FState); - - if Assigned(FSender.FOnStreamComplete) then - FSender.FOnStreamComplete(Self, Stream, HRESULT); - FSender.bDone := True; - SetEvent(FSender.hStop); - Terminate; - Dec(FSender.FActiveConnections); - if FSender.FActiveConnections = 0 then - SetEvent(FSender.hProcess); -end; - -{IServiceProvider Interface} - -function TBSCB.QueryService(const rsid, iid: TGUID; out Obj): HRESULT; -begin - Pointer(Obj) := nil; - if Assigned(FSender.FOnQueryService) then - FSender.FOnQueryService(Self, rsid, iid, IUnknown(obj)); - if Pointer(Obj) <> nil then - Result := S_OK - else - Result := E_NOINTERFACE; -end; - -{ICodeInstall Interface} - -function TBSCB.OnCodeInstallProblem(ulStatusCode: ULONG; szDestination, - szSource: LPCWSTR; dwReserved: DWORD): HResult; stdcall; -{Returns a value based on the status passed in, which indicates -whether to abort the application installation or file download. -S_OK Indicates that the installation or download should continue. -E_ABORT Indicates that the installation or download should abort.} -begin - dwReserved := 0; - if Assigned(FSender.FOnCodeInstallProblem) then - Result := FSender.FOnCodeInstallProblem(Self, ulStatusCode, szDestination, - szSource, dwReserved, ResponseCodeToStr(ulStatusCode)) - else - Result := S_OK; -end; - -{IUnknown Interface} - -function TBSCB.QueryInterface(const IID: TGUID; out Obj): HRESULT; -{S_OK if the interface is supported, E_NOINTERFACE if not.} -begin - Self._AddRef; - if Assigned(FSender.OnQueryInterface) then - FSender.OnQueryInterface(IID, Obj); - if GetInterface(IID, Obj) then - Result := 0 - else - Result := E_NOINTERFACE; -end; - -function TBSCB._AddRef: Integer; -{The IUnknown::AddRef method increments the reference count for - an interface on an object.} -begin - Result := InterlockedIncrement(FSender.FRefCount); -end; - -function TBSCB._Release: Integer; -{Decrements the reference count for the calling interface on a object. } -begin - Result := InterlockedDecrement(FSender.FRefCount); - if Result = 0 then - Destroy; -end; - -{IWindowForBindingUI Interface} - -function TBSCB.GetWindow(const GUIDReason: TGUID; out hwnd): HRESULT; -{Returns S_OK if the window handle was successfully returned, - or E_INVALIDARG if the phwnd parameter is invalid. - If you implement this interface, you can return S_FALSE - for this method to indicate that no window is available for - to display user interface information.} -begin - if Assigned(FSender.FGetWindow) then - Result := FSender.FGetWindow(Self, GUIDReason, LongWord(hwnd)) - else - Result := S_OK; -end; - -{IHttpSecurity} - -function TBSCB.OnSecurityProblem(dwProblem: DWORD): HResult; -{RPC_E_RETRY The calling application should continue or retry the download. -S_FALSE The calling application should open a dialog box to warn the user. -E_ABORT The calling application should abort the download.} -begin - if Assigned(FSender.FOnSecurityProblem) then - Result := FSender.FOnSecurityProblem(Self, dwProblem, - ResponseCodeToStr(dwProblem)) - else - Result := S_FALSE; -end; - -function TBSCB.GetSerializedClientCertContext(out ppbCert: Byte; var pcbCert: - DWORD): HResult; stdcall; -begin - if Assigned(FSender.FOnGetClientCert) then - Result := FSender.FOnGetClientCert(Self, ppbCert, pcbCert) - else - Result := S_FALSE; -end; -{$IFDEF DELPHI6_UP} - -function TBSCB.AuthenticateEx(out phwnd: HWND; out pszUsername, - pszPassword: LPWSTR; var pauthinfo: AUTHENTICATEINFO): HResult; stdcall; -var - aUser, aPwd: WideString; - tmpHWND: HWND; -begin - Result := S_OK; - phwnd := FSender.FHWnd; - aUser := EmptyStr; - aPwd := EmptyStr; - if Assigned(FSender.FOnAuthenticateEx) then - FSender.FOnAuthenticateEx(Self, tmpHWND, aUser, aPwd, - pauthinfo, Result); - if aUser <> EmptyStr then - pszUserName := WidestringToLPOLESTR(aUser) - else - pszUserName := nil; - if aPwd <> EmptyStr then - pszPassWord := WidestringToLPOLESTR(aPwd) - else - pszPassWord := nil; -end; - -function TBSCB.PutProperty(mkp: MONIKERPROPERTY; val: LPCWSTR): HResult; -{This interface is implemented by persistent monikers, - such as a MIME handler, to get properties about the moniker - being handled.} -begin - if Assigned(FSender.FOnPutProperty) then - Result := FSender.FOnPutProperty(Self, mkp, val) - else - Result := E_NOTIMPL; -end; -{$ENDIF} - -function TBSCB.GetBindResult(out clsidProtocol: TCLSID; out dwResult: DWORD; - out szResult: POLEStr): HRESULT; -{Gets the protocol-specific outcome of a bind operation.} -var - dwReserved: DWORD; -begin - dwReserved := 0; - if (Binding <> nil) then - Result := Binding.GetBindResult(clsidProtocol, dwResult, szResult, - dwReserved) - else - Result := E_FAIL; - if Assigned(FSender.FOnGetBindResults) then - FSender.FOnGetBindResults(Self, clsidProtocol, dwResult, - szResult, ResponseCodeToStr(dwResult)); - if (Result <> S_OK) and (Assigned(FSender.FOnError)) then - FSender.FOnError(Result, ResponseCodeToStr(Result)); -end; - -function TBSCB.CheckCancelState: Integer; -begin - if (FSender.FCancel = True) then - Result := E_ABORT - else - Result := S_OK; -end; - -procedure TBSCB.TimerExpired(Sender: TObject); -begin - FTimedOut := True; -end; - -procedure TBSCB.ClearAll; -begin {Reset our resources} - if Assigned(Binding) then - Binding.Abort; - FGlobalData := 0; - FTotalRead := 0; - if m_pPrevBSCB <> nil then - m_pPrevBSCB := nil; -end; - -function TBSCB.QueryInfo(dwOption: DWORD; var Info: Cardinal): Boolean; -var - HttpInfo: IWinInetHttpInfo; - C: Cardinal; - BufferLength: Cardinal; - Reserved, dwFlags: Cardinal; -begin - if (Assigned(Binding) and (Binding.QueryInterface(IWinInetHttpInfo, HttpInfo) - = S_OK)) then - begin - Info := 0; - Reserved := 0; - dwFlags := 0; - BufferLength := SizeOf(Cardinal); - Result := not Boolean(HttpInfo.QueryInfo(dwOption or HTTP_QUERY_FLAG_NUMBER, - @C, BufferLength, dwFlags, Reserved)); - HttpInfo := nil; - if Result then - Info := C; - end - else - Result := False; -end; - -function TBSCB.QueryInfo(dwOption: DWORD; var Info: string): Boolean; -var - Buf: array[0..INTERNET_MAX_PATH_LENGTH] of AnsiChar; - HttpInfo: IWinInetHttpInfo; - BufLength, dwReserved, dwFlags: Cardinal; -begin - if (Assigned(Binding) and (Binding.QueryInterface(IWinInetHttpInfo, HttpInfo) - = S_OK)) then - begin - Info := ''; - dwReserved := 0; - dwFlags := 0; - BufLength := INTERNET_MAX_PATH_LENGTH + 1; - Result := not Boolean(HttpInfo.QueryInfo(dwOption, @Buf, BufLength, dwFlags, - dwReserved)); - HttpInfo := nil; - if Result then - Info := string(Buf); - end - else - Result := False; -end; - -function TBSCB.QueryInfo(dwOption: DWORD; var Info: TDateTime): Boolean; -var - HttpInfo: IWinInetHttpInfo; - SysTime: TSystemtime; - BufferLength: Cardinal; - Reserved, dwFlags: Cardinal; -begin - if (Assigned(Binding) and (Binding.QueryInterface(IWinInetHttpInfo, HttpInfo) - = S_OK)) then - begin - Info := 0; - Reserved := 0; - dwFlags := 0; - BufferLength := SizeOf(TSystemTime); - Result := not Boolean(HttpInfo.QueryInfo(dwOption or - HTTP_QUERY_FLAG_SYSTEMTIME, - @SysTime, BufferLength, dwFlags, Reserved)); - HttpInfo := nil; - if Result then - Info := SystemTimeToDateTime(SysTime); - end - else - Result := False; -end; - -function TBSCB.DoSaveFileAs: string; -begin - if FSender.FDownloadMethod = dmFile then - begin - with BscbInfo do - begin - if (infFileName = EmptyStr) then - infFileName := FSender.SetFileNameFromUrl(infUrl); - if (infFileName = EmptyStr) then - infFileName := FSender.FDefaultUrlFileName; - end; - with FSender do - begin - FDownloadedFile := BscbInfo.infDownloadFolder + BscbInfo.infFileName; - FFileExtension := ExtractFileExt(FSender.FDownloadedFile); - BscbInfo.infFileExt := FFileExtension; - FFileName := BscbInfo.infFileName; - FDownloadFolder := BscbInfo.infDownloadFolder; - end; - Result := CharReplace(FSender.FDownloadedFile, '?', '_'); - ; - end; -end; - -function TBSCB.QueryInfoFileName: HRESULT; -const - CD_FILE_PARAM = 'filename='; -var - i: Integer; - st, sTmp: string; - res: Boolean; -begin - Result := E_FAIL; - sTmp := ''; - res := QueryInfo(HTTP_QUERY_CONTENT_DISPOSITION, sTmp); - if not res then - Exit; - i := Pos(CD_FILE_PARAM, sTmp); - if (i > 0) then - begin - sTmp := Copy(sTmp, i + Length(CD_FILE_PARAM), Length(sTmp) - i); - if (sTmp[1] = '"') then - i := Pos('";', sTmp) - else - i := Pos(';', sTmp); - //TODO: what's happen, if the filename contains a quotion mark? - if (i > 0) then - sTmp := Copy(sTmp, 1, i); - if (sTmp[1] = '"') then - begin - st := (Copy(sTmp, 2, Length(sTmp) - 2)); - BscbInfo.infFileName := Copy(sTmp, 2, Length(sTmp) - 2); - end - else - BscbInfo.infFileName := sTmp; - if (Length(sTmp) > 0) then - Result := S_OK; - end; - FSender.FFileName := BscbInfo.infFileName; {Return Data} -end; - -function TBSCB.IsRunning: Boolean; -begin - if (Succeeded(FMoniker.IsRunning(FBindCtx, FMoniker, nil))) then - Result := True - else - Result := False; -end; - -function TBSCB.GetDisplayName: PWideChar; -begin {Expensive operation so I'll do it only once. - For extra info use MkParseDisplayName } - if IsRunning then - FMoniker.GetDisplayName(FBindCtx, nil, Result); -end; - -function TBSCB.MkParseDisplayName(var DisplayName: PWideChar): IMoniker; -var - i: cardinal; -begin - UrlMon.MkParseDisplayNameEx(FBindCtx, DisplayName, i, Result); -end; - -function TBSCB.CreateMoniker(szName: POLEStr; BC: IBindCtx; out mk: IMoniker; - dwReserved: DWORD): HResult; -begin - szName := StringToOleStr(BscbInfo.infUrl); - Result := CreateURLMonikerEx(nil, szName, FMoniker, URL_MK_UNIFORM - {URL_MK_LEGACY}); -end; - -function TBSCB.MonikerBindToStorage(Mk: IMoniker; BC: IBindCtx; BSC: - IBindStatusCallback; - const iid: TGUID; out pvObj{$IFNDEF DELPHI8_UP}: Pointer{$ENDIF}): HResult; -begin - Mk := FMoniker; - BC := FBindCtx; - BSC := Self; - Result := Mk.BindToStorage(BC, nil, IStream, fOutStream); -end; - -function TBSCB.MonikerBindToObject(Mk: IMoniker; BC: IBindCtx; BSC: - IBindStatusCallback; - const iid: TGUID; out pvObj{$IFNDEF DELPHI8_UP}: Pointer{$ENDIF}): HResult; -begin - Mk := FMoniker; - BC := FBindCtx; - BSC := Self; - Result := Mk.BindToObject(BC, nil, IStream, fOutStream); -end; - -function TBSCB.AbortBinding: HRESULT; -begin - Result := E_Fail; - if Assigned(Binding) then - Result := Binding.Abort; -end; - -destructor TBSCB.Destroy; -begin {Cleaning out and free our resources} - ClearAll; - if Assigned(Stream) then - FreeAndNil(Stream); - if Assigned(FBSCBTimer) then - FreeAndNil(FBSCBTimer); - if Assigned(fsOutputFile) then - FreeAndNil(fsOutputFile); - if (FGlobalData <> 0) then - GlobalFree(FGlobalData); - inherited; -end; - -constructor TBSCB.Create(aSender: TCustomIEDownload; const pmk: IMoniker; - const pbc: IBindCtx; CreateSuspended: boolean); -var - tmp: PWideChar; -begin - inherited Create(CreateSuspended); - FreeOnTerminate := False; - if CreateSuspended then - ThreadStatus := tsSuspended - else - ThreadStatus := tsWaiting; - Stream := TMemoryStream.Create; {A stream to contain the download} - FSender := aSender; - FMoniker := pmk; - FBindCtx := pbc; - if FSender.FDownloadTo = dtMoniker then - begin - FSender.FBindF := FSender.FBindF + [GetNewestVersion]; - FSender.DoUpdate; - FMoniker.GetDisplayName(FBindCtx, nil, tmp); - FSender.FUrl := tmp; - FSender.ItemsManager.SessionList.Add(tmp); - end; -end; - -procedure TBSCB.SetComponents; -begin {Initial all internals before the process} - QueryPerformanceFrequency(Frequency); - QueryPerformanceCounter(TimeStarted); - ClearAll; {Clearing Internals} - FBSCBTimer := TTimer.Create(nil); {Creating Timer for a TimeOut option} - FBSCBTimer.OnTimer := TimerExpired; - FBSCBTimer.Interval := BscbInfo.infTimeOut; - FTimedOut := False; - if not FSender.IsSynchronous(BscbInfo) then {We are on Asynchronous mode} - begin - FSender.ItemsManager.Add(Self); {Adding asynchronous items} - Inc(BscbInfo.infIndex); {Pass the index} - Inc(FSender.FdlCounter); - end; -end; - -procedure TBSCB.Resume; -begin - inherited; - ThreadStatus := tsRunning; -end; - -procedure TBSCB.Suspend; -begin - inherited; - ThreadStatus := tsSuspended; -end; - -procedure TBSCB.Terminate; -var - bCanc: Boolean; -begin - if FSender.ActiveConnections = 0 then - FSender.FBusy := False; - ThreadStatus := tsTerminated; - bCanc := False; - if Assigned(FSender.FOnTerminate) then - FSender.FOnTerminate(Self, ThreadID, BscbInfo.infFileName, bCanc); - if bCanc then - FSender.CancelAll; - inherited; -end; - -procedure TBSCB.Execute; -begin - if Terminated then - Exit; - try - {Dont be in shock, as a tread it sometimes fail so we should succeed now} - OleInitialize(nil); - except - end; - ThreadStatus := tsRunning; - Synchronize(ReceiveData); - Synchronize(SetComponents); - case FSender.FDownloadTo of - dtNormal: - begin - Synchronize(DoConnect); - Synchronize(ReturnData); - end; - dtMoniker: - begin - Synchronize(DoConnect); - Synchronize(ReturnData); - end; - dtDownloadToCache: Synchronize(DoDownloadToCache); - dtDownloadToFile: Synchronize(DoDownloadToFile); - end; - try - if (Assigned(BscbInfo)) then - finally - BscbInfo.Clear; - FreeAndNil(BscbInfo); - end; - OleUninitialize; -end; - -procedure TBSCB.ReceiveData; -begin - BscbInfo := TInfoData.Create; - GetData(FSender); {Pass Data to the TObject} - FSender := TCustomIEDownload(BscbInfo.Sender); -end; - -procedure TBSCB.ReturnData; -begin - with FSender do - begin - FDownloadedFile := BscbInfo.infDownloadFolder + BscbInfo.infFileName; - FFileExtension := ExtractFileExt(FSender.FDownloadedFile); - BscbInfo.infFileExt := FFileExtension; - FFileName := BscbInfo.infFileName; - FDownloadFolder := BscbInfo.infDownloadFolder; - end; -end; - -procedure TBSCB.DoDownloadToCache; -var - Buf: array[0..INTERNET_MAX_PATH_LENGTH] of char; -begin - if Succeeded(UrlMon.URLDownloadToCacheFile(nil, Pchar(BscbInfo.infUrl), - Buf, SizeOf(Buf), 0, Self)) then - FSender.ExtractDataFromFile(Buf); - FSender.ItemsManager.Extract(Self); -end; - -procedure TBSCB.DoDownloadToFile; -var - HR: integer; - tmp: string; -begin - tmp := BscbInfo.infDownloadFolder + BscbInfo.infFileName; - HR := UrlMon.URLDownloadToFile(nil, Pchar(BscbInfo.infUrl), - PChar(tmp), 0, Self); - if Failed(HR) and Assigned(FSender.FOnError) then - FSender.FOnError(GetLastError, Err_ToFile + SysErrorMessage(GetLastError)) - else if (Assigned(FSender.FOnConnect)) then - FSender.FOnConnect(Self, HR, DL_ToFile + ResponseCodeToStr(HR)); - FSender.ExtractDataFromFile(tmp); - FSender.ItemsManager.Extract(Self); -end; - -procedure TBSCB.DoConnect; -var - Ut: TUrl; - HR: HRESULT; - pPrevBSCB, tmpBSC: IBindStatusCallback; -begin - FSender.bDone := False; - FSender.hStop := 0; - if FSender.FDownloadTo <> dtMoniker then - begin - HR := CreateURLMonikerEx(nil, BscbInfo.infUrl, FMoniker, URL_MK_UNIFORM - {URL_MK_LEGACY}); - if Failed(HR) and Assigned(FSender.FOnError) then - begin - FSender.FOnError(GetLastError, Err_URLMEx + - ResponseCodeToStr(HR)); - Exit; - end - else if (Assigned(FSender.FOnConnect)) then - FSender.FOnConnect(Self, HR, CreateURLMEx + ResponseCodeToStr(HR)); - - HR := CreateAsyncBindCtx(0, Self, nil, FBindCtx); - if Failed(HR) and Assigned(FSender.FOnError) then - begin - FSender.FOnError(GetLastError, Err_AsyncBindCtx + - ResponseCodeToStr(HR)); - Exit; - end - else if (Assigned(FSender.FOnConnect)) then - FSender.FOnConnect(Self, HR, CreateABindCtx + ResponseCodeToStr(HR)); - end; - - FSender.FDisplayName := GetDisplayName; - begin - if FSender.FDisplayName <> EmptyStr then - begin - BscbInfo.infUrl := FSender.FDisplayName; - FSender.FUrl := FSender.FDisplayName; - end; - Ut := TUrl.Create(BscbInfo.infUrl); - try - Ut.QueryUrl(BscbInfo.infUrl); - BscbInfo.infFileName := Ut.Document; - BscbInfo.infHost := Ut.HostName; - finally - Ut.Free; - end; - end; - - HR := RegisterBindStatusCallback(FBindCtx, Self, pPrevBSCB, 0); - if Failed(HR) and Assigned(pPrevBSCB) then - begin - HR := FBindCtx.RevokeObjectParam('_BSCB_Holder_'); - if (Succeeded(HR)) then - begin {Attempt register again, should succeed now} - HR := RegisterBindStatusCallback(FBindCtx, Self, tmpBSC, 0); - if (SUCCEEDED(HR)) then - begin //Need to pass a pointer for BindCtx and previous BSCB to our implementation - m_pPrevBSCB := pPrevBSCB; - Self._AddRef; - m_pPrevBSCB._AddRef; - FBindCtx._AddRef; - if (Assigned(FSender.FOnConnect)) then - FSender.FOnConnect(Self, HR, Reg_BSCB + ResponseCodeToStr(HR)); - end - else if Assigned(FSender.FOnError) then - FSender.FOnError(GetLastError, Err_RegBSCB - + ResponseCodeToStr(HR)); - end; - end - else if (Assigned(FSender.FOnConnect)) then - FSender.FOnConnect(Self, HR, Reg_BSCB + - ResponseCodeToStr(HR)); - FSender.hStop := CreateEvent(nil, True, False, nil); - HR := FMoniker.BindToStorage(FBindCtx, nil, IStream, fOutStream); - if Failed(HR) and Assigned(FSender.FOnError) then - begin - FSender.FOnError(GetLastError, Err_BindToSt + - ResponseCodeToStr(HR)); - Exit; - end - else if (Assigned(FSender.FOnConnect)) then - FSender.FOnConnect(Self, HR, Bind_To_St + ResponseCodeToStr(HR)); - repeat - try - if FSender.WaitForProcess(FSender.hStop, FSender.FStartTick, - FSender.FTimeOut) then - except - if Assigned(FSender.FOnError) then - FSender.FOnError(E_FAIL, Err_Proc_Ev); - raise; - end; - until (FSender.FCancel) or (FSender.bDone) - {and (stream = nil)}{or (BscbInfo.infIndex = 0)}; - HR := RevokeBindStatusCallback(FBindCtx, pPrevBSCB); - if Failed(HR) then - HR := RevokeBindStatusCallback(FBindCtx, tmpBSC); - if Failed(HR) and Assigned(FSender.FOnError) then - FSender.FOnError(HR, Err_Revoke + ResponseCodeToStr(HR)) - else if (Assigned(FSender.FOnConnect)) then - FSender.FOnConnect(Self, HR, Revoke_BSCB + ResponseCodeToStr(S_OK)); - - if FSender.FActiveConnections = 0 then - FSender.FBusy := False; - if not FSender.IsSynchronous(BscbInfo) then {We are on asynchronous mode} - begin - FSender.ItemsManager.Extract(Self); - {Remove the item from our list because we finished} - Dec(BscbInfo.infIndex); {Pass the new index} - end; -end; - -procedure TBSCB.GetData(aSender: TCustomIEDownload); -begin {Get data from IEDownload to the iedInfo} - with BscbInfo do - begin - infAdditionalHeader.AddStrings(aSender.FAdditionalHeader); - infBindF_Value := aSender.FBindF_Value; - infBindF2_Value := aSender.FBindF2_Value; - infBindInfoF_Value := aSender.FBindInfoF_Value; - infBindVerb_Value := aSender.FBindVerb_Value; - infBindInfoOptions_Value := aSender.FBindVerb_Value; - infCodePage_Value := aSender.FCodePageValue; - infCustomVerb := aSender.FCustomVerb; - infDescriptor := aSender.Security.FDescriptor; - infDownloadFolder := aSender.FDownloadFolder; - infExtraInfo := aSender.FExtraInfo; - infFileName := aSender.FFileName; - inFFileSize := 0; - infInheritHandle := aSender.Security.FInheritHandle; - infPassword := aSender.FPassword; - infPostData := aSender.FPostData; - infPutFileName := aSender.FPutFileName; - infRangeBegin := aSender.Range.FRangeBegin; - infRangeEnd := aSender.Range.FRangeEnd; - infTimeOut := aSender.FTimeOut; - infUrl := StringToOleStr(aSender.FUrl); - infUserName := aSender.FUserName; - Sender := aSender; - end; -end; - -{Enf of Callback procedure------------------------------------------------------} - -{BSCBList----------------------------------------------------------------------} - -function TBSCBList.byURL(Url: string): TBSCB; //by Jury Gerasimov -var - i: integer; -begin - Result := nil; - for i := 0 to Count - 1 do - if Items[i].BscbInfo.infUrl = Url then - begin - Result := Items[i]; - Break; - end; -end; - -function TBSCBList.GetItem(Index: Integer): TBSCB; -begin - Result := TBSCB(inherited GetItem(Index)); -end; - -procedure TBSCBList.SetItem(Index: Integer; Value: TBSCB); -begin - inherited SetItem(Index, Value); -end; - -constructor TBSCBList.Create; -begin - inherited Create; - SessionList := TStringList.Create; -end; - -destructor TBSCBList.Destroy; -begin - FreeAndNil(SessionList); - inherited Destroy; -end; - -{End of BSCBList---------------------------------------------------------------} - -{IEDownload--------------------------------------------------------------------} - -constructor TCustomIEDownload.Create(AOwner: TComponent); -begin - inherited; -{$IFDEF DELPHI7_UP} - // TO Do: W1000 Symbol 'GetLocaleFormatSettings' is deprecated: 'Use TFormatSettings.Create(Locale)' - GetLocaleFormatSettings(SysLocale.DefaultLCID, FFormatSettings); - FFormatSettings.LongTimeFormat := Frmt_Time; - // FFormatSettings:= TFormatSettings.Create(''); //use default locale - FFormatSettings.TimeSeparator := '_'; {For the feRename} -{$ELSE} - FOldTimeSep := TimeSeparator; - LongTimeFormat := Frmt_Time; - TimeSeparator := '_'; {For the feRename} -{$ENDIF} - FAbout := IED_INFO; - hProcess := 0; - bDone := False; - bCancelAll := False; - FAdditionalHeader := TStringlist.Create; - FAdditionalHeader.Add('Content-Type: application/x-www-form-urlencoded '); - FBindF := [Asynchronous, AsyncStorage, PullData, NoWriteCache, - GetNewestVersion]; - FBindF2 := [ReadDataOver4GB]; - FBindVerb := Get; - FCodePageOption := Ansi; - FBindInfoOption_ := [UseBindInfoOptions, AllowConnectMessages]; - FDefaultProtocol := 'http://'; - FDefaultUrlFileName := 'index.html'; - FdlCounter := 0; - FActiveConnections := 0; - FDownloadMethod := dmFile; - FProxySettings := TProxySettings.Create; - FProxySettings.FPort := 80; - FRange := TRange.Create; - FRefCount := 0; - FSecurity := TSecurity.Create; - FState := sReady; - FBindInfoF := []; - ItemsManager := TBSCBList.Create; - SetUserAgent; -end; - -procedure TCustomIEDownload.Loaded; -begin - inherited Loaded; - if FTimeOut = 0 then - FTimeOut := MaxInt; - if (FProxySettings.FAutoLoadProxy) and (FProxySettings.FServer <> EmptyStr) - then - FProxySettings.SetProxy(FFullUserAgent, FProxySettings.FServer + ':' + - IntToStr(FProxySettings.FPort)); -end; - -procedure TCustomIEDownload.Resume; -begin - if BS <> nil then - BS.Resume; -end; - -procedure TCustomIEDownload.Suspend; -begin - if BS <> nil then - BS.Suspend; -end; - -destructor TCustomIEDownload.Destroy; -begin -{$IFNDEF DELPHI7_UP} - TimeSeparator := FOldTimeSep; -{$ENDIF} - FTimeOut := 0; - FRange.Free; - FSecurity.Free; - FProxySettings.Free; - ItemsManager.Free; - if Assigned(FAdditionalHeader) then - FreeAndNil(FAdditionalHeader); - inherited; -end; - -procedure TCustomIEDownload.BeforeDestruction; -begin - if FProxySettings.FAutoLoadProxy then - FProxySettings.SetProxy(EmptyStr, EmptyStr); {To restore proxy settings} - inherited BeforeDestruction; -end; - -procedure TCustomIEDownload.Cancel; -begin - if (not FBusy) or (FState <> sBusy) then - Exit; - FCancel := True; - Application.ProcessMessages; -end; - -procedure TCustomIEDownload.Reset; -begin - if (FState = sBusy) then - Exit; - FCancel := False; - bCancelAll := False; - Application.ProcessMessages; -end; - -procedure TCustomIEDownload.CancelAll; -begin - if (not FBusy) or (FState <> sBusy) then - Exit; - bCancelAll := True; - FCancel := True; - Application.ProcessMessages; -end; - -procedure TCustomIEDownload.Cancel(const Item: TBSCB); -begin - Item.CheckCancelState; - FCancel := True; -end; - -procedure TCustomIEDownload.Update_BindInfoF_Value; -const - Acard_BindInfoF_Values: array[TBindInfoF] of Cardinal = ( - $00000001, $00000002); -var - i: TBindInfoF; -begin - FBindInfoF_Value := 0; - if (FBindInfoF <> []) then - for i := Low(TBindInfoF) to High(TBindInfoF) do - if (i in FBindInfoF) then - Inc(FBindInfoF_Value, Acard_BindInfoF_Values[i]); -end; - -procedure TCustomIEDownload.Update_BindF_Value; -const - Acard_BindF_Values: array[TBindF] of Cardinal = ( - $00000001, $00000002, $00000004, $00000008, $00000010, $00000020, - $00000040, $00000080, $00000100, $00000200, $00000400, $00000800, - $00001000, $00002000, $00004000, $00008000, $00010000, $00020000, - $00040000, $00080000, $00100000, $00200000, $00400000, $00800000); -var - i: TBindF; -begin - FBindF_Value := 0; - if (FBindF <> []) then - for i := Low(TBindF) to High(TBindF) do - if (i in FBindF) then - Inc(FBindF_Value, Acard_BindF_Values[i]); -end; - -procedure TCustomIEDownload.Update_BindInfoOptions_Value; -const - AcardBindInfoOption_Values: array[TBindInfoOption] of Cardinal = ( - $00010000, $00020000, $00040000, $00080000, $00100000, $00200000, - $00400000, $00800000, $01000000, $02000000, $08000000, $10000000, - $40000000, $80000000, $20000000); -var - i: TBindInfoOption; -begin - FBindInfoOption_Value := 0; - if (FBindInfoOption_ <> []) then - for i := Low(TBindInfoOption) to High(TBindInfoOption) do - if (i in FBindInfoOption_) then - Inc(FBindInfoOption_Value, AcardBindInfoOption_Values[i]); -end; - -procedure TCustomIEDownload.Update_BindF2_Value; -const - AcardBindF2_Values: array[TBindF2] of Cardinal = ($00000001, - $00000002, $00000004, $00000008, $40000000, $80000000); -var - i: TBindF2; -begin - FBindF2_Value := 0; - if (FBindF2 <> []) then - for i := Low(TBindF2) to High(TBindF2) do - if (i in FBindF2) then - Inc(FBindF2_Value, AcardBindF2_Values[i]); -end; - -function TCustomIEDownload.OpenFolder(const aFolderName: string): Boolean; -var - Int: integer; -begin - Result := False; - if (FDownloadMethod = dmFile) then - begin - Int := ShellExecute(Forms.Application.Handle, PChar('explore'), - PChar(aFolderName), nil, nil, SW_SHOWNORMAL); - Result := (Int > 32); - if not Result and Assigned(FOnError) then - FOnError(Int, Err_Folder); - end; -end; - -procedure TCustomIEDownload.DoUpdate; -begin - Update_BindF_Value; - Update_BindF2_Value; - Update_BindInfoF_Value; - Update_BindInfoOptions_Value; -end; - -function TCustomIEDownload.CodeInstallProblemToStr(const ulStatusCode: Integer): - string; -begin - Result := IEDownloadTools.CodeInstallProblemToStr(ulStatusCode); -end; - -function TCustomIEDownload.CheckFileExists(const aFileName: string): boolean; -begin - Result := FileExists(aFileName); -end; - -procedure TCustomIEDownload.Go(const aUrl: string); -begin - GoAction(aUrl, EmptyStr, EmptyStr, nil, nil); - if FOpenDownloadFolder then - OpenFolder(FDownloadFolder); -end; - -procedure TCustomIEDownload.Go(const aUrl: string; const aFileName: string); -begin - GoAction(aUrl, aFileName, EmptyStr, nil, nil); - if FOpenDownloadFolder then - OpenFolder(FDownloadFolder); -end; - -procedure TCustomIEDownload.Go(const aUrl: string; const aFileName: string; - const aDownloadFolder: string); -begin - GoAction(aUrl, aFileName, aDownloadFolder, nil, nil); - if FOpenDownloadFolder then - OpenFolder(FDownloadFolder); -end; - -procedure TCustomIEDownload.GoList(const UrlsList: TStrings); -var - Idx: integer; -begin - for Idx := 0 to UrlsList.Count - 1 do - if (UrlsList[Idx] <> EmptyStr) and (not bCancelAll) then - GoAction(UrlsList[Idx], EmptyStr, EmptyStr, nil, nil); - if FOpenDownloadFolder then - OpenFolder(FDownloadFolder); -end; - -procedure TCustomIEDownload.GoList(const UrlsList: TStrings; const FileNameList: - TStrings); -var - Idx: integer; -begin - for Idx := 0 to UrlsList.Count - 1 do - if (UrlsList[Idx] <> EmptyStr) and (not bCancelAll) then - GoAction(UrlsList[Idx], FileNameList[Idx], EmptyStr, nil, nil); - if FOpenDownloadFolder then - OpenFolder(FDownloadFolder); -end; - -procedure TCustomIEDownload.GoList(const UrlsList: TStrings; const FileNameList: - TStrings; - const DownloadFolderList: TStrings); -var - Idx: integer; -begin - for Idx := 0 to UrlsList.Count - 1 do - if (UrlsList[Idx] <> EmptyStr) and (not bCancelAll) then - GoAction(UrlsList[Idx], FileNameList[Idx], DownloadFolderList[Idx], nil, - nil); - if FOpenDownloadFolder then - OpenFolder(FDownloadFolder); -end; - -procedure TCustomIEDownload.Download(const pmk: IMoniker; const pbc: IBindCtx); -begin - FDownloadTo := dtMoniker; - PrepareForStart; - hProcess := CreateEvent(nil, True, False, nil); - if (not GoInit('', FFileName, FDownloadFolder)) then - begin - PrepareForExit; - Exit; - end; - BS := TBSCB.Create(Self, pmk, pbc, True); - try - BS.Execute; - repeat - try - if WaitForProcess(hProcess, FStartTick, FTimeOut) then - except - if Assigned(FOnError) then - FOnError(E_FAIL, Err_Proc_Ev); - raise; - end; - until (FCancel) or (FActiveConnections = 0); - finally - FreeAndNil(BS); - end; - PrepareForExit; -end; - -function TCustomIEDownload.GoAction(const actUrl, actFileName, - actDownloadFolder: string; - pmk: IMoniker; pbc: IBindCtx): boolean; -begin - Result := False; - PrepareForStart; - hProcess := CreateEvent(nil, True, False, nil); - if (not GoInit(actUrl, actFileName, actDownloadFolder)) then - begin - PrepareForExit; - Exit; - end; - BS := TBSCB.Create(Self, pmk, pbc, True); {Creating Download Callback} - try //Fix Deadlock? - BS.Execute; - repeat - try - if WaitForProcess(hProcess, FStartTick, FTimeOut) then - except - if Assigned(FOnError) then - FOnError(E_FAIL, Err_Proc_Ev); - raise; - end; - until (FCancel) or (FActiveConnections = 0); - finally - FreeAndNil(BS); - end; - PrepareForExit; - Result := True; -end; - -function TCustomIEDownload.URLDownloadToCacheFile(const aUrl: string): string; -begin - Result := EmptyStr; - PrepareForStart; - if not GoInit(aUrl, '', '') then - Exit; - FDownloadTo := dtDownloadToCache; - BS := TBSCB.Create(Self, nil, nil, True); - try - BS.Execute; - BS.Terminate; - Dec(FActiveConnections); - finally - FreeAndNil(BS); - end; - SetBeforeExit; - PrepareForExit; - Result := FDownloadFolder; -end; - -function TCustomIEDownload.UrlDownloadToFile(const aUrl: string): HRESULT; -begin - Result := E_FAIL; - PrepareForStart; - if not GoInit(aUrl, '', '') then - Exit; - FDownloadTo := dtDownloadToFile; - BS := TBSCB.Create(Self, nil, nil, True); - try - BS.Execute; - BS.Terminate; - Dec(FActiveConnections); - finally - FreeAndNil(BS); - end; - SetBeforeExit; - PrepareForExit; - Result := S_OK; -end; - -procedure TCustomIEDownload.SetBeforeExit; -begin - if FOpenDownloadFolder then - OpenFolder(FDownloadFolder); - if FActiveConnections = 0 then - FBusy := False; - FState := sStopped; - if Assigned(FOnStateChange) then - FOnStateChange(FState); -end; - -function TCustomIEDownload.GoInit(const inUrl: string; const inFileName: - string; const inDownloadFolder: string): boolean; -var - tmpNewName: WideString; - Act: TFileExistsOption; -begin - act := FFileExistsOption; - tmpNewName := ''; - Result := False; - if FDownloadTo <> dtMoniker then - begin - if inUrl = EmptyStr then - begin - PrepareForExit; - Exit; - end; - FUrl := SetHttpProtocol(inUrl); {We pass the Address we got to the component} - if (FValidateUrl) and not (IsUrlValid(FUrl)) then - begin - PrepareForExit; - Exit; - end; - ItemsManager.SessionList.Add(FUrl); - if FDownloadMethod = dmFile then - begin - FDownloadFolder := SetDownloadFolder(inDownloadFolder); - if FDownloadFolder = EmptyStr then - Exit; - FFileName := inFileName; - if (FFileName = EmptyStr) then - FFileName := SetFileNameFromUrl(FUrl); {First try} - if (CheckFileExists(FDownloadFolder + FFileName)) then - begin - if Assigned(FOnFileExists) then - FOnFileExists(Act, FDownloadFolder + FFileName, tmpNewName); - case Act of - feSkip: - begin - PrepareForExit; - Exit; - end; - feRename: - begin -{$IFDEF DELPHI7_UP} - if tmpNewName = EmptyStr then - tmpNewName := TimeToStr(now, FFormatSettings) + '_' + FFileName; -{$ELSE} - if tmpNewName = EmptyStr then - tmpNewName := TimeToStr(now) + '_' + FFileName; -{$ENDIF} - FFileName := tmpNewName; - bRenamed := True; - end; - feOverwrite: FBindF := FBindF + [GetNewestVersion]; - end; - end; - end - else - FBindF := FBindF + [GetNewestVersion]; - end; - DoUpdate; - Result := True; -end; - -function TCustomIEDownload.WaitForProcess(var EventName: THandle; - var aStartTick, aTimeOut: Integer): Boolean; -var - dwResult: DWORD; - Msg: TMsg; - EventList: array[0..0] of THandle; -begin - EventList[0] := EventName; - dwResult := MsgWaitForMultipleObjects(1, EventList, False, DWORD(ATimeOut), - QS_ALLEVENTS); - - case dwResult of - WAIT_FAILED: {Waiting failed} - begin - if Assigned(FOnError) then - FOnError(GetLastError, SysErrorMessage(GetLastError)); - end; - WAIT_TIMEOUT: {Waiting Timo out} - begin - if Assigned(FOnError) then - FOnError(GetLastError, SysErrorMessage(GetLastError)); - end; - WAIT_BSCB: {Our state to process messages} - begin - while PeekMessage(Msg, 0, 0, 0, PM_REMOVE) do - begin - TranslateMessage(Msg); - DispatchMessage(Msg); - if (Integer(GetTickCount) - aStartTick > aTimeOut) then - begin - if Assigned(FOnError) then - FOnError(GetLastError, Err_TimeOut); - end; - end; - if (Integer(GetTickCount) - aStartTick > aTimeOut) then - begin - if Assigned(FOnError) then - FOnError(GetLastError, Err_TimeOut); - end; - end; - end; - Result := (dwResult = WAIT_OBJECT_0); {We are done waiting} -end; - -function TCustomIEDownload.IsSynchronous(iedInfo: TInfoData): boolean; -begin {Return True if mode is Synchronous} - if iedInfo.infBindF_Value <> (iedInfo.infBindF_Value or - BINDF_ASYNCHRONOUS) then - Result := True - else - Result := False; -end; - -function TCustomIEDownload.IsAsyncMoniker(const pmk: IMoniker): HRESULT; -begin - Result := UrlMon.IsAsyncMoniker(pmk); -end; - -function TCustomIEDownload.FormatSize(const Byte: Double): string; -begin - Result := IEDownloadTools.FormatSize(Byte); -end; - -function TCustomIEDownload.FormatTickToTime(const TickCount: Cardinal): string; -begin - Result := IEDownloadTools.FormatTickToTime(TickCount); -end; - -function TCustomIEDownload.IsUrlValid(const isUrl: string): Boolean; -var - U: TUrl; -begin - U := TUrl.Create(isUrl); - try - Result := U.IsUrlValid(isUrl); - if not Result and Assigned(FOnError) then - FOnError(GetLastError, SysErrorMessage(GetLastError) + isUrl); - finally - U.Free; - end; -end; - -procedure TCustomIEDownload.PrepareForExit; -begin - if Assigned(FOnComplete) then - FOnComplete(Self, FDownloadedFile, FFileName, FDownloadFolder, - FFileExtension, ActiveConnections); - FState := sReady; - if Assigned(FOnStateChange) then - FOnStateChange(FState); -end; - -procedure TCustomIEDownload.PrepareForStart; -begin - FBusy := True; - bRenamed := False; - FCancel := False; - FDownloadedFile := EmptyStr; - FDownloadFolder := EmptyStr; - FFileExtension := EmptyStr; - FFileName := EmptyStr; - FFileSize := 0; - FMimeType := EmptyStr; - FServerAddress := EmptyStr; - FServerIP := EmptyStr; - FUrl := EmptyStr; - FState := sBusy; - if Assigned(FOnStateChange) then - FOnStateChange(FState); - FStartTick := GetTickCount; - Inc(FRefCount); - Inc(FActiveConnections); -end; - -procedure TCustomIEDownload.SetCodePage(const Value: TCodePageOption); -begin - FCodePageOption := Value; - case FCodePageOption of - Ansi: FCodePageValue := CP_ACP; - Mac: FCodePageValue := CP_MACCP; - OEM: FCodePageValue := CP_OEMCP; - Symbol: FCodePageValue := CP_SYMBOL; - ThreadsAnsi: FCodePageValue := CP_THREAD_ACP; - UTF7: FCodePageValue := CP_UTF7; - UTF8: FCodePageValue := CP_UTF8; - end; -end; - -procedure TCustomIEDownload.SetBindVerb(const Value: TBindVerb); -begin {Contains values that specify an action, such as an HTTP request, to be performed during the binding operation.} - FBindVerb := Value; - case FBindVerb of - Get: FBindVerb_Value := BINDVERB_GET; - Put: FBindVerb_Value := BINDVERB_PUT; - Post: FBindVerb_Value := BINDVERB_POST; - Custom: FBindVerb_Value := BINDVERB_CUSTOM; - end; -end; - -procedure TCustomIEDownload.SetFileName(const Value: string); -begin - FFileName := Value; -end; - -function TCustomIEDownload.SetFileNameFromUrl(const aUrl: string): string; -var - Ut: TUrl; - sTmp1, sTmp2: string; -begin - if FDownloadMethod = dmFile then - begin - Ut := TUrl.Create(aUrl); - try - Ut.CrackUrl(aUrl, ICU_ESCAPE); - if AnsiPos('.', Ut.ExtraInfo) <> 0 then - sTmp1 := Ut.ExtraInfo; - Ut.QueryUrl(aUrl); - sTmp2 := Ut.Document; - finally - Ut.Free; - end; - if sTmp1 <> EmptyStr then - begin - Result := sTmp1; - Exit; - end - else - Result := sTmp2; - end; -end; - -procedure TCustomIEDownload.ExtractDataFromFile(const aFileName: string); -begin - FDownloadedFile := aFileName; - FFileName := ExtractFileName(aFileName); - FDownloadFolder := ExtractFilePath(aFileName); - FFileExtension := ExtractFileExt(aFileName); -end; - -procedure TCustomIEDownload.SetAdditionalHeader(const Value: TStrings); -begin {Sets additional headers to append to the HTTP request.} - FAdditionalHeader.Assign(Value); -end; - -procedure TCustomIEDownload.SetAbout(Value: string); -begin - Exit; -end; - -procedure TCustomIEDownload.SetDefaultProtocol(const Value: string); -begin - FDefaultProtocol := (Value); - if FDefaultProtocol = EmptyStr then - FDefaultProtocol := 'http://'; -end; - -procedure TCustomIEDownload.SetUserAgent; -begin - FFullUserAgent := USER_AGENT_IE6 + '(' + FUserAgent + ')' + #13#10; -end; - -procedure TCustomIEDownload.SetBindInfoF(const Value: TBindInfoF_Options); -begin - FBindInfoF := Value; - Update_BindInfoF_Value; -end; - -procedure TCustomIEDownload.SetBindF2(const Value: TBindF2_Options); -begin - FBindF2 := Value; - Update_BindF2_Value; -end; - -procedure TCustomIEDownload.SetBindInfoOption(const Value: - TBindInfoOptions_Options); -begin - FBindInfoOption_ := Value; - Update_BindInfoOptions_Value; -end; - -procedure TCustomIEDownload.SetBindF(const Value: TBindF_Options); -begin - if FFileExistsOption = feOverWrite then - FBindF := FBindF + [GetNewestVersion]; - FBindF := Value; - Update_BindF_Value; -end; - -procedure TCustomIEDownload.SetDownloadMethod(const Value: TDownloadMethod); -begin - FDownloadMethod := Value; -end; - -function TCustomIEDownload.SetHttpProtocol(const aUrl: string): string; -type {Insert http to an address like bsalsa.com } - TProtocols = array[1..23] of string; -const - Protocols: TProtocols = ( - 'about', 'cdl', 'dvd', 'file', 'ftp', 'gopher', 'http', 'ipp', 'its', - 'javascript', 'local', 'mailto', 'mk', 'msdaipp', 'ms-help', 'ms-its', - 'mso', 'res', 'sysimage', 'tv', 'vbscript', 'via', 'https'); -var - i: Integer; -begin - for i := 1 to 23 do - begin - if (AnsiPos(AnsiUpperCase(Protocols[i]), AnsiUpperCase(aUrl)) <> 0) then - begin - Result := aUrl; - Exit; - end; - end; - Result := 'http://' + aUrl; -end; - -function TCustomIEDownload.SetDownloadFolder(const aDownloadFolder: string): - string; -begin - if (FDownloadMethod = dmFile) then - begin - Result := aDownloadFolder; - if (Result = EmptyStr) then - Result := ExtractFilePath(Application.ExeName) + DL_DIR; - if Result <> EmptyStr then - try - ForceDirectories(Result); - except - if Assigned(FOnError) then - FOnError(GetLastError, SysErrorMessage(GetLastError) + - Err_Creating_Dir); - end; - end; -end; - -function TCustomIEDownload.ResponseCodeToStr(const dwResponse: Integer): string; -begin - Result := IEDownloadTools.ResponseCodeToStr(dwResponse); -end; - -function TCustomIEDownload.WideStringToLPOLESTR(const Source: string): POleStr; -begin - Result := IEDownloadTools.WidestringToLPOLESTR(Source); -end; - -initialization - coInitialize(nil); -finalization - coUninitialize; -end. - diff --git a/windows/src/ext/embeddedwb/Source/IEDownloadAcc.pas b/windows/src/ext/embeddedwb/Source/IEDownloadAcc.pas deleted file mode 100644 index bbfca456a8..0000000000 --- a/windows/src/ext/embeddedwb/Source/IEDownloadAcc.pas +++ /dev/null @@ -1,182 +0,0 @@ -//************************************************************************* -// * -// IEDownload_Acc * -// For Delphi * -// * -// Freeware unit * -// by * -// and Eran Bodankin * -// bsalsa@gmail.com * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit IEDownloadAcc; - -interface - -{$I EWB.inc} - -uses - ActiveX, SysUtils, ShlObj, Windows, UrlMon, EwbIEConst; - -{$IFDEF DELPHI6_UP} -type - {Authentiae } - _AUTHENTICATEF = ( - AUTHENTICATEF_PROXY = $00000001, - AUTHENTICATEF_BASIC = $00000002, - AUTHENTICATEF_HTTP = $00000004); - AUTHENTICATEF = _AUTHENTICATEF; - - {PutProperty } - _MONIKERPROPERTY = ( - MIMETYPEPROP = 0, - USE_SRC_URL = $00000001, - CLASSIDPROP = $00000002, - TRUSTEDDOWNLOADPROP = $00000003, - POPUPLEVELPROP = $00000004); - MONIKERPROPERTY = _MONIKERPROPERTY; - - {CIP_STATUS } - _CIP_STATUS = ( - CIP_DISK_FULL = 0, - CIP_ACCESS_DENIED = 1, - CIP_NEWER_VERSION_EXISTS = 2, - CIP_OLDER_VERSION_EXISTS = 3, - CIP_NAME_CONFLICT = 4, - CIP_TRUST_VERIFICATION_COMPONENT_MISSING = 5, - CIP_EXE_SELF_REGISTERATION_TIMEOUT = 6, - CIP_UNSAFE_TO_ABORT = 7, - CIP_NEED_REBOOT = 8, - CIP_NEED_REBOOT_UI_PERMISSION = 9); - CIP_STATUS = _CIP_STATUS; - - {BSCF Enumerated Type} - _BSCF = ( - BSCF_FIRSTDATANOTIFICATION = $00000001, - BSCF_INTERMEDIATEDATANOTIFICATION = $00000002, - BSCF_LASTDATANOTIFICATION = $00000004, - BSCF_DATAFULLYAVAILABLE = $00000008, - BSCF_AVAILABLEDATASIZEUNKNOWN = $00000010, - BSCF_SKIPDRAINDATAFORFILEURLS = $00000020); - BSCF = _BSCF; - - -type - pauthinfo = ^TAUTHENTICATEINFO; - _tagAUTHENTICATEINFO = record - dwFlags: LongInt; - dwReserved: LongInt; - end; - TAUTHENTICATEINFO = _tagAUTHENTICATEINFO; - AUTHENTICATEINFO = _tagAUTHENTICATEINFO; - -type - IAuthenticateEx = interface(IAuthenticate) - ['{2AD1EDAF-D83D-48B5-9ADF-03DBE19F53BD}'] - function AuthenticateEx(out phwnd: HWND; out pszUsername, - pszPassword: LPWSTR; var pauthinfo: AUTHENTICATEINFO): HResult; stdcall; - end; -{$ENDIF} - - -type - IBindStatusCallbackEx = interface(IBindStatusCallback) - ['{AAA74EF9-8EE7-4659-88D9-F8C504DA73CC}'] - function GetBindInfoEx(out grfBINDF: DWORD; var pbindinfo: BINDINFO; - out grfBINDF2: DWORD; out pdwReserved: DWORD): HResult; stdcall; - end; - -type - ICatalogFileInfo = interface(IUnknown) - ['{711C7600-6B48-11D1-B403-00AA00B92AF1}'] - function GetCatalogFile(out ppszCatalogFile: LPSTR): HResult; - function GetJavaTrust(out ppJavaTrust: Pointer): HResult; - end; - -type - IHttpNegotiate2 = interface(IHttpNegotiate) - ['{4F9F9FCB-E0F4-48EB-B7AB-FA2EA9365CB4}'] - function GetRootSecurityId(var SecurityIdBuffer: TByteArray; var - BufferSize: DWord; dwReserved: DWORD): HResult; stdcall; - end; - -type - IHttpNegotiate3 = interface(IHttpNegotiate2) - ['{57b6c80a-34c2-4602-bc26-66a02fc57153}'] - function GetSerializedClientCertContext(out ppbCert: Byte; - var pcbCert: DWORD): HResult; stdcall; - end; -{$IFDEF DELPHI6_UP} -type - IMonikerProp = interface(IUnknown) - ['{A5CA5F7F-1847-4D87-9C5B-918509F7511D}'] - function PutProperty(mkp: MONIKERPROPERTY; val: LPCWSTR): HResult; stdcall; - end; -{$ENDIF} - - - -type - IBindHost = interface(IUnknown) - ['{fc4801a1-2ba9-11cf-a229-00aa003d7352}'] - function CreateMoniker(szName: POLEStr; BC: IBindCtx; out mk: IMoniker; - dwReserved: DWORD): HResult; stdcall; - function MonikerBindToStorage(Mk: IMoniker; BC: IBindCtx; BSC: - IBindStatusCallback; const iid: TGUID; out pvObj{$IFNDEF DELPHI8_UP}: Pointer{$ENDIF}): HResult; stdcall; - function MonikerBindToObject(Mk: IMoniker; BC: IBindCtx; BSC: - IBindStatusCallback; const iid: TGUID; out pvObj{$IFNDEF DELPHI8_UP}: Pointer{$ENDIF}): HResult; stdcall; - end; - -type - INTERNET_PER_CONN_OPTION = record - dwOption: DWORD; - Value: record - case Integer of - 1: (dwValue: DWORD); - 2: (pszValue: PChar); {Unicode/ANSI} - 3: (ftValue: TFileTime); - end; - end; - - LPINTERNET_PER_CONN_OPTION = ^INTERNET_PER_CONN_OPTION; - INTERNET_PER_CONN_OPTION_List = record - dwSize: DWORD; - pszConnection: LPTSTR; - dwOptionCount: DWORD; - dwOptionError: DWORD; - intOptions: LPINTERNET_PER_CONN_OPTION; - end; - LPINTERNET_PER_CONN_OPTION_List = ^INTERNET_PER_CONN_OPTION_List; - - - -function CreateURLMonikerEx(MkCtx: IMoniker; szURL: LPCWSTR; - out mk: IMoniker; dwFlags: DWORD): HRESULT; stdcall; external UrlMonLib; - -implementation - -end. diff --git a/windows/src/ext/embeddedwb/Source/IEDownloadStrings.pas b/windows/src/ext/embeddedwb/Source/IEDownloadStrings.pas deleted file mode 100644 index 040e8a5086..0000000000 --- a/windows/src/ext/embeddedwb/Source/IEDownloadStrings.pas +++ /dev/null @@ -1,91 +0,0 @@ -//************************************************************* -// IEDownload strings * -// * -// For Delphi 5 to XE * -// Freeware unit * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@gmail.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//************************************************************* -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit IEDownloadStrings; - -interface - -resourcestring - - Bind_To_St = 'MonikerBindToStorage: '; - Create_BSCB = 'Creating IBindStatusCallback: '; - Create_Moniker = 'CreateMoniker: '; - CreateABindCtx = 'CreateAsyncBindCtx: '; - CreateURLMEx = 'CreateURLMonikerEx: '; - DL_DIR = 'Downloads\'; - done = 'Done.'; - DL_ToFile = 'UrlDownloadToFile'; - DL_ToCacheFile = 'UrlDownloadToCacheFile'; - Err_AsyncBindCtx = 'Error while CreateAsyncBindCtx: '; - Err_BindToSt = 'Error while MonikerBindToStorage '; - Err_CreateMoniker = 'Error while CreateMoniker '; - Err_Creating_Dir = ' while creating download folder'; - Err_Folder = 'Error while opening folder'; - Err_Proc_DL = 'ProcessEvents fails to wait until complete downloading'; - Err_Proc_Ev = 'ProcessEvents fails to wait until complete.'; - Err_RegBSCB = 'Error while RegisterBindStatusCallback: '; - Err_Revoke = 'Error while RevokeBindStatusCallback. '; - Err_ToFile = 'Error while UrlDownloadToFile'; - Err_ToCacheFile = 'Error while UrlDownloadToCacheFile'; - Err_TimeOut = 'Error: Timeout.'; - Err_URLMEx = 'Error while CreateURLMonikerEx: '; - Frmt_Time = 'mm:ss.zzz'; - kb_sec = 'kb/sec'; - Reg_BSCB = 'RegisterBindStatusCallback: '; - Registering_new_moniker = 'Registering new moniker: '; - Revoke_BSCB = 'RevokeBindStatusCallback: '; - Err_Doc_AsAdvise = 'Error while getting ConnectionPoint.Advise: '; - Doc_AsAdvise = 'Getting ConnectionPoint.Advise '; - Err_Doc_AsPointContainer = 'Error while getting IConnectionPointContainer: '; - Doc_AsPointContainer = 'Getting IConnectionPointContainer: '; - Err_Doc_AsAmbientPropertyChange = 'Error while getting AmbientPropertyChang: '; - Doc_AsAmbientPropertyChange = 'Getting Ambient Property Change: '; - Err_Doc_AsSetClientSite = 'Error while getting Set Client Site: '; - Doc_AsSetClientSite = 'Getting Set Client Site: '; - Err_CoCreateInstance = 'Error while CoCreateInstance: '; - Succ_CoCreateInstance = 'Getting CoCreateInstance: '; - Err_IpersistMoniker_Load = 'Error while loading as IpersistMoniker: '; - Succ_IpersistMoniker_Load = 'Loading as IpersistMoniker '; - Err_Load_Str = 'Error while loading from string: '; - Succ_Load_Str = 'Loading from string: '; - Err_Load_Mon = 'Error while loading from moniker: '; - Succ_Load_Mon = 'Loading from moniker: '; - P_Wait = 'Please wait... '; - General_Error = 'An error occured while '; - Doc_Error = 'Bad document or bad address.'; - -implementation - -end. diff --git a/windows/src/ext/embeddedwb/Source/IEDownloadTools.pas b/windows/src/ext/embeddedwb/Source/IEDownloadTools.pas deleted file mode 100644 index 39b1dd3ae4..0000000000 --- a/windows/src/ext/embeddedwb/Source/IEDownloadTools.pas +++ /dev/null @@ -1,578 +0,0 @@ -//************************************************************************* -// * -// IEDownload Tools * -// For Delphi * -// * -// Freeware Unit * -// by * -// Eran Bodankin -bsalsa(bsalsa@gmail.com) * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit IEDownloadTools; - -interface - -uses - Windows, EwbIeConst, SysUtils, ActiveX; - -function ResponseCodeToStr(dwResponse: Integer): string; -function FormatSize(Byte: Double): string; -function FormatTickToTime(TickCount: Cardinal): string; -function IsValidURL(const URL: Widestring): Boolean; -function WideStringToLPOLESTR(const Source: Widestring): POleStr; -function WideStringToWideChar(const inString: WideString): PWideChar; -function CodeInstallProblemToStr(ulStatusCode: Integer): string; -function DataAvalibleToStr(Code: Integer): string; -function SecToStr(const Seconds: LongInt): string; -procedure FreeWideChar(var inString: PWideChar); -function StrToCase(StringOf: string; CasesList: array of string): Integer; -function QueryRemoteFileInfo(const Url: string; dwInfoFlag: Integer): string; -function GetInfoByMimeType(const ContentType: string): boolean; -function StrContain(SubString: string; Str: string): boolean; -function IncludeTrailingPathDelimiter(const S: string): string; -function CharReplace(const Source: string; OldChar, NewChar: Char): string; - - -implementation - -uses - WinInet, UrlMon, Registry; - -// Some constatants are missing in previous delphi versions. -// That's why they are declared here. -const -{$EXTERNALSYM BINDSTATUS_COOKIE_SENT} - BINDSTATUS_COOKIE_SENT = BINDSTATUS_ACCEPTRANGES + 1; -{$EXTERNALSYM BINDSTATUS_COMPACT_POLICY_RECEIVED} - BINDSTATUS_COMPACT_POLICY_RECEIVED = BINDSTATUS_COOKIE_SENT + 1; -{$EXTERNALSYM BINDSTATUS_COOKIE_SUPPRESSED} - BINDSTATUS_COOKIE_SUPPRESSED = BINDSTATUS_COMPACT_POLICY_RECEIVED + 1; -{$EXTERNALSYM BINDSTATUS_COOKIE_STATE_UNKNOWN} - BINDSTATUS_COOKIE_STATE_UNKNOWN = BINDSTATUS_COOKIE_SUPPRESSED + 1; -{$EXTERNALSYM BINDSTATUS_COOKIE_STATE_ACCEPT} - BINDSTATUS_COOKIE_STATE_ACCEPT = BINDSTATUS_COOKIE_STATE_UNKNOWN + 1; -{$EXTERNALSYM BINDSTATUS_COOKIE_STATE_REJECT} - BINDSTATUS_COOKIE_STATE_REJECT = BINDSTATUS_COOKIE_STATE_ACCEPT + 1; -{$EXTERNALSYM BINDSTATUS_COOKIE_STATE_PROMPT} - BINDSTATUS_COOKIE_STATE_PROMPT = BINDSTATUS_COOKIE_STATE_REJECT + 1; -{$EXTERNALSYM BINDSTATUS_COOKIE_STATE_LEASH} - BINDSTATUS_COOKIE_STATE_LEASH = BINDSTATUS_COOKIE_STATE_PROMPT + 1; -{$EXTERNALSYM BINDSTATUS_COOKIE_STATE_DOWNGRADE} - BINDSTATUS_COOKIE_STATE_DOWNGRADE = BINDSTATUS_COOKIE_STATE_LEASH + 1; -{$EXTERNALSYM BINDSTATUS_POLICY_HREF} - BINDSTATUS_POLICY_HREF = BINDSTATUS_COOKIE_STATE_DOWNGRADE + 1; -{$EXTERNALSYM BINDSTATUS_P3P_HEADER} - BINDSTATUS_P3P_HEADER = BINDSTATUS_POLICY_HREF + 1; -{$EXTERNALSYM BINDSTATUS_SESSION_COOKIE_RECEIVED} - BINDSTATUS_SESSION_COOKIE_RECEIVED = BINDSTATUS_P3P_HEADER + 1; -{$EXTERNALSYM BINDSTATUS_PERSISTENT_COOKIE_RECEIVED} - BINDSTATUS_PERSISTENT_COOKIE_RECEIVED = BINDSTATUS_SESSION_COOKIE_RECEIVED + - 1; - -function CodeInstallProblemToStr(ulStatusCode: Integer): string; -begin - case ulStatusCode of - CIP_DISK_FULL: Result := 'Destination can accept no more data.'; - CIP_ACCESS_DENIED: Result := 'Permissions problem.'; - CIP_NEWER_VERSION_EXISTS: Result := - 'Destination contains a newer version than the source.'; - CIP_OLDER_VERSION_EXISTS: Result := - 'Destination contains an older version than the source.'; - CIP_NAME_CONFLICT: Result := - 'Destination does not allow the naming convention used by the source.'; - CIP_TRUST_VERIFICATION_COMPONENT_MISSING: Result := - 'Destination cannot verify the source.'; - CIP_EXE_SELF_REGISTERATION_TIMEOUT: Result := 'Timeout has occurred. '; - CIP_UNSAFE_TO_ABORT: Result := - 'Installation or download should not be aborted.'; - CIP_NEED_REBOOT: Result := 'Destination machine requires rebooting.'; - CIP_NEED_REBOOT_UI_PERMISSION: Result := - 'Destination machine should reboot without user interface (UI).'; - else - Result := ResponseCodeToStr(ulStatusCode) - end; -end; - -function DataAvalibleToStr(Code: Integer): string; -begin - case Code of - BSCF_FIRSTDATANOTIFICATION: Result := - 'Identifed the first call to OnDataAvailable.'; - BSCF_INTERMEDIATEDATANOTIFICATION: Result := - 'Identifed the intermediate call to OnDataAvailable.'; - BSCF_LASTDATANOTIFICATION: Result := - 'Identifed the last call to OnDataAvailable.'; - BSCF_DATAFULLYAVAILABLE: Result := - 'All of the requested data is available.'; - BSCF_AVAILABLEDATASIZEUNKNOWN: Result := - 'Size of the data available is unknown.'; - // BSCF_SKIPDRAINDATAFORFILEURLS: Result := 'Bypass cache downloads.'; - else - Result := ResponseCodeToStr(Code) - end; -end; - -function ResponseCodeToStr(dwResponse: Integer): string; -begin - case dwResponse of - 100: Result := 'Continue'; - 101: Result := 'Switching Protocols'; - 200: Result := 'OK'; - 201: Result := 'Created'; - 202: Result := 'Accepted'; - 203: Result := 'Non-Authoritative Information'; - 204: Result := 'No Content'; - 205: Result := 'Reset Content'; - 206: Result := 'Partial Content'; - 300: Result := 'Multiple Choices'; - 301: Result := 'Moved Permanently'; - 302: Result := 'Moved Temporarily'; - 303: Result := 'See Other'; - 304: Result := 'Not Modified'; - 305: Result := 'Use Proxy'; - 400: Result := 'Bad Request'; - 401: Result := 'Unauthorized'; - 402: Result := 'Payment Required'; - 403: Result := 'Forbidden'; - 404: Result := 'Not Found'; - 405: Result := 'Method Not Allowed'; - 406: Result := 'None Acceptable'; - 407: Result := 'Proxy Authentication Required'; - 408: Result := 'Request Timeout'; - 409: Result := 'Conflict'; - 410: Result := 'Gone'; - 411: Result := 'Length Required'; - 412: Result := 'Precondition Failed'; - 413: Result := 'Request Entity Too Large'; - 414: Result := 'Request-URI Too Long'; - 415: Result := 'Unsupported Media Type'; - 416: Result := 'Requested Range Not Satisfiable'; - 417: Result := 'Expectation Failed'; - 500: Result := 'Internal Server Error'; - 501: Result := 'Not Implemented'; - 502: Result := 'Bad Gateway'; - 503: Result := 'Service Unavailable'; - 504: Result := 'Gateway Timeout'; - 505: Result := 'HTTP Version Not Supported'; - BINDSTATUS_FINDINGRESOURCE: Result := 'Finding resource...'; - BINDSTATUS_CONNECTING: Result := 'Connecting...'; - BINDSTATUS_REDIRECTING: Result := 'Server redirecting client...'; - BINDSTATUS_BEGINDOWNLOADDATA: Result := 'Beginning to download data...'; - BINDSTATUS_DOWNLOADINGDATA: Result := 'Downloading data...'; - BINDSTATUS_ENDDOWNLOADDATA: Result := 'Ending data download...'; - BINDSTATUS_BEGINDOWNLOADCOMPONENTS: Result := - 'Beginning to download components...'; - BINDSTATUS_INSTALLINGCOMPONENTS: Result := 'Installing components...'; - BINDSTATUS_ENDDOWNLOADCOMPONENTS: Result := 'Ending component download...'; - BINDSTATUS_USINGCACHEDCOPY: Result := 'Using cached copy...'; - BINDSTATUS_SENDINGREQUEST: Result := 'Sending request...'; - BINDSTATUS_CLASSIDAVAILABLE: Result := 'CLSID available...'; //*** - BINDSTATUS_MIMETYPEAVAILABLE: Result := 'MIME type available...'; - BINDSTATUS_CACHEFILENAMEAVAILABLE: Result := 'Cache file name available...'; - BINDSTATUS_BEGINSYNCOPERATION: Result := - 'Synchronous operation has started...'; - BINDSTATUS_ENDSYNCOPERATION: Result := 'Ending synchronous operation...'; - BINDSTATUS_BEGINUPLOADDATA: Result := 'Beginning to upload data...'; - BINDSTATUS_UPLOADINGDATA: Result := 'Uploading data...'; - BINDSTATUS_ENDUPLOADDATA: Result := 'Ending data upload...'; - BINDSTATUS_PROTOCOLCLASSID: Result := - 'Protocol handler CLSID is available...'; - BINDSTATUS_ENCODING: Result := 'Encoding data...'; - BINDSTATUS_VERIFIEDMIMETYPEAVAILABLE: Result := - 'Verified MIME type is available...'; - BINDSTATUS_CLASSINSTALLLOCATION: Result := - 'Class install location is available...'; - BINDSTATUS_DECODING: Result := 'Decoding data...'; - BINDSTATUS_LOADINGMIMEHANDLER: Result := - 'Pluggable MIME handler is being loaded...'; - BINDSTATUS_CONTENTDISPOSITIONATTACH: Result := - 'Content-Disposition resource is an attachment...'; - BINDSTATUS_FILTERREPORTMIMETYPE: Result := - 'New MIME type available for resource...'; - BINDSTATUS_CLSIDCANINSTANTIATE: Result := - 'CLSID to return on BindToObject...'; - BINDSTATUS_IUNKNOWNAVAILABLE: Result := - 'IUnknown interface has been released...'; - BINDSTATUS_DIRECTBIND: Result := - 'Connected directly to the pluggable protocol handler...'; - BINDSTATUS_RAWMIMETYPE: Result := 'Raw MIME type...'; - BINDSTATUS_PROXYDETECTING: Result := 'Proxy server has been detected...'; - BINDSTATUS_ACCEPTRANGES: Result := 'Valid types of range requests...'; - BINDSTATUS_COOKIE_SENT: Result := 'A cookie was sent'; - BINDSTATUS_COMPACT_POLICY_RECEIVED: Result := - 'A Platform for Privacy Preferences was received.'; - BINDSTATUS_COOKIE_SUPPRESSED: Result := - 'A cookie was suppressed from being sent to the web server.'; - BINDSTATUS_COOKIE_STATE_UNKNOWN: Result := - 'A a cookie has been initialized. '; - BINDSTATUS_COOKIE_STATE_ACCEPT: Result := - 'A cookie sent by the server was accepted.'; - BINDSTATUS_COOKIE_STATE_REJECT: Result := - 'A cookie sent by the server was rejected.'; - BINDSTATUS_COOKIE_STATE_PROMPT: Result := - 'User settings require a prompt before performing a cookie operation.'; - BINDSTATUS_COOKIE_STATE_LEASH: Result := 'A cookie is a leashed cookie.'; - BINDSTATUS_COOKIE_STATE_DOWNGRADE: Result := - 'A cookie is a downgraded cookie.'; - BINDSTATUS_POLICY_HREF: Result := - 'HTTP headers contain a link to the full privacy policy'; - BINDSTATUS_P3P_HEADER: Result := - 'HTTP response from the server contains the P3P privacy header'; - BINDSTATUS_SESSION_COOKIE_RECEIVED: Result := - 'A session cookie was received.'; - BINDSTATUS_PERSISTENT_COOKIE_RECEIVED: Result := - 'A persistent cookie was received. '; - BINDSTATUS_SESSION_COOKIES_ALLOWED: Result := - 'The session cookies are allowed.'; - BINDSTATUS_CACHECONTROL: Result := - 'A response from the server was written to memory only.'; //IE7 - BINDSTATUS_CONTENTDISPOSITIONFILENAME: Result := - 'The Content-Disposition header contains a file name.'; - BINDSTATUS_MIMETEXTPLAINMISMATCH: Result := - 'The reported Content-Type of the file does not match the content. '; - BINDSTATUS_PUBLISHERAVAILABLE: Result := - 'The publisher name is being downloaded and is available.'; - BINDSTATUS_DISPLAYNAMEAVAILABLE: Result := - 'The display name being downloaded and is available.'; - BINDSTATUS_SSLUX_NAVBLOCKED: Result := 'A problem with the SSL certificate.'; - BINDSTATUS_SERVER_MIMETYPEAVAILABLE: Result := - 'Server''s authoritative MIME type reported'; //IE8 - Attention: This documentation is preliminary and is subject to change - BINDSTATUS_SNIFFED_CLASSIDAVAILABLE: Result := - 'Class identifier (CLSID) generated from authoritative Content-Type HTTP response header'; //IE8 - Attention: This documentation is preliminary and is subject to change - BINDSTATUS_64BIT_PROGRESS: Result := - 'Download progress values are above the maximum 32-bit file size limit.'; //IE8 - Attention: This documentation is preliminary and is subject to change - // E_PENDING: Result := 'The data necessary to complete this operation is not yet available'; - E_UNEXPECTED: Result := 'Catastrophic failure'; - E_FAIL: Result := 'Failed'; - E_NOINTERFACE: Result := 'No such interface supported'; - E_NOTIMPL: Result := 'Not implemented'; - E_ABORT: Result := 'Operation Aborted.'; - E_ACCESSDENIED: Result := 'Access Denied.'; - E_INVALIDARG: Result := 'One or more parameters are invalid.'; - E_OUTOFMEMORY: Result := 'There was insufficient memory ...'; - ERROR_HTTP_REDIRECT_NEEDS_CONFIRMATION: Result := - 'The redirection requires user confirmation.'; - ERROR_INTERNET_CHG_POST_IS_NON_SECURE: Result := - 'The application is posting and attempting to change multiple lines of text on a server that is not secure.'; - ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED: Result := - 'The server is requesting client authentication.'; - ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP: Result := - 'Client authorization is not set up on this computer.'; - ERROR_INTERNET_FORTEZZA_LOGIN_NEEDED: Result := - 'The requested resource requires Fortezza authentication.'; - ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR: Result := - 'The application is moving from a non-SSL to an SSL connection because of a redirect.'; - ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR: Result := - 'The application is moving from an SSL to an non-SSL connection because of a redirect.'; - ERROR_INTERNET_INVALID_CA: Result := - 'The function is unfamiliar with the Certificate Authority that generated the server''s certificate.'; - ERROR_INTERNET_MIXED_SECURITY: Result := - 'The content is not entirely secure. Some of the content being viewed may have come from unsecured servers.'; - ERROR_INTERNET_POST_IS_NON_SECURE: Result := - 'The application is posting data to a server that is not secure.'; - ERROR_INTERNET_SEC_CERT_CN_INVALID: Result := - 'SSL certificate common name (host name field) is incorrect???for example, if you entered www.server.com and the common name on the certificate says www.different.com.'; - ERROR_INTERNET_SEC_CERT_DATE_INVALID: Result := - 'SSL certificate date that was received from the server is bad. The certificate is expired.'; - ERROR_INTERNET_SEC_CERT_REVOKED: Result := 'SSL certificate was revoked.'; - INET_E_AUTHENTICATION_REQUIRED: Result := - 'Authentication is needed to access the object.'; - INET_E_CANNOT_CONNECT: Result := - 'The attempt to connect to the Internet has failed.'; - INET_E_CANNOT_INSTANTIATE_OBJECT: Result := 'CoCreateInstance failed.'; - INET_E_CANNOT_LOAD_DATA: Result := 'The object could not be loaded.'; - INET_E_CANNOT_LOCK_REQUEST: Result := - 'The requested resource could not be locked.'; - INET_E_CANNOT_REPLACE_SFP_FILE: Result := - 'Cannot replace a protected System File Protection (SFP) file.'; - INET_E_CODE_DOWNLOAD_DECLINED: Result := - 'Permission to download is declined.'; - INET_E_CONNECTION_TIMEOUT: Result := - 'The Internet connection has timed out.'; - INET_E_DATA_NOT_AVAILABLE: Result := - 'An Internet connection was established, but the data cannot be retrieved.'; - INET_E_DEFAULT_ACTION: Result := 'Use the default action.'; - INET_E_DOWNLOAD_FAILURE: Result := - 'The download has failed (the connection was interrupted).'; - INET_E_INVALID_REQUEST: Result := 'The request was invalid.'; - INET_E_INVALID_URL: Result := 'The URL could not be parsed.'; - INET_E_NO_SESSION: Result := 'No Internet session was established.'; - INET_E_NO_VALID_MEDIA: Result := - 'The object is not in one of the acceptable MIME types.'; - INET_E_OBJECT_NOT_FOUND: Result := 'The object was not found.'; - INET_E_QUERYOPTION_UNKNOWN: Result := 'The requested option is unknown.'; - INET_E_REDIRECT_TO_DIR: Result := - 'The request is being redirected to a directory.'; - INET_E_REDIRECTING: Result := 'The request is being redirected.'; - INET_E_RESOURCE_NOT_FOUND: Result := 'The server or proxy was not found.'; - INET_E_RESULT_DISPATCHED: Result := 'Result is dispatched.'; - INET_E_SECURITY_PROBLEM: Result := 'A security problem was encountered.'; - INET_E_TERMINATED_BIND: Result := 'Binding is terminated.'; - INET_E_UNKNOWN_PROTOCOL: Result := - 'The protocol is not known and no pluggable protocols have been entered that match.'; - //INET_E_USE_DEFAULT_PROTOCOLHANDLER: Result := 'Use the default protocol handler.'; - INET_E_USE_EXTEND_BINDING: Result := - 'Re-issue request with extended Binding.'; - INET_E_USE_DEFAULT_SETTING: Result := 'Use the default settings.'; - MK_E_CANTOPENFILE: Result := 'Moniker cannot open file.'; - MK_E_CONNECTMANUALLY: Result := - 'The operation was unable to connect to the storage, possibly because a network device could not be connected to. For more information, see IMoniker::BindToObject.'; - MK_E_ENUMERATION_FAILED: Result := 'Moniker could not be enumerated'; - MK_E_EXCEEDEDDEADLINE: Result := - 'The operation could not be completed within the time limit specified by the bind context''s BIND_OPTS structure.'; - MK_E_INTERMEDIATEINTERFACENOTSUPPORTED: Result := - 'An intermediate object was found but it did not support an interface required for an operation. For example, an item moniker returns this value if its container does not support the IOleItemContainer interface.'; - MK_E_INVALIDEXTENSION: Result := 'Bad extension for file.'; - MK_E_MUSTBOTHERUSER: Result := - 'User input required for operation to succeed.'; - MK_E_NEEDGENERIC: Result := 'Moniker needs to be generic.'; - MK_E_NOINVERSE: Result := 'Moniker class has no inverse.'; - MK_E_NOOBJECT: Result := 'No object for moniker.'; - MK_E_NOPREFIX: Result := 'No common prefix.'; - MK_E_NOSTORAGE: Result := - 'The object identified by the moniker does not have its own storage.'; - MK_E_NOTBINDABLE: Result := 'Moniker is not bindable.'; - MK_E_NOTBOUND: Result := 'Moniker is not bound.'; - MK_E_SYNTAX: Result := - 'A moniker could not be created because of invalid URL syntax.'; - MK_E_UNAVAILABLE: Result := 'Operation unavailable.'; - S_OK: Result := 'The operation was successful'; - STG_E_ACCESSDENIED: Result := 'Unable to access the storage object.'; - MK_S_ASYNCHRONOUS: Result := 'Asynchronous mode.'; - else - Result := 'Unknown Response: ' + IntToStr(dwResponse) + ' ' + - SysErrorMessage(dwResponse) - end; -end; - -function WideStringToLPOLESTR(const Source: Widestring): POleStr; -var - Len: Integer; -begin - Len := Length(Source) * SizeOf(WideChar); - Result := CoTaskMemAlloc(Len + 2); - FillChar(Result^, Len + 2, 0); - Move(Result^, PWideString(Source)^, Len); -end; - -function SecToStr(const Seconds: LongInt): string; -var - H: Integer; - M: Integer; - S: Integer; -begin - h := (Seconds div 60) div 60 mod 60; - m := (Seconds div 60) mod 60; - s := Seconds mod 60; - Result := Format('%2.2d:%2.2d:%2.2d', (.H, M, S.)); -end; - -function FormatTickToTime(TickCount: Cardinal): string; -var - Hours, Minutes, Seconds, MSecs: Cardinal; - S_HUR, S_MIN, S_SEC, S_MSC: string; -begin - S_MSC := '000'; - S_SEC := '00'; - S_MIN := '00'; - S_HUR := '00'; - try - if (TickCount > 0) then - begin - MSecs := TickCount mod MSecsPerSec; - TickCount := TickCount div MSecsPerSec; - S_MSC := Format('%.3d', [MSecs]); - Seconds := TickCount mod SecsPerMin; - TickCount := TickCount div SecsPerMin; - S_SEC := Format('%.2d', [Seconds]); - Minutes := TickCount mod MinsPerHour; - TickCount := TickCount div MinsPerHour; - S_MIN := Format('%.2d', [Minutes]); - Hours := TickCount mod HoursPerDay; - S_HUR := Format('%.2d', [Hours]); - end; - finally - if S_HUR = '00' then - Result := S_MIN + 'm :' + S_SEC + 's :' + S_MSC + 'ms'; - if (S_HUR = '00') and (S_MIN = '00') then - Result := S_SEC + 's :' + S_MSC + 'ms'; - if S_HUR <> '00' then - Result := S_HUR + 'h :' + S_MIN + 'm :' + S_SEC + 's :' + S_MSC + 'ms'; - end; -end; - - -function StrToCase(StringOf: string; CasesList: array of string): Integer; -var - Idx: integer; -begin - Result := -1; - for Idx := 0 to Length(CasesList) - 1 do - begin - if CompareText(StringOf, CasesList[Idx]) = 0 then - begin - Result := Idx; - Break; - end; - end; -end; - -function FormatSize(Byte: Double): string; -begin - if (Byte > 0) then - begin - if (Byte < 1024) then - Result := Format('%.2n b', [Byte]) - else - if (Byte > 1024) then - begin - Byte := (Byte / 1024); - if (Byte < 1024) then - Result := Format('%.2n Kb', [Byte]) - else - begin - Byte := (Byte / 1024); - Result := Format('%.2n Mb', [Byte]); - end; - end; - end; -end; - -function IsValidURL(const URL: Widestring): Boolean; -begin - Result := UrlMon.IsValidURL(nil, PWideChar(URL), 0) = S_OK; -end; - - -function WideStringToWideChar(const inString: WideString): PWideChar; -begin - Result := CoTaskMemAlloc((Length(inString) + 1) * SizeOf(WideChar)); - Move(inString, Result, (Length(inString) + 1) * SizeOf(WideChar)); -end; - -procedure FreeWideChar(var inString: PWideChar); -begin - if Assigned(inString) then - begin - CoTaskMemFree(inString); - inString := nil; - end; -end; - -function QueryRemoteFileInfo(const Url: string; dwInfoFlag: Integer): string; -var - hInet: HINTERNET; - hConnect: HINTERNET; - infoBuffer: array[0..512] of char; - dummy: DWORD; - bufLen: DWORD; - lbResult: LongBool; -begin - hInet := InternetOpen(PChar('TIDownload'), - INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, nil, nil, 0); - hConnect := InternetOpenUrl(hInet, PChar(Url), nil, 0, INTERNET_FLAG_NO_UI, 0); - if not Assigned(hConnect) then - begin - Result := ''; - end - else - begin - dummy := 0; - bufLen := Length(infoBuffer); - lbResult := HttpQueryInfo(hConnect, dwInfoFlag, @infoBuffer[0], bufLen, dummy); - if lbResult then - Result := infoBuffer - else - Result := ''; - InternetCloseHandle(hConnect); - end; - InternetCloseHandle(hInet); -end; - -function GetInfoByMimeType(const ContentType: string): boolean; -var - Reg: TRegistry; - CLSID: string; -begin - Result := FALSE; - - Reg := TRegistry.Create(KEY_READ); - try - with Reg do - begin - RootKey := HKEY_CLASSES_ROOT; - if OpenKeyReadOnly('MIME\Database\Content Type\' + ContentType) then - begin - if ValueExists('CLSID') then - begin - CLSID := ReadString('CLSID'); - if CLSID <> '' then - begin - if OpenKeyReadOnly('\CLSID\' + CLSID) then - begin - if KeyExists('Control') then - begin - if KeyExists('EnableFullPage') then - begin - Result := TRUE; - end; - end; - end; - end; - end; - end; - CloseKey; - end; - finally - Reg.Free; - end; -end; - -function StrContain(SubString: string; Str: string): boolean; -begin - Result := AnsiPos(AnsiLowerCase(SubString), AnsiLowerCase(Str)) > 0; -end; - -function IncludeTrailingPathDelimiter(const S: string): string; -begin - Result := S; - if not IsPathDelimiter(Result, Length(Result)) then - Result := Result + PathDelim; -end; - -function CharReplace(const Source: string; OldChar, NewChar: Char): string; -var - i: Integer; -begin - Result := Source; - for i := 1 to Length(Result) do - if Result[i] = OldChar then - Result[i] := NewChar -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/IEGuid.pas b/windows/src/ext/embeddedwb/Source/IEGuid.pas deleted file mode 100644 index 6c6569cc2a..0000000000 --- a/windows/src/ext/embeddedwb/Source/IEGuid.pas +++ /dev/null @@ -1,544 +0,0 @@ -//**************************************************** -// IE-Guid * -// For Delphi * -// Freeware Component * -// by * -// * -// Per Linds Larsen * -// http://www.euromind.com/iedelphi * -// * -// Contributor: * -// Eran Bodankin (bsalsa) - D2005 update and bug fix * -// bsalsa@gmail.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DocUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 3 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. You may consider donation in our web site! -{*******************************************************************************} -//$Id: IEGuid.pas,v 1.2 2006/11/15 21:01:42 sergev Exp $ - - -unit IEGuid; - -interface - -uses - Mshtml_Ewb, Clipbrd, Comobj, Activex, Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs; - -type - - TIEGuid = class(TObject) - private - function LoadList(Fname: string): Integer; - public - Names: TStringlist; - Guids: TStringlist; - function NameFromGuid(Guid: TGUID): string; - function NameFromGuidStr(GuidStr: string): string; - function CopyToClipboard(GuidName: string): HResult; - function GetInterfaces(Unk: IUnknown; const S: TStrings): HResult; - function GetServices(Unk: IUnknown; rsid: string; const S: TStrings): HResult; - function GetConnectionPoints(Unk: IUnknown; const S: TStrings; ShowIDispatch: Boolean): HResult; - procedure GetPropertyList(const Obj: IDispatch; const S: TStrings); - function GetDispatchFromName(const Disp: IDispatch; const PropertyName: WideString): OleVariant; - function GetInterfacesEx(Unk: IUnknown; - const S: TStrings; ShowIUnknown, ShowIDispatch, ShowIDispatchEx, ShowDispinterfaces: Boolean): HResult; - destructor Destroy; override; - constructor Create(const fname: string); - end; - -function CreateIEGuid(HeadersDir, GuidFile: string): Integer; -function CreateIEList(Guidfile, IEList: string): Integer; - -implementation - -{ TIEGuid } - -function TIEGuid.GetDispatchFromName(const Disp: IDispatch; const PropertyName: WideString): OleVariant; -var - PName: PWideChar; - DispID: Integer; - ExcepInfo: TExcepInfo; - DispParams: TDispParams; - Status: HResult; -begin - Result := disp <> nil; - if Result then - begin - PName := PWideChar(PropertyName); - if PName <> 'parentDocument' then - begin - if PropertyName = '' then - Result := DISPID_UNKNOWN - else - Disp.GetIDsOfNames(GUID_NULL, @PName, 1, GetThreadLocale, @DispID); - FillChar(DispParams, SizeOf(DispParams), 0); - Status := Disp.Invoke(DispID, GUID_NULL, 0, DISPATCH_PROPERTYGET, DispParams, - @Result, @ExcepInfo, nil); - if Status <> S_OK then - DispatchInvokeError(Status, ExcepInfo); - end; - end; -end; - -procedure TIEGuid.GetPropertyList(const Obj: IDispatch; const S: TStrings); -var - i: Integer; - TI: ITypeInfo; - TA: PTypeAttr; - FD: PFuncDesc; - aName: WideString; - vt: Integer; -begin - OleCheck(Obj.GetTypeInfo(0, 0, TI)); - OleCheck(TI.GetTypeAttr(TA)); - for i := 0 to TA.cFuncs - 1 do - begin - OleCheck(TI.GetFuncDesc(i, FD)); - if (FD.invkind = INVOKE_PROPERTYGET) then - begin - TI.GetDocumentation(FD.memid, @aName, nil, nil, nil); - vt := fd.elemdescFunc.tdesc.vt; - if (vt = VT_DISPATCH) or (vt = VT_PTR) then - S.add(aName); - end; - TI.ReleaseFuncDesc(FD); - end; - TI.ReleaseTypeAttr(TA); -end; - -// Create list of .h-files in Headers directory - -function GetFileList(const Path: string; var FileList: - TStringList): Boolean; -var - SearchRec: TSearchRec; - ff: Integer; -begin - GetFileList := False; - ff := FindFirst(Path + '\*.*', faAnyFile, SearchRec); - if ff = 0 then - begin - GetFileList := True; - if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then - begin - if (SearchRec.Attr and $10 <> $10) - then - if Pos('.h', SearchRec.Name) > 0 then - FileList.Add(Path + '\' + SearchRec.Name); - end; - repeat - ff := FindNext(SearchRec); - if ff = 0 then - begin - if (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then - begin - if (SearchRec.Attr and $10 <> $10) then - FileList.Add(Path + '\' + SearchRec.Name); - end; - end; - until ff <> 0; - end; -end; - -function FindStr(S: string; I: Integer; Token: string): string; -var - counter, t, t1, t2: Shortint; -begin - S := Token + S + Token; - counter := 1; - t := 0; - while t < I do - begin - if Copy(S, counter, 1) = Token then - Inc(t); - inc(counter); - end; - t1 := counter; - if Copy(S, counter, 1) = token then - Result := '' - else - begin - Inc(Counter); - while Copy(S, counter, 1) <> Token do - Inc(counter); - t2 := counter - t1; - Result := copy(S, t1, t2); - end; -end; - -function ExtractDefineGuid(GuidStr: string): string; -var - o, Temp, s, G: string; - X: Integer; -begin - GuidStr := Trim(StringReplace(GuidStr, ' ', '', [rfReplaceAll, rfIgnoreCase])); - Guidstr := Stringreplace(GuidStr, Chr($09), '', [rfReplaceAll]); - g := Copy(GuidStr, 13, Pos(',', GuidStr) - 13); - S := Uppercase(Copy(GuidStr, Pos('0x', GuidStr), 255)); - S := Trim(StringReplace(S, ');', '', [rfReplaceAll, rfIgnoreCase])); - S := StringReplace(S, '0x', '', [rfReplaceAll, rfIgnoreCase]); - S := StringReplace(S, 'L', '', [rfReplaceAll, rfIgnoreCase]); - X := 1; - o := ''; - repeat - Temp := Findstr(S, X, ','); - if (Length(Temp) = 1) or (Length(temp) = 3) or (Length(temp) = 7) then - o := o + '0' + temp - else - o := o + temp; - Inc(x); - until Temp = ''; - s := o; - S := StringReplace(S, ',', '', [rfReplaceAll, rfIgnoreCase]); - s := Trim('{' + Copy(s, 1, 8) + '-' + Copy(S, 9, 4) + '-' + Copy(s, 13, 4) + '-' + Copy(s, 17, 4) + '-' + Copy(s, 21, 12) + '}'); - if (Length(s) <> 38) or (Pos('name', g) > 0) or (Pos('DEFINE_', S) > 0) then - Result := '' - else - Result := g + '=' + S; -end; - -//Extract GUIDS Registry: HKEY_CLASSES_ROOT\Interfaces - -procedure GetGuidsFromRegistry(Guids: TStringList); -var - dwIndex: DWORD; - cb: Integer; - szIID: array[0..80] of char; - szvalue: array[0..256] of char; - hk: HKEY; - Str: string; -begin - cb := SizeOf(szValue); - RegOpenKey(HKEY_CLASSES_ROOT, 'Interface', hk); - dwIndex := 0; - while RegEnumKey(hk, dwindex, szIID, SizeOf(szIID)) = ERROR_SUCCESS - do - begin - szValue := ''; - RegQueryValue(hk, szIID, szvalue, cb); - if (szValue <> '') then - begin - str := string(szvalue) + '=' + szIID; - if Guids.IndexOf(str) = -1 then - Guids.Add(str); - end; - inc(dwIndex); - end; -end; - -function CreateIEGuid(HeadersDir, GuidFile: string): Integer; -var - files, lines, Guids: TStringlist; - S, n, g: string; - X, Fcounter, Lcounter: Integer; -begin - Files := TStringlist.Create; - Lines := TStringlist.Create; - Guids := TStringlist.Create; - Guids.Sorted := True; - GetFileList(HeadersDir, Files); - for FCounter := 0 to Files.Count - 1 do - begin - Lines.LoadFromFile(Files[FCounter]); - for LCounter := 0 to Lines.Count - 1 do - begin - if Pos('MIDL_INTERFACE("', Lines[LCounter]) > 0 then - //(1) Extract GUIDS from MIDL_INTERFACE("... lines in header files - begin - g := UpperCase('{' + Copy(Trim(Lines[LCounter]), 17, 36) + '}'); - n := Copy(Trim(Lines[LCounter + 1]), 1, 255); - if n = '' then - N := Copy(Trim(Lines[LCounter + 2]), 1, 255); - n := Copy(n, 1, Pos(' ', n) - 1); - S := n + '=' + g; - if (Guids.IndexOf(S) < 0) and (n <> '') then - Guids.Add(S); - end - else - if Pos('DEFINE_GUID(', Trim(Lines[LCounter])) = 1 then - begin - //(2) Extract GUIDS from DEFINE_GUID("... lines in header files - n := Lines[LCounter]; - x := LCounter; - while (pos(');', n) = 0) and (x < lines.count) do - begin - Inc(x); - n := n + Lines[x]; - end; - S := ExtractDefineGuid(n); - if s <> '' then - if Guids.IndexOf(s) < 0 then - Guids.Add(s); - end - else - if (pos('__declspec(uuid("', Lines[LCounter]) > 0) and (Pos(';', Lines[LCounter]) > 0) then - begin - // (3) Extract GUIDS from __declspec(uuid("... lines in header files - g := Copy(Lines[LCOunter], Pos('declspec(uuid("', Lines[LCounter]) + 15, 255); - n := '{' + Copy(G, 1, Pos('"', G) - 1) + '}'; - g := Copy(g, Pos(' ', g), 255); - g := Trim(StringReplace(g, ';', '', [rfReplaceAll])); - S := g + '=' + Uppercase(n); - if Guids.IndexOf(S) < 0 then - Guids.Add(S); - end; - end; - end; - Files.Free; - Lines.Free; - GetGuidsFromRegistry(Guids); - Result := Guids.Count; - Guids.SaveToFile(GuidFile); - Guids.Free; -end; - -function CreateIEList(GuidFile, Ielist: string): Integer; -var - S: string; - i: Integer; - Temp: TStringlist; - Guids: TStringlist; -begin - Temp := TStringlist.Create; - Guids := TStringlist.Create; - Guids.LoadFromFile(GuidFile); - for I := 0 to Guids.Count - 1 do - begin - s := Uppercase(Guids[i]); - - if (pos('DISP', S) = 1) or (pos('HTML', S) = 1) or (pos('SID_', S) = 1) or - (pos('DWEB', S) = 1) or (pos('CGID', S) = 1) or ((pos('I', S) = 1) and (pos('IID_', S) = 0)) - then - Temp.Add(Guids[i]) - else - if (pos('IID_I', S) = 1) and (Guids.IndexOf(Copy(S, 5, 255)) = -1) then - Temp.add(copy(guids[i], 5, 255)); - - end; - if Temp.IndexOf('CGID_MSHTML={DE4BA900-59CA-11CF-9592-444553540000}') = -1 then - Temp.Add('CGID_MSHTML={DE4BA900-59CA-11CF-9592-444553540000}'); - - Temp.SaveToFile(IEList); - Result := Temp.Count; - Temp.Free; - Guids.Free; -end; - -function TIEGuid.LoadList(Fname: string): Integer; -var - X: Integer; - Temp: TStringlist; -begin - Guids.Clear; - Names.Clear; - Temp := TStringlist.Create; - try - Temp.LoadFromFile(FName); - for x := 0 to Temp.Count - 1 do - begin - Guids.Add(Copy(Temp[x], Pos('=', Temp[x]) + 1, 255)); - Names.Add(Copy(Temp[x], 1, Pos('=', Temp[x]) - 1)); - end; - Result := Guids.Count; - finally - Temp.Free; - end; -end; - -destructor TIEGuid.Destroy; -begin - if Names <> nil then - Names.Free; - if Guids <> nil then - Guids.Free; - inherited; -end; - -constructor TIEGuid.Create(const fname: string); -begin - inherited Create; - if FileExists(fname) then - begin - Names := TStringlist.Create; - Guids := TStringlist.Create; - loadlist(Fname); - end; -end; - -function TIEGuid.NameFromGuidStr(GuidStr: string): string; -var - i: Integer; -begin - i := Guids.IndexOf(GuidStr); - if i > -1 then - Result := Names[i] - else - Result := GuidStr; -end; - -function TIEGuid.CopyToClipboard(GuidName: string): HResult; -var - // s: string; - x: Integer; -begin - x := Names.IndexOf(guidname); - if x > -1 then - begin - ClipBoard.SetTextBuf(Pchar(Names[x] + ' : TGUID = ''' + Guids[x] + ''';')); - Result := S_OK; - end - else - Result := S_FALSE; -end; - -function TIEGuid.NameFromGuid(Guid: TGUID): string; -var - s: string; - i: Integer; -begin - s := GuidToString(Guid); - i := Guids.IndexOf(s); - if i > -1 then - Result := Names[i] - else - Result := S; -end; - -function TIEGuid.GetServices(Unk: IUnknown; rsid: string; const S: TStrings): HResult; -var - Isp: IServiceprovider; - x: Integer; - i: IUnknown; - G, N: string; -begin - Result := S_FALSE; - x := Names.IndexOf(rsid); - if ((rsid <> '') and (x = -1)) or not Assigned(unk) then - Exit; - if x > -1 then - begin - G := Guids[x]; - n := Names[x]; - end; - if Succeeded(Unk.QueryInterface(IServiceprovider, isp)) - then - for x := 0 to Guids.Count - 1 do - begin - if rsid = '' then - begin - G := Guids[x]; - N := Names[x]; - end; - try - if isp.QueryService(StringtoGuid(G), StringtoGuid(Guids[x]), i) = S_OK - then - S.Add(Names[x]); - except - ShowMessage('Invalid GUID: ' + Names[x]); - end; - Result := S_OK; - end; -end; - -function TIEGuid.GetInterfaces(Unk: IUnknown; - const S: TStrings): HResult; -var - i: IUnknown; - x: Integer; -begin - Result := S_OK; - if not Assigned(unk) then - begin - Result := S_FALSE; - Exit; - end - else - for x := 0 to Guids.count - 1 do - try - if Succeeded(unk.QueryInterface(StringToGuid(Guids[x]), i)) then - S.Add(Names[x]); - except - ShowMessage('Invalid GUID: ' + Names[x]); - end; -end; - -function TIEGuid.GetInterfacesEx(Unk: IUnknown; - const S: TStrings; ShowIUnknown, ShowIDispatch, ShowIDispatchEx, ShowDispinterfaces: Boolean): HResult; -var - I: IUnknown; - // Show: Boolean; - x: Integer; -begin - Result := S_OK; - if not Assigned(unk) then - begin - Result := S_FALSE; - Exit; - end - else - for x := 0 to Guids.count - 1 do - try - if Succeeded(unk.QueryInterface(StringToGuid(Guids[x]), i)) then - if ((not ShowIdispatch and (UpperCase(Names[x]) = 'IDISPATCH')) or - (not ShowIdispatchEx and (UpperCase(Names[x]) = 'IDISPATCHEX')) or - (not ShowIUnknown and (UpperCase(Names[x]) = 'IUNKNOWN'))) or - (not ShowDispInterfaces and (Pos('DISP', UpperCase(Names[x])) = 1)) then - else - S.Add(Names[x]); - except - ShowMessage('Invalid GUID for: ' + Names[x]); - end; -end; - -function TIEGuid.GetConnectionPoints(Unk: IUnknown; const S: TStrings; ShowIDispatch: Boolean): HResult; -var - IID: TGuid; - CPC: IConnectionPointContainer; - iecp: IEnumConnectionPoints; - cp: IConnectionPoint; - Fetched: Integer; -begin - Result := S_FALSE; - if Assigned(unk) then - begin - if Succeeded(Unk.QueryInterface(IConnectionPointContainer, CPC)) then - begin - CPC.EnumConnectionPoints(iecp); - iecp.Next(1, cp, @Fetched); - repeat - cp.GetConnectionInterface(iid); - if (Uppercase(NameFromGuid(IID)) = 'IDISPATCH') and not ShowIdispatch - then else - S.Add(NameFromGuid(IID)); - iecp.Next(1, cp, @Fetched); - until fetched = 0; - Result := S_OK - end; - end; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Source/IEMultiDownload.pas b/windows/src/ext/embeddedwb/Source/IEMultiDownload.pas deleted file mode 100644 index 35d37fdac9..0000000000 --- a/windows/src/ext/embeddedwb/Source/IEMultiDownload.pas +++ /dev/null @@ -1,635 +0,0 @@ -//**************************************************** -// IEMultiDownload * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// * -// Eran Bodankin (bsalsa) * -// bsalsa@gmail.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRES OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} - -unit IEMultiDownload; - -{$I EWB.inc} - -interface - -uses - WinInet, MSHTML_EWB, Windows, SysUtils, Classes, Forms, ExtCtrls, - IEDownload, IEParser, EwbUrl; - -type - TIEMultiDownload = class; - - TMultiState = (msBusy, msReady, msStopped); - TMultiDownloadOptions = (doAll, doImages, doPages, doVideo, doMusic); - - TDownloadItem = class(TCollectionItem) - private - FFileName: WideString; - FPassword: WideString; - FPath: WideString; - FPort: integer; - FProtocol: WideString; - FRef: WideString; - FRoot: WideString; - FUser: WideString; - procedure Set_Ref(const Value: WideString); - procedure SetFileName(const Value: WideString); - procedure SetPassword(const Value: WideString); - procedure SetPath(const Value: WideString); - procedure SetPort(const Value: integer); - procedure SetProtocol(const Value: WideString); - procedure SetRoot(const Value: WideString); - procedure SetUser(const Value: WideString); - public - procedure Assign(Source: TPersistent); override; - published - property FileName: WideString read FFileName write SetFileName; - property Ref: WideString read FRef write Set_Ref; - property Password: WideString read FPassword write SetPassword; - property Path: WideString read FPath write SetPath; - property Port: integer read FPort write SetPort; - property Protocol: WideString read FProtocol write SetProtocol; - property Root: WideString read FRoot write SetRoot; - property User: WideString read FUser write SetUser; - end; - - TDownloadList = class(TCollection) - private - FIEMD: TIEMultiDownload; - function GetItem(Index: Integer): TDownloadItem; - procedure SetItem(Index: Integer; Value: TDownloadItem); - protected - function GetOwner: TPersistent; override; - public - constructor Create(IEMD: TIEMultiDownload); - function Add: TDownloadItem; - function Insert(Index: Integer): TDownloadItem; - function IsListed(const aRef: WideString): Boolean; - procedure DeleteItem(Index: Integer); - procedure ClearItems; - public - property Items[index: Integer]: TDownloadItem read GetItem write SetItem; default; - end; - - TOnMultiBeforeDownloadEvent = procedure(Sender: TObject; const hRef: WideString; const Item: TDownloadItem; var Cancel: boolean) of object; - TOnMultiCompleteEvent = procedure(Sender: TObject; const DownloadedList: TStrings) of object; - TOnMultiGetDocInfoEvent = procedure(Sender: TObject; const Text: string) of object; - TOnMultiGetImageEvent = procedure(Sender: TObject; const ImgName: string; var Cancel: Boolean) of object; - TOnMultiGetLinkEvent = procedure(Sender: TObject; const hRef, Host, HostName, PathName, Port, Protocol, MimeType, NameProp: string; var Cancel: Boolean) of object; - TOnMultiGetQueryInfoEvent = procedure(const MimeType, Encoding, Disposition: string) of object; - TOnMultiItemAddedEvent = procedure(Sender: TObject; const hRef, hProtocol, hRoot, hPath, hFileName, hUser, hPassword: WideString; const hPort: integer) of object; - TOnMultiParseCompleteEvent = procedure(Sender: TObject; Doc: IhtmlDocument2; All: IHtmlElementCollection) of object; - TOnMultiParseDocumentEvent = procedure(Sender: TObject; const Res: HRESULT; stMessage: string) of object; - TOnMultiParseErrorEvent = procedure(Sender: TObject; const ErrorCode: integer; const Url, stError: string) of object; - TOnMultiParseProgressEvent = procedure(Sender: TObject; const ulProgress, ulProgressMax: integer) of object; - TOnMultiStateChangeEvent = procedure(Sender: TObject; const State: TMultiState) of object; - TOnMultiStartParsingEvent = procedure(Sender: TObject; const aUrl: WideString) of object; - - TIEMultiDownload = class(TCustomIEDownload) - private - FAbout: string; - FBaseFolder: WideString; - FBaseUrl: WideString; - FAbort: Boolean; - FDownloadLevel: integer; - FFromBaseSiteOnly: Boolean; - FGetCompleteBaseSite: Boolean; - FItems: TDownloadList; - FMultiDownloadOptions: TMultiDownloadOptions; - FMultiState: TMultiState; - FMaxItems: integer; - FOnMultiBeforeDownload: TOnMultiBeforeDownloadEvent; - FOnMultiComplete: TOnMultiCompleteEvent; - FOnMultiGetDocInfo: TOnMultiGetDocInfoEvent; - FOnMultiGetImage: TOnMultiGetImageEvent; - FOnMultiGetLink: TOnMultiGetLinkEvent; - FOnMultiGetQueryInfo: TOnMultiGetQueryInfoEvent; - FOnMultiItemAdded: TOnMultiItemAddedEvent; - FOnMultiParseComplete: TOnMultiParseCompleteEvent; - FOnMultiParseDocument: TOnMultiParseDocumentEvent; - FOnMultiParseError: TOnMultiParseErrorEvent; - FOnMultiParseProgress: TOnMultiParseProgressEvent; - FOnMultiStateChange: TOnMultiStateChangeEvent; - FOnMultiStartParsing: TOnMultiStartParsingEvent; - FOpenFolder: boolean; - FProgress, FProgressMax: integer; - FTimer: TTimer; - FRoorUrl: string; - HtmlParser: TIEParser; - slDownloadedList: TStringList; - UrlParser: TUrl; - procedure DoOnExit; - procedure DownloadList(const aItems: TDownloadList); - procedure MultiAnchor(Sender: TObject; hRef, Target, Rel, Rev, Urn, Methods, Name, Host, HostName, PathName, Port, Protocol, Search, Hash, AccessKey, ProtocolLong, MimeType, NameProp: string; Element: TElementInfo); - procedure MultiGetDocInfo(Sender: TObject; const Text: string); - procedure MultiGetQueryInfo(const MimeType, Encoding, Disposition: string); - procedure MultiImage(Sender: TObject; Source: string; ImgElement: IHTMLImgElement; Element: TElementInfo); - procedure MultiParseComplete(Sender: TObject; Doc: IhtmlDocument2; All: IHtmlElementCollection); - procedure MultiParseDocument(Sender: TObject; const Res: HRESULT; stMessage: string); - procedure MultiParseError(Sender: TObject; const ErrorCode: integer; const Url, stError: string); - procedure MultiStartParsing(Sender: TObject; const aUrl: WideString); - procedure SetAbout(Value: string); - procedure SetItems(Value: TDownloadList); - procedure SetMaxItems(Value: Integer); - procedure MultiTimer(Sender: TObject); - protected - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function AddItem(const aRef: string): TDownloadItem; - procedure GoMulti(BaseUrl: WideString); - procedure SetDownloadOptions(const Value: TMultiDownloadOptions); - procedure Stop; - - public - property DownloadedList: TStringList read slDownloadedList; - property MultiState: TMultiState read FMultiState; - published - property About: string read FAbout write SetAbout; - property BaseUrl: WideString read FBaseUrl write FBaseUrl; - property DownloadLevel: integer read FDownloadLevel write FDownloadLevel default 1; - property DownloadOptions: TMultiDownloadOptions read FMultiDownloadOptions write SetDownloadOptions default doAll; - property FromBaseSiteOnly: boolean read FFromBaseSiteOnly write FFromBaseSiteOnly default True; - property GetCompleteBaseSite: boolean read FGetCompleteBaseSite write FGetCompleteBaseSite default False; - property Items: TDownloadList read FItems write SetItems; - property MaxItems: integer read FMaxItems write SetMaxItems default 100; - property OnMultiBeforeDownload: TOnMultiBeforeDownloadEvent read FOnMultiBeforeDownload write FOnMultiBeforeDownload; - property OnMultiComplete: TOnMultiCompleteEvent read FOnMultiComplete write FOnMultiComplete; - property OnMultiGetDocInfo: TOnMultiGetDocInfoEvent read FOnMultiGetDocInfo write FOnMultiGetDocInfo; - property OnMultiGetImage: TOnMultiGetImageEvent read FOnMultiGetImage write FOnMultiGetImage; - property OnMultiGetLink: TOnMultiGetLinkEvent read FOnMultiGetLink write FOnMultiGetLink; - property OnMultiGetQueryInfo: TOnMultiGetQueryInfoEvent read FOnMultiGetQueryInfo write FOnMultiGetQueryInfo; - property OnMultiItemAdded: TOnMultiItemAddedEvent read FOnMultiItemAdded write FOnMultiItemAdded; - property OnMultiParseComplete: TOnMultiParseCompleteEvent read FOnMultiParseComplete write FOnMultiParseComplete; - property OnMultiParseDocument: TOnMultiParseDocumentEvent read FOnMultiParseDocument write FOnMultiParseDocument; - property OnMultiParseError: TOnMultiParseErrorEvent read FOnMultiParseError write FOnMultiParseError; - property OnMultiParseProgress: TOnMultiParseProgressEvent read FOnMultiParseProgress write FOnMultiParseProgress; - property OnMultiStateChange: TOnMultiStateChangeEvent read FOnMultiStateChange write FOnMultiStateChange; - property OnMultiStartParsing: TOnMultiStartParsingEvent read FOnMultiStartParsing write FOnMultiStartParsing; - end; - -implementation - -uses - IEDownloadTools; - -procedure TDownloadItem.Assign(Source: TPersistent); -var - Item: TDownloadItem; -begin - if (Source is TDownloadItem) then - begin - Item := (Source as TDownloadItem); - FRef := Item.Ref; - FProtocol := Item.Protocol; - FRoot := Item.Root; - FPort := Item.Port; - FFileName := Item.FileName; - FUser := Item.User; - FPassword := Item.Password; - FPath := Item.Path; - end - else - begin - inherited Assign(Source); - end; -end; - -procedure TDownloadItem.SetFileName(const Value: WideString); -begin - if FFileName <> Value then - FFileName := Value; -end; - -procedure TDownloadItem.SetPath(const Value: WideString); -begin - if FPath <> Value then - FPath := Value; -end; - -procedure TDownloadItem.SetRoot(const Value: WideString); -begin - if FRoot <> Value then - FRoot := Value; -end; - -procedure TDownloadItem.SetPort(const Value: integer); -begin - if FPort <> Value then - FPort := Value; -end; - -procedure TDownloadItem.SetUser(const Value: WideString); -begin - if FUser <> Value then - FUser := Value; -end; - -procedure TDownloadItem.SetPassword(const Value: WideString); -begin - if FPassword <> Value then - FPassword := Value; -end; - -procedure TDownloadItem.Set_Ref(const Value: WideString); -begin - if FRef <> Value then - FRef := Value; -end; - -procedure TDownloadItem.SetProtocol(const Value: WideString); -begin - if FProtocol <> Value then - FProtocol := Value; -end; - -//------------------------------------------------------------------------------- - -procedure TDownloadList.DeleteItem(Index: Integer); -begin - Delete(Index); -end; - -procedure TDownloadList.ClearItems; -begin - Clear; -end; - -function TDownloadList.GetItem(Index: Integer): TDownloadItem; -begin - Result := TDownloadItem(inherited GetItem(Index)); -end; - -procedure TDownloadList.SetItem(Index: Integer; Value: TDownloadItem); -begin - inherited SetItem(Index, Value); -end; - -function TDownloadList.Add: TDownloadItem; -begin - Result := TDownloadItem(inherited Add); -end; - -function TDownloadList.Insert(Index: Integer): TDownloadItem; -begin - Result := Add; - Result.Index := Index; -end; - -function TDownloadList.IsListed(const aRef: WideString): Boolean; -var - I: Integer; -begin - Result := True; - for I := 0 to Count - 1 do - if CompareText(LowerCase(Items[I].FRef), LowerCase(aRef)) = 0 then - Exit; - Result := False; -end; - -constructor TDownloadList.Create(IEMD: TIEMultiDownload); -begin - inherited Create(TDownloadItem); - FIEMD := IEMD; -end; - -function TDownloadList.GetOwner: TPersistent; -begin - Result := FIEMD; -end; - -//------------------------------------------------------------------------------- - -function TIEMultiDownload.AddItem(const aRef: string): TDownloadItem; -var - UP: TUrl; -begin - Result := nil; - if (not FItems.isListed(aRef)) and (FItems.Count <> FMaxItems) and - (IEDownloadTools.IsValidURL(aRef)) then - begin - slDownloadedList.Add(aRef); - UP := TUrl.Create(aRef); - UP.Clear; - UP.QueryUrl(aRef); - with FItems.Add do - begin - FRef := aRef; - FProtocol := UP.Protocol; - FRoot := UP.HostName; - FPort := UP.Port; - FFileName := UP.Document; - FUser := UP.UserName; - FPassword := UP.Password; - FPath := CharReplace(UP.UrlPath, '/', '\'); - ; - if (FPath = Trim('/')) or (FPath = Trim('\')) then - FPath := EmptyStr; - if Assigned(FOnMultiItemAdded) then - FOnMultiItemAdded(Self, FRef, FProtocol, FRoot, FPath, FFileName, - FUser, FPassword, FPort); - end; - UP.Free; - end; -end; - -procedure TIEMultiDownload.DownloadList(const aItems: TDownloadList); -var - bCancel: Boolean; - I: integer; - FDLFolder: WideString; -begin - if (not FAbort) then - for I := 0 to aItems.Count - 1 do - begin - if FAbort then - Exit; - with aItems.Items[I] do - begin - bCancel := False; - if Assigned(FOnMultiBeforeDownload) then - FOnMultiBeforeDownload(Self, aItems.Items[I].FRef, aItems.Items[I], bCancel); - if not bCancel then - begin - FDLFolder := FBaseFolder + aItems.Items[I].FRoot + - IncludeTrailingPathDelimiter(aItems.Items[I].FPath); - if (aItems.Items[I].FRef <> EmptyStr) then - Go(aItems.Items[I].FRef, aItems.Items[I].FFileName, FDLFolder); - FDLFolder := EmptyStr; - end; - end; - end; -end; - -procedure TIEMultiDownload.GoMulti(BaseUrl: WideString); -var - I: integer; -begin - Reset; - FAbort := False; - FProgress := 0; - FProgressMax := 100; - FMultiState := msBusy; - if Assigned(FOnMultiStateChange) then - FOnMultiStateChange(Self, FMultiState); - if OpenDownloadFolder = True then - begin - FOpenFolder := True; - OpenDownloadFolder := False; - end; - if DownloadFolder = EmptyStr then - DownloadFolder := IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName) + 'Downloads'); - FBaseFolder := DownloadFolder; - for I := 0 to FItems.Count - 1 do - begin - if (FItems[i].FRef <> EmptyStr) then - DownloadList(FItems); - end; - if (BaseUrl <> EmptyStr) then - begin - UrlParser := TUrl.Create(BaseUrl); - UrlParser.CrackUrl(BaseUrl, ICU_ESCAPE); - FRoorUrl := UrlParser.HostName; - with HtmlParser do - begin - FTimer := TTimer.Create(nil); - FTimer.Enabled := True; - FTimer.Interval := 500; - FTimer.OnTimer := MultiTimer; - OnAnchor := MultiAnchor; - OnImage := MultiImage; - OnParseDocument := MultiParseDocument; - OnParseComplete := MultiParseComplete; - OnParseError := MultiParseError; - OnDocInfo := MultiGetDocInfo; - OnQueryInfo := MultiGetQueryInfo; - OnStartParsing := MultiStartParsing; - Parse(BaseUrl); - if (not FGetCompleteBaseSite) then - begin - if Assigned(FTimer) then - FreeAndNil(FTimer); - DownloadList(FItems); - end - else - begin - if (not FAbort) then - for I := 0 to slDownloadedList.Count - 1 do - begin - Parse(slDownloadedList[I]); - if Assigned(FTimer) then - FreeAndNil(FTimer); - end; - DownloadList(FItems); - end; - end; - if UrlParser <> nil then - FreeAndNil(UrlParser); - end; - DoOnExit; -end; - -procedure TIEMultiDownload.MultiTimer(Sender: TObject); -begin - FProgress := FProgress + 10; - if FProgress = FProgressMax then - FProgress := 1; - if Assigned(FOnMultiParseProgress) then - FOnMultiParseProgress(Self, FProgress, FProgressMax); -end; - -procedure TIEMultiDownload.DoOnExit; -begin - if FOpenFolder then - OpenFolder(FBaseFolder); - if Assigned(FOnMultiComplete) then - FOnMultiComplete(Self, slDownloadedList); - slDownloadedList.Clear; - Items.Clear; - FMultiState := msStopped; - if Assigned(FOnMultiStateChange) then - FOnMultiStateChange(Self, FMultiState); -end; - -procedure TIEMultiDownload.Stop; - -begin - if FMultiState <> msBusy then - Exit; - FAbort := True; - HtmlParser.Stop; - CancelAll; - while State <> sBusy do - Forms.Application.ProcessMessages; - DoOnExit; -end; - -constructor TIEMultiDownload.Create(AOwner: Tcomponent); -begin - inherited Create(AOwner); - FAbout := 'TIEMultiDownload from: http://www.bsalsa.com'; - FDownloadLevel := 1; - FFromBaseSiteOnly := True; - FItems := TDownloadList.Create(Self); - FMaxItems := 100; - FMultiDownloadOptions := doAll; - slDownloadedList := TStringList.Create; - with slDownloadedList do - begin -{$IFDEF DELPHI6UP} - CaseSensitive := False; -{$ENDIF} - Sorted := True; - Duplicates := dupIgnore; - end; - FMultiState := msReady; - HtmlParser := TIEParser.Create(nil); -end; - -destructor TIEMultiDownload.Destroy; -begin - slDownloadedList.Free; - if HtmlParser <> nil then - FreeAndNil(HtmlParser); - FItems.Free; - inherited Destroy; -end; - -procedure TIEMultiDownload.SetAbout(Value: string); -begin - Exit; -end; - -procedure TIEMultiDownload.SetDownloadOptions(const Value: TMultiDownloadOptions); -begin - FMultiDownloadOptions := Value; -end; - -procedure TIEMultiDownload.SetItems(Value: TDownloadList); -begin - FItems.Assign(Value); -end; - -procedure TIEMultiDownload.SetMaxItems(Value: Integer); -begin -{$IFDEF DELPHI10_UP} - if (Value <> FItems.Capacity) then - FItems.Capacity := Value; -{$ENDIF} -end; - -procedure TIEMultiDownload.MultiAnchor(Sender: TObject; hRef, Target, Rel, Rev, Urn, - Methods, Name, Host, HostName, PathName, Port, Protocol, Search, Hash, - AccessKey, ProtocolLong, MimeType, NameProp: string; Element: TElementInfo); -var - bCancel: Boolean; -begin - if FMultiDownloadOptions = doImages then - Exit; - bCancel := False; - if (hRef <> EmptyStr) and (not StrContain('mailto', hRef)) then - begin - if FFromBaseSiteOnly and (not StrContain(FRoorUrl, hRef)) then - Exit; - if Assigned(FOnMultiGetLink) then - FOnMultiGetLink(Self, hRef, Host, HostName, PathName, Port, Protocol, - MimeType, NameProp, bCancel); - if (not bCancel) and (not FAbort) and ((FMultiDownloadOptions = doAll) and (not FAbort) - or (FMultiDownloadOptions = doPages)) then - begin - AddItem(LowerCase(hRef)); - end; - end; -end; - -procedure TIEMultiDownload.MultiImage(Sender: TObject; Source: string; ImgElement: IHTMLImgElement; Element: TElementInfo); -var - bCancel: Boolean; -begin - if FMultiDownloadOptions = doPages then - Exit; - bCancel := False; - if Source <> EmptyStr then - begin - if Assigned(FOnMultiGetImage) then - FOnMultiGetImage(Self, Source, bCancel); - if (not bCancel) and (not FAbort) and ((FMultiDownloadOptions = doAll) or - (FMultiDownloadOptions = doImages)) then - begin - AddItem(LowerCase(Source)); - end; - end; -end; - -procedure TIEMultiDownload.MultiGetDocInfo(Sender: TObject; const Text: string); -begin - if Assigned(FOnMultiGetDocInfo) and not (FAbort) then - FOnMultiGetDocInfo(Self, Text); -end; - -procedure TIEMultiDownload.MultiParseError(Sender: TObject; const ErrorCode: integer; const - Url, stError: string); -begin - if Assigned(FOnMultiParseError) then - FOnMultiParseError(Self, ErrorCode, Url, stError); -end; - -procedure TIEMultiDownload.MultiStartParsing(Sender: TObject; const aUrl: WideString); -begin - if Assigned(FOnMultiStartParsing) then - FOnMultiStartParsing(Self, aUrl); -end; - -procedure TIEMultiDownload.MultiGetQueryInfo(const MimeType, Encoding, Disposition: string); -begin - if Assigned(FOnMultiGetQueryInfo) and not (FAbort) then - FOnMultiGetQueryInfo(MimeType, Encoding, Disposition); -end; - -procedure TIEMultiDownload.MultiParseDocument(Sender: TObject; const - Res: HRESULT; stMessage: string); -begin - if (Assigned(FOnMultiParseDocument)) and not (FAbort) then - FOnMultiParseDocument(Self, Res, stMessage); -end; - -procedure TIEMultiDownload.MultiParseComplete(Sender: TObject; - Doc: IhtmlDocument2; All: IHtmlElementCollection); -begin - if Assigned(FOnMultiParseComplete) then - FOnMultiParseComplete(Self, Doc, All); - - if Assigned(FOnMultiParseProgress) then - FOnMultiParseProgress(Self, 0, 0); -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Source/IEParser.pas b/windows/src/ext/embeddedwb/Source/IEParser.pas deleted file mode 100644 index 12c3bf35aa..0000000000 --- a/windows/src/ext/embeddedwb/Source/IEParser.pas +++ /dev/null @@ -1,945 +0,0 @@ -//**************************************************** -// TIEParser * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// * -// Per Linds Larsen & * -// Eran Bodankin (bsalsa) * -// bsalsa@gmail.com * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//**************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DocUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SystemS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SystemS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRES OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a Link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: IEParser.pas,v 1.3 2009/04/05 05:55:31 bsalsa Exp $ - -unit IEParser; - -{$I EWB.inc} - -interface - -uses - Dialogs, ShlObj, ComObj, Windows, Mshtml_Ewb, ActiveX, Classes; - -type - TProxySettings = class(TPersistent) - private - FPort: Integer; - FServer: string; - FAutoLoadProxy: Boolean; - public - function SetProxy(const FullUserAgent, ProxyServer: string): Boolean; - published - property AutoLoadProxy: Boolean read FAutoLoadProxy write FAutoLoadProxy - default False; - property Port: Integer read FPort write FPort default 80; - property Server: string read FServer write FServer; - end; - -type - TElementInfo = record - ClassName: string; - Id: string; - InnerHTML: string; - InnerText: string; - Lang: string; - Language: string; - OffsetHeight: Integer; - OffsetLeft: Integer; - OffsetTop: Integer; - OffsetWIdth: Integer; - OuterHTML: string; - OuterText: string; - RecordNumber: OleVariant; - SourceIndex: Integer; - TagName: string; - Title: string; - end; - - TDownloadControlOption = ( - DownloadImages, DownloadVideos, DownloadBGSounds, DontExecuteScripts, - DontExecuteJava, DontExecuteActiveX, DontDownloadActiveX, - DownloadButDontDisplay, DontDownloadFrame, CheckPageResynchronize, - DownloadAndIgnoreCache, DontDownloadBehaviors, SuppressedMetaCharset, - DisableUrlIfEncodingUTF8, EnableUrlIfEncodingUTF8, - ForceOfflineMode, DontPerformClientPull, DownloadInSilentMode, WorkOffline); - TDownloadControlOptions = set of TDownloadControlOption; - - TParserState = (psBusy, psReady, psStopped); {A state for Busy status} - - TOnParseErrorEvent = procedure(Sender: TObject; const ErrorCode: integer; const - Url, stError: string) of object; - TOnParseDocumentEvent = procedure(Sender: TObject; const Res: HRESULT; stMessage: string) of object; - TOnStatusTextEvent = procedure(Sender: TObject; const Text: string) of object; - TOnDocInfoEvent = procedure(Sender: TObject; const Text: string) of object; - TOnParseCompleteEvent = procedure(Sender: TObject; Doc: IhtmlDocument2; All: IHtmlElementCollection) of object; - TOnBREvent = procedure(Sender: TObject; Clear: string; Element: TElementInfo) of object; - TOnHREvent = procedure(Sender: TObject; Align: string; Color, Width, Size: - OleVariant; NoShade: Boolean; Element: TElementInfo) of object; - TOnDIVEvent = procedure(Sender: TObject; Align: string; NoWrap: Boolean; - Element: TElementInfo) of object; - TOnScriptEvent = procedure(Sender: Tobject; Source: string; ScriptElement: IHTMLScriptElement; Element: TElementInfo) of object; - TOnFormEvent = procedure(Sender: TObject; Action, Dir, Encoding, Method, Target, Name: string; - Element: TElementInfo) of object; - TOnMarqueeEvent = procedure(Sender: TObject; bgColor, Width, Height: OleVariant; - Direction, Behavior: string; ScrollAmount, ScrollDelay, Loop, vSpace, hSpace: - Integer; Element: TElementInfo) of object; - TOnFontEvent = procedure(Sender: TObject; Color, Size: OleVariant; Face: string; - Element: TElementInfo) of object; - TOnBaseFontEvent = procedure(Sender: TObject; Color: OleVariant; Face: string; - Size: Integer; Element: TElementInfo) of object; - TOnBaseEvent = procedure(Sender: TObject; hRef, Target: string; Element: TElementInfo) of object; - TOnMetaEvent = procedure(Sender: TObject; HttpEquiv, Content, Name, URL, Charset: - string; Element: TElementInfo) of object; - TOnBodyEvent = procedure(Sender: TObject; Background, bgProperties: string; LeftMargin, - TopMargin, RightMargin, BottomMargin, bgColor, Text, Link, vLink, aLink: OleVariant; - NoWrap: Boolean; Element: TElementInfo) of object; -{ TOnImageEvent = procedure(Sender: TObject; Source, LowSrc, Vrml, DynSrc, Alt, Align, - UseMap: string; IsMap: Boolean; Border, Loop: OleVariant; vSpace, hSpace, Width, - Height: Integer; Element: TElementInfo) of object; } - - TOnImageEvent = procedure(Sender: TObject; Source: string; ImgElement: IHTMLImgElement; Element: TElementInfo) of object; - - TOnAnchorEvent = procedure(Sender: TObject; hRef, Target, Rel, Rev, Urn, Methods, Name, - Host, HostName, PathName, Port, Protocol, Search, Hash, AccessKey, ProtocolLong, - MimeType, NameProp: string; Element: TElementInfo) of object; - TOnCommentEvent = procedure(sender: TObject; Text: string; Element: TElementInfo) of object; - TOnElementEvent = procedure(Sender: TObject; ElementInfo: TElementInfo) of object; - TNoFramesEvent = procedure(Sender: TObject; ELement: TElementInfo) of object; - TOnFrameEvent = procedure(Sender: TObject; Source, Name: OleVariant; Element: - TElementInfo) of object; - TOnFrameSetEvent = procedure(Sender: TObject; Rows, Cols, FrameBorder, Name: - WIdeString; Border, BorderColor, FrameSpacing: OleVariant; Element: - TelementInfo) of object; - TStateChangeEvent = procedure(Sender: TObject; const State: TParserState) of object; - TOnStartParsingEvent = procedure(Sender: TObject; const aUrl: WideString) of object; - TOnQueryInfoEvent = procedure(const MimeType, Encoding, Disposition: string) of object; - - TIEParser = class( - TComponent, - IUnknown, - IDispatch, - IPropertyNotifySink, - IOleClientSite) - - private - BoolWorking: Boolean; - Element: TElementInfo; - FAbout: string; - FAnchor: TOnAnchorEvent; - FBase: TOnBaseEvent; - FBaseFont: TOnBaseFontEvent; - FBody: TOnBodyEvent; - FBr: TOnBREvent; - FBusy: Boolean; - FComment: TOnCommentEvent; - FDiv: TOnDIVEvent; - FOnParseComplete: TOnParseCompleteEvent; - FDownloadControlOptions: TDownloadControlOptions; - FDownloadOnly: Boolean; - FElement: TOnElementEvent; - FFont: TOnFontEvent; - FForm: TOnFormEvent; - FHr: TOnHREvent; - FHtml: WIdeString; - FImage: TOnImageEvent; - FMarquee: TOnMarqueeEvent; - FMimeType: string; - FDisposition: string; - FEncoding: string; - FMeta: TOnMetaEvent; - FOnBusy: TNotifyEvent; - FOnDocInfo: TOnDocInfoEvent; - FOnFrame: TOnFrameEvent; - FOnFrameset: TOnFrameSetEvent; - FOnNoFrame: TNoFramesEvent; - FOnQueryInfo: TOnQueryInfoEvent; - FOnParseDocument: TOnParseDocumentEvent; - FOnParseError: TOnParseErrorEvent; - FOnStateChange: TStateChangeEvent; - FOnStartParsing: TOnStartParsingEvent; - FOnStatusText: TOnStatusTextEvent; - FParseNoFrames: Boolean; - FProxySettings: TProxySettings; - FScript: TOnScriptEvent; - FParserState: TParserState; - FUrl: string; - LoadingFromString: Boolean; - NoFramesFound: Boolean; - StartTick: Int64; - private - function UpdateDownloadControlValues: LongInt; - protected - function ProcessDoc(const aUrl: WideString): IHTMLDocument2; - function GetContainer(out container: IOleContainer): HRESULT; stdcall; - function GetMoniker(dwAssign: Longint; dwWhichMoniker: Longint; out mk: IMoniker): HRESULT; stdcall; - function Invoke(DispId: Integer; const IId: TGUId; LocaleId: Integer; Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT; stdcall; - function LoadFromString: HRESULT; - function LoadUrlFromMoniker(const aUrl: WideString): HRESULT; - function OnChanged(dispId: TDispId): HRESULT; stdcall; - function OnRequestEdit(dispId: TDispId): HRESULT; stdcall; - function OnShowWindow(fShow: BOOL): HRESULT; stdcall; - function RequestNewObjectLayout: HRESULT; stdcall; - function SaveObject: HRESULT; stdcall; - function ShowObject: HRESULT; stdcall; - procedure Finalize; - procedure GetPageProperties; - procedure Initialize; - procedure SetAbout(const Value: string); - procedure DoQueryInfo(const aUrl: string); - public - All: IHtmlElementCollection; - Doc: IHTMLDocument2; - constructor Create(Owner: Tcomponent); override; - destructor Destroy; override; - procedure BeforeDestruction; override; - procedure Parse(const aUrl: WideString); - procedure Stop; - procedure Loaded; override; - public - property Busy: Boolean read FBusy; - property ParserState: TParserState read FParserState; - property MimeType: string read FMimeType; - property Disposition: string read FDisposition; - property Encoding: string read FEncoding; - published - property About: string read FAbout write SetAbout; - property DownloadOnly: Boolean read FDownloadOnly write FDownloadOnly default false; - property DownloadOptions: TDownloadControlOptions read FDownloadControlOptions - write FDownloadControlOptions default [DownloadImages, DownloadBGSounds, - DownloadVideos, DownloadButDontDisplay, DontExecuteScripts, - DontExecuteJava, DontExecuteActiveX, DontDownloadActiveX]; - property Html: WIdeString read FHtml write FHtml; - property OnAnchor: TOnAnchorEvent read FAnchor write FAnchor; - property OnBase: TOnBaseEvent read FBase write FBase; - property OnBaseFont: TOnBaseFontEvent read FBaseFont write FBaseFont; - property OnBody: TOnBodyEvent read FBody write FBody; - property OnBR: TOnBREvent read FBr write FBr; - property OnBusyStateChange: TNotifyEvent read FOnBusy write FOnBusy; - property OnComment: TOnCommentEvent read FComment write FComment; - property OnDiv: TOnDIVEvent read FDiv write FDiv; - property OnDocInfo: TOnDocInfoEvent read FOnDocInfo write FOnDocInfo; - property OnParseComplete: TOnParseCompleteEvent read FOnParseComplete write FOnParseComplete; - property OnElement: TOnElementEvent read FElement write FElement; - property OnFont: TOnFontEvent read FFont write FFont; - property OnForm: TOnFormEvent read FForm write FForm; - property OnFrame: TOnFrameEvent read FOnFrame write FOnFrame; - property OnFrameSet: TOnFrameSetEvent read FOnFrameset write FOnFrameset; - property OnQueryInfo: TOnQueryInfoEvent read FOnQueryInfo write - FOnQueryInfo; - property OnHR: TOnHREvent read FHr write FHr; - property OnImage: TOnImageEvent read FImage write FImage; - property OnMarquee: TOnMarqueeEvent read FMarquee write FMarquee; - property OnMeta: TOnMetaEvent read FMeta write FMeta; - property OnNoFrame: TNoFramesEvent read FOnNoFrame write FOnNoFrame; - property OnParseDocument: TOnParseDocumentEvent read FOnParseDocument write FOnParseDocument; - property OnParseError: TOnParseErrorEvent read FOnParseError write FOnParseError; - property OnScript: TOnScriptEvent read FScript write FScript; - property OnStateChange: TStateChangeEvent read FOnStateChange write - FOnStateChange; - property OnStartParsing: TOnStartParsingEvent read FOnStartParsing write FOnStartParsing; - property OnStatusText: TOnStatusTextEvent read FOnStatusText write FOnStatusText; - property ParseNoFrames: Boolean read FParseNoFrames write FParseNoFrames default False; - property ProxySettings: TProxySettings read FProxySettings write FProxySettings; - property URL: string read FUrl write FUrl; - end; - - -implementation - -uses - EwbIEConst, IEDownloadStrings, IEDownloadTools, SysUtils, IeDownloadAcc, UrlMon, WinInet; - - -function TIEParser.GetContainer(out container: IOleContainer): HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TIEParser.GetMoniker(dwAssign: Longint; dwWhichMoniker: Longint; out mk: - IMoniker): HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TIEParser.Invoke(DispId: Integer; const IId: TGUId; LocaleId: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT; -var - I: Integer; -begin - if DispId = DISPID_AMBIENT_DLCONTROL then - begin - i := UpdateDownloadControlValues; - PVariant(VarResult)^ := I; - Result := S_OK; - end - else - Result := DISP_E_MEMBERNOTFOUND; -end; - -function TIEParser.LoadFromString: HRESULT; -var - V: OleVariant; - vDocument: OleVariant; - vMimeType: OleVariant; - vHtml: OleVariant; -begin - if FHtml = '' then - begin - if Assigned(FOnParseError) then - FOnParseError(Self, E_FAIL, FUrl, Err_Load_Str + ResponseCodeToStr(E_FAIL)); - Result := E_FAIL; - end else - try - if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, S_OK, Succ_Load_Str + ResponseCodeToStr(S_OK)); - - //Stop any actions - this is important! - // FWeb.Stop; no dealing with the Document directly - // Grab the Document - V := Doc; - vDocument := V.script.Document; - vMimeType := 'text/Html'; - vHtml := FHtml; - vDocument.Open(vMimeType); - vDocument.Clear; - vDocument.Write(vHtml); - vDocument.Close; - Result := S_OK; - except - Result := E_FAIL; - end; -end; - -function TIEParser.OnChanged(dispId: TDispId): HRESULT; -var - DP: TDispParams; - vResult: OLEVariant; -begin - Result := S_OK; - if Doc = nil then Exit; - if (DISPId_READYSTATE = DispId) then - if SUCCEEDED((Doc as IHtmlDocument2).Invoke(DISPId_READYSTATE, GUId_null, - LOCALE_System_DEFAULT, DISPATCH_PROPERTYGET, DP, @vResult, nil, nil)) then - if Integer(vResult) = READYSTATE_COMPLETE then - PostThreadMessage(GetCurrentThreadId(), WM_USER_STARTWALKING, 0, 0); -end; - -function TIEParser.OnRequestEdit(dispId: TDispId): HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TIEParser.OnShowWindow(fShow: BOOL): HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TIEParser.RequestNewObjectLayout: HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TIEParser.SaveObject: HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TIEParser.ShowObject: HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TIEParser.UpdateDownloadControlValues: LongInt; -const - AcardDownloadControlValues: array[TDownloadControlOption] of Cardinal = - ($00000010, $00000020, $00000040, $00000080, - $00000100, $00000200, $00000400, $00000800, - $00001000, $00002000, $00004000, $00008000, - $00010000, $00020000, $00040000, $10000000, - $20000000, $40000000, $80000000); -var - i: TDownloadControlOption; - j: Longint; -begin - j := 0; - if (FDownloadControlOptions <> []) then - for i := Low(TDownloadControlOption) to High(TDownloadControlOption) do - if (i in FDownloadControlOptions) then - Inc(j, AcardDownloadControlValues[i]); - Result := j; -end; - -constructor TIEParser.Create(Owner: Tcomponent); -begin - inherited Create(Owner); - FAbout := 'TIEParser from: http://www.bsalsa.com'; - DownloadOptions := [DownloadImages, DownloadBGSounds, - DownloadVideos, DownloadButDontDisplay, DontExecuteScripts, - DontExecuteJava, DontExecuteActiveX, DontDownloadActiveX]; - FProxySettings := TProxySettings.Create; - FProxySettings.FPort := 80; - FParserState := psReady; -end; - -procedure TIEParser.BeforeDestruction; -begin - if FProxySettings.FAutoLoadProxy then - FProxySettings.SetProxy(EmptyStr, EmptyStr); {To restore proxy settings} - inherited BeforeDestruction; -end; - -destructor TIEParser.Destroy; -begin - if Assigned(Doc) then - Doc := nil; - if Assigned(All) then - All := nil; - FProxySettings.Free; - inherited Destroy; -end; - -procedure TIEParser.Loaded; -begin - inherited Loaded; - FBusy := False; - FParserState := psReady; - if (FProxySettings.FAutoLoadProxy) and (FProxySettings.FServer <> EmptyStr) - then - FProxySettings.SetProxy(USER_AGENT_IE6, FProxySettings.FServer + ':' + - IntToStr(FProxySettings.FPort)); -end; - -procedure TIEParser.SetAbout(const Value: string); -begin - Exit; -end; - -procedure TIEParser.GetPageProperties; -begin - if (Doc <> nil) and (Assigned(Doc)) and (Doc.readyState = 'complete') then - begin - if (Assigned(FOnDocInfo)) then - begin - try - FOnDocInfo(Self, 'Title: ' + Doc.title); - FOnDocInfo(Self, 'Design Mode: ' + Doc.designMode); - FOnDocInfo(Self, 'State: ' + Doc.readyState); - FOnDocInfo(Self, 'Referrer: ' + Doc.Referrer); - FOnDocInfo(Self, 'Location: ' + Doc.location.href); - FOnDocInfo(Self, 'Last Modified: ' + Doc.lastModified); - FOnDocInfo(Self, 'URL: ' + Doc.url); - if FHTML <> '' then - FOnDocInfo(Self, 'Domain: ' + Doc.domain); - FOnDocInfo(Self, 'Cookie: ' + Doc.cookie); - FOnDocInfo(Self, 'Charset: ' + Doc.charset); - FOnDocInfo(Self, 'Default Charset: ' + Doc.defaultCharset); - FOnDocInfo(Self, 'File Updated Date: ' + Doc.fileUpdatedDate); - FOnDocInfo(Self, 'Security: ' + Doc.security); - FOnDocInfo(Self, 'Protocol: ' + Doc.protocol); - FOnDocInfo(Self, 'Name Property: ' + Doc.nameProp); - FOnDocInfo(Self, 'Path Name: ' + Doc.location.pathname); - FOnDocInfo(Self, 'Port: ' + Doc.location.port); - FOnDocInfo(Self, 'Protocol: ' + Doc.location.protocol); - FOnDocInfo(Self, 'Host: ' + Doc.location.host); - FOnDocInfo(Self, 'Hash: ' + Doc.location.hash); - FOnDocInfo(Self, 'Search: ' + Doc.location.search); - FOnDocInfo(Self, 'Language: ' + Doc.body.language); - FOnDocInfo(Self, 'Lang: ' + Doc.body.lang); - {I Disabled the following because it my cause AV on some sites} - //FOnDocInfo(Self,'MimeType: ' + Doc.MimeType); - //FOnDocInfo(Self,'File Size: '+ Doc.fileSize); - //FOnDocInfo(Self,'File Created Date: '+ Doc.fileCreatedDate); - //FOnDocInfo(Self,'File Modified Date: '+ Doc.fileModifiedDate); - except - end; - end; - end; -end; - -function TIEParser.LoadUrlFromMoniker(const aUrl: WideString): HRESULT; -var - FMoniker: IMoniker; - FBindCtx: IBindCTX; - HR: HRESULT; -begin - HR := CreateURLMonikerEx(nil, PWideChar(aUrl), FMoniker, URL_MK_UNIFORM {URL_MK_LEGACY}); - if Failed(HR) and Assigned(FOnParseError) then - FOnParseError(Self, GetLastError, FUrl, Err_URLMEx + - ResponseCodeToStr(HR)) - else if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, HR, CreateURLMEx + ResponseCodeToStr(HR)); - - HR := CreateBindCtx(0, FBindCtx); - if Failed(HR) and Assigned(FOnParseError) then - FOnParseError(Self, GetLastError, FUrl, Err_AsyncBindCtx + - ResponseCodeToStr(HR)) - else if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, HR, CreateABindCtx + ResponseCodeToStr(HR)); - - HR := (Doc as IpersistMoniker).Load(LongBool(0), FMoniker, FBindCtx, STGM_READ); - if Failed(HR) and Assigned(FOnParseError) then - FOnParseError(Self, GetLastError, FUrl, Err_IpersistMoniker_Load - + ResponseCodeToStr(HR)) - else if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, HR, Succ_IpersistMoniker_Load + ResponseCodeToStr(HR)); - Result := HR; -end; - -function TIEParser.ProcessDoc(const aUrl: WideString): IHTMLDocument2; -var - C: Integer; - ConnectionPoint: IConnectionPoint; - HR: HRESULT; -begin - LoadingFromString := False; - if Assigned(FOnStartParsing) then - FOnStartParsing(Self, aUrl); - HR := CoCreateInstance(CLASS_HtmlDocument, nil, CLSCTX_INPROC_SERVER, - IHtmlDocument2, Doc); - if Failed(HR) and Assigned(FOnParseError) then - FOnParseError(Self, GetLastError, FUrl, Err_CoCreateInstance + ResponseCodeToStr(HR)) - else if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, HR, Succ_CoCreateInstance + ResponseCodeToStr(HR)); - - HR := (Doc as IOleObject).SetClientSite(Self as IOleClientsite); - if Failed(HR) and Assigned(FOnParseError) then - FOnParseError(Self, GetLastError, FUrl, Err_Doc_AsSetClientSite + ResponseCodeToStr(HR)) - else if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, HR, Doc_AsSetClientSite + ResponseCodeToStr(HR)); - - HR := (Doc as IOleControl).OnAmbientPropertyChange(DISPId_AMBIENT_DLCONTROL); - if Failed(HR) and Assigned(FOnParseError) then - FOnParseError(Self, GetLastError, FUrl, Err_Doc_AsAmbientPropertyChange + ResponseCodeToStr(HR)) - else if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, HR, Doc_AsAmbientPropertyChange + ResponseCodeToStr(HR)); - - HR := (Doc as IConnectionPointContainer).FindConnectionPoint(IpropertyNotifySink, ConnectionPoint); - if Failed(HR) and Assigned(FOnParseError) then - FOnParseError(Self, GetLastError, FUrl, Err_Doc_AsPointContainer + ResponseCodeToStr(HR)) - else if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, HR, Doc_AsPointContainer + ResponseCodeToStr(HR)); - - HR := (ConnectionPoint.Advise(Self as IPropertyNotifySink, C)); - if Failed(HR) and Assigned(FOnParseError) then - FOnParseError(Self, GetLastError, FUrl, Err_Doc_AsAdvise + ResponseCodeToStr(HR)) - else if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, HR, Doc_AsAdvise + ResponseCodeToStr(HR)); - DoQueryInfo(FUrl); - Result := Doc; -end; - -procedure TIEParser.DoQueryInfo(const aUrl: string); -var - hInet: HINTERNET; - hConnect: HINTERNET; - infoBuffer: array[0..1024] of Char; - dwReserved: DWORD; - bufLen: DWORD; - lbResult: LongBool; -begin - hInet := InternetOpen('TDownload', - INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY, nil, nil, 0); - if hInet <> nil then - begin - try - hConnect := InternetOpenUrl(hInet, PChar(Url), nil, 0, INTERNET_FLAG_NO_UI, 0); - if Assigned(hConnect) then - begin - try - dwReserved := 0; - bufLen := Length(infoBuffer); - - lbResult := HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_TYPE, @infoBuffer[0], bufLen, dwReserved); - if lbResult then - FMimeType := infoBuffer - else - FMimeType := EmptyStr; - - lbResult := HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_ENCODING, @infoBuffer, bufLen, dwReserved); - if lbResult then - FEncoding := Encoding - else - FEncoding := EmptyStr; - - lbResult := HttpQueryInfo(hConnect, HTTP_QUERY_CONTENT_DISPOSITION, @infoBuffer, bufLen, dwReserved); - if lbResult then - FDisposition := Disposition - else - FDisposition := EmptyStr; - - if Assigned(FOnQueryInfo) then - FOnQueryInfo(FMimeType, FEncoding, FDisposition); - finally - InternetCloseHandle(hConnect); - end; - end; - finally - InternetCloseHandle(hInet); - end; - end; -end; - -procedure TIEParser.Initialize; -begin - Doc := nil; - All := nil; - FBusy := True; - FParserState := psBusy; - if Assigned(FOnStateChange) then - FOnStateChange(Self, FParserState); - BoolWorking := True; - StartTick := GetTickCount; - FUrl := Url; - LoadingFromString := False; - NoFramesFound := False; - CoInitialize(nil); -end; - -procedure TIEParser.Stop; -begin - if Assigned(Doc) then - Doc := nil; - if Assigned(All) then - All := nil; - FreeAndNil(Element); - FUrl := EmptyStr; - FBusy := False; - Finalize; -end; - -procedure TIEParser.Parse(const aUrl: WideString); - function ContainsAboutBlank(const s: string): Boolean; - begin - Result := Pos('about:blank', LowerCase(s)) > 0; - end; - -var - E: IHtmlElement; - X: Integer; - Msg: TMsg; - v, u: OleVariant; - ParseTime, NoFramesContent, Us: string; - HR: HRESULT; -begin - Initialize; - FUrl := aUrl; - ProcessDoc(aUrl); - NoFramesContent := ''; - if FUrl <> '' then - begin - HR := S_OK; - if IEDownloadTools.IsValidURL(FUrl) then - HR := LoadUrlFromMoniker(FUrl); - if Failed(HR) and Assigned(FOnParseError) then - FOnParseError(Self, GetLastError, FUrl, Err_Load_Mon + ResponseCodeToStr(HR)) - else if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, HR, Succ_Load_Mon + ResponseCodeToStr(HR)); - end - else - HR := LoadFromString; - - if (Doc = nil) then - begin - if Failed(HR) and Assigned(FOnParseError) then - FOnParseError(Self, GetLastError, FUrl, Err_Load_Str + ResponseCodeToStr(HR)); - Exit; - end - - else - begin - while (BoolWorking and GetMessage(Msg, 0, 0, 0)) do - begin - if ((Msg.Message = WM_USER_STARTWALKING) and (Msg.hWnd = 0)) then - begin - BoolWorking := False; - All := Doc.Get_all; - if (All <> nil) and (All.length <= 4) then - begin - if Assigned(FOnParseError) then - FOnParseError(Self, E_FAIL, FUrl, Doc_Error + ResponseCodeToStr(E_FAIL)); - Exit; - end; - if (All <> nil) and not FDownloadOnly then - for x := 0 to All.length - 1 do - begin - E := All.item(x, 0) as IHTMLElement; - with Element do - begin - ClassName := E.className; - Id := E.id; - TagName := E.tagName; - Title := E.title; - Language := E.language; - SourceIndex := E.sourceIndex; - RecordNumber := E.recordNumber; - Lang := E.lang; - OffsetLeft := E.offsetLeft; - OffsetTop := E.offsetTop; - OffsetWidth := E.offsetWidth; - OffsetHeight := E.offsetHeight; - InnerHtml := E.innerHtml; - InnerText := E.innerText; - OuterHtml := E.outerHtml; - OuterText := E.outerText; - end; - if Assigned(FElement) then - FElement(Self, Element); - - case StrToCase(E.TagName, ['FRAMESET', 'FRAME', 'NOFRAMES', 'A', '!', - 'COMMENT', 'IMG', 'BODY', 'BASE', 'BASEFONT', 'FONT', 'META', 'MARQUEE', - 'FORM', 'SCRIPT', 'DIV', 'HR', 'BR']) of - 0: // FRAMESET - begin - if Assigned(FOnFrameSet) then - with All.item(x, 0) as IHTMLFrameSetElement do - FOnFrameSet(Self, Rows, Cols, FrameBorder, Name, - Border, BorderColor, FrameSpacing, Element); - end; - 1: // FRAME - begin - if Assigned(FOnFrame) then - begin - v := E.GetAttribute('Name', 0); - u := E.GetAttribute('Src', 0); // JohnS ('Source' -> 'Src') - Us := u; - if LoadingFromString and ContainsAboutBlank(Us) then - Delete(Us, 1, 11); - FOnFrame(Self, Us, v, Element); - end; - end; - 2: // NOFRAMES - begin - NoFramesContent := E.InnerHtml; - if Assigned(FOnNoFrame) then - FOnNoFrame(Self, Element); - end; - 3: // A - begin - if Assigned(FAnchor) then - with All.item(x, 0) as IHTMLAnchorElement do - begin - Us := hRef; - if LoadingFromString and ContainsAboutBlank(Us) then - Delete(Us, 1, 11); - FAnchor(Self, Us, target, rel, rev, Urn, Methods, - name, host, hostname, pathname, port, protocol, - Search, Hash, AccessKey, - ProtocolLong, MimeType, NameProp, Element); - end; - end; - 4 or 5: // !, COMMENT - begin - if Assigned(FComment) then - with All.item(x, 0) as IHTMLCommentElement do - FComment(Self, Text, Element) - else - if (E.TagName = 'IMG') and Assigned(FImage) then - with All.item(x, 0) as IHtmlImgElement do - begin - Us := Src; - if LoadingFromString and ContainsAboutBlank(Us) then - Delete(Us, 1, 11); - FImage(Self, Us, All.item(x, 0) as IHTMLImgElement, Element); - end; - end; - - 6: // IMG - begin - if Assigned(FImage) then - with All.item(x, 0) as IHTMLImgElement do - begin - Us := Src; - if LoadingFromString and ContainsAboutBlank(Us) then - Delete(Us, 1, 11); - FImage(Self, Us, All.item(x, 0) as IHTMLImgElement, Element); - end; - end; - 7: // BODY - begin - if Assigned(FBody) then - with All.item(x, 0) as IHTMLBodyElement do - FBody(Self, Background, bgProperties, - LeftMargin, TopMargin, RightMargin, BottomMargin, bgColor, Text, Link, - vLink, aLink, NoWrap, Element); - end; - 8: // BASE - begin - if Assigned(FBase) then - with All.item(x, 0) as IHTMLBaseElement do - begin - Us := hRef; - if LoadingFromString and ContainsAboutBlank(Us) then - Delete(Us, 1, 11); - FBase(Self, Us, Target, Element); - end; - end; - 9: // BASEFONT - begin - if Assigned(FBaseFont) then - with All.item(x, 0) as IHTMLBaseFontElement do - FBaseFont(Self, color, face, size, Element); - end; - 10: // FONT - begin - if Assigned(FFont) then - with All.item(x, 0) as IHTMLFontElement do - FFont(Self, color, size, face, Element); - end; - 11: // META - begin - if Assigned(FMeta) then - with All.item(x, 0) as IHTMLMetaElement do - FMeta(Self, httpEquiv, content, name, url, - charset, Element); - end; - 12: // MARQUEE - begin - if Assigned(FMarquee) then - with All.item(x, 0) as IHTMLMarqueeElement do - FMarquee(Self, bgColor, Width, Height, Direction, Behavior, - ScrollAmount, ScrollDelay, Loop, vSpace, hSpace, Element); - end; - 13: // FORM - begin - if Assigned(FForm) then - with All.item(x, 0) as IHTMLFormElement do - FForm(Self, Action, Dir, Encoding, Method, - Target, Name, Element); - end; - 14: // SCRIPT - begin - if Assigned(FScript) then - with All.item(x, 0) as IHTMLScriptElement do - begin - Us := Src; - if LoadingFromString and ContainsAboutBlank(Us) then - Delete(Us, 1, 11); - FScript(Self, Us, All.item(x, 0) as IHTMLScriptElement, Element); - end; - - end; - 15: // DIV - containers - begin - if Assigned(FDiv) then - with All.item(x, 0) as IHTMLDivElement do - FDiv(Self, Align, NoWrap, Element); - end; - 16: // HR - horizontal rule - begin - if Assigned(FHr) then - with All.item(x, 0) as IHTMLHRElement do - FHr(Self, Align, Color, Width, Size, NoShade, Element); - end; - 17: // BR - line break - begin - if Assigned(FBr) then - with All.item(x, 0) as IHTMLBRElement do - FBr(Self, Clear, Element); - - end; - end; - end; - GetPageProperties; - end - else - DispatchMessage(Msg); - end; - end; - FUrl := ''; - if (NoFramesFound) and (ParseNoFrames) then - begin - FHtml := NoFramesContent; - Parse(Url); - end; - if Assigned(FOnParseComplete) then - FOnParseComplete(Self, Doc, All); - ParseTime := FormatTickToTime(GetTickCount - StartTick); - if (Assigned(FOnParseDocument)) then - FOnParseDocument(Self, S_OK, Done + ' Process Time: ' + ParseTime); - Finalize; -end; - -procedure TIEParser.Finalize; -begin - FHtml := ''; - FBusy := False; - FParserState := psStopped; - CoUninitialize; - if Assigned(FOnStateChange) then - FOnStateChange(Self, FParserState); -end; - -function TProxySettings.SetProxy(const FullUserAgent, ProxyServer: string): - Boolean; -var - intList: INTERNET_PER_CONN_OPTION_List; - dwBufSize: DWORD; - hInternet: Pointer; - intOptions: array[1..3] of INTERNET_PER_CONN_OPTION; -begin - Result := False; - dwBufSize := SizeOf(intList); - intList.dwSize := SizeOf(intList); - intList.pszConnection := nil; - intList.dwOptionCount := High(intOptions); - // the highest index of the array (in this case 3) - intOptions[1].dwOption := INTERNET_PER_CONN_FLAGS; - intOptions[1].Value.dwValue := PROXY_TYPE_DIRECT or PROXY_TYPE_PROXY; - intOptions[2].dwOption := INTERNET_PER_CONN_PROXY_SERVER; - intOptions[2].Value.pszValue := PChar(ProxyServer); - intOptions[3].dwOption := INTERNET_PER_CONN_PROXY_BYPASS; - intOptions[3].Value.pszValue := ''; - intList.intOptions := @intOptions; - hInternet := InternetOpen(PChar(FullUserAgent), INTERNET_OPEN_TYPE_DIRECT, - nil, nil, 0); - if hInternet <> nil then - try - Result := InternetSetOption(hInternet, - INTERNET_OPTION_PER_CONNECTION_OPTION, - @intList, dwBufSize); - Result := Result and InternetSetOption(hInternet, INTERNET_OPTION_REFRESH, - nil, 0); - finally - InternetCloseHandle(hInternet) - end; -end; -{End of Proxy Settings-----------------------------------------------------------} - - -initialization - OleInitialize(nil); - -finalization - try - OleUninitialize; - except - end; - -end. - - diff --git a/windows/src/ext/embeddedwb/Source/IETravelLog.pas b/windows/src/ext/embeddedwb/Source/IETravelLog.pas deleted file mode 100644 index 5a4c46d9f1..0000000000 --- a/windows/src/ext/embeddedwb/Source/IETravelLog.pas +++ /dev/null @@ -1,289 +0,0 @@ -//*********************************************************** -// IETravelLog * -// * -// Freeware Component * -// by * -// Per Linds Larsen * -// Updated by Eran Bodankin - bsalsa * -// bsalsa@gmail.com * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: IETravelLog.pas,v 1.3 2006/12/18 14:13:07 bsalsa Exp $ - -unit IETravelLog; - -interface - -{$I EWB.inc} - -uses - Activex, Windows, Classes, EmbeddedWB, EwbIEConst, EwbAcc; - -type - TOnEntryEvent = procedure(Title, Url: WideString; var Cancel: Boolean) of object; - TOnGetCountEvent = procedure(Flags: Cardinal; out Entries: Cardinal) of object; - TOnRemoveEntryEvent = procedure(Name: WideString; var Cancel: Boolean) of object; - TOnTravelToEvent = procedure(OffSet: Integer; var Cancel: Boolean) of object; - - TIETravelLog = class(TComponent) - private - { Private declarations } - FAbout: string; - FEmbeddedWB: TEmbeddedWB; - FEnabled: Boolean; - fOnEntry: TOnEntryEvent; - FOnGetCount: TOnGetCountEvent; - FOnRemoveEntry: TOnRemoveEntryEvent; - FOnTravelTo: TOnTravelToEvent; - procedure SetAbout(const Value: string); - protected - { Protected declarations } - Entry: ITravelLogEntry; - Enum: IEnumTravelLogEntry; - Stg: ITravelLogStg; - procedure _Enumerate(Flags: Cardinal); - public - { Public declarations } - constructor Create(AOwner: TComponent); override; - function Connect: Boolean; - function CreateEntry(const OffSet: Integer; const Url, Title: WideString): HRESULT; - function GetCount(Flags: DWORD; out Entries: DWORD): HRESULT; - function GetRelativeEntry(OffSet: Integer; out Title, Url: WideString): HRESULT; - function RemoveEntry(OffSet: Integer): HRESULT; - function RemoveEntryByTitle(const Title: WideString): HRESULT; - function RemoveEntryByUrl(const Url: WideString): HRESULT; - function TravelTo(OffSet: Integer): HRESULT; - procedure ClearSession; - procedure Enumerate; - procedure EnumerateBack; - procedure EnumerateForward; - published - { Published declarations } - property About: string read FAbout write SetAbout; - property EmbeddedWB: TEmbeddedWB read FEmbeddedWB write FEmbeddedWB; - property OnEntry: TOnEntryEvent read fOnEntry write fOnEntry; - property OnGetCount: TOnGetCountEvent read FOnGetCount write FOnGetCount; - property OnRemoveEntry: TOnRemoveEntryEvent read FOnRemoveEntry write FOnRemoveEntry; - property OnTravelTo: TOnTravelToEvent read FOnTravelTo write FOnTravelTo; - property Enabled: boolean read FEnabled write FEnabled default True; - end; - -implementation - -{ TIETravelLog } - -constructor TIETravelLog.Create(AOwner: TComponent); - -begin - inherited Create(AOwner); - FAbout := 'TIETravelLog. ' + WEB_SITE; - FEnabled := True; -end; - -procedure TIETravelLog.SetAbout(const Value: string); -begin - Exit; -end; - -function TIETravelLog.TravelTo(OffSet: Integer): HRESULT; -var - Cancel: Boolean; -begin - Cancel := False; - Result := S_False; - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) and - (Stg.GetRelativeEntry(OffSet, Entry) = S_OK) then - begin - if Assigned(FOnTravelTo) then - FOnTravelTo(OffSet, Cancel); - end; - if not Cancel then - Result := Stg.TravelTo(Entry); -end; - -procedure TIETravelLog._Enumerate(Flags: Cardinal); -var - Cancel: Boolean; - Fetched: Cardinal; - Url, Title: PWideChar; -begin - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) then - begin - Cancel := False; - Stg.EnumEntries(Flags, Enum); - if Enum <> nil then - while (Enum.next(1, Entry, Fetched) = S_OK) and not Cancel do - begin - if Assigned(fOnEntry) and Succeeded(Entry.GetTitle(Title)) and Succeeded(Entry.GetUrl(Url)) then - fOnEntry(Title, Url, Cancel); - end; - end; -end; - -procedure TIETravelLog.EnumerateBack; -begin - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) then - _Enumerate(TLEF_RELATIVE_BACK); -end; - -procedure TIETravelLog.EnumerateForward; -begin - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) then - _Enumerate(TLEF_RELATIVE_FORE); -end; - -function TIETravelLog.Connect: Boolean; -var - ISP: IServiceProvider; -begin - Result := False; - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) then - begin - if Succeeded(EmbeddedWB.Application.QueryInterface(IServiceprovider, ISP)) and - Succeeded(ISP.QueryService(SID_STravelLogCursor, IID_ITravelLogStg, Stg)) then - Result := True; - end; -end; - -function TIETravelLog.GetRelativeEntry(OffSet: Integer; out Title, Url: WideString): HRESULT; -var - WUrl, WTitle: PWideChar; -begin - Result := S_False; - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) then - Result := Stg.GetRelativeEntry(OffSet, Entry); - if Result = S_OK then - begin - if Succeeded(Entry.GetTitle(WTitle)) then - Title := WTitle; - if Succeeded(Entry.GetUrl(WUrl)) then - Url := WUrl; - end; -end; - -function TIETravelLog.GetCount(Flags: DWORD; out Entries: DWORD): HRESULT; -begin - Result := S_False; - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) then - begin - Result := Stg.GetCount(Flags, Entries); - if Assigned(FOnGetCount) then - FOnGetCount(Flags, Entries); - end; -end; - -function TIETravelLog.CreateEntry(const OffSet: Integer; const Url, Title: WideString): HRESULT; -var - Dummy: ITravelLogEntry; -begin - Result := S_False; - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) and - (Stg.GetRelativeEntry(OffSet, Entry) = S_OK) - then - Result := Stg.CreateEntry(StringToOleStr(Url), StringToOleStr(Title), Entry, TRUE, Dummy) -end; - -procedure TIETravelLog.Enumerate; -begin - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) then - _Enumerate(TLEF_ABSOLUTE); -end; - -function TIETravelLog.RemoveEntry(OffSet: Integer): HRESULT; -var - Title, Url: WideString; - Cancel: Boolean; -begin - Cancel := False; - Result := S_False; - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) and - (GetRelativeEntry(OffSet, Title, Url) = S_OK) then - begin - if Assigned(FOnRemoveEntry) then - FOnRemoveEntry(Title, Cancel); - if not Cancel then - Result := RemoveEntryByUrl(Url); - end; -end; - -function TIETravelLog.RemoveEntryByTitle(const Title: WideString): HRESULT; -var - Fetched: Cardinal; - pTitle: PWideChar; - Cancel: Boolean; -begin - Cancel := False; - Result := S_False; - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) and - (Stg.EnumEntries(TLEF_ABSOLUTE, Enum) = S_OK) then - while (Enum.next(1, Entry, Fetched) = S_OK) do - begin - if Succeeded(Entry.GetTitle(pTitle)) and (Title = pTitle) then - begin - if Assigned(FOnRemoveEntry) then - FOnRemoveEntry(Title, Cancel); - if not Cancel then - Result := Stg.RemoveEntry(Entry); - end; - end; -end; - -function TIETravelLog.RemoveEntryByUrl(const Url: WideString): HRESULT; -var - Fetched: Cardinal; - pUrl: PWideChar; - Cancel: Boolean; -begin - Cancel := False; - Result := S_False; - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) and - (Stg.EnumEntries(TLEF_ABSOLUTE, Enum) = S_OK) - then - while (Enum.next(1, Entry, Fetched) = S_OK) do - begin - if Succeeded(Entry.GetUrl(pUrl)) and (Url = pUrl) then - begin - if Assigned(FOnRemoveEntry) then - FOnRemoveEntry(Url, Cancel); - if not Cancel then - Result := Stg.RemoveEntry(Entry); - end; - end; -end; - -procedure TIETravelLog.ClearSession; -var - Fetched: Cardinal; -begin - if FEnabled and Assigned(EmbeddedWB) and Assigned(EmbeddedWB.Document) and - (Stg.EnumEntries(TLEF_ABSOLUTE, Enum) = S_OK) then - while (Enum.Next(1, Entry, Fetched) = S_OK) do - Stg.RemoveEntry(Entry); -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/ImportFavorites.pas b/windows/src/ext/embeddedwb/Source/ImportFavorites.pas deleted file mode 100644 index 9a13d955ac..0000000000 --- a/windows/src/ext/embeddedwb/Source/ImportFavorites.pas +++ /dev/null @@ -1,495 +0,0 @@ -//*********************************************************** -// Import Favorites * -// * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@gmail.com * -// * -// Based on ideas by: Troels Jakobsen * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: ImportFavorites.pas,v 1.2 2006/11/15 21:01:42 sergev Exp $ - -unit ImportFavorites; - -interface - -{$I EWB.inc} - -uses - Windows, SysUtils, Classes, Dialogs, IniFiles, SHDocVw_EWB, - EmbeddedWB, EWBCore, Registry, ComCtrls; - -const - ERROR_FAV_CURRENT_PATH_INVALID = 101; - ERROR_FAV_CURRENT_FILENAME_INVALID = 102; - ERROR_FAV_TARGET_FILENAME_EXTINVALID = 103; - ERROR_FAV_TARGET_SUBFOLDER_INVALID = 104; - ERROR_FAV_NO_SUCCESS_MESSAGE = 105; - ERROR_FAV_FILE_NOTEXIST = 106; - -type - TOnErrorEvent = procedure(Sender: TObject; const ErrorMsg: string; - const ErrorCode: Byte) of object; - - PUrlRec = ^TUrlRec; - TUrlRec = record - Rep: string; - UrlName: string; - UrlPath: string; - Level: Integer; - end; - - TLocalization = class(TPersistent) - private - FCurrentPathInvalid: string; - FCurrentFileNameInvalid: string; - FTargetFileNameExtInvalid: string; - FTargetSubFolderInvalid: string; - FNoSuccessMessage: string; - FChangeItMessage: string; - FFavFileNotExistInPath: string; - published - property CurrentPathInvalid: string read FCurrentPathInvalid write FCurrentPathInvalid; - property CurrentFileNameInvalid: string read FCurrentFileNameInvalid write FCurrentFileNameInvalid; - property TargetFileNameExtInvalid: string read FTargetFileNameExtInvalid write FTargetFileNameExtInvalid; - property TargetSubFolderInvalid: string read FTargetSubFolderInvalid write FTargetSubFolderInvalid; - property NoSuccessMessage: string read FNoSuccessMessage write FNoSuccessMessage; - property ChangeItMessage: string read FChangeItMessage write FChangeItMessage; - property FavFileNotExistInPath: string read FFavFileNotExistInPath write FFavFileNotExistInPath; - end; - -type - TImportFavorite = class(TComponent) - private - FBookmarkList: TStringList; - FLocalization: TLocalization; - FAbout: string; - FCurrentFileName: string; - FCurrentFilePath: string; - FEnabled: Boolean; - FFavoritesPath: string; - FNavigateOnComplete: Boolean; - FShowSuccessMessage: Boolean; - FStatusBar: TStatusBar; - FSuccessMessage: TStrings; - FTargetSubFolder: string; - FWebBrowser: TCustomEmbeddedWB; - L: TList; - LvlList: TStringList; - TargetFolder: string; - FOnError: TOnErrorEvent; - function FindFolder(HtmlStr: string; var Lvl: Integer): Boolean; - function FindSectionEnd(HtmlStr: string; var Lvl: Integer): Boolean; - function FindUrl(HtmlStr: string; Lvl: Integer): Boolean; - function MakeFolder(Folder: string): Boolean; - function MakeUrlFile(UrlName, UrlPath: string): Boolean; - procedure Convert(Folder: string); - procedure GetFavoritesFolder(var Folder: string); - procedure MakeFavorites; - procedure ReplaceIllChars(var S: string); - procedure ScanBmkLine(I: Integer; Lvl: Integer); - procedure SetAbout(Value: string); - procedure SetSuccessMessage(Value: TStrings); - function Check: Boolean; - public - SuccessFlag: Boolean; - NavigatePath: string; - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function ImportFavorites: Boolean; - published - property About: string read FAbout write SetAbout; - property CurrentFileName: string read FCurrentFileName write FCurrentFileName; - property CurrentFilePath: string read FCurrentFilePath write FCurrentFilePath; - property Enabled: boolean read FEnabled write FEnabled default True; - property FavoritesPath: string read FFavoritesPath write FFavoritesPath; - property NarigateOnComplete: Boolean read FNavigateOnComplete write FNavigateOnComplete default False; - property ShowSuccessMessage: Boolean read FShowSuccessMessage write FShowSuccessMessage default True; - property StatusBar: TStatusBar read FStatusBar write FStatusBar; - property SuccessMessage: TStrings read FSuccessMessage write SetSuccessMessage; - property TargetSubFolder: string read FTargetSubFolder write FTargetSubFolder; - property WebBrowser: TCustomEmbeddedWB read FWebBrowser write FWebBrowser; - property OnError: TOnErrorEvent read FOnError write FOnError; - property Localization: TLocalization read FLocalization write FLocalization; - end; - -implementation - -uses - EwbIEConst, EwbCoreTools; - -constructor TImportFavorite.Create; -begin - FAbout := 'TImportFavorite by bsalsa. ' + WEB_SITE; - FCurrentFileName := 'newbook.htm'; - FCurrentFilePath := 'C:\'; - FTargetSubFolder := 'Imported Bookmarks'; - FFavoritesPath := 'Auto'; - FSuccessMessage := TStringList.Create; - FSuccessMessage.Add('The bookmarks have been imported into your favorites successfully!' - + #10 + #13 + 'You can find them in your favorites as a sub folder.'); - - FLocalization := TLocalization.Create; - FLocalization.FCurrentPathInvalid := 'The favorites file path is invalid.'; - FLocalization.FCurrentFileNameInvalid := 'The Current file name is invalid.'; - FLocalization.FTargetFileNameExtInvalid := 'The target file name extention is invalid.'; - FLocalization.FTargetSubFolderInvalid := 'You must specify a proper sub folder name.'; - FLocalization.FFavFileNotExistInPath := 'The specified favorite file does not exist in the current path.'; - FLocalization.NoSuccessMessage := 'You must enter a SuccessMessage or turn off messages.'; - FLocalization.ChangeItMessage := 'Please change it.'; - - FShowSuccessMessage := True; - SuccessFlag := False; - FEnabled := True; - FNavigateOnComplete := False; - inherited; -end; - -destructor TImportFavorite.Destroy; -begin - FSuccessMessage.Free; - inherited Destroy; -end; - -procedure TImportFavorite.SetSuccessMessage(Value: TStrings); -begin - FSuccessMessage.Assign(Value) -end; - -procedure TImportFavorite.SetAbout(Value: string); -begin - Exit; -end; - -procedure TImportFavorite.GetFavoritesFolder(var Folder: string); -var - Registry: TRegistry; -begin - Registry := TRegistry.Create; - try - Registry.RootKey := HKEY_CURRENT_USER; - Registry.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False); - Folder := Registry.ReadString('Favorites'); - finally - Registry.Free; - end; -end; - -function SortFunction(Item1, Item2: Pointer): Integer; -var - Rec1, Rec2: PUrlRec; -begin - Result := 0; - Rec1 := Item1; - Rec2 := Item2; - if Rec1.Rep < Rec2.Rep then - Result := -1; - if Rec1.Rep > Rec2.Rep then - Result := 1; - if Rec1.Rep = Rec2.Rep then - begin - if Rec1.UrlName < Rec2.UrlName then - Result := -1; - if Rec1.UrlName > Rec2.UrlName then - Result := 1; - if Rec1.UrlName = Rec2.UrlName then - Result := 0; - end; -end; - -procedure TImportFavorite.Convert(Folder: string); -var - I: Integer; -begin - L := TList.Create; - try - LvlList := TStringList.Create; - try - LvlList.Add(''); - ScanBmkLine(0, 0); - L.Sort(SortFunction); - MakeFavorites; - for I := 0 to L.Count - 1 do - Dispose(PUrlRec(L[I])); - finally - LvlList.Free; - end; - finally - L.Free; - end; -end; - -procedure TImportFavorite.ScanBmkLine(I: Integer; Lvl: Integer); -begin - if I < FBookmarkList.Count - 1 then - begin - if not FindSectionEnd(FBookmarkList[I], Lvl) then - if not FindUrl(FBookmarkList[I], Lvl) then begin end; - FindFolder(FBookmarkList[I], Lvl); - ScanBmkLine(I + 1, Lvl); - end; -end; - -function TImportFavorite.FindFolder(HtmlStr: string; var Lvl: Integer): Boolean; -const - FolderSubStr: string = ' 0); - if J <> 0 then - begin - Inc(Lvl); - FillChar(S, SizeOf(S), 0); - Idx := 1; - for J := 1 to Length(HtmlStr) - 1 do - if HtmlStr[J] = '>' then - Idx := J + 1; - for J := Idx to Length(HtmlStr) - 5 do - S[J - Idx] := HtmlStr[J]; - - Folder := S; - ReplaceIllChars(Folder); - if LvlList.Count > Lvl then - LvlList[Lvl] := Folder - else - LvlList.Add(Folder); - FName := LvlList[Lvl]; - for I := Lvl - 1 downto 1 do - FName := LvlList[I] + '\' + FName; - UrlRec := New(PUrlRec); - UrlRec.Rep := FName; - UrlRec.UrlName := ''; - UrlRec.UrlPath := ''; - UrlRec.Level := Lvl; - L.Add(UrlRec); - end; -end; - -function TImportFavorite.FindUrl(HtmlStr: string; Lvl: Integer): Boolean; -const - UrlSubStr: string = 'http://'; -var - J, K: Integer; - S1, S2, S3: array[0..255] of Char; - Apo1, Apo2: PChar; - I: Integer; - SPath, SName: string; - FName: string; - UrlRec: PUrlRec; -begin - J := Pos(UrlSubStr, HtmlStr); - Result := (J <> 0); - if J <> 0 then - begin - FillChar(S1, SizeOf(S1), 0); - FillChar(S2, SizeOf(S2), 0); - FillChar(S3, SizeOf(S3), 0); - SPath := HtmlStr; - Apo1 := StrScan(PChar(SPath), '"'); - for K := 1 to StrLen(Apo1) do - S1[K - 1] := Apo1[K]; - for K := 0 to Pos('"', S1) - 2 do - S2[K] := S1[K]; - SPath := S2; - Apo2 := StrScan(Apo1, '>'); - for K := 1 to StrLen(Apo2) do - S1[K - 1] := Apo2[K]; - for K := 0 to Pos('<', S1) - 2 do - S3[K] := S1[K]; - SName := S3; - ReplaceIllChars(SName); - FName := LvlList[Lvl]; - for I := Lvl - 1 downto 1 do - FName := LvlList[I] + '\' + FName; - UrlRec := New(PUrlRec); - UrlRec.Rep := FName; - UrlRec.UrlName := SName; - UrlRec.UrlPath := SPath; - UrlRec.Level := Lvl; - L.Add(UrlRec); - end; -end; - -function TImportFavorite.FindSectionEnd(HtmlStr: string; var Lvl: Integer): Boolean; -const - EndSubStr: string = ''; -var - J: Integer; -begin - J := Pos(EndSubStr, HtmlStr); - Result := (J <> 0); - if J <> 0 then - Dec(Lvl); -end; - -procedure TImportFavorite.MakeFavorites; -var - I: Integer; - UrlRec: PUrlRec; -begin - for I := 0 to L.Count - 1 do - begin - UrlRec := L[I]; - if UrlRec.UrlName = '' then - MakeFolder(TargetFolder + '\' + UrlRec.Rep) - else - MakeUrlFile(TargetFolder + '\' + UrlRec.Rep + '\' + UrlRec.UrlName + '.url', UrlRec.UrlPath); - end; -end; - -function TImportFavorite.MakeFolder(Folder: string): Boolean; -begin - Result := CreateDirectory(PChar(Folder), nil); -end; - -function TImportFavorite.MakeUrlFile(UrlName, UrlPath: string): Boolean; -var - UrlFile: TIniFile; -begin - UrlFile := TIniFile.Create(UrlName); - try - UrlFile.WriteString('InternetShortcut', 'URL', UrlPath); - Result := True; - finally - UrlFile.Free; - end; -end; - -procedure TImportFavorite.ReplaceIllChars(var S: string); -const - ReplacedChar: Char = '-'; -var - I: Integer; -begin - for I := 1 to Length(S) do - if CharInSet(S[I], ['\', '/', ':', '*', '?', '"', '<', '>', '|']) then - // if S[I] in ['\', '/', ':', '*', '?', '"', '<', '>', '|'] then - S[I] := ReplacedChar; -end; - -function TImportFavorite.Check: Boolean; -begin - Result := FCurrentFilePath <> ''; - if not Result then - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.FCurrentPathInvalid + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_CURRENT_PATH_INVALID); - Result := False; - end - else if FCurrentFileName = '' then - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.FCurrentFileNameInvalid + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_CURRENT_FILENAME_INVALID); - Result := False; - end - else if not (Pos('htm', FCurrentFileName) > 1) then - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.FTargetFileNameExtInvalid + #10#13 + FLocalization.ChangeItMessage + '"*.htm"', ERROR_FAV_TARGET_FILENAME_EXTINVALID); - Result := False; - end - else if FTargetSubFolder = '' then - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.FTargetSubFolderInvalid + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_TARGET_SUBFOLDER_INVALID); - Result := False; - end - else if FSuccessMessage.Text = '' then - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.NoSuccessMessage + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_NO_SUCCESS_MESSAGE); - Result := False; - end - else if not FileExists(FCurrentFilePath + '\' + FCurrentFileName) then - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.FFavFileNotExistInPath + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_NO_SUCCESS_MESSAGE); - Result := False; - end -end; - -function TImportFavorite.ImportFavorites: Boolean; -var - R: TSearchRec; - FavFolder: string; -begin - Result := Enabled; - if Result and Check then - begin - FBookmarkList := TStringList.Create; - try - FBookmarkList.LoadFromFile(FCurrentFilePath + FCurrentFileName); - if FFavoritesPath = 'Auto' then - GetFavoritesFolder(FavFolder) - else - FavFolder := FFavoritesPath; - if (FavFolder <> '') then - begin - CreateDirectory(PChar(FavFolder + '\' + TargetSubFolder), nil); - if FindFirst(FavFolder + '\' + TargetSubFolder, faDirectory, R) = 0 then - begin - TargetFolder := FavFolder + '\' + TargetSubFolder; - Convert(FavFolder + '\' + TargetSubFolder); - if FShowSuccessMessage then - MessageDlg(FSuccessMessage.Text, mtInformation, [MbOk], 0); - if Assigned(FStatusBar) then - FStatusBar.SimpleText := SuccessMessage.Text; - SuccessFlag := True; - Result := True; - if FNavigateOnComplete then - if Assigned(FWebBrowser) then - FWebBrowser.Navigate(FCurrentFilePath + FCurrentFileName) - else - MessageDlg(ASS_MESS, mtError, [MbOk], 0); - end - else - begin - if Assigned(FOnError) then - FOnError(Self, FLocalization.FTargetSubFolderInvalid + #10#13 + FLocalization.ChangeItMessage, ERROR_FAV_TARGET_SUBFOLDER_INVALID); - SuccessFlag := False; - end; - FindClose(R); - end; - finally - FBookmarkList.Free; - end; - end; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Source/LibXmlComps.pas b/windows/src/ext/embeddedwb/Source/LibXmlComps.pas deleted file mode 100644 index 73a99d9d97..0000000000 --- a/windows/src/ext/embeddedwb/Source/LibXmlComps.pas +++ /dev/null @@ -1,110 +0,0 @@ -(** -=============================================================================================== -Name : LibXmlComps -=============================================================================================== -Project : All Projects processing XML documents -=============================================================================================== -Subject : XML parser for Delphi's VCL toolbar -=============================================================================================== -Dipl.-Ing. (FH) Stefan Heymann, Softwaresysteme, Tbingen, Germany -=============================================================================================== -Date Author Changes ------------------------------------------------------------------------------------------------ -$Id: LibXmlComps.pas,v 1.2 2006/11/15 21:01:42 sergev Exp $ -2000-03-31 HeySt 1.0.0 Start -2000-07-27 HeySt 1.0.1 Added "TAttr" declaration - Moved GetNormalize/SetNormalize to PROTECTED section -2001-02-03 HeySt Changed prototype for the TExternalEvent callback function type - so that C++Builder users should get it compiled better. - -2001-02-28 HeySt 1.0.2 Introduced the "StopParser" property. When you set this property to - TRUE in one of the Parser Events, parsing is stopped and the Execute - method returns. - Introduced Version numbers -2001-07-10 HeySt 1.0.3 Fixed a bug in TScannerXmlParser.DtdElementFound so that the - OnAttList event is correctly fired -2001-07-11 HeySt 1.1.0 Derived from the new TCustomXmlScanner class from LibXmlParser -*) - -unit LibXmlComps; - -interface - -uses - Classes, - LibXmlParser; - -type - TXmlScanner = class(TCustomXmlScanner) - public - property XmlParser; - property StopParser; - published - property Filename; - property Normalize; - property OnXmlProlog; - property OnComment; - property OnPI; - property OnDtdRead; - property OnStartTag; - property OnEmptyTag; - property OnEndTag; - property OnContent; - property OnCData; - property OnElement; - property OnAttList; - property OnEntity; - property OnNotation; - property OnDtdError; - property OnLoadExternal; - property OnTranslateEncoding; - end; - - // The "Easy" XML Scanner leaves out events and properties which you are unlikely to use - // for "normal" XML files. - // CDATA sections trigger "OnContent" events - TEasyXmlScanner = class(TCustomXmlScanner) - protected - procedure WhenCData(Content: string); override; - public - property XmlParser; - property StopParser; - published - property Filename; - property Normalize; - property OnComment; - property OnPI; - property OnStartTag; - property OnEmptyTag; - property OnEndTag; - property OnContent; - property OnLoadExternal; - property OnTranslateEncoding; - end; - -(* -=============================================================================================== -IMPLEMENTATION -=============================================================================================== -*) - -implementation - -(* -=============================================================================================== -TEasyXmlScanner -=============================================================================================== -*) - -procedure TEasyXmlScanner.WhenCData(Content: string); -begin - inherited WhenContent(Content); -end; - -(* -=============================================================================================== -INITIALIZATION -=============================================================================================== -*) - -end. diff --git a/windows/src/ext/embeddedwb/Source/LibXmlParser.pas b/windows/src/ext/embeddedwb/Source/LibXmlParser.pas deleted file mode 100644 index e0d1cb801e..0000000000 --- a/windows/src/ext/embeddedwb/Source/LibXmlParser.pas +++ /dev/null @@ -1,2963 +0,0 @@ -(** -=============================================================================================== -Name : LibXmlParser -=============================================================================================== -Project : All Projects -=============================================================================================== -Subject : Progressive XML Parser for all types of XML Files -=============================================================================================== -Author : Stefan Heymann - Eschenweg 3 - 72076 Tbingen - GERMANY - -E-Mail: stefan@destructor.de -URL: www.destructor.de -=============================================================================================== -Source, Legals ("Licence") --------------------------- -The official site to get this parser is http://www.destructor.de/ - -Usage and Distribution of this Source Code is ruled by the -"Destructor.de Source code Licence" (DSL) which comes with this file or -can be downloaded at http://www.destructor.de/ - -IN SHORT: Usage and distribution of this source code is free. - You use it completely on your own risk. - -Postcardware ------------- -If you like this code, please send a postcard of your city to my above address. -=============================================================================================== -!!! All parts of this code which are not finished or not conforming exactly to - the XmlSpec are marked with three exclamation marks - --!- Parts where the parser may be able to detect errors in the document's syntax are - marked with the dash-exlamation mark-dash sequence. -=============================================================================================== -Terminology: ------------- -- Start: Start of a buffer part -- Final: End (last character) of a buffer part -- DTD: Document Type Definition -- DTDc: Document Type Declaration -- XMLSpec: The current W3C XML Recommendation (version 1.0 as of 1998-02-10), Chapter No. -- Cur*: Fields concerning the "Current" part passed back by the "Scan" method -=============================================================================================== -Scanning the XML document -------------------------- -- Create TXmlParser Instance MyXml := TXmlParser.Create; -- Load XML Document MyXml.LoadFromFile (Filename); -- Start Scanning MyXml.StartScan; -- Scan Loop WHILE MyXml.Scan DO -- Test for Part Type CASE MyXml.CurPartType OF -- Handle Parts ... : ;;; -- Handle Parts ... : ;;; -- Handle Parts ... : ;;; - END; -- Destroy MyXml.Free; -=============================================================================================== -Loading the XML document ------------------------- -You can load the XML document from a file with the "LoadFromFile" method. -It is beyond the scope of this parser to perform HTTP or FTP accesses. If you want your -application to handle such requests (URLs), you can load the XML via HTTP or FTP or whatever -protocol and hand over the data buffer using the "LoadFromBuffer" or "SetBuffer" method. -"LoadFromBuffer" loads the internal buffer of TXmlParser with the given null-terminated -string, thereby creating a copy of that buffer. -"SetBuffer" just takes the pointer to another buffer, which means that the given -buffer pointer must be valid while the document is accessed via TXmlParser. -=============================================================================================== -Encodings: ----------- -This XML parser kind of "understands" the following encodings: -- UTF-8 -- ISO-8859-1 -- Windows-1252 - -Any flavor of multi-byte characters (and this includes UTF-16) is not supported. Sorry. - -Every string which has to be passed to the application passes the virtual method -"TranslateEncoding" which translates the string from the current encoding (stored in -"CurEncoding") into the encoding the application wishes to receive. -The "TranslateEncoding" method that is built into TXmlParser assumes that the application -wants to receive Windows ANSI (Windows-1252, about the same as ISO-8859-1) and is able -to convert UTF-8 and ISO-8859-1 encodings. -For other source and target encodings, you will have to override "TranslateEncoding". -=============================================================================================== -Buffer Handling ---------------- -- The document must be loaded completely into a piece of RAM -- All character positions are referenced by PAnsiChar pointers -- The TXmlParser instance can either "own" the buffer itself (then, FBufferSize is > 0) - or reference the buffer of another instance or object (then, FBuffersize is 0 and - FBuffer is not NIL) -- The Property DocBuffer passes back a pointer to the first byte of the document. If there - is no document stored (FBuffer is NIL), the DocBuffer returns a pointer to a NULL character. -=============================================================================================== -Whitespace Handling -------------------- -The TXmlParser property "PackSpaces" determines how Whitespace is returned in Text Content: -While PackSpaces is true, all leading and trailing whitespace characters are trimmed of, all -Whitespace is converted to Space #x20 characters and contiguous Whitespace characters are -compressed to one. -If the "Scan" method reports a ptContent part, the application can get the original text -with all whitespace characters by extracting the characters from "CurStart" to "CurFinal". -If the application detects an xml:space attribute, it can set "PackSpaces" accordingly or -use CurStart/CurFinal. -Please note that TXmlParser does _not_ normalize Line Breaks to single LineFeed characters -as the XmlSpec requires (XmlSpec 2.11). -The xml:space attribute is not handled by TXmlParser. This is on behalf of the application. -=============================================================================================== -Non-XML-Conforming ------------------- -TXmlParser does not conform 100 % exactly to the XmlSpec: -- UTF-16 is not supported (XmlSpec 2.2) - (Workaround: Convert UTF-16 to UTF-8 and hand the buffer over to TXmlParser) -- As the parser only works with single byte strings, all Unicode characters > 255 - can currently not be handled correctly. -- Line breaks are not normalized to single Linefeed #x0A characters (XmlSpec 2.11) - (Workaround: The Application can access the text contents on its own [CurStart, CurFinal], - thereby applying every normalization it wishes to) -- The attribute value normalization does not work exactly as defined in the - Second Edition of the XML 1.0 specification. -- See also the code parts marked with three consecutive exclamation marks. These are - parts which are not finished in the current code release. - -This list may be incomplete, so it may grow if I get to know any other points. -As work on the parser proceeds, this list may also shrink. -=============================================================================================== -Things Todo ------------ -- Introduce a new event/callback which is called when there is an unresolvable - entity or character reference -- Support Unicode -- Use Streams instead of reading the whole XML into memory -=============================================================================================== -Change History, Version numbers -------------------------------- -The Date is given in ISO Year-Month-Day (YYYY-MM-DD) order. -Versions are counted from 1.0.0 beginning with the version from 2000-03-16. -Unreleased versions don't get a version number. - -Date Author Version Changes ------------------------------------------------------------------------------------------------ -2000-03-16 HeySt 1.0.0 Start -2000-03-28 HeySt 1.0.1 Initial Publishing of TXmlParser on the destructor.de Web Site -2000-03-30 HeySt 1.0.2 TXmlParser.AnalyzeCData: Call "TranslateEncoding" for CurContent -2000-03-31 HeySt 1.0.3 Deleted the StrPosE function (was not needed anyway) -2000-04-04 HeySt 1.0.4 TDtdElementRec modified: Start/Final for all Elements; - Should be backwards compatible. - AnalyzeDtdc: Set CurPartType to ptDtdc -2000-04-23 HeySt 1.0.5 New class TObjectList. Eliminated reference to the Delphi 5 - "Contnrs" unit so LibXmlParser is Delphi 4 compatible. -2000-07-03 HeySt 1.0.6 TNvpNode: Added Constructor -2000-07-11 HeySt 1.0.7 Removed "Windows" from USES clause - Added three-exclamation-mark comments for Utf8ToAnsi/AnsiToUtf8 - Added three-exclamation-mark comments for CHR function calls -2000-07-23 HeySt 1.0.8 TXmlParser.Clear: CurAttr.Clear; EntityStack.Clear; - (This was not a bug; just defensive programming) -2000-07-29 HeySt 1.0.9 TNvpList: Added methods: Node(Index), Value(Index), Name(Index); -2000-10-07 HeySt Introduced Conditional Defines - Uses Contnrs unit and its TObjectList class again for - Delphi 5 and newer versions -2001-01-30 HeySt Introduced Version Numbering - Made LoadFromFile and LoadFromBuffer BOOLEAN functions - Introduced FileMode parameter for LoadFromFile - BugFix: TAttrList.Analyze: Must add CWhitespace to ExtractName call - Comments worked over -2001-02-28 HeySt 1.0.10 Completely worked over and tested the UTF-8 functions - Fixed a bug in TXmlParser.Scan which caused it to start over when it - was called after the end of scanning, resulting in an endless loop - TEntityStack is now a TObjectList instead of TList -2001-07-03 HeySt 1.0.11 Updated Compiler Version IFDEFs for Kylix -2001-07-11 HeySt 1.0.12 New TCustomXmlScanner component (taken over from LibXmlComps.pas) -2001-07-14 HeySt 1.0.13 Bugfix TCustomXmlScanner.FOnTranslateEncoding -2001-10-22 HeySt Don't clear CurName anymore when the parser finds a CDATA section. -2001-12-03 HeySt 1.0.14 TObjectList.Clear: Make call to INHERITED method (fixes a memory leak) -2001-12-05 HeySt 1.0.15 TObjectList.Clear: removed call to INHERITED method - TObjectList.Destroy: Inserted SetCapacity call. - Reduces need for frequent re-allocation of pointer buffer - Dedicated to my father, Theodor Heymann -2002-06-26 HeySt 1.0.16 TXmlParser.Scan: Fixed a bug with PIs whose name is beginning - with 'xml'. Thanks to Uwe Kamm for submitting this bug. - The CurEncoding property is now always in uppercase letters (the XML - spec wants it to be treated case independently so when it's uppercase - comparisons are faster) -2002-03-04 HeySt 1.0.17 Included an IFDEF for Delphi 7 (VER150) and Kylix - There is a new symbol HAS_CONTNRS_UNIT which is used now to - distinguish between IDEs which come with the Contnrs unit and - those that don't. -2009-05-17 bsalsa 1.0.18 Added D2009 support. - -*) - -// --- Delphi/Kylix Version Numbers -// As this is no code, this does not blow up your object or executable code at all - (*$IFDEF LINUX *) - (*$DEFINE K1_OR_NEWER *) - (*$ENDIF *) - - (*$IFDEF MSWINDOWS *) - (*$DEFINE D1_OR_NEWER *) - (*$IFNDEF VER80 *) - (*$DEFINE D2_OR_NEWER *) - (*$IFNDEF VER90 *) - (*$DEFINE D3_OR_NEWER *) - (*$IFNDEF VER100 *) - (*$DEFINE D4_OR_NEWER *) - (*$IFNDEF VER120 *) - (*$DEFINE D5_OR_NEWER *) - (*$IFNDEF VER130 *) - (*$IFNDEF VER140 *) - (*$IFNDEF VER150 *) - {$DEFINE D5_OR_NEWER} - { If the compiler gets stuck here, - you are using a compiler version unknown to this code. - You will probably have to change this code accordingly. - At first, try to comment out these lines and see what will happen.} - (*$ENDIF *) - (*$ENDIF *) - (*$ENDIF *) - (*$ENDIF *) - (*$ENDIF *) - (*$ENDIF *) - (*$ENDIF *) - (*$ENDIF *) - - (*$IFDEF D5_OR_NEWER *) - (*$DEFINE HAS_CONTNRS_UNIT *) - (*$ENDIF *) - - (*$IFDEF K1_OR_NEWER *) - (*$DEFINE HAS_CONTNRS_UNIT *) - (*$ENDIF *) - -unit LibXmlParser; - -{$I EWB.inc} - -interface - -uses - SysUtils, Classes, - (*$IFDEF HAS_CONTNRS_UNIT *)// The Contnrs Unit was introduced in Delphi 5 - Contnrs, - (*$ENDIF*) - AnsiStrings, - Math; - -const - CVersion = '1.0.18'; // This variable will be updated for every release - // (I hope, I won't forget to do it everytime ...) - -type - TPartType = // --- Document Part Types - (ptNone, // Nothing - ptXmlProlog, // XML Prolog XmlSpec 2.8 / 4.3.1 - ptComment, // Comment XmlSpec 2.5 - ptPI, // Processing Instruction XmlSpec 2.6 - ptDtdc, // Document Type Declaration XmlSpec 2.8 - ptStartTag, // Start Tag XmlSpec 3.1 - ptEmptyTag, // Empty-Element Tag XmlSpec 3.1 - ptEndTag, // End Tag XmlSpec 3.1 - ptContent, // Text Content between Tags - ptCData); // CDATA Section XmlSpec 2.7 - - TDtdElemType = // --- DTD Elements - (deElement, // !ELEMENT declaration - deAttList, // !ATTLIST declaration - deEntity, // !ENTITY declaration - deNotation, // !NOTATION declaration - dePI, // PI in DTD - deComment, // Comment in DTD - deError); // Error found in the DTD - -type - TAttrList = class; - TEntityStack = class; - TNvpList = class; - TElemDef = class; - TElemList = class; - TEntityDef = class; - TNotationDef = class; - - TDtdElementRec = record // --- This Record is returned by the DTD parser callback function - Start, Final: PAnsiChar; // Start/End of the Element's Declaration - case ElementType: TDtdElemType of // Type of the Element - deElement, // - deAttList: (ElemDef: TElemDef); // - deEntity: (EntityDef: TEntityDef); // - deNotation: (NotationDef: TNotationDef); // - dePI: (Target: PAnsiChar; // - Content: PAnsiChar; - AttrList: TAttrList); - deError: (Pos: PAnsiChar); // Error - // deComment : ((No additional fields here)); // - end; - - TXmlParser = class // --- Internal Properties and Methods - protected - FBuffer: PAnsiChar; // NIL if there is no buffer available - FBufferSize: INTEGER; // 0 if the buffer is not owned by the Document instance - FSource: string; // Name of Source of document. Filename for Documents loaded with LoadFromFile - - FXmlVersion: string; // XML version from Document header. Default is '1.0' - FEncoding: string; // Encoding from Document header. Default is 'UTF-8' - FStandalone: BOOLEAN; // Standalone declaration from Document header. Default is 'yes' - FRootName: string; // Name of the Root Element (= DTD name) - FDtdcFinal: PAnsiChar; // Pointer to the '>' character terminating the DTD declaration - - FNormalize: BOOLEAN; // If true: Pack Whitespace and don't return empty contents - EntityStack: TEntityStack; // Entity Stack for Parameter and General Entities - FCurEncoding: string; // Current Encoding during parsing (always uppercase) - - procedure AnalyzeProlog; // Analyze XML Prolog or Text Declaration - procedure AnalyzeComment(Start: PAnsiChar; var Final: PAnsiChar); // Analyze Comments - procedure AnalyzePI(Start: PAnsiChar; var Final: PAnsiChar); // Analyze Processing Instructions (PI) - procedure AnalyzeDtdc; // Analyze Document Type Declaration - procedure AnalyzeDtdElements(Start: PAnsiChar; var Final: PAnsiChar); // Analyze DTD declarations - procedure AnalyzeTag; // Analyze Start/End/Empty-Element Tags - procedure AnalyzeCData; // Analyze CDATA Sections - procedure AnalyzeText(var IsDone: BOOLEAN); // Analyze Text Content between Tags - procedure AnalyzeElementDecl(Start: PAnsiChar; var Final: PAnsiChar); - procedure AnalyzeAttListDecl(Start: PAnsiChar; var Final: PAnsiChar); - procedure AnalyzeEntityDecl(Start: PAnsiChar; var Final: PAnsiChar); - procedure AnalyzeNotationDecl(Start: PAnsiChar; var Final: PAnsiChar); - - procedure PushPE(var Start: PAnsiChar); - procedure ReplaceCharacterEntities(var Str: string); - procedure ReplaceParameterEntities(var Str: string); - procedure ReplaceGeneralEntities(var Str: string); - - function GetDocBuffer: PAnsiChar; // Returns FBuffer or a pointer to a NUL char if Buffer is empty - - public // --- Document Properties - property XmlVersion: string read FXmlVersion; // XML version from the Document Prolog - property Encoding: string read FEncoding; // Document Encoding from Prolog - property Standalone: BOOLEAN read FStandalone; // Standalone Declaration from Prolog - property RootName: string read FRootName; // Name of the Root Element - property Normalize: BOOLEAN read FNormalize write FNormalize; // True if Content is to be normalized - property Source: string read FSource; // Name of Document Source (Filename) - property DocBuffer: PAnsiChar read GetDocBuffer; // Returns document buffer - public // --- DTD Objects - Elements: TElemList; // Elements: List of TElemDef (contains Attribute Definitions) - Entities: TNvpList; // General Entities: List of TEntityDef - ParEntities: TNvpList; // Parameter Entities: List of TEntityDef - Notations: TNvpList; // Notations: List of TNotationDef - public - constructor Create; - destructor Destroy; override; - - // --- Document Handling - function LoadFromFile(Filename: string; - FileMode: INTEGER = fmOpenRead or fmShareDenyNone): BOOLEAN; - // Loads Document from given file - function LoadFromBuffer(Buffer: PAnsiChar): BOOLEAN; // Loads Document from another buffer - procedure SetBuffer(Buffer: PAnsiChar); // References another buffer - procedure Clear; // Clear Document - - public - // --- Scanning through the document - CurPartType: TPartType; // Current Type - CurName: string; // Current Name - CurContent: string; // Current Normalized Content - CurStart: PAnsiChar; // Current First character - CurFinal: PAnsiChar; // Current Last character - CurAttr: TAttrList; // Current Attribute List - property CurEncoding: string read FCurEncoding; // Current Encoding - procedure StartScan; - function Scan: BOOLEAN; - - // --- Events / Callbacks - function LoadExternalEntity(SystemId, PublicId, - Notation: string): TXmlParser; virtual; - function TranslateEncoding(const Source: string): string; virtual; - procedure DtdElementFound(DtdElementRec: TDtdElementRec); virtual; - end; - - TValueType = // --- Attribute Value Type - (vtNormal, // Normal specified Attribute - vtImplied, // #IMPLIED attribute value - vtFixed, // #FIXED attribute value - vtDefault); // Attribute value from default value in !ATTLIST declaration - - TAttrDefault = // --- Attribute Default Type - (adDefault, // Normal default value - adRequired, // #REQUIRED attribute - adImplied, // #IMPLIED attribute - adFixed); // #FIXED attribute - - TAttrType = // --- Type of attribute - (atUnknown, // Unknown type - atCData, // Character data only - atID, // ID - atIdRef, // ID Reference - atIdRefs, // Several ID References, separated by Whitespace - atEntity, // Name of an unparsed Entity - atEntities, // Several unparsed Entity names, separated by Whitespace - atNmToken, // Name Token - atNmTokens, // Several Name Tokens, separated by Whitespace - atNotation, // A selection of Notation names (Unparsed Entity) - atEnumeration); // Enumeration - - TElemType = // --- Element content type - (etEmpty, // Element is always empty - etAny, // Element can have any mixture of PCDATA and any elements - etChildren, // Element must contain only elements - etMixed); // Mixed PCDATA and elements - - (*$IFDEF HAS_CONTNRS_UNIT *) - TObjectList = Contnrs.TObjectList; // Re-Export this identifier - (*$ELSE *) - TObjectList = class(TList) - destructor Destroy; override; - procedure Delete(Index: INTEGER); - procedure Clear; override; - end; - (*$ENDIF *) - - TNvpNode = class // Name-Value Pair Node - Name: string; - Value: string; - constructor Create(TheName: string = ''; TheValue: string = ''); - end; - - TNvpList = class(TObjectList) // Name-Value Pair List - procedure Add(Node: TNvpNode); - function Node(Name: string): TNvpNode; overload; - function Node(Index: INTEGER): TNvpNode; overload; - function Value(Name: string): string; overload; - function Value(Index: INTEGER): string; overload; - function Name(Index: INTEGER): string; - end; - - TAttr = class(TNvpNode) // Attribute of a Start-Tag or Empty-Element-Tag - ValueType: TValueType; - AttrType: TAttrType; - end; - - TAttrList = class(TNvpList) // List of Attributes - procedure Analyze(Start: PAnsiChar; var Final: PAnsiChar); - end; - - TEntityStack = class(TObjectList) // Stack where current position is stored before parsing entities - protected - Owner: TXmlParser; - public - constructor Create(TheOwner: TXmlParser); - procedure Push(LastPos: PAnsiChar); overload; - procedure Push(Instance: TObject; LastPos: PAnsiChar); overload; - function Pop: PAnsiChar; // Returns next char or NIL if EOF is reached. Frees Instance. - end; - - TAttrDef = class(TNvpNode) // Represents a '; - - // --- Name Constants for the above enumeration types - CPartType_Name: array[TPartType] of string = - ('', 'XML Prolog', 'Comment', 'PI', - 'DTD Declaration', 'Start Tag', 'Empty Tag', 'End Tag', - 'Text', 'CDATA'); - CValueType_Name: array[TValueType] of string = ('Normal', 'Implied', 'Fixed', 'Default'); - CAttrDefault_Name: array[TAttrDefault] of string = ('Default', 'Required', 'Implied', 'Fixed'); - CElemType_Name: array[TElemType] of string = ('Empty', 'Any', 'Childs only', 'Mixed'); - CAttrType_Name: array[TAttrType] of string = ('Unknown', 'CDATA', - 'ID', 'IDREF', 'IDREFS', - 'ENTITY', 'ENTITIES', - 'NMTOKEN', 'NMTOKENS', - 'Notation', 'Enumeration'); - -function ConvertWs(Source: string; PackWs: BOOLEAN): string; // Convert WS to spaces #x20 -procedure SetStringSF(var S: string; BufferStart, BufferFinal: PAnsiChar); // SetString by Start/Final of buffer -function StrSFPas(Start, Finish: PAnsiChar): string; // Convert buffer part to Pascal string -function TrimWs(Source: string): string; // Trim Whitespace - -function AnsiToUtf8(Source: ANSISTRING): string; // Convert Win-1252 to UTF-8 -function Utf8ToAnsi(Source: string; UnknownChar: AnsiChar = ''): ANSISTRING; // Convert UTF-8 to Win-1252 - -(* -=============================================================================================== -TCustomXmlScanner event based component wrapper for TXmlParser -=============================================================================================== -*) - -type - TCustomXmlScanner = class; - TXmlPrologEvent = procedure(Sender: TObject; XmlVersion, Encoding: string; Standalone: BOOLEAN) of object; - TCommentEvent = procedure(Sender: TObject; Comment: string) of object; - TPIEvent = procedure(Sender: TObject; Target, Content: string; Attributes: TAttrList) of object; - TDtdEvent = procedure(Sender: TObject; RootElementName: string) of object; - TStartTagEvent = procedure(Sender: TObject; TagName: string; Attributes: TAttrList) of object; - TEndTagEvent = procedure(Sender: TObject; TagName: string) of object; - TContentEvent = procedure(Sender: TObject; Content: string) of object; - TElementEvent = procedure(Sender: TObject; ElemDef: TElemDef) of object; - TEntityEvent = procedure(Sender: TObject; EntityDef: TEntityDef) of object; - TNotationEvent = procedure(Sender: TObject; NotationDef: TNotationDef) of object; - TErrorEvent = procedure(Sender: TObject; ErrorPos: PAnsiChar) of object; - TExternalEvent = procedure(Sender: TObject; SystemId, PublicId, NotationId: string; - var Result: TXmlParser) of object; - TEncodingEvent = function(Sender: TObject; CurrentEncoding, Source: string): string of object; - - TCustomXmlScanner = class(TComponent) - protected - FXmlParser: TXmlParser; - FOnXmlProlog: TXmlPrologEvent; - FOnComment: TCommentEvent; - FOnPI: TPIEvent; - FOnDtdRead: TDtdEvent; - FOnStartTag: TStartTagEvent; - FOnEmptyTag: TStartTagEvent; - FOnEndTag: TEndTagEvent; - FOnContent: TContentEvent; - FOnCData: TContentEvent; - FOnElement: TElementEvent; - FOnAttList: TElementEvent; - FOnEntity: TEntityEvent; - FOnNotation: TNotationEvent; - FOnDtdError: TErrorEvent; - FOnLoadExternal: TExternalEvent; - FOnTranslateEncoding: TEncodingEvent; - FStopParser: BOOLEAN; - function GetNormalize: BOOLEAN; - procedure SetNormalize(Value: BOOLEAN); - - procedure WhenXmlProlog(XmlVersion, Encoding: string; Standalone: BOOLEAN); virtual; - procedure WhenComment(Comment: string); virtual; - procedure WhenPI(Target, Content: string; Attributes: TAttrList); virtual; - procedure WhenDtdRead(RootElementName: string); virtual; - procedure WhenStartTag(TagName: string; Attributes: TAttrList); virtual; - procedure WhenEmptyTag(TagName: string; Attributes: TAttrList); virtual; - procedure WhenEndTag(TagName: string); virtual; - procedure WhenContent(Content: string); virtual; - procedure WhenCData(Content: string); virtual; - procedure WhenElement(ElemDef: TElemDef); virtual; - procedure WhenAttList(ElemDef: TElemDef); virtual; - procedure WhenEntity(EntityDef: TEntityDef); virtual; - procedure WhenNotation(NotationDef: TNotationDef); virtual; - procedure WhenDtdError(ErrorPos: PAnsiChar); virtual; - - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - - procedure LoadFromFile(Filename: TFilename); // Load XML Document from file - procedure LoadFromBuffer(Buffer: PAnsiChar); // Load XML Document from buffer - procedure SetBuffer(Buffer: PAnsiChar); // Refer to Buffer - function GetFilename: TFilename; - - procedure Execute; // Perform scanning - - protected - property XmlParser: TXmlParser read FXmlParser; - property StopParser: BOOLEAN read FStopParser write FStopParser; - property Filename: TFilename read GetFilename write LoadFromFile; - property Normalize: BOOLEAN read GetNormalize write SetNormalize; - property OnXmlProlog: TXmlPrologEvent read FOnXmlProlog write FOnXmlProlog; - property OnComment: TCommentEvent read FOnComment write FOnComment; - property OnPI: TPIEvent read FOnPI write FOnPI; - property OnDtdRead: TDtdEvent read FOnDtdRead write FOnDtdRead; - property OnStartTag: TStartTagEvent read FOnStartTag write FOnStartTag; - property OnEmptyTag: TStartTagEvent read FOnEmptyTag write FOnEmptyTag; - property OnEndTag: TEndTagEvent read FOnEndTag write FOnEndTag; - property OnContent: TContentEvent read FOnContent write FOnContent; - property OnCData: TContentEvent read FOnCData write FOnCData; - property OnElement: TElementEvent read FOnElement write FOnElement; - property OnAttList: TElementEvent read FOnAttList write FOnAttList; - property OnEntity: TEntityEvent read FOnEntity write FOnEntity; - property OnNotation: TNotationEvent read FOnNotation write FOnNotation; - property OnDtdError: TErrorEvent read FOnDtdError write FOnDtdError; - property OnLoadExternal: TExternalEvent read FOnLoadExternal write FOnLoadExternal; - property OnTranslateEncoding: TEncodingEvent read FOnTranslateEncoding write FOnTranslateEncoding; - end; - -(* -=============================================================================================== -IMPLEMENTATION -=============================================================================================== -*) - -implementation - -{$IFNDEF DELPHI12_UP} -function CharInSet(C: Char; const CharSet: TSysCharSet): Boolean; -begin - Result := C in CharSet; -end; -{$ENDIF} - -(* -=============================================================================================== -Unicode and UTF-8 stuff -=============================================================================================== -*) - -const - // --- Character Translation Table for Unicode <-> Win-1252 - WIN1252_UNICODE: array[$00..$FF] of WORD = ( - $0000, $0001, $0002, $0003, $0004, $0005, $0006, $0007, $0008, $0009, - $000A, $000B, $000C, $000D, $000E, $000F, $0010, $0011, $0012, $0013, - $0014, $0015, $0016, $0017, $0018, $0019, $001A, $001B, $001C, $001D, - $001E, $001F, $0020, $0021, $0022, $0023, $0024, $0025, $0026, $0027, - $0028, $0029, $002A, $002B, $002C, $002D, $002E, $002F, $0030, $0031, - $0032, $0033, $0034, $0035, $0036, $0037, $0038, $0039, $003A, $003B, - $003C, $003D, $003E, $003F, $0040, $0041, $0042, $0043, $0044, $0045, - $0046, $0047, $0048, $0049, $004A, $004B, $004C, $004D, $004E, $004F, - $0050, $0051, $0052, $0053, $0054, $0055, $0056, $0057, $0058, $0059, - $005A, $005B, $005C, $005D, $005E, $005F, $0060, $0061, $0062, $0063, - $0064, $0065, $0066, $0067, $0068, $0069, $006A, $006B, $006C, $006D, - $006E, $006F, $0070, $0071, $0072, $0073, $0074, $0075, $0076, $0077, - $0078, $0079, $007A, $007B, $007C, $007D, $007E, $007F, - - $20AC, $0081, $201A, $0192, $201E, $2026, $2020, $2021, $02C6, $2030, - $0160, $2039, $0152, $008D, $017D, $008F, $0090, $2018, $2019, $201C, - $201D, $2022, $2013, $2014, $02DC, $2122, $0161, $203A, $0153, $009D, - $017E, $0178, $00A0, $00A1, $00A2, $00A3, $00A4, $00A5, $00A6, $00A7, - $00A8, $00A9, $00AA, $00AB, $00AC, $00AD, $00AE, $00AF, $00B0, $00B1, - $00B2, $00B3, $00B4, $00B5, $00B6, $00B7, $00B8, $00B9, $00BA, $00BB, - $00BC, $00BD, $00BE, $00BF, $00C0, $00C1, $00C2, $00C3, $00C4, $00C5, - $00C6, $00C7, $00C8, $00C9, $00CA, $00CB, $00CC, $00CD, $00CE, $00CF, - $00D0, $00D1, $00D2, $00D3, $00D4, $00D5, $00D6, $00D7, $00D8, $00D9, - $00DA, $00DB, $00DC, $00DD, $00DE, $00DF, $00E0, $00E1, $00E2, $00E3, - $00E4, $00E5, $00E6, $00E7, $00E8, $00E9, $00EA, $00EB, $00EC, $00ED, - $00EE, $00EF, $00F0, $00F1, $00F2, $00F3, $00F4, $00F5, $00F6, $00F7, - $00F8, $00F9, $00FA, $00FB, $00FC, $00FD, $00FE, $00FF); - -(* UTF-8 (somewhat simplified) - ----- - Character Range Byte sequence - --------------- -------------------------- (x=Bits from original character) - $0000..$007F 0xxxxxxx - $0080..$07FF 110xxxxx 10xxxxxx - $8000..$FFFF 1110xxxx 10xxxxxx 10xxxxxx - - Example - -------- - Transforming the Unicode character U+00E4 LATIN SMALL LETTER A WITH DIAERESIS (""): - - ISO-8859-1, Decimal 228 - Win1252, Hex $E4 - ANSI Bin 1110 0100 - abcd efgh - - UTF-8 Binary 1100xxab 10cdefgh - Binary 11000011 10100100 - Hex $C3 $A4 - Decimal 195 164 - ANSI *) - - -function StringToPAnsiChar(inString: string): PAnsiChar; -var - AnsString: AnsiString; - InternalError: Boolean; -begin - InternalError := False; - Result := ''; - try - if inString <> EmptyStr then - begin - AnsString := AnsiString(inString); - Result := PAnsiChar(PAnsiString(AnsString)); - end; - except - InternalError := True; - end; - if InternalError or (string(Result) <> inString) then - begin - raise Exception.Create('Conversion from string to PAnsiChar failed!'); - end; -end; - -function AnsiToUtf8(Source: ANSISTRING): string; - (* Converts the given Windows ANSI (Win1252) String to UTF-8. *) -var - I: INTEGER; // Loop counter - U: WORD; // Current Unicode value - Len: INTEGER; // Current real length of "Result" string -begin - SetLength(Result, Length(Source) * 3); // Worst case - Len := 0; - for I := 1 to Length(Source) do - begin - U := WIN1252_UNICODE[ORD(Source[I])]; - case U of - $0000..$007F: - begin - INC(Len); - Result[Len] := CHR(U); - end; - $0080..$07FF: - begin - INC(Len); - Result[Len] := CHR($C0 or (U shr 6)); - INC(Len); - Result[Len] := CHR($80 or (U and $3F)); - end; - $0800..$FFFF: - begin - INC(Len); - Result[Len] := CHR($E0 or (U shr 12)); - INC(Len); - Result[Len] := CHR($80 or ((U shr 6) and $3F)); - INC(Len); - Result[Len] := CHR($80 or (U and $3F)); - end; - end; - end; - SetLength(Result, Len); -end; - -function Utf8ToAnsi(Source: string; UnknownChar: AnsiChar = ''): ANSISTRING; - (* Converts the given UTF-8 String to Windows ANSI (Win-1252). - If a character can not be converted, the "UnknownChar" is inserted. *) -var - SourceLen: INTEGER; // Length of Source string - I, K: INTEGER; - A: BYTE; // Current ANSI character value - U: WORD; - Ch: AnsiChar; // Dest char - Len: INTEGER; // Current real length of "Result" string -begin - SourceLen := Length(Source); - SetLength(Result, SourceLen); // Enough room to live - Len := 0; - I := 1; - while I <= SourceLen do - begin - A := ORD(Source[I]); - if A < $80 then - begin // Range $0000..$007F - INC(Len); - Result[Len] := AnsiChar(Source[I]); - INC(I); - end - else - begin // Determine U, Inc I - if (A and $E0 = $C0) and (I < SourceLen) then - begin // Range $0080..$07FF - U := (WORD(A and $1F) shl 6) or (ORD(Source[I + 1]) and $3F); - INC(I, 2); - end - else - if (A and $F0 = $E0) and (I < SourceLen - 1) then - begin // Range $0800..$FFFF - U := (WORD(A and $0F) shl 12) or - (WORD(ORD(Source[I + 1]) and $3F) shl 6) or - (ORD(Source[I + 2]) and $3F); - INC(I, 3); - end - else - begin // Unknown/unsupported - INC(I); - for K := 7 downto 0 do - if A and (1 shl K) = 0 then - begin - INC(I, (A shr (K + 1)) - 1); - BREAK; - end; - U := WIN1252_UNICODE[ORD(UnknownChar)]; - end; - Ch := UnknownChar; // Retrieve ANSI char - for A := $00 to $FF do - if WIN1252_UNICODE[A] = U then - begin - Ch := AnsiChar(CHR(A)); - BREAK; - end; - INC(Len); - Result[Len] := AnsiChar(Ch); - end; - end; - SetLength(Result, Len); -end; - -(* -=============================================================================================== -"Special" Helper Functions - -Don't ask me why. But including these functions makes the parser *DRAMATICALLY* faster -on my K6-233 machine. You can test it yourself just by commenting them out. -They do exactly the same as the Assembler routines defined in SysUtils. -(This is where you can see how great the Delphi compiler really is. The compiled code is -faster than hand-coded assembler!) -=============================================================================================== ---> Just move this line below the StrScan function --> *) - -function StrPos(const Str, SearchStr: PAnsiChar): PAnsiChar; - // Same functionality as SysUtils.StrPos -var - First: AnsiChar; - Len: INTEGER; -begin - First := AnsiChar(SearchStr^); - Len := AnsiStrings.StrLen(SearchStr); - Result := Str; - repeat - if AnsiChar(Result^) = First then - if AnsiStrings.StrLComp(Result, SearchStr, Len) = 0 then - BREAK; - if Result^ = #0 then - begin - Result := nil; - BREAK; - end; - INC(Result); - until FALSE; -end; - -function StrScan(const Start: PAnsiChar; const Ch: AnsiChar): PAnsiChar; - // Same functionality as SysUtils.StrScan -begin - Result := Start; - while AnsiChar(Result^) <> Ch do - begin - if Result^ = #0 then - begin - Result := nil; - EXIT; - end; - INC(Result); - end; -end; - -(* -=============================================================================================== -Helper Functions -=============================================================================================== -*) - -function DelChars(Source: string; CharsToDelete: TCharset): string; - // Delete all "CharsToDelete" from the string -var - I: INTEGER; -begin - Result := Source; - for I := Length(Result) downto 1 do - if CharInSet(Result[I], CharsToDelete) then - Delete(Result, I, 1); -end; - -function TrimWs(Source: string): string; - // Trimms off Whitespace characters from both ends of the string -var - I: INTEGER; -begin - // --- Trim Left - I := 1; - while (I <= Length(Source)) and (CharInSet(Source[I], CWhitespace)) do - INC(I); - Result := Copy(Source, I, MaxInt); - - // --- Trim Right - I := Length(Result); - while (I > 1) and (CharInSet(Result[I], CWhitespace)) do - DEC(I); - Delete(Result, I + 1, Length(Result) - I); -end; - -function ConvertWs(Source: string; PackWs: BOOLEAN): string; - // Converts all Whitespace characters to the Space #x20 character - // If "PackWs" is true, contiguous Whitespace characters are packed to one -var - I: INTEGER; -begin - Result := Source; - for I := Length(Result) downto 1 do - if (CharInSet(Result[I], CWhitespace)) then - if PackWs and (I > 1) and (CharInSet(Result[I - 1], CWhitespace)) - then - Delete(Result, I, 1) - else - Result[I] := #32; -end; - -procedure SetStringSF(var S: string; BufferStart, BufferFinal: PAnsiChar); -begin - SetString(S, BufferStart, BufferFinal - BufferStart + 1); -end; - -function StrLPas(Start: PAnsiChar; Len: INTEGER): string; -begin - SetString(Result, Start, Len); -end; - -function StrSFPas(Start, Finish: PAnsiChar): string; -begin - SetString(Result, Start, Finish - Start + 1); -end; - -function StrScanE(const Source: PAnsiChar; const CharToScanFor: AnsiChar): PAnsiChar; - // If "CharToScanFor" is not found, StrScanE returns the last char of the - // buffer instead of NIL -begin - Result := StrScan(Source, CharToScanFor); - if Result = nil then - Result := AnsiStrings.StrEnd(Source) - 1; -end; - -procedure ExtractName(Start: PAnsiChar; Terminators: TCharset; var Final: PAnsiChar); - (* Extracts the complete Name beginning at "Start". - It is assumed that the name is contained in Markup, so the '>' character is - always a Termination. - Start: IN Pointer to first char of name. Is always considered to be valid - Terminators: IN Characters which terminate the name - Final: OUT Pointer to last char of name *) -begin - Final := Start + 1; - Include(Terminators, #0); - Include(Terminators, '>'); - while not (CharInSet(Final^, Terminators)) do - INC(Final); - DEC(Final); -end; - -procedure ExtractQuote(Start: PAnsiChar; var Content: string; var Final: PAnsiChar); - (* Extract a string which is contained in single or double Quotes. - Start: IN Pointer to opening quote - Content: OUT The quoted string - Final: OUT Pointer to closing quote *) -begin - Final := StrScan(Start + 1, AnsiChar(Start^)); - if Final = nil then - begin - Final := AnsiStrings.StrEnd(Start + 1) - 1; - SetString(Content, Start + 1, Final - Start); - end - else - SetString(Content, Start + 1, Final - 1 - Start); -end; - -(* -=============================================================================================== -TEntityStackNode -This Node is pushed to the "Entity Stack" whenever the parser parses entity replacement text. -The "Instance" field holds the Instance pointer of an External Entity buffer. When it is -popped, the Instance is freed. -The "Encoding" field holds the name of the Encoding. External Parsed Entities may have -another encoding as the document entity (XmlSpec 4.3.3). So when there is an " 0 then - begin - ESN := TEntityStackNode(Items[Count - 1]); - Result := ESN.LastPos; - if ESN.Instance <> nil then - ESN.Instance.Free; - if ESN.Encoding <> '' then - Owner.FCurEncoding := ESN.Encoding; // Restore current Encoding - Delete(Count - 1); - end - else - Result := nil; -end; - -(* -=============================================================================================== -TExternalID ------------ -XmlSpec 4.2.2: ExternalID ::= 'SYSTEM' S SystemLiteral | - 'PUBLIC' S PubidLiteral S SystemLiteral -XmlSpec 4.7: PublicID ::= 'PUBLIC' S PubidLiteral -SystemLiteral and PubidLiteral are quoted -=============================================================================================== -*) - -type - TExternalID = class - PublicId: string; - SystemId: string; - Final: PAnsiChar; - constructor Create(Start: PAnsiChar); - end; - -constructor TExternalID.Create(Start: PAnsiChar); -begin - inherited Create; - Final := Start; - if AnsiStrings.StrLComp(Start, 'SYSTEM', 6) = 0 then - begin - while not (CharInSet(Final^, (CQuoteChar + [#0, '>', '[']))) do - INC(Final); - if not (CharInSet(Final^, CQuoteChar)) then - EXIT; - ExtractQuote(Final, SystemID, Final); - end - else - if AnsiStrings.StrLComp(Start, 'PUBLIC', 6) = 0 then - begin - while not (CharInSet(Final^, (CQuoteChar + [#0, '>', '[']))) do - INC(Final); - if not (CharInSet(Final^, CQuoteChar)) then - EXIT; - ExtractQuote(Final, PublicID, Final); - INC(Final); - while not (CharInSet(Final^, (CQuoteChar + [#0, '>', '[']))) do - INC(Final); - if not (CharInSet(Final^, CQuoteChar)) then - EXIT; - ExtractQuote(Final, SystemID, Final); - end; -end; - -(* -=============================================================================================== -TXmlParser -=============================================================================================== -*) - -constructor TXmlParser.Create; -begin - inherited Create; - FBuffer := nil; - FBufferSize := 0; - Elements := TElemList.Create; - Entities := TNvpList.Create; - ParEntities := TNvpList.Create; - Notations := TNvpList.Create; - CurAttr := TAttrList.Create; - EntityStack := TEntityStack.Create(Self); - Clear; -end; - -destructor TXmlParser.Destroy; -begin - Clear; - Elements.Free; - Entities.Free; - ParEntities.Free; - Notations.Free; - CurAttr.Free; - EntityStack.Free; - inherited Destroy; -end; - -procedure TXmlParser.Clear; - // Free Buffer and clear all object attributes -begin - if (FBufferSize > 0) and (FBuffer <> nil) then - FreeMem(FBuffer); - FBuffer := nil; - FBufferSize := 0; - FSource := ''; - FXmlVersion := ''; - FEncoding := ''; - FStandalone := FALSE; - FRootName := ''; - FDtdcFinal := nil; - FNormalize := TRUE; - Elements.Clear; - Entities.Clear; - ParEntities.Clear; - Notations.Clear; - CurAttr.Clear; - EntityStack.Clear; -end; - -function TXmlParser.LoadFromFile(Filename: string; FileMode: INTEGER = fmOpenRead or fmShareDenyNone): BOOLEAN; - // Loads Document from given file - // Returns TRUE if successful -var - f: file; - ReadIn: INTEGER; - OldFileMode: INTEGER; -begin - Result := FALSE; - Clear; - - // --- Open File - OldFileMode := SYSTEM.FileMode; - try - SYSTEM.FileMode := FileMode; - try - AssignFile(f, Filename); - Reset(f, 1); - except - EXIT; - end; - - try - // --- Allocate Memory - try - FBufferSize := Filesize(f) + 1; - GetMem(FBuffer, FBufferSize); - except - Clear; - EXIT; - end; - - // --- Read File - try - BlockRead(f, FBuffer^, FBufferSize, ReadIn); - (FBuffer + ReadIn)^ := #0; // NULL termination - except - Clear; - EXIT; - end; - finally - CloseFile(f); - end; - - FSource := Filename; - Result := TRUE; - - finally - SYSTEM.FileMode := OldFileMode; - end; -end; - -function TXmlParser.LoadFromBuffer(Buffer: PAnsiChar): BOOLEAN; - // Loads Document from another buffer - // Returns TRUE if successful - // The "Source" property becomes '' if successful -begin - Result := FALSE; - Clear; - FBufferSize := AnsiStrings.StrLen(Buffer) + 1; - try - GetMem(FBuffer, FBufferSize); - except - Clear; - EXIT; - end; - AnsiStrings.StrCopy(FBuffer, Buffer); - FSource := ''; - Result := TRUE; -end; - -procedure TXmlParser.SetBuffer(Buffer: PAnsiChar); // References another buffer -begin - Clear; - FBuffer := Buffer; - FBufferSize := 0; - FSource := ''; -end; - -//----------------------------------------------------------------------------------------------- -// Scanning through the document -//----------------------------------------------------------------------------------------------- - -procedure TXmlParser.StartScan; -begin - CurPartType := ptNone; - CurName := ''; - CurContent := ''; - CurStart := nil; - CurFinal := nil; - CurAttr.Clear; - EntityStack.Clear; -end; - -function TXmlParser.Scan: BOOLEAN; - // Scans the next Part - // Returns TRUE if a part could be found, FALSE if there is no part any more - // - // "IsDone" can be set to FALSE by AnalyzeText in order to go to the next part - // if there is no Content due to normalization -var - IsDone: BOOLEAN; -begin - repeat - IsDone := TRUE; - - // --- Start of next Part - if CurStart = nil - then - CurStart := DocBuffer - else - CurStart := CurFinal + 1; - CurFinal := CurStart; - // --- End of Document of Pop off a new part from the Entity stack? - if CurStart^ = #0 then - CurStart := EntityStack.Pop; - - // --- No Document or End Of Document: Terminate Scan - if (CurStart = nil) or (CurStart^ = #0) then - begin - CurStart := AnsiStrings.StrEnd(DocBuffer); - CurFinal := CurStart - 1; - EntityStack.Clear; - Result := FALSE; - EXIT; - end; - - if (AnsiStrings.StrLComp(CurStart, ''); - if CurFinal <> nil - then - INC(CurFinal) - else - CurFinal := AnsiStrings.StrEnd(CurStart) - 1; - FCurEncoding := AnsiUpperCase(CurAttr.Value('encoding')); - if FCurEncoding = '' then - FCurEncoding := 'UTF-8'; // Default XML Encoding is UTF-8 - CurPartType := ptXmlProlog; - CurName := ''; - CurContent := ''; -end; - -procedure TXmlParser.AnalyzeComment(Start: PAnsiChar; var Final: PAnsiChar); - // Analyze Comments -begin - Final := StrPos(Start + 4, '-->'); - if Final = nil - then - Final := AnsiStrings.StrEnd(Start) - 1 - else - INC(Final, 2); - CurPartType := ptComment; -end; - -procedure TXmlParser.AnalyzePI(Start: PAnsiChar; var Final: PAnsiChar); - // Analyze Processing Instructions (PI) - // This is also called for Character -var - F: PAnsiChar; -begin - CurPartType := ptPI; - Final := StrPos(Start + 2, '?>'); - if Final = nil - then - Final := AnsiStrings.StrEnd(Start) - 1 - else - INC(Final); - ExtractName(Start + 2, CWhitespace + ['?', '>'], F); - SetStringSF(CurName, Start + 2, F); - SetStringSF(CurContent, F + 1, Final - 2); - CurAttr.Analyze(F + 1, F); -end; - -procedure TXmlParser.AnalyzeDtdc; - (* Analyze Document Type Declaration - doctypedecl ::= '' - markupdecl ::= elementdecl | AttlistDecl | EntityDecl | NotationDecl | PI | Comment - PEReference ::= '%' Name ';' - - elementdecl ::= '' - AttlistDecl ::= '' - EntityDecl ::= '' | - '' - NotationDecl ::= '' - PI ::= '' Char* )))? '?>' - Comment ::= '' *) -type - TPhase = (phName, phDtd, phInternal, phFinishing); -var - Phase: TPhase; - F: PAnsiChar; - ExternalID: TExternalID; - ExternalDTD: TXmlParser; - DER: TDtdElementRec; -begin - DER.Start := CurStart; - EntityStack.Clear; // Clear stack for Parameter Entities - CurPartType := ptDtdc; - - // --- Don't read DTDc twice - if FDtdcFinal <> nil then - begin - CurFinal := FDtdcFinal; - EXIT; - end; - - // --- Scan DTDc - CurFinal := CurStart + 9; // First char after '': BREAK; - else - if not (CharInSet(CurFinal^, CWhitespace)) then - begin - case Phase of - phName: - if (CharInSet(CurFinal^, CNameStart)) then - begin - ExtractName(CurFinal, CWhitespace + ['[', '>'], F); - SetStringSF(FRootName, CurFinal, F); - CurFinal := F; - Phase := phDtd; - end; - phDtd: - if (AnsiStrings.StrLComp(CurFinal, 'SYSTEM', 6) = 0) or - (AnsiStrings.StrLComp(CurFinal, 'PUBLIC', 6) = 0) then - begin - ExternalID := TExternalID.Create(CurFinal); - ExternalDTD := LoadExternalEntity(ExternalId.SystemId, ExternalID.PublicId, ''); - F := StrPos(ExternalDtd.DocBuffer, ' nil then - AnalyzeDtdElements(F, F); - ExternalDTD.Free; - CurFinal := ExternalID.Final; - ExternalID.Free; - end; - else - begin - DER.ElementType := deError; - DER.Pos := CurFinal; - DER.Final := CurFinal; - DtdElementFound(DER); - end; - end; - - end; - end; - INC(CurFinal); - until FALSE; - - CurPartType := ptDtdc; - CurName := ''; - CurContent := ''; - - // It is an error in the document if "EntityStack" is not empty now - if EntityStack.Count > 0 then - begin - DER.ElementType := deError; - DER.Final := CurFinal; - DER.Pos := CurFinal; - DtdElementFound(DER); - end; - - EntityStack.Clear; // Clear stack for General Entities - FDtdcFinal := CurFinal; -end; - -procedure TXmlParser.AnalyzeDtdElements(Start: PAnsiChar; var Final: PAnsiChar); - // Analyze the "Elements" of a DTD contained in the external or - // internal DTD subset. -var - DER: TDtdElementRec; -begin - Final := Start; - repeat - case Final^ of - '%': - begin - PushPE(Final); - CONTINUE; - end; - #0: - if EntityStack.Count = 0 then - BREAK - else - begin - CurFinal := EntityStack.Pop; - CONTINUE; - end; - ']', - '>': BREAK; - '<': - if AnsiStrings.StrLComp(Final, ''); - - // --- Set Default Attribute values for nonexistent attributes - if (CurPartType = ptStartTag) or (CurPartType = ptEmptyTag) then - begin - ElemDef := Elements.Node(CurName); - if ElemDef <> nil then - begin - for I := 0 to ElemDef.Count - 1 do - begin - AttrDef := TAttrDef(ElemDef[I]); - Attr := TAttr(CurAttr.Node(AttrDef.Name)); - if (Attr = nil) and (AttrDef.Value <> '') then - begin - Attr := TAttr.Create(AttrDef.Name, AttrDef.Value); - Attr.ValueType := vtDefault; - CurAttr.Add(Attr); - end; - if Attr <> nil then - begin - case AttrDef.DefaultType of - adDefault: ; - adRequired: ; // -!- It is an error in the document if "Attr.Value" is an empty string - adImplied: Attr.ValueType := vtImplied; - adFixed: - begin - Attr.ValueType := vtFixed; - Attr.Value := AttrDef.Value; - end; - end; - Attr.AttrType := AttrDef.AttrType; - end; - end; - end; - - // --- Normalize Attribute Values. XmlSpec: - // - a character reference is processed by appending the referenced character to the attribute value - // - an entity reference is processed by recursively processing the replacement text of the entity - // - a whitespace character (#x20, #xD, #xA, #x9) is processed by appending #x20 to the normalized value, - // except that only a single #x20 is appended for a "#xD#xA" sequence that is part of an external - // parsed entity or the literal entity value of an internal parsed entity - // - other characters are processed by appending them to the normalized value - // If the declared value is not CDATA, then the XML processor must further process the - // normalized attribute value by discarding any leading and trailing space (#x20) characters, - // and by replacing sequences of space (#x20) characters by a single space (#x20) character. - // All attributes for which no declaration has been read should be treated by a - // non-validating parser as if declared CDATA. - // !!! The XML 1.0 SE specification is somewhat different here - // This code does not conform exactly to this specification - for I := 0 to CurAttr.Count - 1 do - with TAttr(CurAttr[I]) do - begin - ReplaceGeneralEntities(Value); - ReplaceCharacterEntities(Value); - if (AttrType <> atCData) and (AttrType <> atUnknown) - then - Value := TranslateEncoding(TrimWs(ConvertWs(Value, TRUE))) - else - Value := TranslateEncoding(ConvertWs(Value, FALSE)); - end; - end; -end; - -procedure TXmlParser.AnalyzeCData; - // Analyze CDATA Sections -begin - CurPartType := ptCData; - CurFinal := StrPos(CurStart, CDEnd); - if CurFinal = nil then - begin - CurFinal := AnsiStrings.StrEnd(CurStart) - 1; - CurContent := TranslateEncoding(string(AnsiStrings.StrPas(CurStart + Length(CDStart)))); - end - else - begin - SetStringSF(CurContent, CurStart + Length(CDStart), CurFinal - 1); - INC(CurFinal, Length(CDEnd) - 1); - CurContent := TranslateEncoding(CurContent); - end; -end; - -procedure TXmlParser.AnalyzeText(var IsDone: BOOLEAN); - (* Analyzes Text Content between Tags. CurFinal will point to the last content character. - Content ends at a '<' character or at the end of the document. - Entity References and Character Entity references are resolved. - If PackSpaces is TRUE, contiguous Whitespace Characters will be compressed to - one Space #x20 character, Whitespace at the beginning and end of content will - be trimmed off and content which is or becomes empty is not returned to - the application (in this case, "IsDone" is set to FALSE which causes the - Scan method to proceed directly to the next part. *) - - procedure ProcessEntity; - (* Is called if there is an ampsersand '&' character found in the document. - IN "CurFinal" points to the ampersand - OUT "CurFinal" points to the first character after the semi-colon ';' *) - var - P: PAnsiChar; - Name: string; - EntityDef: TEntityDef; - ExternalEntity: TXmlParser; - begin - P := StrScan(CurFinal, ';'); - if P <> nil then - begin - SetStringSF(Name, CurFinal + 1, P - 1); - - // Is it a Character Entity? - if (CurFinal + 1)^ = '#' then - begin - if UpCase((CurFinal + 2)^) = 'X' // !!! Can't use "CHR" for Unicode characters > 255: - then - CurContent := CurContent + CHR(StrToIntDef('$' + Copy(Name, 3, MaxInt), 32)) - else - CurContent := CurContent + CHR(StrToIntDef(Copy(Name, 2, MaxInt), 32)); - CurFinal := P + 1; - EXIT; - end - - // Is it a Predefined Entity? - else - if Name = 'lt' then - begin - CurContent := CurContent + '<'; - CurFinal := P + 1; - EXIT; - end - else - if Name = 'gt' then - begin - CurContent := CurContent + '>'; - CurFinal := P + 1; - EXIT; - end - else - if Name = 'amp' then - begin - CurContent := CurContent + '&'; - CurFinal := P + 1; - EXIT; - end - else - if Name = 'apos' then - begin - CurContent := CurContent + ''''; - CurFinal := P + 1; - EXIT; - end - else - if Name = 'quot' then - begin - CurContent := CurContent + '"'; - CurFinal := P + 1; - EXIT; - end; - - // Replace with Entity from DTD - EntityDef := TEntityDef(Entities.Node(Name)); - if EntityDef <> nil then - begin - if EntityDef.Value <> '' then - begin - EntityStack.Push(P + 1); - CurFinal := StringToPAnsiChar(EntityDef.Value); - end - else - begin - ExternalEntity := LoadExternalEntity(EntityDef.SystemId, EntityDef.PublicId, EntityDef.NotationName); - EntityStack.Push(ExternalEntity, P + 1); - CurFinal := ExternalEntity.DocBuffer; - end; - end - else - begin - CurContent := CurContent + Name; - CurFinal := P + 1; - end; - end - else - begin - INC(CurFinal); - end; - end; - -var - C: INTEGER; -begin - CurFinal := CurStart; - CurPartType := ptContent; - CurContent := ''; - C := 0; - repeat - case CurFinal^ of - '&': - begin - CurContent := CurContent + TranslateEncoding(StrLPas(CurFinal - C, C)); - C := 0; - ProcessEntity; - CONTINUE; - end; - #0: - begin - if EntityStack.Count = 0 then - BREAK - else - begin - CurContent := CurContent + TranslateEncoding(StrLPas(CurFinal - C, C)); - C := 0; - CurFinal := EntityStack.Pop; - CONTINUE; - end; - end; - '<': BREAK; - else - INC(C); - end; - INC(CurFinal); - until FALSE; - CurContent := CurContent + TranslateEncoding(StrLPas(CurFinal - C, C)); - DEC(CurFinal); - - if FNormalize then - begin - CurContent := ConvertWs(TrimWs(CurContent), TRUE); - IsDone := CurContent <> ''; // IsDone will only get FALSE if PackSpaces is TRUE - end; -end; - -procedure TXmlParser.AnalyzeElementDecl(Start: PAnsiChar; var Final: PAnsiChar); - (* Parse ' character - XmlSpec 3.2: - elementdecl ::= '' - contentspec ::= 'EMPTY' | 'ANY' | Mixed | children - Mixed ::= '(' S? '#PCDATA' (S? '|' S? Name)* S? ')*' | - '(' S? '#PCDATA' S? ')' - children ::= (choice | seq) ('?' | '*' | '+')? - choice ::= '(' S? cp ( S? '|' S? cp )* S? ')' - cp ::= (Name | choice | seq) ('?' | '*' | '+')? - seq ::= '(' S? cp ( S? ',' S? cp )* S? ')' - - More simply: - contentspec ::= EMPTY - ANY - '(#PCDATA)' - '(#PCDATA | A | B)*' - '(A, B, C)' - '(A | B | C)' - '(A?, B*, C+), - '(A, (B | C | D)* )' *) -var - Element: TElemDef; - Elem2: TElemDef; - F: PAnsiChar; - DER: TDtdElementRec; -begin - Element := TElemDef.Create; - Final := Start + 9; - DER.Start := Start; - repeat - if Final^ = '>' then - BREAK; - if (CharInSet(Final^, CNameStart)) and (Element.Name = '') then - begin - ExtractName(Final, CWhitespace, F); - SetStringSF(Element.Name, Final, F); - Final := F; - F := StrScan(Final + 1, '>'); - if F = nil then - begin - Element.Definition := string(Final); - Final := AnsiStrings.StrEnd(Final); - BREAK; - end - else - begin - SetStringSF(Element.Definition, Final + 1, F - 1); - Final := F; - BREAK; - end; - end; - INC(Final); - until FALSE; - Element.Definition := DelChars(Element.Definition, CWhitespace); - ReplaceParameterEntities(Element.Definition); - if Element.Definition = 'EMPTY' then - Element.ElemType := etEmpty - else - if Element.Definition = 'ANY' then - Element.ElemType := etAny - else - if Copy(Element.Definition, 1, 8) = '(#PCDATA' then - Element.ElemType := etMixed - else - if Copy(Element.Definition, 1, 1) = '(' then - Element.ElemType := etChildren - else - Element.ElemType := etAny; - - Elem2 := Elements.Node(Element.Name); - if Elem2 <> nil then - Elements.Delete(Elements.IndexOf(Elem2)); - Elements.Add(Element); - Final := StrScanE(Final, '>'); - DER.ElementType := deElement; - DER.ElemDef := Element; - DER.Final := Final; - DtdElementFound(DER); -end; - -procedure TXmlParser.AnalyzeAttListDecl(Start: PAnsiChar; var Final: PAnsiChar); - (* Parse ' character - XmlSpec 3.3: - AttlistDecl ::= '' - AttDef ::= S Name S AttType S DefaultDecl - AttType ::= StringType | TokenizedType | EnumeratedType - StringType ::= 'CDATA' - TokenizedType ::= 'ID' | 'IDREF' | 'IDREFS' | 'ENTITY' | 'ENTITIES' | 'NMTOKEN' | 'NMTOKENS' - EnumeratedType ::= NotationType | Enumeration - NotationType ::= 'NOTATION' S '(' S? Name (S? '|' S? Name)* S? ')' - Enumeration ::= '(' S? Nmtoken (S? '|' S? Nmtoken)* S? ')' - DefaultDecl ::= '#REQUIRED' | '#IMPLIED' | (('#FIXED' S)? AttValue) - AttValue ::= '"' ([^<&"] | Reference)* '"' | "'" ([^<&'] | Reference)* "'" - Examples: - *) -type - TPhase = (phElementName, phName, phType, phNotationContent, phDefault); -var - Phase: TPhase; - F: PAnsiChar; - ElementName: string; - ElemDef: TElemDef; - AttrDef: TAttrDef; - AttrDef2: TAttrDef; - Strg: string; - DER: TDtdElementRec; -begin - Final := Start + 9; // The character after ': BREAK; - else - case Phase of - phElementName: - begin - ExtractName(Final, CWhitespace + CQuoteChar + ['#'], F); - SetStringSF(ElementName, Final, F); - Final := F; - ElemDef := Elements.Node(ElementName); - if ElemDef = nil then - begin - ElemDef := TElemDef.Create; - ElemDef.Name := ElementName; - ElemDef.Definition := 'ANY'; - ElemDef.ElemType := etAny; - Elements.Add(ElemDef); - end; - Phase := phName; - end; - phName: - begin - AttrDef := TAttrDef.Create; - ExtractName(Final, CWhitespace + CQuoteChar + ['#'], F); - SetStringSF(AttrDef.Name, Final, F); - Final := F; - AttrDef2 := TAttrDef(ElemDef.Node(AttrDef.Name)); - if AttrDef2 <> nil then - ElemDef.Delete(ElemDef.IndexOf(AttrDef2)); - ElemDef.Add(AttrDef); - Phase := phType; - end; - phType: - begin - if Final^ = '(' then - begin - F := StrScan(Final + 1, ')'); - if F <> nil - then - SetStringSF(AttrDef.TypeDef, Final + 1, F - 1) - else - AttrDef.TypeDef := string(Final + 1); - AttrDef.TypeDef := DelChars(AttrDef.TypeDef, CWhitespace); - AttrDef.AttrType := atEnumeration; - ReplaceParameterEntities(AttrDef.TypeDef); - ReplaceCharacterEntities(AttrDef.TypeDef); - Phase := phDefault; - end - else - if AnsiStrings.StrLComp(Final, 'NOTATION', 8) = 0 then - begin - INC(Final, 8); - AttrDef.AttrType := atNotation; - Phase := phNotationContent; - end - else - begin - ExtractName(Final, CWhitespace + CQuoteChar + ['#'], F); - SetStringSF(AttrDef.TypeDef, Final, F); - if AttrDef.TypeDef = 'CDATA' then - AttrDef.AttrType := atCData - else - if AttrDef.TypeDef = 'ID' then - AttrDef.AttrType := atId - else - if AttrDef.TypeDef = 'IDREF' then - AttrDef.AttrType := atIdRef - else - if AttrDef.TypeDef = 'IDREFS' then - AttrDef.AttrType := atIdRefs - else - if AttrDef.TypeDef = 'ENTITY' then - AttrDef.AttrType := atEntity - else - if AttrDef.TypeDef = 'ENTITIES' then - AttrDef.AttrType := atEntities - else - if AttrDef.TypeDef = 'NMTOKEN' then - AttrDef.AttrType := atNmToken - else - if AttrDef.TypeDef = 'NMTOKENS' then - AttrDef.AttrType := atNmTokens; - Phase := phDefault; - end - end; - phNotationContent: - begin - F := StrScan(Final, ')'); - if F <> nil then - SetStringSF(AttrDef.Notations, Final + 1, F - 1) - else - begin - AttrDef.Notations := string(Final + 1); - Final := AnsiStrings.StrEnd(Final); - end; - ReplaceParameterEntities(AttrDef.Notations); - AttrDef.Notations := DelChars(AttrDef.Notations, CWhitespace); - Phase := phDefault; - end; - phDefault: - begin - if Final^ = '#' then - begin - ExtractName(Final, CWhiteSpace + CQuoteChar, F); - SetStringSF(Strg, Final, F); - Final := F; - ReplaceParameterEntities(Strg); - if Strg = '#REQUIRED' then - begin - AttrDef.DefaultType := adRequired; - Phase := phName; - end - else - if Strg = '#IMPLIED' then - begin - AttrDef.DefaultType := adImplied; - Phase := phName; - end - else - if Strg = '#FIXED' then - AttrDef.DefaultType := adFixed; - end - else - if (CharInSet(Final^, CQuoteChar)) then - begin - ExtractQuote(Final, AttrDef.Value, Final); - ReplaceParameterEntities(AttrDef.Value); - ReplaceCharacterEntities(AttrDef.Value); - Phase := phName; - end; - if Phase = phName then - begin - AttrDef := nil; - end; - end; - - end; - end; - INC(Final); - until FALSE; - - Final := StrScan(Final, '>'); - - DER.ElementType := deAttList; - DER.ElemDef := ElemDef; - DER.Final := Final; - DtdElementFound(DER); -end; - -procedure TXmlParser.AnalyzeEntityDecl(Start: PAnsiChar; var Final: PAnsiChar); - (* Parse ' character - XmlSpec 4.2: - EntityDecl ::= '' | - '' - EntityDef ::= EntityValue | (ExternalID NDataDecl?) - PEDef ::= EntityValue | ExternalID - NDataDecl ::= S 'NDATA' S Name - EntityValue ::= '"' ([^%&"] | PEReference | EntityRef | CharRef)* '"' | - "'" ([^%&'] | PEReference | EntityRef | CharRef)* "'" - PEReference ::= '%' Name ';' - - Examples - - - - "> - - - Dies ist ein Test-Absatz

"> - *) -type - TPhase = (phName, phContent, phNData, phNotationName, phFinalGT); -var - Phase: TPhase; - IsParamEntity: BOOLEAN; - F: PAnsiChar; - ExternalID: TExternalID; - EntityDef: TEntityDef; - EntityDef2: TEntityDef; - DER: TDtdElementRec; -begin - Final := Start + 8; // First char after ': BREAK; - else - case Phase of - phName: - if CharInSet(Final^, CNameStart) then - begin - ExtractName(Final, CWhitespace + CQuoteChar, F); - SetStringSF(EntityDef.Name, Final, F); - Final := F; - Phase := phContent; - end; - phContent: - if CharInSet(Final^, CQuoteChar) then - begin - ExtractQuote(Final, EntityDef.Value, Final); - Phase := phFinalGT; - end - else - if (AnsiStrings.StrLComp(Final, 'SYSTEM', 6) = 0) or - (AnsiStrings.StrLComp(Final, 'PUBLIC', 6) = 0) then - begin - ExternalID := TExternalID.Create(Final); - EntityDef.SystemId := ExternalID.SystemId; - EntityDef.PublicId := ExternalID.PublicId; - Final := ExternalID.Final; - Phase := phNData; - ExternalID.Free; - end; - phNData: - if AnsiStrings.StrLComp(Final, 'NDATA', 5) = 0 then - begin - INC(Final, 4); - Phase := phNotationName; - end; - phNotationName: - if CharInSet(Final^, CNameStart) then - begin - ExtractName(Final, CWhitespace + ['>'], F); - SetStringSF(EntityDef.NotationName, Final, F); - Final := F; - Phase := phFinalGT; - end; - phFinalGT: ; // -!- There is an error in the document if this branch is called - end; - end; - INC(Final); - until FALSE; - if IsParamEntity then - begin - EntityDef2 := TEntityDef(ParEntities.Node(EntityDef.Name)); - if EntityDef2 <> nil then - ParEntities.Delete(ParEntities.IndexOf(EntityDef2)); - ParEntities.Add(EntityDef); - ReplaceCharacterEntities(EntityDef.Value); - end - else - begin - EntityDef2 := TEntityDef(Entities.Node(EntityDef.Name)); - if EntityDef2 <> nil then - Entities.Delete(Entities.IndexOf(EntityDef2)); - Entities.Add(EntityDef); - ReplaceParameterEntities(EntityDef.Value); // Create replacement texts (see XmlSpec 4.5) - ReplaceCharacterEntities(EntityDef.Value); - end; - Final := StrScanE(Final, '>'); - - DER.ElementType := deEntity; - DER.EntityDef := EntityDef; - DER.Final := Final; - DtdElementFound(DER); -end; - -procedure TXmlParser.AnalyzeNotationDecl(Start: PAnsiChar; var Final: PAnsiChar); - // Parse ' character - // XmlSpec 4.7: NotationDecl ::= '' -type - TPhase = (phName, phExtId, phEnd); -var - ExternalID: TExternalID; - Phase: TPhase; - F: PAnsiChar; - NotationDef: TNotationDef; - DER: TDtdElementRec; -begin - Final := Start + 10; // Character after ', - #0: BREAK; - else - case Phase of - phName: - begin - ExtractName(Final, CWhitespace + ['>'], F); - SetStringSF(NotationDef.Name, Final, F); - Final := F; - Phase := phExtId; - end; - phExtId: - begin - ExternalID := TExternalID.Create(Final); - NotationDef.Value := ExternalID.SystemId; - NotationDef.PublicId := ExternalID.PublicId; - Final := ExternalId.Final; - ExternalId.Free; - Phase := phEnd; - end; - phEnd: ; // -!- There is an error in the document if this branch is called - end; - end; - INC(Final); - until FALSE; - Notations.Add(NotationDef); - Final := StrScanE(Final, '>'); - - DER.ElementType := deNotation; - DER.NotationDef := NotationDef; - DER.Final := Final; - DtdElementFound(DER); -end; - -procedure TXmlParser.PushPE(var Start: PAnsiChar); - (* If there is a parameter entity reference found in the data stream, - the current position will be pushed to the entity stack. - Start: IN Pointer to the '%' character starting the PE reference - OUT Pointer to first character of PE replacement text *) -var - P: PAnsiChar; - EntityDef: TEntityDef; -begin - P := StrScan(Start, ';'); - if P <> nil then - begin - EntityDef := TEntityDef(ParEntities.Node(StrSFPas(Start + 1, P - 1))); - if EntityDef <> nil then - begin - EntityStack.Push(P + 1); - Start := StringToPAnsiChar(EntityDef.Value); - end - else - Start := P + 1; - end; -end; - -procedure TXmlParser.ReplaceCharacterEntities(var Str: string); - // Replaces all Character Entity References in the String -var - Start: INTEGER; - PAmp: PAnsiChar; - PSemi: PAnsiChar; - PosAmp: INTEGER; - Len: INTEGER; // Length of Entity Reference -begin - if Str = '' then - EXIT; - Start := 1; - repeat - PAmp := StrPos(StringToPAnsiChar(Str) + Start - 1, '&#'); - if PAmp = nil then - BREAK; - PSemi := StrScan(PAmp + 2, ';'); - if PSemi = nil then - BREAK; - PosAmp := PAmp - StringToPAnsiChar(Str) + 1; - Len := PSemi - PAmp + 1; - if CompareText(Str[PosAmp + 2], 'x') = 0 // !!! Can't use "CHR" for Unicode characters > 255 - then - Str[PosAmp] := CHR(StrToIntDef('$' + Copy(Str, PosAmp + 3, Len - 4), 0)) - else - Str[PosAmp] := CHR(StrToIntDef(Copy(Str, PosAmp + 2, Len - 3), 32)); - Delete(Str, PosAmp + 1, Len - 1); - Start := PosAmp + 1; - until FALSE; -end; - -procedure TXmlParser.ReplaceParameterEntities(var Str: string); - // Recursively replaces all Parameter Entity References in the String - - procedure ReplaceEntities(var Str: string); - var - Start: INTEGER; - PAmp: PAnsiChar; - PSemi: PAnsiChar; - PosAmp: INTEGER; - Len: INTEGER; - Entity: TEntityDef; - Repl: string; // Replacement - begin - if Str = '' then - EXIT; - Start := 1; - repeat - PAmp := StrPos(StringToPAnsiChar(Str) + Start - 1, '%'); - if PAmp = nil then - BREAK; - PSemi := StrScan(PAmp + 2, ';'); - if PSemi = nil then - BREAK; - PosAmp := PAmp - StringToPAnsiChar(Str) + 1; - Len := PSemi - PAmp + 1; - Entity := TEntityDef(ParEntities.Node(Copy(Str, PosAmp + 1, Len - 2))); - if Entity <> nil then - begin - Repl := Entity.Value; - ReplaceEntities(Repl); // Recursion - end - else - Repl := Copy(Str, PosAmp, Len); - Delete(Str, PosAmp, Len); - Insert(Repl, Str, PosAmp); - Start := PosAmp + Length(Repl); - until FALSE; - end; -begin - ReplaceEntities(Str); -end; - -procedure TXmlParser.ReplaceGeneralEntities(var Str: string); - // Recursively replaces General Entity References in the String - - procedure ReplaceEntities(var Str: string); - var - Start: INTEGER; - PAmp: PAnsiChar; - PSemi: PAnsiChar; - PosAmp: INTEGER; - Len: INTEGER; - EntityDef: TEntityDef; - EntName: string; - Repl: string; // Replacement - ExternalEntity: TXmlParser; - begin - if Str = '' then - EXIT; - Start := 1; - repeat - PAmp := StrPos(StringToPAnsiChar(Str) + Start - 1, '&'); - if PAmp = nil then - BREAK; - PSemi := StrScan(PAmp + 2, ';'); - if PSemi = nil then - BREAK; - PosAmp := PAmp - StringToPAnsiChar(Str) + 1; - Len := PSemi - PAmp + 1; - EntName := Copy(Str, PosAmp + 1, Len - 2); - if EntName = 'lt' then - Repl := '<' - else - if EntName = 'gt' then - Repl := '>' - else - if EntName = 'amp' then - Repl := '&' - else - if EntName = 'apos' then - Repl := '''' - else - if EntName = 'quot' then - Repl := '"' - else - begin - EntityDef := TEntityDef(Entities.Node(EntName)); - if EntityDef <> nil then - begin - if EntityDef.Value <> '' then // Internal Entity - Repl := EntityDef.Value - else - begin // External Entity - ExternalEntity := LoadExternalEntity(EntityDef.SystemId, EntityDef.PublicId, EntityDef.NotationName); - Repl := string(AnsiStrings.StrPas(ExternalEntity.DocBuffer)); // !!! What if it contains a Text Declaration? - ExternalEntity.Free; - end; - ReplaceEntities(Repl); // Recursion - end - else - Repl := Copy(Str, PosAmp, Len); - end; - Delete(Str, PosAmp, Len); - Insert(Repl, Str, PosAmp); - Start := PosAmp + Length(Repl); - until FALSE; - end; -begin - ReplaceEntities(Str); -end; - -function TXmlParser.LoadExternalEntity(SystemId, PublicId, Notation: string): TXmlParser; - // This will be called whenever there is a Parsed External Entity or - // the DTD External Subset to be parsed. - // It has to create a TXmlParser instance and load the desired Entity. - // This instance of LoadExternalEntity assumes that "SystemId" is a valid - // file name (relative to the Document source) and loads this file using - // the LoadFromFile method. -var - Filename: string; -begin - // --- Convert System ID to complete filename - Filename := StringReplace(SystemId, '/', '\', [rfReplaceAll]); - if Copy(FSource, 1, 1) <> '<' then - if (Copy(Filename, 1, 2) = '\\') or (Copy(Filename, 2, 1) = ':') then - // Already has an absolute Path - else - begin - Filename := ExtractFilePath(FSource) + Filename; - end; - - // --- Load the File - Result := TXmlParser.Create; - Result.LoadFromFile(Filename); -end; - -function TXmlParser.TranslateEncoding(const Source: string): string; - // The member variable "CurEncoding" always holds the name of the current - // encoding, e.g. 'UTF-8' or 'ISO-8859-1'. - // This virtual method "TranslateEncoding" is responsible for translating - // the content passed in the "Source" parameter to the Encoding which - // is expected by the application. - // This instance of "TranlateEncoding" assumes that the Application expects - // Windows ANSI (Win1252) strings. It is able to transform UTF-8 or ISO-8859-1 - // encodings. - // If you want your application to understand or create other encodings, you - // override this function. -begin - if CurEncoding = 'UTF-8' - then - Result := string(Utf8ToAnsi(Source)) - else - Result := Source; -end; - -procedure TXmlParser.DtdElementFound(DtdElementRec: TDtdElementRec); - // This method is called for every element which is found in the DTD - // declaration. The variant record TDtdElementRec is passed which - // holds informations about the element. - // You can override this function to handle DTD declarations. - // Note that when you parse the same Document instance a second time, - // the DTD will not get parsed again. -begin -end; - -function TXmlParser.GetDocBuffer: PAnsiChar; - // Returns FBuffer or a pointer to a NUL char if Buffer is empty -begin - if FBuffer = nil - then - Result := #0 - else - Result := FBuffer; -end; - -(*$IFNDEF HAS_CONTNRS_UNIT -=============================================================================================== -TObjectList -=============================================================================================== -*) - -destructor TObjectList.Destroy; -begin - Clear; - SetCapacity(0); - inherited Destroy; -end; - -procedure TObjectList.Delete(Index: INTEGER); -begin - if (Index < 0) or (Index >= Count) then - EXIT; - TObject(Items[Index]).Free; - inherited Delete(Index); -end; - -procedure TObjectList.Clear; -begin - while Count > 0 do - Delete(Count - 1); -end; - -(*$ENDIF *) - -(* -=============================================================================================== -TNvpNode --------- -Node base class for the TNvpList -=============================================================================================== -*) - -constructor TNvpNode.Create(TheName, TheValue: string); -begin - inherited Create; - Name := TheName; - Value := TheValue; -end; - -(* -=============================================================================================== -TNvpList --------- -A generic List of Name-Value Pairs, based on the TObjectList introduced in Delphi 5 -=============================================================================================== -*) - -procedure TNvpList.Add(Node: TNvpNode); -var - I: INTEGER; -begin - for I := Count - 1 downto 0 do - if Node.Name > TNvpNode(Items[I]).Name then - begin - Insert(I + 1, Node); - EXIT; - end; - Insert(0, Node); -end; - -function TNvpList.Node(Name: string): TNvpNode; - // Binary search for Node -var - L, H: INTEGER; // Low, High Limit - T, C: INTEGER; // Test Index, Comparison result - Last: INTEGER; // Last Test Index -begin - if Count = 0 then - begin - Result := nil; - EXIT; - end; - - L := 0; - H := Count; - Last := -1; - repeat - T := (L + H) div 2; - if T = Last then - BREAK; - Result := TNvpNode(Items[T]); - C := CompareStr(Result.Name, Name); - if C = 0 then - EXIT - else - if C < 0 then - L := T - else - H := T; - Last := T; - until FALSE; - Result := nil; -end; - -function TNvpList.Node(Index: INTEGER): TNvpNode; -begin - if (Index < 0) or (Index >= Count) - then - Result := nil - else - Result := TNvpNode(Items[Index]); -end; - -function TNvpList.Value(Name: string): string; -var - Nvp: TNvpNode; -begin - Nvp := TNvpNode(Node(Name)); - if Nvp <> nil - then - Result := Nvp.Value - else - Result := ''; -end; - -function TNvpList.Value(Index: INTEGER): string; -begin - if (Index < 0) or (Index >= Count) - then - Result := '' - else - Result := TNvpNode(Items[Index]).Value; -end; - -function TNvpList.Name(Index: INTEGER): string; -begin - if (Index < 0) or (Index >= Count) - then - Result := '' - else - Result := TNvpNode(Items[Index]).Name; -end; - -(* -=============================================================================================== -TAttrList -List of Attributes. The "Analyze" method extracts the Attributes from the given Buffer. -Is used for extraction of Attributes in Start-Tags, Empty-Element Tags and the "pseudo" -attributes in XML Prologs, Text Declarations and PIs. -=============================================================================================== -*) - -procedure TAttrList.Analyze(Start: PAnsiChar; var Final: PAnsiChar); - // Analyze the Buffer for Attribute=Name pairs. - // Terminates when there is a character which is not IN CNameStart - // (e.g. '?>' or '>' or '/>') -type - TPhase = (phName, phEq, phValue); -var - Phase: TPhase; - F: PAnsiChar; - Name: string; - Value: string; - Attr: TAttr; -begin - Clear; - Phase := phName; - Final := Start; - repeat - if (Final^ = #0) or (Final^ = '>') then - BREAK; - if not (CharInSet(Final^, CWhitespace)) then - case Phase of - phName: - begin - if not (CharInSet(Final^, CNameStart)) then - EXIT; - ExtractName(Final, CWhitespace + ['=', '/'], F); - SetStringSF(Name, Final, F); - Final := F; - Phase := phEq; - end; - phEq: - begin - if Final^ = '=' then - Phase := phValue - end; - phValue: - begin - if CharInSet(Final^, CQuoteChar) then - begin - ExtractQuote(Final, Value, F); - Attr := TAttr.Create; - Attr.Name := Name; - Attr.Value := Value; - Attr.ValueType := vtNormal; - Add(Attr); - Final := F; - Phase := phName; - end; - end; - end; - INC(Final); - until FALSE; -end; - -(* -=============================================================================================== -TElemList -List of TElemDef nodes. -=============================================================================================== -*) - -function TElemList.Node(Name: string): TElemDef; - // Binary search for the Node with the given Name -var - L, H: INTEGER; // Low, High Limit - T, C: INTEGER; // Test Index, Comparison result - Last: INTEGER; // Last Test Index -begin - if Count = 0 then - begin - Result := nil; - EXIT; - end; - - L := 0; - H := Count; - Last := -1; - repeat - T := (L + H) div 2; - if T = Last then - BREAK; - Result := TElemDef(Items[T]); - C := CompareStr(Result.Name, Name); - if C = 0 then - EXIT - else - if C < 0 then - L := T - else - H := T; - Last := T; - until FALSE; - Result := nil; -end; - -procedure TElemList.Add(Node: TElemDef); -var - I: INTEGER; -begin - for I := Count - 1 downto 0 do - if Node.Name > TElemDef(Items[I]).Name then - begin - Insert(I + 1, Node); - EXIT; - end; - Insert(0, Node); -end; - -(* -=============================================================================================== -TScannerXmlParser -A TXmlParser descendant for the TCustomXmlScanner component -=============================================================================================== -*) - -type - TScannerXmlParser = class(TXmlParser) - Scanner: TCustomXmlScanner; - constructor Create(TheScanner: TCustomXmlScanner); - function LoadExternalEntity(SystemId, PublicId, - Notation: string): TXmlParser; override; - function TranslateEncoding(const Source: string): string; override; - procedure DtdElementFound(DtdElementRec: TDtdElementRec); override; - end; - -constructor TScannerXmlParser.Create(TheScanner: TCustomXmlScanner); -begin - inherited Create; - Scanner := TheScanner; -end; - -function TScannerXmlParser.LoadExternalEntity(SystemId, PublicId, Notation: string): TXmlParser; -begin - if Assigned(Scanner.FOnLoadExternal) - then - Scanner.FOnLoadExternal(Scanner, SystemId, PublicId, Notation, Result) - else - Result := inherited LoadExternalEntity(SystemId, PublicId, Notation); -end; - -function TScannerXmlParser.TranslateEncoding(const Source: string): string; -begin - if Assigned(Scanner.FOnTranslateEncoding) - then - Result := Scanner.FOnTranslateEncoding(Scanner, CurEncoding, Source) - else - Result := inherited TranslateEncoding(Source); -end; - -procedure TScannerXmlParser.DtdElementFound(DtdElementRec: TDtdElementRec); -begin - with DtdElementRec do - case ElementType of - deElement: Scanner.WhenElement(ElemDef); - deAttList: Scanner.WhenAttList(ElemDef); - deEntity: Scanner.WhenEntity(EntityDef); - deNotation: Scanner.WhenNotation(NotationDef); - dePI: Scanner.WhenPI(string(Target), string(Content), AttrList); - deComment: Scanner.WhenComment(StrSFPas(Start, Final)); - deError: Scanner.WhenDtdError(Pos); - end; -end; - -(* -=============================================================================================== -TCustomXmlScanner -=============================================================================================== -*) - -constructor TCustomXmlScanner.Create(AOwner: TComponent); -begin - inherited; - FXmlParser := TScannerXmlParser.Create(Self); -end; - -destructor TCustomXmlScanner.Destroy; -begin - FXmlParser.Free; - inherited; -end; - -procedure TCustomXmlScanner.LoadFromFile(Filename: TFilename); - // Load XML Document from file -begin - FXmlParser.LoadFromFile(Filename); -end; - -procedure TCustomXmlScanner.LoadFromBuffer(Buffer: PAnsiChar); - // Load XML Document from buffer -begin - FXmlParser.LoadFromBuffer(Buffer); -end; - -procedure TCustomXmlScanner.SetBuffer(Buffer: PAnsiChar); - // Refer to Buffer -begin - FXmlParser.SetBuffer(Buffer); -end; - -function TCustomXmlScanner.GetFilename: TFilename; -begin - Result := FXmlParser.Source; -end; - -function TCustomXmlScanner.GetNormalize: BOOLEAN; -begin - Result := FXmlParser.Normalize; -end; - -procedure TCustomXmlScanner.SetNormalize(Value: BOOLEAN); -begin - FXmlParser.Normalize := Value; -end; - -procedure TCustomXmlScanner.WhenXmlProlog(XmlVersion, Encoding: string; Standalone: BOOLEAN); - // Is called when the parser has parsed the declaration of the prolog -begin - if Assigned(FOnXmlProlog) then - FOnXmlProlog(Self, XmlVersion, Encoding, Standalone); -end; - -procedure TCustomXmlScanner.WhenComment(Comment: string); - // Is called when the parser has parsed a -begin - if Assigned(FOnComment) then - FOnComment(Self, Comment); -end; - -procedure TCustomXmlScanner.WhenPI(Target, Content: string; Attributes: TAttrList); - // Is called when the parser has parsed a -begin - if Assigned(FOnPI) then - FOnPI(Self, Target, Content, Attributes); -end; - -procedure TCustomXmlScanner.WhenDtdRead(RootElementName: string); - // Is called when the parser has completely parsed the DTD -begin - if Assigned(FOnDtdRead) then - FOnDtdRead(Self, RootElementName); -end; - -procedure TCustomXmlScanner.WhenStartTag(TagName: string; Attributes: TAttrList); - // Is called when the parser has parsed a start tag like

-begin - if Assigned(FOnStartTag) then - FOnStartTag(Self, TagName, Attributes); -end; - -procedure TCustomXmlScanner.WhenEmptyTag(TagName: string; Attributes: TAttrList); - // Is called when the parser has parsed an Empty Element Tag like
-begin - if Assigned(FOnEmptyTag) then - FOnEmptyTag(Self, TagName, Attributes); -end; - -procedure TCustomXmlScanner.WhenEndTag(TagName: string); - // Is called when the parser has parsed an End Tag like

-begin - if Assigned(FOnEndTag) then - FOnEndTag(Self, TagName); -end; - -procedure TCustomXmlScanner.WhenContent(Content: string); - // Is called when the parser has parsed an element's text content -begin - if Assigned(FOnContent) then - FOnContent(Self, Content); -end; - -procedure TCustomXmlScanner.WhenCData(Content: string); - // Is called when the parser has parsed a CDATA section -begin - if Assigned(FOnCData) then - FOnCData(Self, Content); -end; - -procedure TCustomXmlScanner.WhenElement(ElemDef: TElemDef); - // Is called when the parser has parsed an definition - // inside the DTD -begin - if Assigned(FOnElement) then - FOnElement(Self, ElemDef); -end; - -procedure TCustomXmlScanner.WhenAttList(ElemDef: TElemDef); - // Is called when the parser has parsed an definition - // inside the DTD -begin - if Assigned(FOnAttList) then - FOnAttList(Self, ElemDef); -end; - -procedure TCustomXmlScanner.WhenEntity(EntityDef: TEntityDef); - // Is called when the parser has parsed an definition - // inside the DTD -begin - if Assigned(FOnEntity) then - FOnEntity(Self, EntityDef); -end; - -procedure TCustomXmlScanner.WhenNotation(NotationDef: TNotationDef); - // Is called when the parser has parsed a definition - // inside the DTD -begin - if Assigned(FOnNotation) then - FOnNotation(Self, NotationDef); -end; - -procedure TCustomXmlScanner.WhenDtdError(ErrorPos: PAnsiChar); - // Is called when the parser has found an Error in the DTD -begin - if Assigned(FOnDtdError) then - FOnDtdError(Self, ErrorPos); -end; - -procedure TCustomXmlScanner.Execute; - // Perform scanning - // Scanning is done synchronously, i.e. you can expect events to be triggered - // in the order of the XML data stream. Execute will finish when the whole XML - // document has been scanned or when the StopParser property has been set to TRUE. -begin - FStopParser := FALSE; - FXmlParser.StartScan; - while FXmlParser.Scan and (not FStopParser) do - case FXmlParser.CurPartType of - ptNone: ; - ptXmlProlog: WhenXmlProlog(FXmlParser.XmlVersion, FXmlParser.Encoding, FXmlParser.Standalone); - ptComment: WhenComment(StrSFPas(FXmlParser.CurStart, FXmlParser.CurFinal)); - ptPI: WhenPI(FXmlParser.CurName, FXmlParser.CurContent, FXmlParser.CurAttr); - ptDtdc: WhenDtdRead(FXmlParser.RootName); - ptStartTag: WhenStartTag(FXmlParser.CurName, FXmlParser.CurAttr); - ptEmptyTag: WhenEmptyTag(FXmlParser.CurName, FXmlParser.CurAttr); - ptEndTag: WhenEndTag(FXmlParser.CurName); - ptContent: WhenContent(FXmlParser.CurContent); - ptCData: WhenCData(FXmlParser.CurContent); - end; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Source/LinksBar.pas b/windows/src/ext/embeddedwb/Source/LinksBar.pas deleted file mode 100644 index 6277261f02..0000000000 --- a/windows/src/ext/embeddedwb/Source/LinksBar.pas +++ /dev/null @@ -1,429 +0,0 @@ -//*********************************************************** -// LinksBar * -// * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@gmail.com * -// * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//*********************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: LinksBar.pas,v 1.2 2006/11/15 21:01:43 sergev Exp $ - -unit LinksBar; - -interface - -uses - Classes, Controls, ComCtrls, SHDocVw_EWB, EmbeddedWB; - -type - TLinksBar = class(TToolbar) - TLinksBar: TToolBar; - - private - FAbout: string; - FMaxCaptionLength: integer; - FCount: Integer; - FShown: Boolean; - FShowImages: Boolean; - FTitle: string; - FUrl: string; - FAutoNavigate: Boolean; - LinkList: TStrings; - URLlist: TStringList; - FWebBrowser: TEmbeddedWB; - FStatusBar: TStatusBar; - LinksButton: TToolButton; - procedure OnLinkClick(Sender: TObject); - procedure SetShown(Value: Boolean); - procedure SetAbout(Value: string); - protected - procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; - - public - constructor Create(aOwner: TComponent); override; - procedure Loaded; override; - destructor Destroy; override; - procedure AddToLinksList(Title, URL: string); - procedure RemoveFromLinksList(Title: string); - procedure GetTheLinksList(LinkList: Tstrings); - procedure GetTheLinksURLs(URLList: Tstrings); - procedure NavigateToItem(Title: string); - procedure CreateLinkButtons(ImageIdx: integer); - procedure ClearTheLinksList; - published - property AutoNavigate: Boolean read fAutoNavigate write fAutoNavigate default True; - property About: string read fAbout write SetAbout; - property MaxCaptionLength: Integer read fMaxCaptionLength write fMaxCaptionLength; - property Count: Integer read fCount; - property ShowImages: boolean read fShowImages write fShowImages default True; - property Shown: Boolean read fShown write SetShown default True; - property WebBrowser: TEmbeddedWB read FWebBrowser write FWebBrowser; - property StatusBar: TStatusBar read FStatusBar write FStatusBar; - end; - -var - fMaxL: integer; - -implementation - -uses - Windows, Messages, Forms, Dialogs, Registry; - -var - FLockClientUpdateCount: Integer = 0; - -// ***************************************************************************** - -constructor TLinksBar.Create(aOwner: TComponent); -begin - inherited Create(aOwner); - FAbout := 'LinksBar by bsalsa : bsalsa@gmail.com'; - Visible := True; - FShown := True; - FShowImages := True; - FMaxCaptionLength := 15; - ShowCaptions := True; - ShowHint := True; - AutoSize := True; - Flat := True; - FAutoNavigate := True; - Height := 26; - LinkList := TStringList.Create; - with LinkList do - begin -{$IFDEF DELPHI6_UP} - CaseSensitive := False; -{$ENDIF} - Capacity := 30; - end; - URLlist := TStringList.Create; -end; - -procedure TLinksBar.Loaded; -begin - inherited; - CreateLinkButtons(0); -end; - -destructor TLinksBar.Destroy; -begin - LinkList.Free; - URLList.Free; - inherited Destroy; -end; - -procedure TLinksBar.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); -begin -end; - -procedure TLinksBar.SetAbout(Value: string); -begin - Exit; -end; - -procedure TLinksBar.OnlinkClick(Sender: TObject); -var - navUrl: WideString; -begin - if (Sender.ClassName = 'TToolButton') then - begin - navUrl := (Sender as TToolButton).Hint; - if FAutoNavigate then - if Assigned(FWebBrowser) then - FWebBrowser.Navigate(navUrl); - if Assigned(FStatusBar) then - FStatusBar.SimpleText := navUrl; - end; -end; - -procedure TLinksBar.SetShown(Value: Boolean); -begin - Visible := True; - if FShown <> Value then - begin - Visible := not FShown; - FShown := Value; - end; -end; - -procedure TLinksBar.CreateLinkButtons(ImageIdx: integer); -var - LinkTitle: string; - CaptionLength, i: integer; -begin - for i := ButtonCount - 1 downto 0 do - Buttons[i].Hide; - - LinkList.Clear; - LinkList.BeginUpdate; - GetTheLinksList(LinkList); - LinkList.EndUpdate; - for i := 0 to LinkList.Count - 1 do - begin - FTitle := LinkList.Names[i]; - FUrl := LinkList.Values[LinkList.Names[i]]; - LinkTitle := FTitle; - CaptionLength := FMaxCaptionLength; - if Length(LinkTitle) > CaptionLength then - LinkTitle := Copy(LinkTitle, 1, CaptionLength) + '...' - else - LinkTitle := LinkTitle; - - with TLinksBar do - begin - Shown := True; - LinksButton := TToolButton.create(TLinksBar); - with LinksButton do - begin - if fShowImages then - ImageIndex := ImageIdx; - if ImageIndex > -1 then - Height := 26 - else - Height := 16; - ShowHint := True; - AutoSize := True; - Grouped := True; - Visible := True; - Parent := Self; - Style := tbsCheck; - Caption := LinkTitle; - Hint := FUrl; - OnClick := OnlinkClick; - // Left := Width * (self.ControlCount-2); - end; - end; - end; -end; - -{procedure LockClientUpdate; -begin - if FLockClientUpdateCount = 0 then - SendMessage(Application.MainForm.ClientHandle, WM_SETREDRAW, 0, 0); - Inc(FLockClientUpdateCount); -end; - -procedure UnlockClientUpdate; -begin - Dec(FLockClientUpdateCount); - if FLockClientUpdateCount = 0 then - begin - SendMessage(Application.MainForm.ClientHandle, WM_SETREDRAW, 1, 0); - RedrawWindow(Application.MainForm.ClientHandle, nil, 0, RDW_FRAME or - RDW_INVALIDATE or RDW_ALLCHILDREN or RDW_NOINTERNALPAINT); - end; -end; } - -// PUBLIC ***************************************************************************** - -procedure TLinksBar.GetTheLinksList(LinkList: Tstrings); -var - RegPath: string; -begin - with TRegIniFile.Create do - begin - RootKey := HKEY_LOCAL_MACHINE; - RegPath := 'SOFTWARE\' + Forms.Application.Title; - if OpenKey(RegPath, False) then - begin - try - LinkList.Clear; - LinkList.BeginUpdate; - ReadSectionValues('Links', LinkList); - LinkList.EndUpdate; - if LinkList.Text = '' then - begin - Visible := False; - // MessageDlg('The links list is empty.',mtError,[mbOK], 0); - end; - except - MessageDlg('Error while reading the links from the registry!', mtError, [mbOK], 0); - end; - CloseKey; - Free; - end; - end; -end; - -procedure TLinksBar.GetTheLinksURLs(URLList: Tstrings); -var - Linklist: TstringList; - RegPath: string; - i: integer; -begin - Linklist := TstringList.Create; - LinkList.Clear; - with TRegIniFile.Create do - begin - RootKey := HKEY_LOCAL_MACHINE; - RegPath := 'SOFTWARE\' + Forms.Application.Title; - if OpenKey(RegPath, False) then - begin - try - ReadSectionValues('Links', LinkList); - for i := 0 to LinkList.Count - 1 do - begin - FUrl := LinkList.Values[LinkList.Names[i]]; - URLList.Add(FUrl); - end; - CloseKey; - Free; - except - MessageDlg('Error while reading the links from the registry!', mtError, [mbOK], 0); - end; - end; - end; - LinkList.Free; -end; - -procedure TLinksBar.AddToLinksList(Title, URL: string); -var - RegPath: string; -begin - with TRegIniFile.Create do - try - RootKey := HKEY_LOCAL_MACHINE; - RegPath := 'SOFTWARE\' + Forms.Application.Title; - if OpenKey(RegPath, True) then - try - WriteString('Links', Title, URL); - MessageDlg('The site : ' + Title + #10 + #13 + ' has been added to your links list.', - mtInformation, [mbOK], 0); - except - - MessageDlg('Error while adding the site to the registry!', mtError, - [mbOK], 0); - end; - CloseKey; - finally - Free; - end; - Visible := True; - CreateLinkButtons(0); - Repaint; -end; - -procedure TLinksBar.RemoveFromLinksList(Title: string); -var - RegPath: string; -begin - with TRegIniFile.Create do - try - RootKey := HKEY_LOCAL_MACHINE; - RegPath := 'SOFTWARE\' + Forms.Application.Title + '\Links'; - if OpenKey(RegPath, False) then - try - if DeleteValue(Title) then - MessageDlg('The site : ' + Title + #10 + #13 + 'Was removed from your links list.', - mtInformation, [mbOK], 0) - else - MessageDlg('The site could not be found in the list.', mtError, [mbOK], 0); - except - MessageDlg('Error while removing the site from the registry!', mtError, - [mbOK], 0); - CloseKey; - end; - finally - Free; - end; - CreateLinkButtons(0); -end; - -procedure TLinksBar.ClearTheLinksList; -var - del: Integer; - RegPath: string; -begin - del := MessageDlg('You are about to delete all your links. Are you sure?', - mtWarning, [mbOK, mbCancel], 0); - if del = mrCancel then - Exit - else - begin - with TRegistry.Create do - try - RootKey := HKEY_LOCAL_MACHINE; - RegPath := 'SOFTWARE\' + Forms.Application.Title; - if OpenKey(RegPath, False) then - try - if DeleteKey('Links') then - MessageDlg('The link list has been removed from the registry.', mtInformation, - [mbOK], 0) - else - MessageDlg('The list could not be located.', mtError, [mbOK], 0); - CloseKey; - except - MessageDlg('Error while removing the list from the registry!', mtError, - [mbOK], 0); - end; - finally - Free; - end; - end; - CreateLinkButtons(-1); -end; - - -procedure TLinksBar.NavigateToItem(Title: string); -var - navUrl, RegPath: string; - i: Integer; -begin - with TRegIniFile.Create do - try - RootKey := HKEY_LOCAL_MACHINE; - RegPath := 'SOFTWARE\' + Forms.Application.Title; - if OpenKey(RegPath, False) then - begin - try - ReadSectionValues('Links', LinkList); - i := LinkList.IndexOfName(Title); - navUrl := LinkList.Values[LinkList.Names[i]]; - closekey; - if (i = -1) or (navUrl = '') then - begin - MessageDlg('Your links list is empty.', - mtError, [mbOK], 0); - Exit; - end - else - if Assigned(FWebBrowser) then - FWebBrowser.Navigate(navUrl); - finally - CloseKey; - end; - end; - finally - Free; - end; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/LinksLabel.pas b/windows/src/ext/embeddedwb/Source/LinksLabel.pas deleted file mode 100644 index 84dd4455cc..0000000000 --- a/windows/src/ext/embeddedwb/Source/LinksLabel.pas +++ /dev/null @@ -1,910 +0,0 @@ -//*********************************************************** -// TLinksLabel * -// * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Eran Bodankin (bsalsa) * // per.lindsoe@larsen.dk * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//*********************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: LinksLabel.pas,v 1.2 2006/11/15 21:01:42 sergev Exp $ - -{$B-} - -unit LinksLabel; - -interface - -{$I EWB.inc} - -uses - SysUtils, Windows, ExtCtrls, Dialogs, Controls, StdCtrls, Messages, Classes, - Graphics, Menus, ImgList; - -type - TDirection = (diLeftToRight, diRightToLeft, diTopToBottom, diBottomToTop); - TTextStyle = (tsNormal, ts3D_F, ts3D_B); - TTextLayout = (tlTop, tlCenter, tlBottom); - TLaunchSettings = (Http, MailTo, Application); - TWindowState = (wsNormal, wsMinimized, wsMaximized); - TOnLaunchEvent = procedure(var Success: Boolean; const ErrorText: string; var Result: Cardinal) of object; - TTextEffects = (teNormal, teRunning, teFlickering); -//------------------------------------------------------------------------------ - TMail = class(TPersistent) - private - FAddress: string; - FSubject: string; - FBody: string; - FWindowState: TWindowState; - published - property Address: string read FAddress write FAddress; - property Subject: string read FSubject write FSubject; - property Body: string read FBody write FBody; - property WindowState: TWindowState read FWindowState write FWindowState default wsNormal; - end; - - THttp = class(TPersistent) - private - FAddress: string; - FWindowState: TWindowState; - procedure SetAddress(const value: string); - published - property Address: string read FAddress write SetAddress; - property WindowState: TWindowState read FWindowState write FWindowState default wsNormal; - end; - - TApp = class(TPersistent) - private - FPath: string; - FCommand: string; - FDescription: string; - FWindowState: TWindowState; - published - property Description: string read FDescription write FDescription; - property Command: string read FCommand write FCommand; - property Path: string read FPath write FPath; - property WindowState: TWindowState read FWindowState write FWindowState default wsNormal; - end; - - TLaunch = class(TPersistent) - private - FMail: TMail; - FApp: TApp; - FHttp: THttp; - FLaunchSettings: TLaunchSettings; - procedure SetLaunchOptions(Value: TLaunchSettings); - published - property AsHttp: THttp read FHttp write FHttp; - property AsMail: TMail read FMail write FMail; - property AsApplication: TApp read FApp write FApp; - property Options: TLaunchSettings read FLaunchSettings write SetLaunchOptions default Http; - end; -//------------------------------------------------------------------------------ -type - TLinksLabel = class; - - TTextFlick = class(TPersistent) - private - FEnableFlick: Boolean; - FlickTimer: TTimer; - FSpeed: Integer; - procedure SetSpeed(const Value: integer); - published - property Enable: Boolean read FEnableFlick write FEnableFlick default false; - property Speed: integer read FSpeed write SetSpeed default 500; - end; - - TTextRun = class(TPersistent) - private - FSteps: integer; - FCurCycle: Integer; - FEnableRun: Boolean; - FDirection: TDirection; - FSpeed: integer; - FRepeatNumber: Word; - FContinuous: Boolean; - FCurrentStep: Integer; - procedure SetDirection(Value: TDirection); - procedure SetSteps(Value: integer); - procedure SetSpeed(Value: Integer); - procedure SetEnableRun(Value: Boolean); - published - property Enable: Boolean read FEnableRun write SetEnableRun default False; - property Direction: TDirection read FDirection write SetDirection default diLeftToRight; - property RepeatNumber: Word read FRepeatNumber write FRepeatNumber default 0; - property Continuous: Boolean read FContinuous write FContinuous default True; - property Steps: Integer read FSteps write SetSteps default 100; - property Speed: Integer read FSpeed write SetSpeed default 100; - end; - - TLinksLabel = class(TCustomLabel) - private - FAutoSize: Boolean; - FAlignment: TAlignment; - FLayout: TTextLayout; - FOnLaunch: TOnLaunchEvent; - FImageIndex: integer; - FImageChangeLink: TChangeLink; - FImages: TCustomImageList; - RunTimer: TTimer; - FTextEffects: TTextEffects; - FLaunch: TLaunch; - FColorOnMouseClick: Boolean; - FHighlightOnMouseOver: Boolean; - FTextStyle: TTextStyle; - FTextFlick: TTextFlick; - FTextRun: TTextRun; - FShift: integer; - FLinkColor: TColor; - FDownColor: TColor; - FUpColor: TColor; - F3d_F_Color: TColor; - F3d_B_Color: TColor; - procedure SetTextStyle(Value: TTextStyle); - procedure OnRunTimer(Sender: TObject); - procedure CanvasTextOut(Canvas: TCanvas; X, Y: Integer; Text: string); - procedure SetImageIndex(const Value: integer); - procedure SetImages(Value: TCustomImageList); virtual; - function SetWinState(State: TWindowState): Cardinal; - procedure CMTextChanged(var Message: TMessage); message CM_TextChanged; - procedure CMFontChanged(var Msg: TMessage); message CM_FONTCHANGED; - procedure DoCopyAddress(Sender: TObject); - procedure DoLaunch(Sender: TObject); - procedure ImageListChange(Sender: TObject); - procedure SetAlignment(Value: TAlignment); - procedure SetLayout(Value: TTextLayout); - - protected - function GetPopupMenu: TPopupMenu; override; - procedure Paint; override; - procedure Notification(AComponent: TComponent; Operation: TOperation); override; - procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; - procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; - procedure MouseLeave(Sender: TObject); - procedure Loaded; override; - procedure OnFlickTimer(Sedner: Tobject); - procedure SetAutoSize(Value: Boolean); override; - procedure SetLinkColor(Value: TColor); - procedure SetShift(Value: integer); - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - procedure Click; override; - procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; - function GetProgramPathFromExt(const Ext: string): string; - published - property AutoSize: Boolean read FAutoSize write SetAutoSize default True; - property TextFlick: TTextFlick read FTextFlick write FTextFlick; - property TextRun: TTextRun read FTextRun write FTextRun; - property EnableColorOnClick: Boolean read FColorOnMouseClick write FColorOnMouseClick default True; - property EnableHighlight: Boolean read FHighlightOnMouseOver write FHighlightOnMouseOver default True; - property TextStyle: TTextStyle read FTextStyle write SetTextStyle default tsNormal; - property ShiftShadow3D: integer read FShift write SetShift default 2; - property Launch: TLaunch read FLaunch write FLaunch; - property TextEffects: TTextEffects read FTextEffects write FTextEffects default teNormal; - property Images: TCustomImageList read FImages write SetImages; - property ImageIndex: integer read FImageIndex write SetImageIndex default -1; - property OnLaunch: TOnLaunchEvent read FOnLaunch write FOnLaunch; - property Alignment: TAlignment read FAlignment write SetAlignment - default taLeftJustify; - property Layout: TTextLayout read FLayout write SetLayout default tlBottom; - property LinkColor: TColor read FLinkColor write SetLinkColor default clBlue; - property DownColor: TColor read FDownColor write FDownColor default clNavy; - property UpColor: TColor read FUpColor write FUpColor default clPurple; - property Color_3d_F: TColor read F3d_F_Color write F3d_F_Color default clNavy; - property Color_3d_B: TColor read F3d_B_Color write F3d_B_Color default clHighLight; - property Align; - property Anchors; - property BiDiMode; - property Caption; - property Color nodefault; - property Constraints; - property Cursor default crHandPoint; - property DragCursor; - property DragKind; - property DragMode; -{$IFDEF DELPHI9_UP} - property EllipsisPosition; -{$ENDIF} - property Enabled; - property FocusControl; - property Font; - property ParentBiDiMode; - property ParentColor; - property ParentFont default False; - property ParentShowHint default False; - property PopupMenu; - property ShowAccelChar; - property ShowHint default True; - property Transparent default False; - property Visible; - property WordWrap default True; - property OnClick; - property OnContextPopup; - property OnDblClick; - property OnDragDrop; - property OnDragOver; - property OnEndDock; - property OnEndDrag; -{$IFDEF DELPHI9_UP} - property OnMouseActivate; -{$ENDIF} - property OnMouseDown; - property OnMouseMove; - property OnMouseUp; -{$IFDEF DELPHI6_UP} - property OnMouseEnter; - property OnMouseLeave; -{$ENDIF} - property OnStartDock; - property OnStartDrag; - end; - -implementation -uses - Registry, ShellAPI, Clipbrd, CommCtrl; -//Acc--------------------------------------------------------------------------- - -function ErrorText(ErrorCode: Integer): string; -begin - case ErrorCode of - 0: Result := 'The operating system is out of memory or resources.'; - ERROR_FILE_NOT_FOUND: Result := 'The specified file was not found.'; - ERROR_PATH_NOT_FOUND: Result := 'The specified path was not found.'; - ERROR_BAD_FORMAT: Result := 'The .exe file is invalid (non-Microsoft Win32 .exe or error in .exe image).'; - SE_ERR_ACCESSDENIED: Result := 'The operating system denied access to the specified file.'; - SE_ERR_ASSOCINCOMPLETE: Result := 'The file name association is incomplete or invalid. '; - SE_ERR_DDEBUSY: Result := 'The Dynamic Data Exchange (DDE) transaction could not be completed because other DDE transactions were being processed.'; - SE_ERR_DDEFAIL: Result := 'The DDE transaction failed.'; - SE_ERR_DDETIMEOUT: Result := 'The DDE transaction could not be completed because the request timed out.'; - SE_ERR_DLLNOTFOUND: Result := 'The specified dynamic-link library (DLL) was not found.'; - SE_ERR_NOASSOC: Result := 'There is no application associated with the given file name extension. This error will also be returned if you attempt to print a file that is not printable.'; - SE_ERR_OOM: Result := 'There was not enough memory to complete the operation.'; - SE_ERR_SHARE: Result := 'A sharing violation occurred.'; - 4: Result := 'Please assign a task to the label.'; - else - if ErrorCode <> 0 then - Result := 'Error: '; - end; -end; -// Component-------------------------------------------------------------------- - -constructor TLinksLabel.Create(AOwner: TComponent); -begin - inherited; -{$IFDEF DELPHI6_UP} - OnMouseLeave := MouseLeave; -{$ENDIF} - WordWrap := True; - Font.Style := [fsUnderline]; - Cursor := crHandPoint; - Caption := 'Home Page'; - ParentShowHint := False; - ShowHint := True; - Width := 150; - Height := 100; - FImageIndex := -1; - FLayout := tlBottom; - FImageChangeLink := TChangeLink.Create; - FImageChangeLink.OnChange := ImageListChange; - FColorOnMouseClick := True; - FHighlightOnMouseOver := True; - FTextStyle := tsNormal; - FTextEffects := teNormal; - FTextFlick := TTextFlick.Create; - FTextFlick.FSpeed := 500; - FLinkColor := clBlue; - Font.Color := FLinkColor; - FUpColor := clPurple; - FDownColor := clNavy; - F3d_F_Color := clNavy; - F3d_B_Color := clHighLight; - FShift := 2; - FTextRun := TTextRun.Create; - with FTextRun do - begin - FSpeed := 100; - FContinuous := True; - FDirection := diLeftToRight; - FSteps := 100; - FRepeatNumber := 0; - end; - - FLaunch := TLaunch.Create; - with FLaunch do - begin - FMail := TMail.Create; - FMail.FWindowState := wsNormal; - FApp := TApp.Create; - FApp.FWindowState := wsNormal; - FHttp := THttp.Create; - FHttp.FWindowState := wsNormal; - FLaunchSettings := Http; - end; -end; - -destructor TLinksLabel.Destroy; -begin - with FLaunch do - begin - FApp.Free; - FMail.Free; - FHttp.Free; - Free; - end; - FImageChangeLink.Free; - if FTextFlick.FEnableFlick then - FTextFlick.FlickTimer.Free; - if FTextRun.FEnableRun then - RunTimer.Free; - FTextRun.Free; - FTextFlick.Free; - inherited; -end; - -procedure TLinksLabel.Loaded; -begin - inherited; - Font.Color := FLinkColor; - if FTextFlick.FEnableFlick then - begin - FTextRun.FEnableRun := False; - FAutoSize := True; - with FTextFlick do - begin - FlickTimer := TTimer.Create(Self); - FlickTimer.Interval := FTextFlick.FSpeed; - FlickTimer.OnTimer := OnFlickTimer; - end; - invalidate; - end; - - if FTextRun.FEnableRun then - begin - FTextFlick.FEnableFlick := False; - FAutoSize := False; - with FTextRun do - begin - FCurrentStep := 0; - RunTimer := TTimer.Create(Self); - with RunTimer do - begin - Enabled := FTextRun.FEnableRun; - OnTimer := OnRunTimer; - Interval := FTextRun.FSpeed; - end; - end; - Paint; - end; -end; - -procedure TLinksLabel.CMTextChanged(var Message: TMessage); -begin - inherited; - if Caption = '' then - Caption := FLaunch.FHttp.FAddress; - Invalidate; -end; - -procedure TLinksLabel.CMFontChanged(var Msg: TMessage); -begin - inherited; - Invalidate; -end; - -procedure TLinksLabel.Click; -var - WS: TWindowState; - Param: string; - Car: Cardinal; - bOK: Boolean; -begin - bOK := False; - WS := wsNormal; - case FLaunch.FLaunchSettings of - Http: - begin - Param := 'http://' + FLaunch.FHttp.FAddress; - WS := FLaunch.FHttp.FWindowState; - end; - MailTo: - begin - Param := 'mailto:' + FLaunch.FMail.FAddress + '?subject=' + - FLaunch.FMail.FSubject + '&body=' + FLaunch.FMail.FBody; - WS := FLaunch.FMail.FWindowState; - end; - Application: - begin - Param := FLaunch.Fapp.FPath + '' + FLaunch.Fapp.FCommand; - WS := FLaunch.FApp.FWindowState; - end; - end; - if (FLaunch.FHttp.FAddress <> '') or (FLaunch.FMail.FAddress <> '') or (FLaunch.FApp.FPath <> '') then - begin - Car := ShellExecute(0, 'open', PChar(Param), nil, nil, SetWinState(WS)); - bOK := Car > 32; - end - else - begin - bOK := False; - Car := 4; - end; - if Assigned(FOnLaunch) then - FonLaunch(bOK, ErrorText(Car), Car); - Font.Color := FUpColor; - inherited; -end; - -procedure TLinksLabel.DoCopyAddress(Sender: TObject); -begin - case FLaunch.FLaunchSettings of - Http: Clipboard.AsText := FLaunch.FHttp.FAddress; - MailTo: Clipboard.AsText := FLaunch.FMail.FAddress; - Application: Clipboard.AsText := FLaunch.FApp.FPath; - end; -end; - -procedure TLinksLabel.CanvasTextOut(Canvas: TCanvas; X, Y: Integer; Text: string); -begin - with Canvas do - begin - case FTextStyle of - ts3D_F: - begin - Font.Color := F3d_F_Color; - TextOut(X + FShift, Y + FShift, Text); - end; - ts3D_B: - begin - Font.Color := F3d_B_Color; - TextOut(X - FShift, Y - FShift, Text); - end; - end; - TextOut(X, Y, Text); - end; -end; - -procedure TLinksLabel.DoLaunch(Sender: TObject); -var - Param: string; - Car: Cardinal; - bOK: Boolean; - WS: TWindowState; -begin - WS := wsNormal; - bOK := False; - case FLaunch.FLaunchSettings of - Http: - begin - Param := 'http://' + FLaunch.FHttp.FAddress; - WS := FLaunch.FHttp.FWindowState; - end; - MailTo: - begin - Param := 'mailto:' + FLaunch.FMail.FAddress + '?subject=' + - FLaunch.FMail.FSubject + '&body=' + FLaunch.FMail.FBody; - WS := FLaunch.FMail.FWindowState; - end; - Application: - begin - Param := FLaunch.Fapp.FPath + '' + FLaunch.Fapp.FCommand; - WS := FLaunch.FApp.FWindowState; - end; - end; - Car := ShellExecute(0, 'open', PChar(Param), nil, nil, SetWinState(WS)); - bOK := Car > 32; - if Assigned(FOnLaunch) then - FonLaunch(bOK, ErrorText(Car), Car); - Font.Color := FUpColor; -end; - -procedure TLinksLabel.MouseMove(Shift: TShiftState; X, Y: Integer); -begin - inherited; - if FHighlightOnMouseOver then - Font.Style := Font.Style + [fsBold]; - case FLaunch.FLaunchSettings of - Http: Hint := 'Address: ' + FLaunch.FHttp.FAddress; - MailTo: Hint := 'Mail To: ' + FLaunch.FMail.FAddress; - Application: Hint := FLaunch.FApp.FDescription; - end; -end; - -procedure TLinksLabel.MouseLeave(Sender: TObject); -begin - if FHighlightOnMouseOver then - Font.Style := Font.Style - [fsBold]; -end; - -procedure TLinksLabel.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); -begin - inherited; - if (Button = mbLeft) and (FColorOnMouseClick) then - Font.Color := FDownColor - else - if (Button = mbRight) and (not Assigned(PopupMenu)) then - GetPopUpMenu; -end; - -procedure TLinksLabel.Notification(AComponent: TComponent; Operation: TOperation); -begin - inherited Notification(AComponent, Operation); - if (Operation = opRemove) and (AComponent = FImages) then - FImages := nil; -end; - -procedure TLinksLabel.Paint; -var - Height, PosHeightX, PosWidthY, ModWidth, ModHeight, - ModWidthX, ModHeightY: Integer; - StepPosition: Double; -begin - inherited; - ModWidthX := 0; - ModHeightY := 0; - with Canvas do - begin - ModWidth := TextWidth(Caption) + 2; - ModHeight := TextHeight(Caption) + 2; - Brush.Color := Self.Color; - Brush.Style := bsSolid; - Font := Self.Font; - FillRect(ClientRect); - if Assigned(FImages) and (FImageIndex >= 0) and (FImageIndex < FImages.Count) then - begin - ImageList_Draw(FImages.Handle, FImageIndex, Handle, - (Width - FImages.Width) shr 1, 0, ILD_NORMAL or ILD_TRANSPARENT); - Height := FImages.Height; - end - else - Height := 0; - case FAlignment of - taRightJustify: ModWidthX := Width - ModWidth; - taCenter: ModWidthX := (Width - ModWidth) div 2; - taLeftJustify: ModWidthX := 0; - end; - case FLayout of - tlBottom: ModHeightY := Height - ModHeight + 30; - tlCenter: ModHeightY := (Height - ModHeight) div 2 + 15; - tlTop: ModHeightY := 0; - end; - if FTextRun.FEnableRun then - begin - StepPosition := FTextRun.FCurrentStep / FTextRun.FSteps; - PosHeightX := ModWidthX; - PosWidthY := ModHeightY; - case FTextRun.FDirection of - diRightToLeft: - begin - PosWidthY := ModHeightY; - PosHeightX := -ModWidth + Round((ModWidth + Width) * (1 - StepPosition)); - end; - diLeftToRight: - begin - PosWidthY := ModHeightY; - PosHeightX := -ModWidth + Round((ModWidth + Width) * (StepPosition)); - end; - diTopToBottom: - begin - PosHeightX := ModWidthX; - PosWidthY := -ModHeight + Round((ModHeight + Height) * (StepPosition)); - end; - diBottomToTop: - begin - PosHeightX := ModWidthX; - PosWidthY := -ModHeight + Round((ModHeight + Height) * (1 - StepPosition)); - end; - end; //running text - CanvasTextOut(Canvas, PosHeightX, PosWidthY, Caption); - end - else - begin //images - CanvasTextOut(Canvas, (Width - TextWidth(Caption)), Height, Caption) - end; - end; -end; - -procedure TLinksLabel.ImageListChange(Sender: TObject); -begin - Invalidate; -end; - -function TLinksLabel.GetPopupMenu: TPopupMenu; -var - Pop: TPopupMenu; - p: TPoint; -begin - Pop := TPopupMenu.Create(Self); - with Pop do - begin - p := Self.ClientToScreen(Point(0, 0)); - Popup(P.X, P.Y); - Items.Clear; - with Items do - begin - NewTopLine; - case FLaunch.FLaunchSettings of - Http: Add(NewItem('Copy Address', 0, False, True, DoCopyAddress, 0, 'MenuItem1')); - MailTo: Add(NewItem('Copy Address', 0, False, True, DoCopyAddress, 0, 'MenuItem1')); - end; - Add(NewItem('Launch', 0, False, True, DoLaunch, 0, 'MenuItem2')); - NewBottomLine; - end; - end; - Result := Pop; -end; - -function TLinksLabel.GetProgramPathFromExt(const Ext: string): string; -var - S: string; -begin - Result := ''; - with TRegistry.Create do - try - RootKey := HKEY_CLASSES_ROOT; - - if OpenKey('\' + Ext, False) then - begin - S := ReadString(''); - if S <> '' then - begin - if OpenKey('\' + S + '\shell\open\command', False) then - begin - S := ReadString(''); - if S <> '' then - Result := S; - end; - end - else - begin - if OpenKey('\' + Ext + '\shell\open\command', False) then - begin - S := ReadString(''); - if S <> '' then - Result := S; - end; - end; - end; - finally - Free; - end; -end; - -procedure TLinksLabel.OnFlickTimer(Sedner: Tobject); -begin - if csDesigning in ComponentState then - begin - FTextFlick.FlickTimer.Enabled := False; - Exit; - end; - if FTextFlick.FEnableFlick then - Visible := not Visible; -end; - -procedure TLinksLabel.OnRunTimer(Sender: TObject); -begin - if not RunTimer.Enabled then - Exit; - with FTextRun do - begin - if (FCurCycle < FRepeatNumber) or FContinuous then - begin - Inc(FCurrentStep); - Paint; - if FCurrentStep = FSteps then - begin - FCurrentStep := 0; - if not FContinuous then - Inc(FCurCycle); - end; - end - else - FEnableRun := False; - end; -end; -//Set--------------------------------------------------------------------------- - -function TLinksLabel.SetWinState(State: TWindowState): Cardinal; -begin - Result := 0; - case State of - wsNormal: Result := SW_SHOWNORMAL; - wsMinimized: Result := SW_MINIMIZE; - wsMaximized: Result := SW_MAXIMIZE; - end; -end; - -procedure TLinksLabel.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); -var - Size: TSize; -begin - if Assigned(Parent) then - begin - if Assigned(FImages) then - begin - Canvas.Font := Font; - Size := Canvas.TextExtent(Caption); - AWidth := Size.cx; - if (AWidth < FImages.Width) then - AWidth := FImages.Width; - AHeight := Size.cy; - Inc(AHeight, FImages.Height); - end - else - begin - Canvas.Font := Font; - Size := Canvas.TextExtent(Caption); - AHeight := Size.cy + 16; - end; - end; - invalidate; - inherited; -end; - -procedure TLinksLabel.SetImageIndex(const Value: integer); -begin - begin - if FImageIndex <> Value then - begin - FImageIndex := Value; - Invalidate; - end; - end; -end; - -procedure TLinksLabel.SetImages(Value: TCustomImageList); -begin - if Images <> nil then - Images.UnRegisterChanges(FImageChangeLink); - FImages := Value; - if Images <> nil then - begin - Images.RegisterChanges(FImageChangeLink); - Images.FreeNotification(Self); - end; - Invalidate; -end; - -procedure TLinksLabel.SetAlignment(Value: TAlignment); -begin - if FAlignment <> Value then - begin - FAlignment := Value; - Invalidate; - end; -end; - -procedure TLinksLabel.SetLayout(Value: TTextLayout); -begin - if FLayout <> Value then - begin - FLayout := Value; - Invalidate; - end; -end; - -procedure TLinksLabel.SetAutoSize(Value: Boolean); -begin - if FAutoSize <> Value then - begin - FAutoSize := Value; - AdjustBounds; - Paint; - end; -end; - -procedure TLinksLabel.SetTextStyle(Value: TTextStyle); -begin - if FTextStyle <> Value then - begin - FTextStyle := Value; - Paint; - end; -end; - -procedure TLinksLabel.SetLinkColor(Value: TColor); -begin - if FLinkColor <> Value then - begin - FLinkColor := Value; - Paint; - end; -end; - -procedure TLinksLabel.SetShift(Value: integer); -begin - if FShift <> Value then - begin - FShift := Value; - Paint; - end; -end; - -//--------TTextFlick----------------------------------------------------------- - -procedure TTextFlick.SetSpeed(const Value: integer); -begin - if FSpeed <> Value then - FSpeed := Value; - if Value > 1000 then - FSpeed := 1000; - if Value < 1 then - FSpeed := 1; -end; -//------------------------------------------------------------------------------ - -procedure THttp.SetAddress(const Value: string); -begin - if FAddress <> Value then - FAddress := Value; -end; -//--------TLaunch--------------------------------------------------------------- - -procedure TLaunch.SetLaunchOptions(Value: TLaunchSettings); -begin - if FLaunchSettings <> Value then - FLaunchSettings := Value; -end; -//--------TTextRun-------------------------------------------------------------- - -procedure TTextRun.SetDirection; -begin - if (FDirection <> Value) then - FDirection := Value; -end; - -procedure TTextRun.SetSteps(Value: Integer); -begin - if FSteps <> Value then - FSteps := Value; -end; - -procedure TTextRun.SetEnableRun(Value: Boolean); -begin - if (FEnableRun <> Value) then - begin - FEnableRun := Value; - FCurCycle := 0; - FCurrentStep := 0; - end; -end; - -procedure TTextRun.SetSpeed(Value: Integer); -begin - if FSpeed <> Value then - begin - FSpeed := Value; - if Value > 1000 then - FSpeed := 1000; - if Value < 1 then - FSpeed := 1; - end; -end; -//--------------------------------------------------------------------------- - -end. diff --git a/windows/src/ext/embeddedwb/Source/MSHTMLEvents.pas b/windows/src/ext/embeddedwb/Source/MSHTMLEvents.pas deleted file mode 100644 index 64da44cccf..0000000000 --- a/windows/src/ext/embeddedwb/Source/MSHTMLEvents.pas +++ /dev/null @@ -1,42161 +0,0 @@ -{ ***************************************************************************** - WARNING: This component file was generated using the EventSinkImp utility. - The contents of this file will be overwritten everytime EventSinkImp - is asked to regenerate this sink component. - - NOTE: When using this component at the same time with the XXX_TLB.pas in - your Delphi projects, make sure you always put the XXX_TLB unit name - AFTER this component unit name in the USES clause of the interface - section of your unit; otherwise you may get interface conflict - errors from the Delphi compiler. - - EventSinkImp is written by Binh Ly (bly@techvanguards.com) - ***************************************************************************** - //Sink Classes// - TMSHTMLHTMLElementEvents - TMSHTMLHTMLElementEvents2 - TMSHTMLHTMLLinkElementEvents - TMSHTMLHTMLLinkElementEvents2 - TMSHTMLHTMLFormElementEvents - TMSHTMLHTMLFormElementEvents2 - TMSHTMLHTMLImgEvents - TMSHTMLHTMLImgEvents2 - TMSHTMLHTMLTextContainerEvents - TMSHTMLHTMLTextContainerEvents2 - TMSHTMLHTMLAnchorEvents - TMSHTMLHTMLAnchorEvents2 - TMSHTMLHTMLLabelEvents - TMSHTMLHTMLLabelEvents2 - TMSHTMLHTMLSelectElementEvents - TMSHTMLHTMLSelectElementEvents2 - TMSHTMLHTMLInputTextElementEvents - TMSHTMLHTMLInputTextElementEvents2 - TMSHTMLHTMLOptionButtonElementEvents - TMSHTMLHTMLButtonElementEvents - TMSHTMLHTMLButtonElementEvents2 - TMSHTMLHTMLMarqueeElementEvents - TMSHTMLHTMLMarqueeElementEvents2 - TMSHTMLHTMLWindowEvents - TMSHTMLHTMLWindowEvents2 - TMSHTMLHTMLDocumentEvents - TMSHTMLHTMLDocumentEvents2 - TMSHTMLDWebBridgeEvents - TMSHTMLHTMLControlElementEvents - TMSHTMLHTMLControlElementEvents2 - TMSHTMLHTMLMapEvents - TMSHTMLHTMLMapEvents2 - TMSHTMLHTMLAreaEvents - TMSHTMLHTMLAreaEvents2 - TMSHTMLHTMLTableEvents - TMSHTMLHTMLTableEvents2 - TMSHTMLHTMLScriptEvents - TMSHTMLHTMLScriptEvents2 - TMSHTMLHTMLObjectElementEvents - TMSHTMLHTMLObjectElementEvents2 - TMSHTMLHTMLFrameSiteEvents - TMSHTMLHTMLFrameSiteEvents2 - TMSHTMLHTMLStyleElementEvents - TMSHTMLHTMLStyleElementEvents2 - TMSHTMLHTMLNamespaceEvents - TMSHTMLHTMLInputFileElementEvents - TMSHTMLHTMLInputImageEvents -} - -{$IFDEF VER100} -{$DEFINE D3} -{$ENDIF} - -{$IFDEF CONDITIONALEXPRESSIONS} -{$WARN SYMBOL_PLATFORM OFF} -{$ENDIF} - -//SinkUnitName// -unit MSHTMLEvents; - -interface - -uses - Windows, ActiveX, Classes, ComObj, OleCtrls - //SinkUses// - , StdVCL - , MSHTML_EWB - ; - -type - { backward compatibility types } -{$IFDEF D3} - OLE_COLOR = TOleColor; -{$ENDIF} - - TMSHTMLEventsBaseSink = class(TComponent, IUnknown, IDispatch) - protected - { IUnknown } - function QueryInterface(const IID: TGUID; out Obj): HResult; {$IFNDEF D3} override; {$ENDIF} stdcall; - function _AddRef: Integer; stdcall; - function _Release: Integer; stdcall; - - { IDispatch } - function GetIDsOfNames(const IID: TGUID; Names: Pointer; - NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; virtual; stdcall; - function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; virtual; stdcall; - function GetTypeInfoCount(out Count: Integer): HResult; virtual; stdcall; - function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; virtual; stdcall; - protected - FCookie: integer; - FCP: IConnectionPoint; - FSinkIID: TGUID; - FSource: IUnknown; - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; virtual; abstract; - public - destructor Destroy; override; - procedure Connect(const ASource: IUnknown); - procedure Disconnect; - property SinkIID: TGUID read FSinkIID write FSinkIID; - property Source: IUnknown read FSource; - end; - - //SinkImportsForwards// - - //SinkImports// - - //SinkIntfStart// - - //SinkEventsForwards// - THTMLElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLElementEventsonhelpEvent; - Fonclick: THTMLElementEventsonclickEvent; - Fondblclick: THTMLElementEventsondblclickEvent; - Fonkeypress: THTMLElementEventsonkeypressEvent; - Fonkeydown: THTMLElementEventsonkeydownEvent; - Fonkeyup: THTMLElementEventsonkeyupEvent; - Fonmouseout: THTMLElementEventsonmouseoutEvent; - Fonmouseover: THTMLElementEventsonmouseoverEvent; - Fonmousemove: THTMLElementEventsonmousemoveEvent; - Fonmousedown: THTMLElementEventsonmousedownEvent; - Fonmouseup: THTMLElementEventsonmouseupEvent; - Fonselectstart: THTMLElementEventsonselectstartEvent; - Fonfilterchange: THTMLElementEventsonfilterchangeEvent; - Fondragstart: THTMLElementEventsondragstartEvent; - Fonbeforeupdate: THTMLElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLElementEventsonerrorupdateEvent; - Fonrowexit: THTMLElementEventsonrowexitEvent; - Fonrowenter: THTMLElementEventsonrowenterEvent; - Fondatasetchanged: THTMLElementEventsondatasetchangedEvent; - Fondataavailable: THTMLElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLElementEventsonpropertychangeEvent; - Fonscroll: THTMLElementEventsonscrollEvent; - Fonfocus: THTMLElementEventsonfocusEvent; - Fonblur: THTMLElementEventsonblurEvent; - Fonresize: THTMLElementEventsonresizeEvent; - Fondrag: THTMLElementEventsondragEvent; - Fondragend: THTMLElementEventsondragendEvent; - Fondragenter: THTMLElementEventsondragenterEvent; - Fondragover: THTMLElementEventsondragoverEvent; - Fondragleave: THTMLElementEventsondragleaveEvent; - Fondrop: THTMLElementEventsondropEvent; - Fonbeforecut: THTMLElementEventsonbeforecutEvent; - Foncut: THTMLElementEventsoncutEvent; - Fonbeforecopy: THTMLElementEventsonbeforecopyEvent; - Foncopy: THTMLElementEventsoncopyEvent; - Fonbeforepaste: THTMLElementEventsonbeforepasteEvent; - Fonpaste: THTMLElementEventsonpasteEvent; - Foncontextmenu: THTMLElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLElementEventsonrowsinsertedEvent; - Foncellchange: THTMLElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLElementEventsonlayoutcompleteEvent; - Fonpage: THTMLElementEventsonpageEvent; - Fonbeforedeactivate: THTMLElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLElementEventsonbeforeactivateEvent; - Fonmove: THTMLElementEventsonmoveEvent; - Foncontrolselect: THTMLElementEventsoncontrolselectEvent; - Fonmovestart: THTMLElementEventsonmovestartEvent; - Fonmoveend: THTMLElementEventsonmoveendEvent; - Fonresizestart: THTMLElementEventsonresizestartEvent; - Fonresizeend: THTMLElementEventsonresizeendEvent; - Fonmouseenter: THTMLElementEventsonmouseenterEvent; - Fonmouseleave: THTMLElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLElementEventsonmousewheelEvent; - Fonactivate: THTMLElementEventsonactivateEvent; - Fondeactivate: THTMLElementEventsondeactivateEvent; - Fonfocusin: THTMLElementEventsonfocusinEvent; - Fonfocusout: THTMLElementEventsonfocusoutEvent; - published - //SinkEventsPublished// - property onhelp: THTMLElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - end; - - - //SinkEventsForwards// - THTMLElementEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLElementEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLElementEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLElementEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLElementEvents2onhelpEvent; - Fonclick: THTMLElementEvents2onclickEvent; - Fondblclick: THTMLElementEvents2ondblclickEvent; - Fonkeypress: THTMLElementEvents2onkeypressEvent; - Fonkeydown: THTMLElementEvents2onkeydownEvent; - Fonkeyup: THTMLElementEvents2onkeyupEvent; - Fonmouseout: THTMLElementEvents2onmouseoutEvent; - Fonmouseover: THTMLElementEvents2onmouseoverEvent; - Fonmousemove: THTMLElementEvents2onmousemoveEvent; - Fonmousedown: THTMLElementEvents2onmousedownEvent; - Fonmouseup: THTMLElementEvents2onmouseupEvent; - Fonselectstart: THTMLElementEvents2onselectstartEvent; - Fonfilterchange: THTMLElementEvents2onfilterchangeEvent; - Fondragstart: THTMLElementEvents2ondragstartEvent; - Fonbeforeupdate: THTMLElementEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLElementEvents2onafterupdateEvent; - Fonerrorupdate: THTMLElementEvents2onerrorupdateEvent; - Fonrowexit: THTMLElementEvents2onrowexitEvent; - Fonrowenter: THTMLElementEvents2onrowenterEvent; - Fondatasetchanged: THTMLElementEvents2ondatasetchangedEvent; - Fondataavailable: THTMLElementEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLElementEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLElementEvents2onlosecaptureEvent; - Fonpropertychange: THTMLElementEvents2onpropertychangeEvent; - Fonscroll: THTMLElementEvents2onscrollEvent; - Fonfocus: THTMLElementEvents2onfocusEvent; - Fonblur: THTMLElementEvents2onblurEvent; - Fonresize: THTMLElementEvents2onresizeEvent; - Fondrag: THTMLElementEvents2ondragEvent; - Fondragend: THTMLElementEvents2ondragendEvent; - Fondragenter: THTMLElementEvents2ondragenterEvent; - Fondragover: THTMLElementEvents2ondragoverEvent; - Fondragleave: THTMLElementEvents2ondragleaveEvent; - Fondrop: THTMLElementEvents2ondropEvent; - Fonbeforecut: THTMLElementEvents2onbeforecutEvent; - Foncut: THTMLElementEvents2oncutEvent; - Fonbeforecopy: THTMLElementEvents2onbeforecopyEvent; - Foncopy: THTMLElementEvents2oncopyEvent; - Fonbeforepaste: THTMLElementEvents2onbeforepasteEvent; - Fonpaste: THTMLElementEvents2onpasteEvent; - Foncontextmenu: THTMLElementEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLElementEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLElementEvents2onrowsinsertedEvent; - Foncellchange: THTMLElementEvents2oncellchangeEvent; - Fonreadystatechange: THTMLElementEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLElementEvents2onlayoutcompleteEvent; - Fonpage: THTMLElementEvents2onpageEvent; - Fonmouseenter: THTMLElementEvents2onmouseenterEvent; - Fonmouseleave: THTMLElementEvents2onmouseleaveEvent; - Fonactivate: THTMLElementEvents2onactivateEvent; - Fondeactivate: THTMLElementEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLElementEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLElementEvents2onbeforeactivateEvent; - Fonfocusin: THTMLElementEvents2onfocusinEvent; - Fonfocusout: THTMLElementEvents2onfocusoutEvent; - Fonmove: THTMLElementEvents2onmoveEvent; - Foncontrolselect: THTMLElementEvents2oncontrolselectEvent; - Fonmovestart: THTMLElementEvents2onmovestartEvent; - Fonmoveend: THTMLElementEvents2onmoveendEvent; - Fonresizestart: THTMLElementEvents2onresizestartEvent; - Fonresizeend: THTMLElementEvents2onresizeendEvent; - Fonmousewheel: THTMLElementEvents2onmousewheelEvent; - published - //SinkEventsPublished// - property onhelp: THTMLElementEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLElementEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLElementEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLElementEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLElementEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLElementEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLElementEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLElementEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLElementEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLElementEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLElementEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLElementEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLElementEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLElementEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLElementEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLElementEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLElementEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLElementEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLElementEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLElementEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLElementEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLElementEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLElementEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLElementEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLElementEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLElementEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLElementEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLElementEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLElementEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLElementEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLElementEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLElementEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLElementEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLElementEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLElementEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLElementEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLElementEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLElementEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLElementEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLElementEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLElementEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLElementEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLElementEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLElementEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLElementEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLElementEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLElementEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLElementEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLElementEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLElementEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLElementEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLElementEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLElementEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLElementEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLElementEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLElementEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLElementEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLElementEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLElementEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLElementEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLElementEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLElementEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - end; - - - //SinkEventsForwards// - THTMLLinkElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLLinkElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonloadEvent = procedure(Sender: TObject) of object; - THTMLLinkElementEventsonerrorEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLLinkElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - procedure Doonload; safecall; - procedure Doonerror; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLLinkElementEventsonhelpEvent; - Fonclick: THTMLLinkElementEventsonclickEvent; - Fondblclick: THTMLLinkElementEventsondblclickEvent; - Fonkeypress: THTMLLinkElementEventsonkeypressEvent; - Fonkeydown: THTMLLinkElementEventsonkeydownEvent; - Fonkeyup: THTMLLinkElementEventsonkeyupEvent; - Fonmouseout: THTMLLinkElementEventsonmouseoutEvent; - Fonmouseover: THTMLLinkElementEventsonmouseoverEvent; - Fonmousemove: THTMLLinkElementEventsonmousemoveEvent; - Fonmousedown: THTMLLinkElementEventsonmousedownEvent; - Fonmouseup: THTMLLinkElementEventsonmouseupEvent; - Fonselectstart: THTMLLinkElementEventsonselectstartEvent; - Fonfilterchange: THTMLLinkElementEventsonfilterchangeEvent; - Fondragstart: THTMLLinkElementEventsondragstartEvent; - Fonbeforeupdate: THTMLLinkElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLLinkElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLLinkElementEventsonerrorupdateEvent; - Fonrowexit: THTMLLinkElementEventsonrowexitEvent; - Fonrowenter: THTMLLinkElementEventsonrowenterEvent; - Fondatasetchanged: THTMLLinkElementEventsondatasetchangedEvent; - Fondataavailable: THTMLLinkElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLLinkElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLLinkElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLLinkElementEventsonpropertychangeEvent; - Fonscroll: THTMLLinkElementEventsonscrollEvent; - Fonfocus: THTMLLinkElementEventsonfocusEvent; - Fonblur: THTMLLinkElementEventsonblurEvent; - Fonresize: THTMLLinkElementEventsonresizeEvent; - Fondrag: THTMLLinkElementEventsondragEvent; - Fondragend: THTMLLinkElementEventsondragendEvent; - Fondragenter: THTMLLinkElementEventsondragenterEvent; - Fondragover: THTMLLinkElementEventsondragoverEvent; - Fondragleave: THTMLLinkElementEventsondragleaveEvent; - Fondrop: THTMLLinkElementEventsondropEvent; - Fonbeforecut: THTMLLinkElementEventsonbeforecutEvent; - Foncut: THTMLLinkElementEventsoncutEvent; - Fonbeforecopy: THTMLLinkElementEventsonbeforecopyEvent; - Foncopy: THTMLLinkElementEventsoncopyEvent; - Fonbeforepaste: THTMLLinkElementEventsonbeforepasteEvent; - Fonpaste: THTMLLinkElementEventsonpasteEvent; - Foncontextmenu: THTMLLinkElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLLinkElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLLinkElementEventsonrowsinsertedEvent; - Foncellchange: THTMLLinkElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLLinkElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLLinkElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLLinkElementEventsonlayoutcompleteEvent; - Fonpage: THTMLLinkElementEventsonpageEvent; - Fonbeforedeactivate: THTMLLinkElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLLinkElementEventsonbeforeactivateEvent; - Fonmove: THTMLLinkElementEventsonmoveEvent; - Foncontrolselect: THTMLLinkElementEventsoncontrolselectEvent; - Fonmovestart: THTMLLinkElementEventsonmovestartEvent; - Fonmoveend: THTMLLinkElementEventsonmoveendEvent; - Fonresizestart: THTMLLinkElementEventsonresizestartEvent; - Fonresizeend: THTMLLinkElementEventsonresizeendEvent; - Fonmouseenter: THTMLLinkElementEventsonmouseenterEvent; - Fonmouseleave: THTMLLinkElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLLinkElementEventsonmousewheelEvent; - Fonactivate: THTMLLinkElementEventsonactivateEvent; - Fondeactivate: THTMLLinkElementEventsondeactivateEvent; - Fonfocusin: THTMLLinkElementEventsonfocusinEvent; - Fonfocusout: THTMLLinkElementEventsonfocusoutEvent; - Fonload: THTMLLinkElementEventsonloadEvent; - Fonerror: THTMLLinkElementEventsonerrorEvent; - published - //SinkEventsPublished// - property onhelp: THTMLLinkElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLLinkElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLLinkElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLLinkElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLLinkElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLLinkElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLLinkElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLLinkElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLLinkElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLLinkElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLLinkElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLLinkElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLLinkElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLLinkElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLLinkElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLLinkElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLLinkElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLLinkElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLLinkElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLLinkElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLLinkElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLLinkElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLLinkElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLLinkElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLLinkElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLLinkElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLLinkElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLLinkElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLLinkElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLLinkElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLLinkElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLLinkElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLLinkElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLLinkElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLLinkElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLLinkElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLLinkElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLLinkElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLLinkElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLLinkElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLLinkElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLLinkElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLLinkElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLLinkElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLLinkElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLLinkElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLLinkElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLLinkElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLLinkElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLLinkElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLLinkElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLLinkElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLLinkElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLLinkElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLLinkElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLLinkElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLLinkElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLLinkElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLLinkElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLLinkElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLLinkElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLLinkElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLLinkElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onload: THTMLLinkElementEventsonloadEvent read Fonload write Fonload; - property onerror: THTMLLinkElementEventsonerrorEvent read Fonerror write Fonerror; - end; - - - //SinkEventsForwards// - THTMLLinkElementEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLinkElementEvents2onloadEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLinkElementEvents2onerrorEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLLinkElementEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonload(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonerror(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLLinkElementEvents2onhelpEvent; - Fonclick: THTMLLinkElementEvents2onclickEvent; - Fondblclick: THTMLLinkElementEvents2ondblclickEvent; - Fonkeypress: THTMLLinkElementEvents2onkeypressEvent; - Fonkeydown: THTMLLinkElementEvents2onkeydownEvent; - Fonkeyup: THTMLLinkElementEvents2onkeyupEvent; - Fonmouseout: THTMLLinkElementEvents2onmouseoutEvent; - Fonmouseover: THTMLLinkElementEvents2onmouseoverEvent; - Fonmousemove: THTMLLinkElementEvents2onmousemoveEvent; - Fonmousedown: THTMLLinkElementEvents2onmousedownEvent; - Fonmouseup: THTMLLinkElementEvents2onmouseupEvent; - Fonselectstart: THTMLLinkElementEvents2onselectstartEvent; - Fonfilterchange: THTMLLinkElementEvents2onfilterchangeEvent; - Fondragstart: THTMLLinkElementEvents2ondragstartEvent; - Fonbeforeupdate: THTMLLinkElementEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLLinkElementEvents2onafterupdateEvent; - Fonerrorupdate: THTMLLinkElementEvents2onerrorupdateEvent; - Fonrowexit: THTMLLinkElementEvents2onrowexitEvent; - Fonrowenter: THTMLLinkElementEvents2onrowenterEvent; - Fondatasetchanged: THTMLLinkElementEvents2ondatasetchangedEvent; - Fondataavailable: THTMLLinkElementEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLLinkElementEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLLinkElementEvents2onlosecaptureEvent; - Fonpropertychange: THTMLLinkElementEvents2onpropertychangeEvent; - Fonscroll: THTMLLinkElementEvents2onscrollEvent; - Fonfocus: THTMLLinkElementEvents2onfocusEvent; - Fonblur: THTMLLinkElementEvents2onblurEvent; - Fonresize: THTMLLinkElementEvents2onresizeEvent; - Fondrag: THTMLLinkElementEvents2ondragEvent; - Fondragend: THTMLLinkElementEvents2ondragendEvent; - Fondragenter: THTMLLinkElementEvents2ondragenterEvent; - Fondragover: THTMLLinkElementEvents2ondragoverEvent; - Fondragleave: THTMLLinkElementEvents2ondragleaveEvent; - Fondrop: THTMLLinkElementEvents2ondropEvent; - Fonbeforecut: THTMLLinkElementEvents2onbeforecutEvent; - Foncut: THTMLLinkElementEvents2oncutEvent; - Fonbeforecopy: THTMLLinkElementEvents2onbeforecopyEvent; - Foncopy: THTMLLinkElementEvents2oncopyEvent; - Fonbeforepaste: THTMLLinkElementEvents2onbeforepasteEvent; - Fonpaste: THTMLLinkElementEvents2onpasteEvent; - Foncontextmenu: THTMLLinkElementEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLLinkElementEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLLinkElementEvents2onrowsinsertedEvent; - Foncellchange: THTMLLinkElementEvents2oncellchangeEvent; - Fonreadystatechange: THTMLLinkElementEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLLinkElementEvents2onlayoutcompleteEvent; - Fonpage: THTMLLinkElementEvents2onpageEvent; - Fonmouseenter: THTMLLinkElementEvents2onmouseenterEvent; - Fonmouseleave: THTMLLinkElementEvents2onmouseleaveEvent; - Fonactivate: THTMLLinkElementEvents2onactivateEvent; - Fondeactivate: THTMLLinkElementEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLLinkElementEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLLinkElementEvents2onbeforeactivateEvent; - Fonfocusin: THTMLLinkElementEvents2onfocusinEvent; - Fonfocusout: THTMLLinkElementEvents2onfocusoutEvent; - Fonmove: THTMLLinkElementEvents2onmoveEvent; - Foncontrolselect: THTMLLinkElementEvents2oncontrolselectEvent; - Fonmovestart: THTMLLinkElementEvents2onmovestartEvent; - Fonmoveend: THTMLLinkElementEvents2onmoveendEvent; - Fonresizestart: THTMLLinkElementEvents2onresizestartEvent; - Fonresizeend: THTMLLinkElementEvents2onresizeendEvent; - Fonmousewheel: THTMLLinkElementEvents2onmousewheelEvent; - Fonload: THTMLLinkElementEvents2onloadEvent; - Fonerror: THTMLLinkElementEvents2onerrorEvent; - published - //SinkEventsPublished// - property onhelp: THTMLLinkElementEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLLinkElementEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLLinkElementEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLLinkElementEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLLinkElementEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLLinkElementEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLLinkElementEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLLinkElementEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLLinkElementEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLLinkElementEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLLinkElementEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLLinkElementEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLLinkElementEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLLinkElementEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLLinkElementEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLLinkElementEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLLinkElementEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLLinkElementEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLLinkElementEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLLinkElementEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLLinkElementEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLLinkElementEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLLinkElementEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLLinkElementEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLLinkElementEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLLinkElementEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLLinkElementEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLLinkElementEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLLinkElementEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLLinkElementEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLLinkElementEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLLinkElementEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLLinkElementEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLLinkElementEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLLinkElementEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLLinkElementEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLLinkElementEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLLinkElementEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLLinkElementEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLLinkElementEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLLinkElementEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLLinkElementEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLLinkElementEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLLinkElementEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLLinkElementEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLLinkElementEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLLinkElementEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLLinkElementEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLLinkElementEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLLinkElementEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLLinkElementEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLLinkElementEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLLinkElementEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLLinkElementEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLLinkElementEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLLinkElementEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLLinkElementEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLLinkElementEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLLinkElementEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLLinkElementEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLLinkElementEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLLinkElementEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onload: THTMLLinkElementEvents2onloadEvent read Fonload write Fonload; - property onerror: THTMLLinkElementEvents2onerrorEvent read Fonerror write Fonerror; - end; - - - //SinkEventsForwards// - THTMLFormElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLFormElementEventsonsubmitEvent = function(Sender: TObject): WordBool of object; - THTMLFormElementEventsonresetEvent = function(Sender: TObject): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLFormElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - function Doonsubmit: WordBool; safecall; - function Doonreset: WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLFormElementEventsonhelpEvent; - Fonclick: THTMLFormElementEventsonclickEvent; - Fondblclick: THTMLFormElementEventsondblclickEvent; - Fonkeypress: THTMLFormElementEventsonkeypressEvent; - Fonkeydown: THTMLFormElementEventsonkeydownEvent; - Fonkeyup: THTMLFormElementEventsonkeyupEvent; - Fonmouseout: THTMLFormElementEventsonmouseoutEvent; - Fonmouseover: THTMLFormElementEventsonmouseoverEvent; - Fonmousemove: THTMLFormElementEventsonmousemoveEvent; - Fonmousedown: THTMLFormElementEventsonmousedownEvent; - Fonmouseup: THTMLFormElementEventsonmouseupEvent; - Fonselectstart: THTMLFormElementEventsonselectstartEvent; - Fonfilterchange: THTMLFormElementEventsonfilterchangeEvent; - Fondragstart: THTMLFormElementEventsondragstartEvent; - Fonbeforeupdate: THTMLFormElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLFormElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLFormElementEventsonerrorupdateEvent; - Fonrowexit: THTMLFormElementEventsonrowexitEvent; - Fonrowenter: THTMLFormElementEventsonrowenterEvent; - Fondatasetchanged: THTMLFormElementEventsondatasetchangedEvent; - Fondataavailable: THTMLFormElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLFormElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLFormElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLFormElementEventsonpropertychangeEvent; - Fonscroll: THTMLFormElementEventsonscrollEvent; - Fonfocus: THTMLFormElementEventsonfocusEvent; - Fonblur: THTMLFormElementEventsonblurEvent; - Fonresize: THTMLFormElementEventsonresizeEvent; - Fondrag: THTMLFormElementEventsondragEvent; - Fondragend: THTMLFormElementEventsondragendEvent; - Fondragenter: THTMLFormElementEventsondragenterEvent; - Fondragover: THTMLFormElementEventsondragoverEvent; - Fondragleave: THTMLFormElementEventsondragleaveEvent; - Fondrop: THTMLFormElementEventsondropEvent; - Fonbeforecut: THTMLFormElementEventsonbeforecutEvent; - Foncut: THTMLFormElementEventsoncutEvent; - Fonbeforecopy: THTMLFormElementEventsonbeforecopyEvent; - Foncopy: THTMLFormElementEventsoncopyEvent; - Fonbeforepaste: THTMLFormElementEventsonbeforepasteEvent; - Fonpaste: THTMLFormElementEventsonpasteEvent; - Foncontextmenu: THTMLFormElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLFormElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLFormElementEventsonrowsinsertedEvent; - Foncellchange: THTMLFormElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLFormElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLFormElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLFormElementEventsonlayoutcompleteEvent; - Fonpage: THTMLFormElementEventsonpageEvent; - Fonbeforedeactivate: THTMLFormElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLFormElementEventsonbeforeactivateEvent; - Fonmove: THTMLFormElementEventsonmoveEvent; - Foncontrolselect: THTMLFormElementEventsoncontrolselectEvent; - Fonmovestart: THTMLFormElementEventsonmovestartEvent; - Fonmoveend: THTMLFormElementEventsonmoveendEvent; - Fonresizestart: THTMLFormElementEventsonresizestartEvent; - Fonresizeend: THTMLFormElementEventsonresizeendEvent; - Fonmouseenter: THTMLFormElementEventsonmouseenterEvent; - Fonmouseleave: THTMLFormElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLFormElementEventsonmousewheelEvent; - Fonactivate: THTMLFormElementEventsonactivateEvent; - Fondeactivate: THTMLFormElementEventsondeactivateEvent; - Fonfocusin: THTMLFormElementEventsonfocusinEvent; - Fonfocusout: THTMLFormElementEventsonfocusoutEvent; - Fonsubmit: THTMLFormElementEventsonsubmitEvent; - Fonreset: THTMLFormElementEventsonresetEvent; - published - //SinkEventsPublished// - property onhelp: THTMLFormElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLFormElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLFormElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLFormElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLFormElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLFormElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLFormElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLFormElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLFormElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLFormElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLFormElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLFormElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLFormElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLFormElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLFormElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLFormElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLFormElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLFormElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLFormElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLFormElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLFormElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLFormElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLFormElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLFormElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLFormElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLFormElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLFormElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLFormElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLFormElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLFormElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLFormElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLFormElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLFormElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLFormElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLFormElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLFormElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLFormElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLFormElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLFormElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLFormElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLFormElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLFormElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLFormElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLFormElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLFormElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLFormElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLFormElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLFormElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLFormElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLFormElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLFormElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLFormElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLFormElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLFormElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLFormElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLFormElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLFormElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLFormElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLFormElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLFormElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLFormElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLFormElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLFormElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onsubmit: THTMLFormElementEventsonsubmitEvent read Fonsubmit write Fonsubmit; - property onreset: THTMLFormElementEventsonresetEvent read Fonreset write Fonreset; - end; - - - //SinkEventsForwards// - THTMLFormElementEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFormElementEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onsubmitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFormElementEvents2onresetEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLFormElementEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonsubmit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonreset(const pEvtObj: IHTMLEventObj): WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLFormElementEvents2onhelpEvent; - Fonclick: THTMLFormElementEvents2onclickEvent; - Fondblclick: THTMLFormElementEvents2ondblclickEvent; - Fonkeypress: THTMLFormElementEvents2onkeypressEvent; - Fonkeydown: THTMLFormElementEvents2onkeydownEvent; - Fonkeyup: THTMLFormElementEvents2onkeyupEvent; - Fonmouseout: THTMLFormElementEvents2onmouseoutEvent; - Fonmouseover: THTMLFormElementEvents2onmouseoverEvent; - Fonmousemove: THTMLFormElementEvents2onmousemoveEvent; - Fonmousedown: THTMLFormElementEvents2onmousedownEvent; - Fonmouseup: THTMLFormElementEvents2onmouseupEvent; - Fonselectstart: THTMLFormElementEvents2onselectstartEvent; - Fonfilterchange: THTMLFormElementEvents2onfilterchangeEvent; - Fondragstart: THTMLFormElementEvents2ondragstartEvent; - Fonbeforeupdate: THTMLFormElementEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLFormElementEvents2onafterupdateEvent; - Fonerrorupdate: THTMLFormElementEvents2onerrorupdateEvent; - Fonrowexit: THTMLFormElementEvents2onrowexitEvent; - Fonrowenter: THTMLFormElementEvents2onrowenterEvent; - Fondatasetchanged: THTMLFormElementEvents2ondatasetchangedEvent; - Fondataavailable: THTMLFormElementEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLFormElementEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLFormElementEvents2onlosecaptureEvent; - Fonpropertychange: THTMLFormElementEvents2onpropertychangeEvent; - Fonscroll: THTMLFormElementEvents2onscrollEvent; - Fonfocus: THTMLFormElementEvents2onfocusEvent; - Fonblur: THTMLFormElementEvents2onblurEvent; - Fonresize: THTMLFormElementEvents2onresizeEvent; - Fondrag: THTMLFormElementEvents2ondragEvent; - Fondragend: THTMLFormElementEvents2ondragendEvent; - Fondragenter: THTMLFormElementEvents2ondragenterEvent; - Fondragover: THTMLFormElementEvents2ondragoverEvent; - Fondragleave: THTMLFormElementEvents2ondragleaveEvent; - Fondrop: THTMLFormElementEvents2ondropEvent; - Fonbeforecut: THTMLFormElementEvents2onbeforecutEvent; - Foncut: THTMLFormElementEvents2oncutEvent; - Fonbeforecopy: THTMLFormElementEvents2onbeforecopyEvent; - Foncopy: THTMLFormElementEvents2oncopyEvent; - Fonbeforepaste: THTMLFormElementEvents2onbeforepasteEvent; - Fonpaste: THTMLFormElementEvents2onpasteEvent; - Foncontextmenu: THTMLFormElementEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLFormElementEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLFormElementEvents2onrowsinsertedEvent; - Foncellchange: THTMLFormElementEvents2oncellchangeEvent; - Fonreadystatechange: THTMLFormElementEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLFormElementEvents2onlayoutcompleteEvent; - Fonpage: THTMLFormElementEvents2onpageEvent; - Fonmouseenter: THTMLFormElementEvents2onmouseenterEvent; - Fonmouseleave: THTMLFormElementEvents2onmouseleaveEvent; - Fonactivate: THTMLFormElementEvents2onactivateEvent; - Fondeactivate: THTMLFormElementEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLFormElementEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLFormElementEvents2onbeforeactivateEvent; - Fonfocusin: THTMLFormElementEvents2onfocusinEvent; - Fonfocusout: THTMLFormElementEvents2onfocusoutEvent; - Fonmove: THTMLFormElementEvents2onmoveEvent; - Foncontrolselect: THTMLFormElementEvents2oncontrolselectEvent; - Fonmovestart: THTMLFormElementEvents2onmovestartEvent; - Fonmoveend: THTMLFormElementEvents2onmoveendEvent; - Fonresizestart: THTMLFormElementEvents2onresizestartEvent; - Fonresizeend: THTMLFormElementEvents2onresizeendEvent; - Fonmousewheel: THTMLFormElementEvents2onmousewheelEvent; - Fonsubmit: THTMLFormElementEvents2onsubmitEvent; - Fonreset: THTMLFormElementEvents2onresetEvent; - published - //SinkEventsPublished// - property onhelp: THTMLFormElementEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLFormElementEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLFormElementEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLFormElementEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLFormElementEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLFormElementEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLFormElementEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLFormElementEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLFormElementEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLFormElementEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLFormElementEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLFormElementEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLFormElementEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLFormElementEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLFormElementEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLFormElementEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLFormElementEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLFormElementEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLFormElementEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLFormElementEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLFormElementEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLFormElementEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLFormElementEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLFormElementEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLFormElementEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLFormElementEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLFormElementEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLFormElementEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLFormElementEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLFormElementEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLFormElementEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLFormElementEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLFormElementEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLFormElementEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLFormElementEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLFormElementEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLFormElementEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLFormElementEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLFormElementEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLFormElementEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLFormElementEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLFormElementEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLFormElementEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLFormElementEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLFormElementEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLFormElementEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLFormElementEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLFormElementEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLFormElementEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLFormElementEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLFormElementEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLFormElementEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLFormElementEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLFormElementEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLFormElementEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLFormElementEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLFormElementEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLFormElementEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLFormElementEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLFormElementEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLFormElementEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLFormElementEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onsubmit: THTMLFormElementEvents2onsubmitEvent read Fonsubmit write Fonsubmit; - property onreset: THTMLFormElementEvents2onresetEvent read Fonreset write Fonreset; - end; - - - //SinkEventsForwards// - THTMLImgEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLImgEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLImgEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLImgEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLImgEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLImgEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLImgEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLImgEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLImgEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLImgEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLImgEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLImgEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonloadEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonerrorEvent = procedure(Sender: TObject) of object; - THTMLImgEventsonabortEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLImgEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - procedure Doonload; safecall; - procedure Doonerror; safecall; - procedure Doonabort; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLImgEventsonhelpEvent; - Fonclick: THTMLImgEventsonclickEvent; - Fondblclick: THTMLImgEventsondblclickEvent; - Fonkeypress: THTMLImgEventsonkeypressEvent; - Fonkeydown: THTMLImgEventsonkeydownEvent; - Fonkeyup: THTMLImgEventsonkeyupEvent; - Fonmouseout: THTMLImgEventsonmouseoutEvent; - Fonmouseover: THTMLImgEventsonmouseoverEvent; - Fonmousemove: THTMLImgEventsonmousemoveEvent; - Fonmousedown: THTMLImgEventsonmousedownEvent; - Fonmouseup: THTMLImgEventsonmouseupEvent; - Fonselectstart: THTMLImgEventsonselectstartEvent; - Fonfilterchange: THTMLImgEventsonfilterchangeEvent; - Fondragstart: THTMLImgEventsondragstartEvent; - Fonbeforeupdate: THTMLImgEventsonbeforeupdateEvent; - Fonafterupdate: THTMLImgEventsonafterupdateEvent; - Fonerrorupdate: THTMLImgEventsonerrorupdateEvent; - Fonrowexit: THTMLImgEventsonrowexitEvent; - Fonrowenter: THTMLImgEventsonrowenterEvent; - Fondatasetchanged: THTMLImgEventsondatasetchangedEvent; - Fondataavailable: THTMLImgEventsondataavailableEvent; - Fondatasetcomplete: THTMLImgEventsondatasetcompleteEvent; - Fonlosecapture: THTMLImgEventsonlosecaptureEvent; - Fonpropertychange: THTMLImgEventsonpropertychangeEvent; - Fonscroll: THTMLImgEventsonscrollEvent; - Fonfocus: THTMLImgEventsonfocusEvent; - Fonblur: THTMLImgEventsonblurEvent; - Fonresize: THTMLImgEventsonresizeEvent; - Fondrag: THTMLImgEventsondragEvent; - Fondragend: THTMLImgEventsondragendEvent; - Fondragenter: THTMLImgEventsondragenterEvent; - Fondragover: THTMLImgEventsondragoverEvent; - Fondragleave: THTMLImgEventsondragleaveEvent; - Fondrop: THTMLImgEventsondropEvent; - Fonbeforecut: THTMLImgEventsonbeforecutEvent; - Foncut: THTMLImgEventsoncutEvent; - Fonbeforecopy: THTMLImgEventsonbeforecopyEvent; - Foncopy: THTMLImgEventsoncopyEvent; - Fonbeforepaste: THTMLImgEventsonbeforepasteEvent; - Fonpaste: THTMLImgEventsonpasteEvent; - Foncontextmenu: THTMLImgEventsoncontextmenuEvent; - Fonrowsdelete: THTMLImgEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLImgEventsonrowsinsertedEvent; - Foncellchange: THTMLImgEventsoncellchangeEvent; - Fonreadystatechange: THTMLImgEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLImgEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLImgEventsonlayoutcompleteEvent; - Fonpage: THTMLImgEventsonpageEvent; - Fonbeforedeactivate: THTMLImgEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLImgEventsonbeforeactivateEvent; - Fonmove: THTMLImgEventsonmoveEvent; - Foncontrolselect: THTMLImgEventsoncontrolselectEvent; - Fonmovestart: THTMLImgEventsonmovestartEvent; - Fonmoveend: THTMLImgEventsonmoveendEvent; - Fonresizestart: THTMLImgEventsonresizestartEvent; - Fonresizeend: THTMLImgEventsonresizeendEvent; - Fonmouseenter: THTMLImgEventsonmouseenterEvent; - Fonmouseleave: THTMLImgEventsonmouseleaveEvent; - Fonmousewheel: THTMLImgEventsonmousewheelEvent; - Fonactivate: THTMLImgEventsonactivateEvent; - Fondeactivate: THTMLImgEventsondeactivateEvent; - Fonfocusin: THTMLImgEventsonfocusinEvent; - Fonfocusout: THTMLImgEventsonfocusoutEvent; - Fonload: THTMLImgEventsonloadEvent; - Fonerror: THTMLImgEventsonerrorEvent; - Fonabort: THTMLImgEventsonabortEvent; - published - //SinkEventsPublished// - property onhelp: THTMLImgEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLImgEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLImgEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLImgEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLImgEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLImgEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLImgEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLImgEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLImgEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLImgEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLImgEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLImgEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLImgEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLImgEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLImgEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLImgEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLImgEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLImgEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLImgEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLImgEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLImgEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLImgEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLImgEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLImgEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLImgEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLImgEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLImgEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLImgEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLImgEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLImgEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLImgEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLImgEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLImgEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLImgEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLImgEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLImgEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLImgEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLImgEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLImgEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLImgEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLImgEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLImgEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLImgEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLImgEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLImgEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLImgEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLImgEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLImgEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLImgEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLImgEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLImgEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLImgEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLImgEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLImgEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLImgEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLImgEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLImgEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLImgEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLImgEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLImgEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLImgEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLImgEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLImgEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onload: THTMLImgEventsonloadEvent read Fonload write Fonload; - property onerror: THTMLImgEventsonerrorEvent read Fonerror write Fonerror; - property onabort: THTMLImgEventsonabortEvent read Fonabort write Fonabort; - end; - - - //SinkEventsForwards// - THTMLImgEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLImgEvents2onloadEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onerrorEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLImgEvents2onabortEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLImgEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonload(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonerror(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonabort(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLImgEvents2onhelpEvent; - Fonclick: THTMLImgEvents2onclickEvent; - Fondblclick: THTMLImgEvents2ondblclickEvent; - Fonkeypress: THTMLImgEvents2onkeypressEvent; - Fonkeydown: THTMLImgEvents2onkeydownEvent; - Fonkeyup: THTMLImgEvents2onkeyupEvent; - Fonmouseout: THTMLImgEvents2onmouseoutEvent; - Fonmouseover: THTMLImgEvents2onmouseoverEvent; - Fonmousemove: THTMLImgEvents2onmousemoveEvent; - Fonmousedown: THTMLImgEvents2onmousedownEvent; - Fonmouseup: THTMLImgEvents2onmouseupEvent; - Fonselectstart: THTMLImgEvents2onselectstartEvent; - Fonfilterchange: THTMLImgEvents2onfilterchangeEvent; - Fondragstart: THTMLImgEvents2ondragstartEvent; - Fonbeforeupdate: THTMLImgEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLImgEvents2onafterupdateEvent; - Fonerrorupdate: THTMLImgEvents2onerrorupdateEvent; - Fonrowexit: THTMLImgEvents2onrowexitEvent; - Fonrowenter: THTMLImgEvents2onrowenterEvent; - Fondatasetchanged: THTMLImgEvents2ondatasetchangedEvent; - Fondataavailable: THTMLImgEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLImgEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLImgEvents2onlosecaptureEvent; - Fonpropertychange: THTMLImgEvents2onpropertychangeEvent; - Fonscroll: THTMLImgEvents2onscrollEvent; - Fonfocus: THTMLImgEvents2onfocusEvent; - Fonblur: THTMLImgEvents2onblurEvent; - Fonresize: THTMLImgEvents2onresizeEvent; - Fondrag: THTMLImgEvents2ondragEvent; - Fondragend: THTMLImgEvents2ondragendEvent; - Fondragenter: THTMLImgEvents2ondragenterEvent; - Fondragover: THTMLImgEvents2ondragoverEvent; - Fondragleave: THTMLImgEvents2ondragleaveEvent; - Fondrop: THTMLImgEvents2ondropEvent; - Fonbeforecut: THTMLImgEvents2onbeforecutEvent; - Foncut: THTMLImgEvents2oncutEvent; - Fonbeforecopy: THTMLImgEvents2onbeforecopyEvent; - Foncopy: THTMLImgEvents2oncopyEvent; - Fonbeforepaste: THTMLImgEvents2onbeforepasteEvent; - Fonpaste: THTMLImgEvents2onpasteEvent; - Foncontextmenu: THTMLImgEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLImgEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLImgEvents2onrowsinsertedEvent; - Foncellchange: THTMLImgEvents2oncellchangeEvent; - Fonreadystatechange: THTMLImgEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLImgEvents2onlayoutcompleteEvent; - Fonpage: THTMLImgEvents2onpageEvent; - Fonmouseenter: THTMLImgEvents2onmouseenterEvent; - Fonmouseleave: THTMLImgEvents2onmouseleaveEvent; - Fonactivate: THTMLImgEvents2onactivateEvent; - Fondeactivate: THTMLImgEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLImgEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLImgEvents2onbeforeactivateEvent; - Fonfocusin: THTMLImgEvents2onfocusinEvent; - Fonfocusout: THTMLImgEvents2onfocusoutEvent; - Fonmove: THTMLImgEvents2onmoveEvent; - Foncontrolselect: THTMLImgEvents2oncontrolselectEvent; - Fonmovestart: THTMLImgEvents2onmovestartEvent; - Fonmoveend: THTMLImgEvents2onmoveendEvent; - Fonresizestart: THTMLImgEvents2onresizestartEvent; - Fonresizeend: THTMLImgEvents2onresizeendEvent; - Fonmousewheel: THTMLImgEvents2onmousewheelEvent; - Fonload: THTMLImgEvents2onloadEvent; - Fonerror: THTMLImgEvents2onerrorEvent; - Fonabort: THTMLImgEvents2onabortEvent; - published - //SinkEventsPublished// - property onhelp: THTMLImgEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLImgEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLImgEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLImgEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLImgEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLImgEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLImgEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLImgEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLImgEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLImgEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLImgEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLImgEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLImgEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLImgEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLImgEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLImgEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLImgEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLImgEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLImgEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLImgEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLImgEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLImgEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLImgEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLImgEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLImgEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLImgEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLImgEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLImgEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLImgEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLImgEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLImgEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLImgEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLImgEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLImgEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLImgEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLImgEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLImgEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLImgEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLImgEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLImgEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLImgEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLImgEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLImgEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLImgEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLImgEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLImgEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLImgEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLImgEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLImgEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLImgEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLImgEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLImgEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLImgEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLImgEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLImgEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLImgEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLImgEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLImgEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLImgEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLImgEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLImgEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLImgEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onload: THTMLImgEvents2onloadEvent read Fonload write Fonload; - property onerror: THTMLImgEvents2onerrorEvent read Fonerror write Fonerror; - property onabort: THTMLImgEvents2onabortEvent read Fonabort write Fonabort; - end; - - - //SinkEventsForwards// - THTMLTextContainerEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLTextContainerEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonchangeEvent = procedure(Sender: TObject) of object; - THTMLTextContainerEventsonselectEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLTextContainerEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - procedure Doonchange; safecall; - procedure Doonselect; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLTextContainerEventsonhelpEvent; - Fonclick: THTMLTextContainerEventsonclickEvent; - Fondblclick: THTMLTextContainerEventsondblclickEvent; - Fonkeypress: THTMLTextContainerEventsonkeypressEvent; - Fonkeydown: THTMLTextContainerEventsonkeydownEvent; - Fonkeyup: THTMLTextContainerEventsonkeyupEvent; - Fonmouseout: THTMLTextContainerEventsonmouseoutEvent; - Fonmouseover: THTMLTextContainerEventsonmouseoverEvent; - Fonmousemove: THTMLTextContainerEventsonmousemoveEvent; - Fonmousedown: THTMLTextContainerEventsonmousedownEvent; - Fonmouseup: THTMLTextContainerEventsonmouseupEvent; - Fonselectstart: THTMLTextContainerEventsonselectstartEvent; - Fonfilterchange: THTMLTextContainerEventsonfilterchangeEvent; - Fondragstart: THTMLTextContainerEventsondragstartEvent; - Fonbeforeupdate: THTMLTextContainerEventsonbeforeupdateEvent; - Fonafterupdate: THTMLTextContainerEventsonafterupdateEvent; - Fonerrorupdate: THTMLTextContainerEventsonerrorupdateEvent; - Fonrowexit: THTMLTextContainerEventsonrowexitEvent; - Fonrowenter: THTMLTextContainerEventsonrowenterEvent; - Fondatasetchanged: THTMLTextContainerEventsondatasetchangedEvent; - Fondataavailable: THTMLTextContainerEventsondataavailableEvent; - Fondatasetcomplete: THTMLTextContainerEventsondatasetcompleteEvent; - Fonlosecapture: THTMLTextContainerEventsonlosecaptureEvent; - Fonpropertychange: THTMLTextContainerEventsonpropertychangeEvent; - Fonscroll: THTMLTextContainerEventsonscrollEvent; - Fonfocus: THTMLTextContainerEventsonfocusEvent; - Fonblur: THTMLTextContainerEventsonblurEvent; - Fonresize: THTMLTextContainerEventsonresizeEvent; - Fondrag: THTMLTextContainerEventsondragEvent; - Fondragend: THTMLTextContainerEventsondragendEvent; - Fondragenter: THTMLTextContainerEventsondragenterEvent; - Fondragover: THTMLTextContainerEventsondragoverEvent; - Fondragleave: THTMLTextContainerEventsondragleaveEvent; - Fondrop: THTMLTextContainerEventsondropEvent; - Fonbeforecut: THTMLTextContainerEventsonbeforecutEvent; - Foncut: THTMLTextContainerEventsoncutEvent; - Fonbeforecopy: THTMLTextContainerEventsonbeforecopyEvent; - Foncopy: THTMLTextContainerEventsoncopyEvent; - Fonbeforepaste: THTMLTextContainerEventsonbeforepasteEvent; - Fonpaste: THTMLTextContainerEventsonpasteEvent; - Foncontextmenu: THTMLTextContainerEventsoncontextmenuEvent; - Fonrowsdelete: THTMLTextContainerEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLTextContainerEventsonrowsinsertedEvent; - Foncellchange: THTMLTextContainerEventsoncellchangeEvent; - Fonreadystatechange: THTMLTextContainerEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLTextContainerEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLTextContainerEventsonlayoutcompleteEvent; - Fonpage: THTMLTextContainerEventsonpageEvent; - Fonbeforedeactivate: THTMLTextContainerEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLTextContainerEventsonbeforeactivateEvent; - Fonmove: THTMLTextContainerEventsonmoveEvent; - Foncontrolselect: THTMLTextContainerEventsoncontrolselectEvent; - Fonmovestart: THTMLTextContainerEventsonmovestartEvent; - Fonmoveend: THTMLTextContainerEventsonmoveendEvent; - Fonresizestart: THTMLTextContainerEventsonresizestartEvent; - Fonresizeend: THTMLTextContainerEventsonresizeendEvent; - Fonmouseenter: THTMLTextContainerEventsonmouseenterEvent; - Fonmouseleave: THTMLTextContainerEventsonmouseleaveEvent; - Fonmousewheel: THTMLTextContainerEventsonmousewheelEvent; - Fonactivate: THTMLTextContainerEventsonactivateEvent; - Fondeactivate: THTMLTextContainerEventsondeactivateEvent; - Fonfocusin: THTMLTextContainerEventsonfocusinEvent; - Fonfocusout: THTMLTextContainerEventsonfocusoutEvent; - Fonchange: THTMLTextContainerEventsonchangeEvent; - Fonselect: THTMLTextContainerEventsonselectEvent; - published - //SinkEventsPublished// - property onhelp: THTMLTextContainerEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLTextContainerEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLTextContainerEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLTextContainerEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLTextContainerEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLTextContainerEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLTextContainerEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLTextContainerEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLTextContainerEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLTextContainerEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLTextContainerEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLTextContainerEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLTextContainerEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLTextContainerEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLTextContainerEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLTextContainerEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLTextContainerEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLTextContainerEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLTextContainerEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLTextContainerEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLTextContainerEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLTextContainerEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLTextContainerEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLTextContainerEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLTextContainerEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLTextContainerEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLTextContainerEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLTextContainerEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLTextContainerEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLTextContainerEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLTextContainerEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLTextContainerEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLTextContainerEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLTextContainerEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLTextContainerEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLTextContainerEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLTextContainerEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLTextContainerEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLTextContainerEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLTextContainerEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLTextContainerEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLTextContainerEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLTextContainerEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLTextContainerEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLTextContainerEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLTextContainerEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLTextContainerEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLTextContainerEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLTextContainerEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLTextContainerEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLTextContainerEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLTextContainerEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLTextContainerEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLTextContainerEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLTextContainerEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLTextContainerEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLTextContainerEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLTextContainerEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLTextContainerEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLTextContainerEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLTextContainerEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLTextContainerEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLTextContainerEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onchange: THTMLTextContainerEventsonchangeEvent read Fonchange write Fonchange; - property onselect: THTMLTextContainerEventsonselectEvent read Fonselect write Fonselect; - end; - - - //SinkEventsForwards// - THTMLTextContainerEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTextContainerEvents2onchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTextContainerEvents2onselectEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLTextContainerEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonselect(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLTextContainerEvents2onhelpEvent; - Fonclick: THTMLTextContainerEvents2onclickEvent; - Fondblclick: THTMLTextContainerEvents2ondblclickEvent; - Fonkeypress: THTMLTextContainerEvents2onkeypressEvent; - Fonkeydown: THTMLTextContainerEvents2onkeydownEvent; - Fonkeyup: THTMLTextContainerEvents2onkeyupEvent; - Fonmouseout: THTMLTextContainerEvents2onmouseoutEvent; - Fonmouseover: THTMLTextContainerEvents2onmouseoverEvent; - Fonmousemove: THTMLTextContainerEvents2onmousemoveEvent; - Fonmousedown: THTMLTextContainerEvents2onmousedownEvent; - Fonmouseup: THTMLTextContainerEvents2onmouseupEvent; - Fonselectstart: THTMLTextContainerEvents2onselectstartEvent; - Fonfilterchange: THTMLTextContainerEvents2onfilterchangeEvent; - Fondragstart: THTMLTextContainerEvents2ondragstartEvent; - Fonbeforeupdate: THTMLTextContainerEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLTextContainerEvents2onafterupdateEvent; - Fonerrorupdate: THTMLTextContainerEvents2onerrorupdateEvent; - Fonrowexit: THTMLTextContainerEvents2onrowexitEvent; - Fonrowenter: THTMLTextContainerEvents2onrowenterEvent; - Fondatasetchanged: THTMLTextContainerEvents2ondatasetchangedEvent; - Fondataavailable: THTMLTextContainerEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLTextContainerEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLTextContainerEvents2onlosecaptureEvent; - Fonpropertychange: THTMLTextContainerEvents2onpropertychangeEvent; - Fonscroll: THTMLTextContainerEvents2onscrollEvent; - Fonfocus: THTMLTextContainerEvents2onfocusEvent; - Fonblur: THTMLTextContainerEvents2onblurEvent; - Fonresize: THTMLTextContainerEvents2onresizeEvent; - Fondrag: THTMLTextContainerEvents2ondragEvent; - Fondragend: THTMLTextContainerEvents2ondragendEvent; - Fondragenter: THTMLTextContainerEvents2ondragenterEvent; - Fondragover: THTMLTextContainerEvents2ondragoverEvent; - Fondragleave: THTMLTextContainerEvents2ondragleaveEvent; - Fondrop: THTMLTextContainerEvents2ondropEvent; - Fonbeforecut: THTMLTextContainerEvents2onbeforecutEvent; - Foncut: THTMLTextContainerEvents2oncutEvent; - Fonbeforecopy: THTMLTextContainerEvents2onbeforecopyEvent; - Foncopy: THTMLTextContainerEvents2oncopyEvent; - Fonbeforepaste: THTMLTextContainerEvents2onbeforepasteEvent; - Fonpaste: THTMLTextContainerEvents2onpasteEvent; - Foncontextmenu: THTMLTextContainerEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLTextContainerEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLTextContainerEvents2onrowsinsertedEvent; - Foncellchange: THTMLTextContainerEvents2oncellchangeEvent; - Fonreadystatechange: THTMLTextContainerEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLTextContainerEvents2onlayoutcompleteEvent; - Fonpage: THTMLTextContainerEvents2onpageEvent; - Fonmouseenter: THTMLTextContainerEvents2onmouseenterEvent; - Fonmouseleave: THTMLTextContainerEvents2onmouseleaveEvent; - Fonactivate: THTMLTextContainerEvents2onactivateEvent; - Fondeactivate: THTMLTextContainerEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLTextContainerEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLTextContainerEvents2onbeforeactivateEvent; - Fonfocusin: THTMLTextContainerEvents2onfocusinEvent; - Fonfocusout: THTMLTextContainerEvents2onfocusoutEvent; - Fonmove: THTMLTextContainerEvents2onmoveEvent; - Foncontrolselect: THTMLTextContainerEvents2oncontrolselectEvent; - Fonmovestart: THTMLTextContainerEvents2onmovestartEvent; - Fonmoveend: THTMLTextContainerEvents2onmoveendEvent; - Fonresizestart: THTMLTextContainerEvents2onresizestartEvent; - Fonresizeend: THTMLTextContainerEvents2onresizeendEvent; - Fonmousewheel: THTMLTextContainerEvents2onmousewheelEvent; - Fonchange: THTMLTextContainerEvents2onchangeEvent; - Fonselect: THTMLTextContainerEvents2onselectEvent; - published - //SinkEventsPublished// - property onhelp: THTMLTextContainerEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLTextContainerEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLTextContainerEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLTextContainerEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLTextContainerEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLTextContainerEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLTextContainerEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLTextContainerEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLTextContainerEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLTextContainerEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLTextContainerEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLTextContainerEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLTextContainerEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLTextContainerEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLTextContainerEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLTextContainerEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLTextContainerEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLTextContainerEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLTextContainerEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLTextContainerEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLTextContainerEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLTextContainerEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLTextContainerEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLTextContainerEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLTextContainerEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLTextContainerEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLTextContainerEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLTextContainerEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLTextContainerEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLTextContainerEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLTextContainerEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLTextContainerEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLTextContainerEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLTextContainerEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLTextContainerEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLTextContainerEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLTextContainerEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLTextContainerEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLTextContainerEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLTextContainerEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLTextContainerEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLTextContainerEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLTextContainerEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLTextContainerEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLTextContainerEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLTextContainerEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLTextContainerEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLTextContainerEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLTextContainerEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLTextContainerEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLTextContainerEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLTextContainerEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLTextContainerEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLTextContainerEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLTextContainerEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLTextContainerEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLTextContainerEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLTextContainerEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLTextContainerEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLTextContainerEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLTextContainerEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLTextContainerEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onchange: THTMLTextContainerEvents2onchangeEvent read Fonchange write Fonchange; - property onselect: THTMLTextContainerEvents2onselectEvent read Fonselect write Fonselect; - end; - - - //SinkEventsForwards// - THTMLAnchorEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLAnchorEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLAnchorEventsonfocusoutEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLAnchorEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLAnchorEventsonhelpEvent; - Fonclick: THTMLAnchorEventsonclickEvent; - Fondblclick: THTMLAnchorEventsondblclickEvent; - Fonkeypress: THTMLAnchorEventsonkeypressEvent; - Fonkeydown: THTMLAnchorEventsonkeydownEvent; - Fonkeyup: THTMLAnchorEventsonkeyupEvent; - Fonmouseout: THTMLAnchorEventsonmouseoutEvent; - Fonmouseover: THTMLAnchorEventsonmouseoverEvent; - Fonmousemove: THTMLAnchorEventsonmousemoveEvent; - Fonmousedown: THTMLAnchorEventsonmousedownEvent; - Fonmouseup: THTMLAnchorEventsonmouseupEvent; - Fonselectstart: THTMLAnchorEventsonselectstartEvent; - Fonfilterchange: THTMLAnchorEventsonfilterchangeEvent; - Fondragstart: THTMLAnchorEventsondragstartEvent; - Fonbeforeupdate: THTMLAnchorEventsonbeforeupdateEvent; - Fonafterupdate: THTMLAnchorEventsonafterupdateEvent; - Fonerrorupdate: THTMLAnchorEventsonerrorupdateEvent; - Fonrowexit: THTMLAnchorEventsonrowexitEvent; - Fonrowenter: THTMLAnchorEventsonrowenterEvent; - Fondatasetchanged: THTMLAnchorEventsondatasetchangedEvent; - Fondataavailable: THTMLAnchorEventsondataavailableEvent; - Fondatasetcomplete: THTMLAnchorEventsondatasetcompleteEvent; - Fonlosecapture: THTMLAnchorEventsonlosecaptureEvent; - Fonpropertychange: THTMLAnchorEventsonpropertychangeEvent; - Fonscroll: THTMLAnchorEventsonscrollEvent; - Fonfocus: THTMLAnchorEventsonfocusEvent; - Fonblur: THTMLAnchorEventsonblurEvent; - Fonresize: THTMLAnchorEventsonresizeEvent; - Fondrag: THTMLAnchorEventsondragEvent; - Fondragend: THTMLAnchorEventsondragendEvent; - Fondragenter: THTMLAnchorEventsondragenterEvent; - Fondragover: THTMLAnchorEventsondragoverEvent; - Fondragleave: THTMLAnchorEventsondragleaveEvent; - Fondrop: THTMLAnchorEventsondropEvent; - Fonbeforecut: THTMLAnchorEventsonbeforecutEvent; - Foncut: THTMLAnchorEventsoncutEvent; - Fonbeforecopy: THTMLAnchorEventsonbeforecopyEvent; - Foncopy: THTMLAnchorEventsoncopyEvent; - Fonbeforepaste: THTMLAnchorEventsonbeforepasteEvent; - Fonpaste: THTMLAnchorEventsonpasteEvent; - Foncontextmenu: THTMLAnchorEventsoncontextmenuEvent; - Fonrowsdelete: THTMLAnchorEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLAnchorEventsonrowsinsertedEvent; - Foncellchange: THTMLAnchorEventsoncellchangeEvent; - Fonreadystatechange: THTMLAnchorEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLAnchorEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLAnchorEventsonlayoutcompleteEvent; - Fonpage: THTMLAnchorEventsonpageEvent; - Fonbeforedeactivate: THTMLAnchorEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLAnchorEventsonbeforeactivateEvent; - Fonmove: THTMLAnchorEventsonmoveEvent; - Foncontrolselect: THTMLAnchorEventsoncontrolselectEvent; - Fonmovestart: THTMLAnchorEventsonmovestartEvent; - Fonmoveend: THTMLAnchorEventsonmoveendEvent; - Fonresizestart: THTMLAnchorEventsonresizestartEvent; - Fonresizeend: THTMLAnchorEventsonresizeendEvent; - Fonmouseenter: THTMLAnchorEventsonmouseenterEvent; - Fonmouseleave: THTMLAnchorEventsonmouseleaveEvent; - Fonmousewheel: THTMLAnchorEventsonmousewheelEvent; - Fonactivate: THTMLAnchorEventsonactivateEvent; - Fondeactivate: THTMLAnchorEventsondeactivateEvent; - Fonfocusin: THTMLAnchorEventsonfocusinEvent; - Fonfocusout: THTMLAnchorEventsonfocusoutEvent; - published - //SinkEventsPublished// - property onhelp: THTMLAnchorEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLAnchorEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLAnchorEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLAnchorEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLAnchorEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLAnchorEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLAnchorEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLAnchorEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLAnchorEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLAnchorEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLAnchorEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLAnchorEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLAnchorEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLAnchorEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLAnchorEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLAnchorEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLAnchorEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLAnchorEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLAnchorEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLAnchorEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLAnchorEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLAnchorEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLAnchorEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLAnchorEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLAnchorEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLAnchorEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLAnchorEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLAnchorEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLAnchorEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLAnchorEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLAnchorEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLAnchorEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLAnchorEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLAnchorEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLAnchorEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLAnchorEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLAnchorEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLAnchorEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLAnchorEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLAnchorEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLAnchorEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLAnchorEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLAnchorEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLAnchorEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLAnchorEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLAnchorEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLAnchorEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLAnchorEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLAnchorEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLAnchorEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLAnchorEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLAnchorEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLAnchorEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLAnchorEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLAnchorEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLAnchorEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLAnchorEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLAnchorEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLAnchorEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLAnchorEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLAnchorEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLAnchorEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLAnchorEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - end; - - - //SinkEventsForwards// - THTMLAnchorEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAnchorEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAnchorEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLAnchorEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLAnchorEvents2onhelpEvent; - Fonclick: THTMLAnchorEvents2onclickEvent; - Fondblclick: THTMLAnchorEvents2ondblclickEvent; - Fonkeypress: THTMLAnchorEvents2onkeypressEvent; - Fonkeydown: THTMLAnchorEvents2onkeydownEvent; - Fonkeyup: THTMLAnchorEvents2onkeyupEvent; - Fonmouseout: THTMLAnchorEvents2onmouseoutEvent; - Fonmouseover: THTMLAnchorEvents2onmouseoverEvent; - Fonmousemove: THTMLAnchorEvents2onmousemoveEvent; - Fonmousedown: THTMLAnchorEvents2onmousedownEvent; - Fonmouseup: THTMLAnchorEvents2onmouseupEvent; - Fonselectstart: THTMLAnchorEvents2onselectstartEvent; - Fonfilterchange: THTMLAnchorEvents2onfilterchangeEvent; - Fondragstart: THTMLAnchorEvents2ondragstartEvent; - Fonbeforeupdate: THTMLAnchorEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLAnchorEvents2onafterupdateEvent; - Fonerrorupdate: THTMLAnchorEvents2onerrorupdateEvent; - Fonrowexit: THTMLAnchorEvents2onrowexitEvent; - Fonrowenter: THTMLAnchorEvents2onrowenterEvent; - Fondatasetchanged: THTMLAnchorEvents2ondatasetchangedEvent; - Fondataavailable: THTMLAnchorEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLAnchorEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLAnchorEvents2onlosecaptureEvent; - Fonpropertychange: THTMLAnchorEvents2onpropertychangeEvent; - Fonscroll: THTMLAnchorEvents2onscrollEvent; - Fonfocus: THTMLAnchorEvents2onfocusEvent; - Fonblur: THTMLAnchorEvents2onblurEvent; - Fonresize: THTMLAnchorEvents2onresizeEvent; - Fondrag: THTMLAnchorEvents2ondragEvent; - Fondragend: THTMLAnchorEvents2ondragendEvent; - Fondragenter: THTMLAnchorEvents2ondragenterEvent; - Fondragover: THTMLAnchorEvents2ondragoverEvent; - Fondragleave: THTMLAnchorEvents2ondragleaveEvent; - Fondrop: THTMLAnchorEvents2ondropEvent; - Fonbeforecut: THTMLAnchorEvents2onbeforecutEvent; - Foncut: THTMLAnchorEvents2oncutEvent; - Fonbeforecopy: THTMLAnchorEvents2onbeforecopyEvent; - Foncopy: THTMLAnchorEvents2oncopyEvent; - Fonbeforepaste: THTMLAnchorEvents2onbeforepasteEvent; - Fonpaste: THTMLAnchorEvents2onpasteEvent; - Foncontextmenu: THTMLAnchorEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLAnchorEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLAnchorEvents2onrowsinsertedEvent; - Foncellchange: THTMLAnchorEvents2oncellchangeEvent; - Fonreadystatechange: THTMLAnchorEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLAnchorEvents2onlayoutcompleteEvent; - Fonpage: THTMLAnchorEvents2onpageEvent; - Fonmouseenter: THTMLAnchorEvents2onmouseenterEvent; - Fonmouseleave: THTMLAnchorEvents2onmouseleaveEvent; - Fonactivate: THTMLAnchorEvents2onactivateEvent; - Fondeactivate: THTMLAnchorEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLAnchorEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLAnchorEvents2onbeforeactivateEvent; - Fonfocusin: THTMLAnchorEvents2onfocusinEvent; - Fonfocusout: THTMLAnchorEvents2onfocusoutEvent; - Fonmove: THTMLAnchorEvents2onmoveEvent; - Foncontrolselect: THTMLAnchorEvents2oncontrolselectEvent; - Fonmovestart: THTMLAnchorEvents2onmovestartEvent; - Fonmoveend: THTMLAnchorEvents2onmoveendEvent; - Fonresizestart: THTMLAnchorEvents2onresizestartEvent; - Fonresizeend: THTMLAnchorEvents2onresizeendEvent; - Fonmousewheel: THTMLAnchorEvents2onmousewheelEvent; - published - //SinkEventsPublished// - property onhelp: THTMLAnchorEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLAnchorEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLAnchorEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLAnchorEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLAnchorEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLAnchorEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLAnchorEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLAnchorEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLAnchorEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLAnchorEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLAnchorEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLAnchorEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLAnchorEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLAnchorEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLAnchorEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLAnchorEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLAnchorEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLAnchorEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLAnchorEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLAnchorEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLAnchorEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLAnchorEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLAnchorEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLAnchorEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLAnchorEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLAnchorEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLAnchorEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLAnchorEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLAnchorEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLAnchorEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLAnchorEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLAnchorEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLAnchorEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLAnchorEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLAnchorEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLAnchorEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLAnchorEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLAnchorEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLAnchorEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLAnchorEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLAnchorEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLAnchorEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLAnchorEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLAnchorEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLAnchorEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLAnchorEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLAnchorEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLAnchorEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLAnchorEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLAnchorEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLAnchorEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLAnchorEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLAnchorEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLAnchorEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLAnchorEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLAnchorEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLAnchorEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLAnchorEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLAnchorEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLAnchorEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLAnchorEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLAnchorEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - end; - - - //SinkEventsForwards// - THTMLLabelEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLLabelEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLLabelEventsonfocusoutEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLLabelEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLLabelEventsonhelpEvent; - Fonclick: THTMLLabelEventsonclickEvent; - Fondblclick: THTMLLabelEventsondblclickEvent; - Fonkeypress: THTMLLabelEventsonkeypressEvent; - Fonkeydown: THTMLLabelEventsonkeydownEvent; - Fonkeyup: THTMLLabelEventsonkeyupEvent; - Fonmouseout: THTMLLabelEventsonmouseoutEvent; - Fonmouseover: THTMLLabelEventsonmouseoverEvent; - Fonmousemove: THTMLLabelEventsonmousemoveEvent; - Fonmousedown: THTMLLabelEventsonmousedownEvent; - Fonmouseup: THTMLLabelEventsonmouseupEvent; - Fonselectstart: THTMLLabelEventsonselectstartEvent; - Fonfilterchange: THTMLLabelEventsonfilterchangeEvent; - Fondragstart: THTMLLabelEventsondragstartEvent; - Fonbeforeupdate: THTMLLabelEventsonbeforeupdateEvent; - Fonafterupdate: THTMLLabelEventsonafterupdateEvent; - Fonerrorupdate: THTMLLabelEventsonerrorupdateEvent; - Fonrowexit: THTMLLabelEventsonrowexitEvent; - Fonrowenter: THTMLLabelEventsonrowenterEvent; - Fondatasetchanged: THTMLLabelEventsondatasetchangedEvent; - Fondataavailable: THTMLLabelEventsondataavailableEvent; - Fondatasetcomplete: THTMLLabelEventsondatasetcompleteEvent; - Fonlosecapture: THTMLLabelEventsonlosecaptureEvent; - Fonpropertychange: THTMLLabelEventsonpropertychangeEvent; - Fonscroll: THTMLLabelEventsonscrollEvent; - Fonfocus: THTMLLabelEventsonfocusEvent; - Fonblur: THTMLLabelEventsonblurEvent; - Fonresize: THTMLLabelEventsonresizeEvent; - Fondrag: THTMLLabelEventsondragEvent; - Fondragend: THTMLLabelEventsondragendEvent; - Fondragenter: THTMLLabelEventsondragenterEvent; - Fondragover: THTMLLabelEventsondragoverEvent; - Fondragleave: THTMLLabelEventsondragleaveEvent; - Fondrop: THTMLLabelEventsondropEvent; - Fonbeforecut: THTMLLabelEventsonbeforecutEvent; - Foncut: THTMLLabelEventsoncutEvent; - Fonbeforecopy: THTMLLabelEventsonbeforecopyEvent; - Foncopy: THTMLLabelEventsoncopyEvent; - Fonbeforepaste: THTMLLabelEventsonbeforepasteEvent; - Fonpaste: THTMLLabelEventsonpasteEvent; - Foncontextmenu: THTMLLabelEventsoncontextmenuEvent; - Fonrowsdelete: THTMLLabelEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLLabelEventsonrowsinsertedEvent; - Foncellchange: THTMLLabelEventsoncellchangeEvent; - Fonreadystatechange: THTMLLabelEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLLabelEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLLabelEventsonlayoutcompleteEvent; - Fonpage: THTMLLabelEventsonpageEvent; - Fonbeforedeactivate: THTMLLabelEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLLabelEventsonbeforeactivateEvent; - Fonmove: THTMLLabelEventsonmoveEvent; - Foncontrolselect: THTMLLabelEventsoncontrolselectEvent; - Fonmovestart: THTMLLabelEventsonmovestartEvent; - Fonmoveend: THTMLLabelEventsonmoveendEvent; - Fonresizestart: THTMLLabelEventsonresizestartEvent; - Fonresizeend: THTMLLabelEventsonresizeendEvent; - Fonmouseenter: THTMLLabelEventsonmouseenterEvent; - Fonmouseleave: THTMLLabelEventsonmouseleaveEvent; - Fonmousewheel: THTMLLabelEventsonmousewheelEvent; - Fonactivate: THTMLLabelEventsonactivateEvent; - Fondeactivate: THTMLLabelEventsondeactivateEvent; - Fonfocusin: THTMLLabelEventsonfocusinEvent; - Fonfocusout: THTMLLabelEventsonfocusoutEvent; - published - //SinkEventsPublished// - property onhelp: THTMLLabelEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLLabelEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLLabelEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLLabelEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLLabelEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLLabelEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLLabelEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLLabelEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLLabelEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLLabelEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLLabelEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLLabelEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLLabelEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLLabelEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLLabelEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLLabelEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLLabelEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLLabelEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLLabelEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLLabelEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLLabelEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLLabelEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLLabelEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLLabelEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLLabelEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLLabelEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLLabelEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLLabelEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLLabelEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLLabelEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLLabelEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLLabelEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLLabelEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLLabelEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLLabelEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLLabelEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLLabelEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLLabelEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLLabelEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLLabelEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLLabelEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLLabelEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLLabelEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLLabelEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLLabelEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLLabelEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLLabelEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLLabelEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLLabelEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLLabelEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLLabelEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLLabelEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLLabelEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLLabelEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLLabelEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLLabelEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLLabelEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLLabelEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLLabelEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLLabelEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLLabelEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLLabelEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLLabelEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - end; - - - //SinkEventsForwards// - THTMLLabelEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLLabelEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLLabelEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLLabelEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLLabelEvents2onhelpEvent; - Fonclick: THTMLLabelEvents2onclickEvent; - Fondblclick: THTMLLabelEvents2ondblclickEvent; - Fonkeypress: THTMLLabelEvents2onkeypressEvent; - Fonkeydown: THTMLLabelEvents2onkeydownEvent; - Fonkeyup: THTMLLabelEvents2onkeyupEvent; - Fonmouseout: THTMLLabelEvents2onmouseoutEvent; - Fonmouseover: THTMLLabelEvents2onmouseoverEvent; - Fonmousemove: THTMLLabelEvents2onmousemoveEvent; - Fonmousedown: THTMLLabelEvents2onmousedownEvent; - Fonmouseup: THTMLLabelEvents2onmouseupEvent; - Fonselectstart: THTMLLabelEvents2onselectstartEvent; - Fonfilterchange: THTMLLabelEvents2onfilterchangeEvent; - Fondragstart: THTMLLabelEvents2ondragstartEvent; - Fonbeforeupdate: THTMLLabelEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLLabelEvents2onafterupdateEvent; - Fonerrorupdate: THTMLLabelEvents2onerrorupdateEvent; - Fonrowexit: THTMLLabelEvents2onrowexitEvent; - Fonrowenter: THTMLLabelEvents2onrowenterEvent; - Fondatasetchanged: THTMLLabelEvents2ondatasetchangedEvent; - Fondataavailable: THTMLLabelEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLLabelEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLLabelEvents2onlosecaptureEvent; - Fonpropertychange: THTMLLabelEvents2onpropertychangeEvent; - Fonscroll: THTMLLabelEvents2onscrollEvent; - Fonfocus: THTMLLabelEvents2onfocusEvent; - Fonblur: THTMLLabelEvents2onblurEvent; - Fonresize: THTMLLabelEvents2onresizeEvent; - Fondrag: THTMLLabelEvents2ondragEvent; - Fondragend: THTMLLabelEvents2ondragendEvent; - Fondragenter: THTMLLabelEvents2ondragenterEvent; - Fondragover: THTMLLabelEvents2ondragoverEvent; - Fondragleave: THTMLLabelEvents2ondragleaveEvent; - Fondrop: THTMLLabelEvents2ondropEvent; - Fonbeforecut: THTMLLabelEvents2onbeforecutEvent; - Foncut: THTMLLabelEvents2oncutEvent; - Fonbeforecopy: THTMLLabelEvents2onbeforecopyEvent; - Foncopy: THTMLLabelEvents2oncopyEvent; - Fonbeforepaste: THTMLLabelEvents2onbeforepasteEvent; - Fonpaste: THTMLLabelEvents2onpasteEvent; - Foncontextmenu: THTMLLabelEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLLabelEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLLabelEvents2onrowsinsertedEvent; - Foncellchange: THTMLLabelEvents2oncellchangeEvent; - Fonreadystatechange: THTMLLabelEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLLabelEvents2onlayoutcompleteEvent; - Fonpage: THTMLLabelEvents2onpageEvent; - Fonmouseenter: THTMLLabelEvents2onmouseenterEvent; - Fonmouseleave: THTMLLabelEvents2onmouseleaveEvent; - Fonactivate: THTMLLabelEvents2onactivateEvent; - Fondeactivate: THTMLLabelEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLLabelEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLLabelEvents2onbeforeactivateEvent; - Fonfocusin: THTMLLabelEvents2onfocusinEvent; - Fonfocusout: THTMLLabelEvents2onfocusoutEvent; - Fonmove: THTMLLabelEvents2onmoveEvent; - Foncontrolselect: THTMLLabelEvents2oncontrolselectEvent; - Fonmovestart: THTMLLabelEvents2onmovestartEvent; - Fonmoveend: THTMLLabelEvents2onmoveendEvent; - Fonresizestart: THTMLLabelEvents2onresizestartEvent; - Fonresizeend: THTMLLabelEvents2onresizeendEvent; - Fonmousewheel: THTMLLabelEvents2onmousewheelEvent; - published - //SinkEventsPublished// - property onhelp: THTMLLabelEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLLabelEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLLabelEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLLabelEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLLabelEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLLabelEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLLabelEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLLabelEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLLabelEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLLabelEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLLabelEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLLabelEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLLabelEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLLabelEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLLabelEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLLabelEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLLabelEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLLabelEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLLabelEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLLabelEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLLabelEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLLabelEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLLabelEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLLabelEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLLabelEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLLabelEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLLabelEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLLabelEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLLabelEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLLabelEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLLabelEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLLabelEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLLabelEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLLabelEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLLabelEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLLabelEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLLabelEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLLabelEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLLabelEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLLabelEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLLabelEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLLabelEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLLabelEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLLabelEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLLabelEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLLabelEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLLabelEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLLabelEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLLabelEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLLabelEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLLabelEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLLabelEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLLabelEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLLabelEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLLabelEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLLabelEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLLabelEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLLabelEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLLabelEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLLabelEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLLabelEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLLabelEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - end; - - - //SinkEventsForwards// - THTMLSelectElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLSelectElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLSelectElementEventsonchangeEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLSelectElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - procedure Doonchange; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLSelectElementEventsonhelpEvent; - Fonclick: THTMLSelectElementEventsonclickEvent; - Fondblclick: THTMLSelectElementEventsondblclickEvent; - Fonkeypress: THTMLSelectElementEventsonkeypressEvent; - Fonkeydown: THTMLSelectElementEventsonkeydownEvent; - Fonkeyup: THTMLSelectElementEventsonkeyupEvent; - Fonmouseout: THTMLSelectElementEventsonmouseoutEvent; - Fonmouseover: THTMLSelectElementEventsonmouseoverEvent; - Fonmousemove: THTMLSelectElementEventsonmousemoveEvent; - Fonmousedown: THTMLSelectElementEventsonmousedownEvent; - Fonmouseup: THTMLSelectElementEventsonmouseupEvent; - Fonselectstart: THTMLSelectElementEventsonselectstartEvent; - Fonfilterchange: THTMLSelectElementEventsonfilterchangeEvent; - Fondragstart: THTMLSelectElementEventsondragstartEvent; - Fonbeforeupdate: THTMLSelectElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLSelectElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLSelectElementEventsonerrorupdateEvent; - Fonrowexit: THTMLSelectElementEventsonrowexitEvent; - Fonrowenter: THTMLSelectElementEventsonrowenterEvent; - Fondatasetchanged: THTMLSelectElementEventsondatasetchangedEvent; - Fondataavailable: THTMLSelectElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLSelectElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLSelectElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLSelectElementEventsonpropertychangeEvent; - Fonscroll: THTMLSelectElementEventsonscrollEvent; - Fonfocus: THTMLSelectElementEventsonfocusEvent; - Fonblur: THTMLSelectElementEventsonblurEvent; - Fonresize: THTMLSelectElementEventsonresizeEvent; - Fondrag: THTMLSelectElementEventsondragEvent; - Fondragend: THTMLSelectElementEventsondragendEvent; - Fondragenter: THTMLSelectElementEventsondragenterEvent; - Fondragover: THTMLSelectElementEventsondragoverEvent; - Fondragleave: THTMLSelectElementEventsondragleaveEvent; - Fondrop: THTMLSelectElementEventsondropEvent; - Fonbeforecut: THTMLSelectElementEventsonbeforecutEvent; - Foncut: THTMLSelectElementEventsoncutEvent; - Fonbeforecopy: THTMLSelectElementEventsonbeforecopyEvent; - Foncopy: THTMLSelectElementEventsoncopyEvent; - Fonbeforepaste: THTMLSelectElementEventsonbeforepasteEvent; - Fonpaste: THTMLSelectElementEventsonpasteEvent; - Foncontextmenu: THTMLSelectElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLSelectElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLSelectElementEventsonrowsinsertedEvent; - Foncellchange: THTMLSelectElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLSelectElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLSelectElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLSelectElementEventsonlayoutcompleteEvent; - Fonpage: THTMLSelectElementEventsonpageEvent; - Fonbeforedeactivate: THTMLSelectElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLSelectElementEventsonbeforeactivateEvent; - Fonmove: THTMLSelectElementEventsonmoveEvent; - Foncontrolselect: THTMLSelectElementEventsoncontrolselectEvent; - Fonmovestart: THTMLSelectElementEventsonmovestartEvent; - Fonmoveend: THTMLSelectElementEventsonmoveendEvent; - Fonresizestart: THTMLSelectElementEventsonresizestartEvent; - Fonresizeend: THTMLSelectElementEventsonresizeendEvent; - Fonmouseenter: THTMLSelectElementEventsonmouseenterEvent; - Fonmouseleave: THTMLSelectElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLSelectElementEventsonmousewheelEvent; - Fonactivate: THTMLSelectElementEventsonactivateEvent; - Fondeactivate: THTMLSelectElementEventsondeactivateEvent; - Fonfocusin: THTMLSelectElementEventsonfocusinEvent; - Fonfocusout: THTMLSelectElementEventsonfocusoutEvent; - Fonchange: THTMLSelectElementEventsonchangeEvent; - published - //SinkEventsPublished// - property onhelp: THTMLSelectElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLSelectElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLSelectElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLSelectElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLSelectElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLSelectElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLSelectElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLSelectElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLSelectElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLSelectElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLSelectElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLSelectElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLSelectElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLSelectElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLSelectElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLSelectElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLSelectElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLSelectElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLSelectElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLSelectElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLSelectElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLSelectElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLSelectElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLSelectElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLSelectElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLSelectElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLSelectElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLSelectElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLSelectElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLSelectElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLSelectElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLSelectElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLSelectElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLSelectElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLSelectElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLSelectElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLSelectElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLSelectElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLSelectElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLSelectElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLSelectElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLSelectElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLSelectElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLSelectElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLSelectElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLSelectElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLSelectElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLSelectElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLSelectElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLSelectElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLSelectElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLSelectElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLSelectElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLSelectElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLSelectElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLSelectElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLSelectElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLSelectElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLSelectElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLSelectElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLSelectElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLSelectElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLSelectElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onchange: THTMLSelectElementEventsonchangeEvent read Fonchange write Fonchange; - end; - - - //SinkEventsForwards// - THTMLSelectElementEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLSelectElementEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLSelectElementEvents2onchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLSelectElementEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonchange(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLSelectElementEvents2onhelpEvent; - Fonclick: THTMLSelectElementEvents2onclickEvent; - Fondblclick: THTMLSelectElementEvents2ondblclickEvent; - Fonkeypress: THTMLSelectElementEvents2onkeypressEvent; - Fonkeydown: THTMLSelectElementEvents2onkeydownEvent; - Fonkeyup: THTMLSelectElementEvents2onkeyupEvent; - Fonmouseout: THTMLSelectElementEvents2onmouseoutEvent; - Fonmouseover: THTMLSelectElementEvents2onmouseoverEvent; - Fonmousemove: THTMLSelectElementEvents2onmousemoveEvent; - Fonmousedown: THTMLSelectElementEvents2onmousedownEvent; - Fonmouseup: THTMLSelectElementEvents2onmouseupEvent; - Fonselectstart: THTMLSelectElementEvents2onselectstartEvent; - Fonfilterchange: THTMLSelectElementEvents2onfilterchangeEvent; - Fondragstart: THTMLSelectElementEvents2ondragstartEvent; - Fonbeforeupdate: THTMLSelectElementEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLSelectElementEvents2onafterupdateEvent; - Fonerrorupdate: THTMLSelectElementEvents2onerrorupdateEvent; - Fonrowexit: THTMLSelectElementEvents2onrowexitEvent; - Fonrowenter: THTMLSelectElementEvents2onrowenterEvent; - Fondatasetchanged: THTMLSelectElementEvents2ondatasetchangedEvent; - Fondataavailable: THTMLSelectElementEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLSelectElementEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLSelectElementEvents2onlosecaptureEvent; - Fonpropertychange: THTMLSelectElementEvents2onpropertychangeEvent; - Fonscroll: THTMLSelectElementEvents2onscrollEvent; - Fonfocus: THTMLSelectElementEvents2onfocusEvent; - Fonblur: THTMLSelectElementEvents2onblurEvent; - Fonresize: THTMLSelectElementEvents2onresizeEvent; - Fondrag: THTMLSelectElementEvents2ondragEvent; - Fondragend: THTMLSelectElementEvents2ondragendEvent; - Fondragenter: THTMLSelectElementEvents2ondragenterEvent; - Fondragover: THTMLSelectElementEvents2ondragoverEvent; - Fondragleave: THTMLSelectElementEvents2ondragleaveEvent; - Fondrop: THTMLSelectElementEvents2ondropEvent; - Fonbeforecut: THTMLSelectElementEvents2onbeforecutEvent; - Foncut: THTMLSelectElementEvents2oncutEvent; - Fonbeforecopy: THTMLSelectElementEvents2onbeforecopyEvent; - Foncopy: THTMLSelectElementEvents2oncopyEvent; - Fonbeforepaste: THTMLSelectElementEvents2onbeforepasteEvent; - Fonpaste: THTMLSelectElementEvents2onpasteEvent; - Foncontextmenu: THTMLSelectElementEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLSelectElementEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLSelectElementEvents2onrowsinsertedEvent; - Foncellchange: THTMLSelectElementEvents2oncellchangeEvent; - Fonreadystatechange: THTMLSelectElementEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLSelectElementEvents2onlayoutcompleteEvent; - Fonpage: THTMLSelectElementEvents2onpageEvent; - Fonmouseenter: THTMLSelectElementEvents2onmouseenterEvent; - Fonmouseleave: THTMLSelectElementEvents2onmouseleaveEvent; - Fonactivate: THTMLSelectElementEvents2onactivateEvent; - Fondeactivate: THTMLSelectElementEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLSelectElementEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLSelectElementEvents2onbeforeactivateEvent; - Fonfocusin: THTMLSelectElementEvents2onfocusinEvent; - Fonfocusout: THTMLSelectElementEvents2onfocusoutEvent; - Fonmove: THTMLSelectElementEvents2onmoveEvent; - Foncontrolselect: THTMLSelectElementEvents2oncontrolselectEvent; - Fonmovestart: THTMLSelectElementEvents2onmovestartEvent; - Fonmoveend: THTMLSelectElementEvents2onmoveendEvent; - Fonresizestart: THTMLSelectElementEvents2onresizestartEvent; - Fonresizeend: THTMLSelectElementEvents2onresizeendEvent; - Fonmousewheel: THTMLSelectElementEvents2onmousewheelEvent; - Fonchange: THTMLSelectElementEvents2onchangeEvent; - published - //SinkEventsPublished// - property onhelp: THTMLSelectElementEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLSelectElementEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLSelectElementEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLSelectElementEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLSelectElementEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLSelectElementEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLSelectElementEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLSelectElementEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLSelectElementEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLSelectElementEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLSelectElementEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLSelectElementEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLSelectElementEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLSelectElementEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLSelectElementEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLSelectElementEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLSelectElementEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLSelectElementEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLSelectElementEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLSelectElementEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLSelectElementEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLSelectElementEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLSelectElementEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLSelectElementEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLSelectElementEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLSelectElementEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLSelectElementEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLSelectElementEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLSelectElementEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLSelectElementEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLSelectElementEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLSelectElementEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLSelectElementEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLSelectElementEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLSelectElementEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLSelectElementEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLSelectElementEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLSelectElementEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLSelectElementEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLSelectElementEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLSelectElementEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLSelectElementEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLSelectElementEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLSelectElementEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLSelectElementEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLSelectElementEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLSelectElementEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLSelectElementEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLSelectElementEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLSelectElementEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLSelectElementEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLSelectElementEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLSelectElementEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLSelectElementEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLSelectElementEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLSelectElementEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLSelectElementEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLSelectElementEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLSelectElementEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLSelectElementEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLSelectElementEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLSelectElementEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onchange: THTMLSelectElementEvents2onchangeEvent read Fonchange write Fonchange; - end; - - - //SinkEventsForwards// - THTMLInputTextElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonchangeEvent = function(Sender: TObject): WordBool of object; - THTMLInputTextElementEventsonselectEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonloadEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonerrorEvent = procedure(Sender: TObject) of object; - THTMLInputTextElementEventsonabortEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLInputTextElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - function Doonchange: WordBool; safecall; - procedure Doonselect; safecall; - procedure Doonload; safecall; - procedure Doonerror; safecall; - procedure Doonabort; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLInputTextElementEventsonhelpEvent; - Fonclick: THTMLInputTextElementEventsonclickEvent; - Fondblclick: THTMLInputTextElementEventsondblclickEvent; - Fonkeypress: THTMLInputTextElementEventsonkeypressEvent; - Fonkeydown: THTMLInputTextElementEventsonkeydownEvent; - Fonkeyup: THTMLInputTextElementEventsonkeyupEvent; - Fonmouseout: THTMLInputTextElementEventsonmouseoutEvent; - Fonmouseover: THTMLInputTextElementEventsonmouseoverEvent; - Fonmousemove: THTMLInputTextElementEventsonmousemoveEvent; - Fonmousedown: THTMLInputTextElementEventsonmousedownEvent; - Fonmouseup: THTMLInputTextElementEventsonmouseupEvent; - Fonselectstart: THTMLInputTextElementEventsonselectstartEvent; - Fonfilterchange: THTMLInputTextElementEventsonfilterchangeEvent; - Fondragstart: THTMLInputTextElementEventsondragstartEvent; - Fonbeforeupdate: THTMLInputTextElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLInputTextElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLInputTextElementEventsonerrorupdateEvent; - Fonrowexit: THTMLInputTextElementEventsonrowexitEvent; - Fonrowenter: THTMLInputTextElementEventsonrowenterEvent; - Fondatasetchanged: THTMLInputTextElementEventsondatasetchangedEvent; - Fondataavailable: THTMLInputTextElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLInputTextElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLInputTextElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLInputTextElementEventsonpropertychangeEvent; - Fonscroll: THTMLInputTextElementEventsonscrollEvent; - Fonfocus: THTMLInputTextElementEventsonfocusEvent; - Fonblur: THTMLInputTextElementEventsonblurEvent; - Fonresize: THTMLInputTextElementEventsonresizeEvent; - Fondrag: THTMLInputTextElementEventsondragEvent; - Fondragend: THTMLInputTextElementEventsondragendEvent; - Fondragenter: THTMLInputTextElementEventsondragenterEvent; - Fondragover: THTMLInputTextElementEventsondragoverEvent; - Fondragleave: THTMLInputTextElementEventsondragleaveEvent; - Fondrop: THTMLInputTextElementEventsondropEvent; - Fonbeforecut: THTMLInputTextElementEventsonbeforecutEvent; - Foncut: THTMLInputTextElementEventsoncutEvent; - Fonbeforecopy: THTMLInputTextElementEventsonbeforecopyEvent; - Foncopy: THTMLInputTextElementEventsoncopyEvent; - Fonbeforepaste: THTMLInputTextElementEventsonbeforepasteEvent; - Fonpaste: THTMLInputTextElementEventsonpasteEvent; - Foncontextmenu: THTMLInputTextElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLInputTextElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLInputTextElementEventsonrowsinsertedEvent; - Foncellchange: THTMLInputTextElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLInputTextElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLInputTextElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLInputTextElementEventsonlayoutcompleteEvent; - Fonpage: THTMLInputTextElementEventsonpageEvent; - Fonbeforedeactivate: THTMLInputTextElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLInputTextElementEventsonbeforeactivateEvent; - Fonmove: THTMLInputTextElementEventsonmoveEvent; - Foncontrolselect: THTMLInputTextElementEventsoncontrolselectEvent; - Fonmovestart: THTMLInputTextElementEventsonmovestartEvent; - Fonmoveend: THTMLInputTextElementEventsonmoveendEvent; - Fonresizestart: THTMLInputTextElementEventsonresizestartEvent; - Fonresizeend: THTMLInputTextElementEventsonresizeendEvent; - Fonmouseenter: THTMLInputTextElementEventsonmouseenterEvent; - Fonmouseleave: THTMLInputTextElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLInputTextElementEventsonmousewheelEvent; - Fonactivate: THTMLInputTextElementEventsonactivateEvent; - Fondeactivate: THTMLInputTextElementEventsondeactivateEvent; - Fonfocusin: THTMLInputTextElementEventsonfocusinEvent; - Fonfocusout: THTMLInputTextElementEventsonfocusoutEvent; - Fonchange: THTMLInputTextElementEventsonchangeEvent; - Fonselect: THTMLInputTextElementEventsonselectEvent; - Fonload: THTMLInputTextElementEventsonloadEvent; - Fonerror: THTMLInputTextElementEventsonerrorEvent; - Fonabort: THTMLInputTextElementEventsonabortEvent; - published - //SinkEventsPublished// - property onhelp: THTMLInputTextElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLInputTextElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLInputTextElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLInputTextElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLInputTextElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLInputTextElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLInputTextElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLInputTextElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLInputTextElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLInputTextElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLInputTextElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLInputTextElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLInputTextElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLInputTextElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLInputTextElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLInputTextElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLInputTextElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLInputTextElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLInputTextElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLInputTextElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLInputTextElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLInputTextElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLInputTextElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLInputTextElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLInputTextElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLInputTextElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLInputTextElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLInputTextElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLInputTextElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLInputTextElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLInputTextElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLInputTextElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLInputTextElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLInputTextElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLInputTextElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLInputTextElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLInputTextElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLInputTextElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLInputTextElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLInputTextElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLInputTextElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLInputTextElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLInputTextElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLInputTextElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLInputTextElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLInputTextElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLInputTextElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLInputTextElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLInputTextElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLInputTextElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLInputTextElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLInputTextElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLInputTextElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLInputTextElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLInputTextElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLInputTextElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLInputTextElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLInputTextElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLInputTextElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLInputTextElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLInputTextElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLInputTextElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLInputTextElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onchange: THTMLInputTextElementEventsonchangeEvent read Fonchange write Fonchange; - property onselect: THTMLInputTextElementEventsonselectEvent read Fonselect write Fonselect; - property onload: THTMLInputTextElementEventsonloadEvent read Fonload write Fonload; - property onerror: THTMLInputTextElementEventsonerrorEvent read Fonerror write Fonerror; - property onabort: THTMLInputTextElementEventsonabortEvent read Fonabort write Fonabort; - end; - - - //SinkEventsForwards// - THTMLInputTextElementEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onchangeEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLInputTextElementEvents2onselectEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onloadEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onerrorEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLInputTextElementEvents2onabortEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLInputTextElementEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonchange(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonselect(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonload(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonerror(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonabort(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLInputTextElementEvents2onhelpEvent; - Fonclick: THTMLInputTextElementEvents2onclickEvent; - Fondblclick: THTMLInputTextElementEvents2ondblclickEvent; - Fonkeypress: THTMLInputTextElementEvents2onkeypressEvent; - Fonkeydown: THTMLInputTextElementEvents2onkeydownEvent; - Fonkeyup: THTMLInputTextElementEvents2onkeyupEvent; - Fonmouseout: THTMLInputTextElementEvents2onmouseoutEvent; - Fonmouseover: THTMLInputTextElementEvents2onmouseoverEvent; - Fonmousemove: THTMLInputTextElementEvents2onmousemoveEvent; - Fonmousedown: THTMLInputTextElementEvents2onmousedownEvent; - Fonmouseup: THTMLInputTextElementEvents2onmouseupEvent; - Fonselectstart: THTMLInputTextElementEvents2onselectstartEvent; - Fonfilterchange: THTMLInputTextElementEvents2onfilterchangeEvent; - Fondragstart: THTMLInputTextElementEvents2ondragstartEvent; - Fonbeforeupdate: THTMLInputTextElementEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLInputTextElementEvents2onafterupdateEvent; - Fonerrorupdate: THTMLInputTextElementEvents2onerrorupdateEvent; - Fonrowexit: THTMLInputTextElementEvents2onrowexitEvent; - Fonrowenter: THTMLInputTextElementEvents2onrowenterEvent; - Fondatasetchanged: THTMLInputTextElementEvents2ondatasetchangedEvent; - Fondataavailable: THTMLInputTextElementEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLInputTextElementEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLInputTextElementEvents2onlosecaptureEvent; - Fonpropertychange: THTMLInputTextElementEvents2onpropertychangeEvent; - Fonscroll: THTMLInputTextElementEvents2onscrollEvent; - Fonfocus: THTMLInputTextElementEvents2onfocusEvent; - Fonblur: THTMLInputTextElementEvents2onblurEvent; - Fonresize: THTMLInputTextElementEvents2onresizeEvent; - Fondrag: THTMLInputTextElementEvents2ondragEvent; - Fondragend: THTMLInputTextElementEvents2ondragendEvent; - Fondragenter: THTMLInputTextElementEvents2ondragenterEvent; - Fondragover: THTMLInputTextElementEvents2ondragoverEvent; - Fondragleave: THTMLInputTextElementEvents2ondragleaveEvent; - Fondrop: THTMLInputTextElementEvents2ondropEvent; - Fonbeforecut: THTMLInputTextElementEvents2onbeforecutEvent; - Foncut: THTMLInputTextElementEvents2oncutEvent; - Fonbeforecopy: THTMLInputTextElementEvents2onbeforecopyEvent; - Foncopy: THTMLInputTextElementEvents2oncopyEvent; - Fonbeforepaste: THTMLInputTextElementEvents2onbeforepasteEvent; - Fonpaste: THTMLInputTextElementEvents2onpasteEvent; - Foncontextmenu: THTMLInputTextElementEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLInputTextElementEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLInputTextElementEvents2onrowsinsertedEvent; - Foncellchange: THTMLInputTextElementEvents2oncellchangeEvent; - Fonreadystatechange: THTMLInputTextElementEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLInputTextElementEvents2onlayoutcompleteEvent; - Fonpage: THTMLInputTextElementEvents2onpageEvent; - Fonmouseenter: THTMLInputTextElementEvents2onmouseenterEvent; - Fonmouseleave: THTMLInputTextElementEvents2onmouseleaveEvent; - Fonactivate: THTMLInputTextElementEvents2onactivateEvent; - Fondeactivate: THTMLInputTextElementEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLInputTextElementEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLInputTextElementEvents2onbeforeactivateEvent; - Fonfocusin: THTMLInputTextElementEvents2onfocusinEvent; - Fonfocusout: THTMLInputTextElementEvents2onfocusoutEvent; - Fonmove: THTMLInputTextElementEvents2onmoveEvent; - Foncontrolselect: THTMLInputTextElementEvents2oncontrolselectEvent; - Fonmovestart: THTMLInputTextElementEvents2onmovestartEvent; - Fonmoveend: THTMLInputTextElementEvents2onmoveendEvent; - Fonresizestart: THTMLInputTextElementEvents2onresizestartEvent; - Fonresizeend: THTMLInputTextElementEvents2onresizeendEvent; - Fonmousewheel: THTMLInputTextElementEvents2onmousewheelEvent; - Fonchange: THTMLInputTextElementEvents2onchangeEvent; - Fonselect: THTMLInputTextElementEvents2onselectEvent; - Fonload: THTMLInputTextElementEvents2onloadEvent; - Fonerror: THTMLInputTextElementEvents2onerrorEvent; - Fonabort: THTMLInputTextElementEvents2onabortEvent; - published - //SinkEventsPublished// - property onhelp: THTMLInputTextElementEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLInputTextElementEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLInputTextElementEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLInputTextElementEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLInputTextElementEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLInputTextElementEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLInputTextElementEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLInputTextElementEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLInputTextElementEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLInputTextElementEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLInputTextElementEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLInputTextElementEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLInputTextElementEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLInputTextElementEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLInputTextElementEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLInputTextElementEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLInputTextElementEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLInputTextElementEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLInputTextElementEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLInputTextElementEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLInputTextElementEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLInputTextElementEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLInputTextElementEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLInputTextElementEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLInputTextElementEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLInputTextElementEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLInputTextElementEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLInputTextElementEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLInputTextElementEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLInputTextElementEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLInputTextElementEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLInputTextElementEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLInputTextElementEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLInputTextElementEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLInputTextElementEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLInputTextElementEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLInputTextElementEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLInputTextElementEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLInputTextElementEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLInputTextElementEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLInputTextElementEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLInputTextElementEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLInputTextElementEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLInputTextElementEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLInputTextElementEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLInputTextElementEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLInputTextElementEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLInputTextElementEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLInputTextElementEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLInputTextElementEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLInputTextElementEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLInputTextElementEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLInputTextElementEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLInputTextElementEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLInputTextElementEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLInputTextElementEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLInputTextElementEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLInputTextElementEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLInputTextElementEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLInputTextElementEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLInputTextElementEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLInputTextElementEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onchange: THTMLInputTextElementEvents2onchangeEvent read Fonchange write Fonchange; - property onselect: THTMLInputTextElementEvents2onselectEvent read Fonselect write Fonselect; - property onload: THTMLInputTextElementEvents2onloadEvent read Fonload write Fonload; - property onerror: THTMLInputTextElementEvents2onerrorEvent read Fonerror write Fonerror; - property onabort: THTMLInputTextElementEvents2onabortEvent read Fonabort write Fonabort; - end; - - - //SinkEventsForwards// - THTMLOptionButtonElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonchangeEvent = function(Sender: TObject): WordBool of object; - THTMLOptionButtonElementEventsonselectEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonloadEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonerrorEvent = procedure(Sender: TObject) of object; - THTMLOptionButtonElementEventsonabortEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLOptionButtonElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - function Doonchange: WordBool; safecall; - procedure Doonselect; safecall; - procedure Doonload; safecall; - procedure Doonerror; safecall; - procedure Doonabort; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLOptionButtonElementEventsonhelpEvent; - Fonclick: THTMLOptionButtonElementEventsonclickEvent; - Fondblclick: THTMLOptionButtonElementEventsondblclickEvent; - Fonkeypress: THTMLOptionButtonElementEventsonkeypressEvent; - Fonkeydown: THTMLOptionButtonElementEventsonkeydownEvent; - Fonkeyup: THTMLOptionButtonElementEventsonkeyupEvent; - Fonmouseout: THTMLOptionButtonElementEventsonmouseoutEvent; - Fonmouseover: THTMLOptionButtonElementEventsonmouseoverEvent; - Fonmousemove: THTMLOptionButtonElementEventsonmousemoveEvent; - Fonmousedown: THTMLOptionButtonElementEventsonmousedownEvent; - Fonmouseup: THTMLOptionButtonElementEventsonmouseupEvent; - Fonselectstart: THTMLOptionButtonElementEventsonselectstartEvent; - Fonfilterchange: THTMLOptionButtonElementEventsonfilterchangeEvent; - Fondragstart: THTMLOptionButtonElementEventsondragstartEvent; - Fonbeforeupdate: THTMLOptionButtonElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLOptionButtonElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLOptionButtonElementEventsonerrorupdateEvent; - Fonrowexit: THTMLOptionButtonElementEventsonrowexitEvent; - Fonrowenter: THTMLOptionButtonElementEventsonrowenterEvent; - Fondatasetchanged: THTMLOptionButtonElementEventsondatasetchangedEvent; - Fondataavailable: THTMLOptionButtonElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLOptionButtonElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLOptionButtonElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLOptionButtonElementEventsonpropertychangeEvent; - Fonscroll: THTMLOptionButtonElementEventsonscrollEvent; - Fonfocus: THTMLOptionButtonElementEventsonfocusEvent; - Fonblur: THTMLOptionButtonElementEventsonblurEvent; - Fonresize: THTMLOptionButtonElementEventsonresizeEvent; - Fondrag: THTMLOptionButtonElementEventsondragEvent; - Fondragend: THTMLOptionButtonElementEventsondragendEvent; - Fondragenter: THTMLOptionButtonElementEventsondragenterEvent; - Fondragover: THTMLOptionButtonElementEventsondragoverEvent; - Fondragleave: THTMLOptionButtonElementEventsondragleaveEvent; - Fondrop: THTMLOptionButtonElementEventsondropEvent; - Fonbeforecut: THTMLOptionButtonElementEventsonbeforecutEvent; - Foncut: THTMLOptionButtonElementEventsoncutEvent; - Fonbeforecopy: THTMLOptionButtonElementEventsonbeforecopyEvent; - Foncopy: THTMLOptionButtonElementEventsoncopyEvent; - Fonbeforepaste: THTMLOptionButtonElementEventsonbeforepasteEvent; - Fonpaste: THTMLOptionButtonElementEventsonpasteEvent; - Foncontextmenu: THTMLOptionButtonElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLOptionButtonElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLOptionButtonElementEventsonrowsinsertedEvent; - Foncellchange: THTMLOptionButtonElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLOptionButtonElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLOptionButtonElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLOptionButtonElementEventsonlayoutcompleteEvent; - Fonpage: THTMLOptionButtonElementEventsonpageEvent; - Fonbeforedeactivate: THTMLOptionButtonElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLOptionButtonElementEventsonbeforeactivateEvent; - Fonmove: THTMLOptionButtonElementEventsonmoveEvent; - Foncontrolselect: THTMLOptionButtonElementEventsoncontrolselectEvent; - Fonmovestart: THTMLOptionButtonElementEventsonmovestartEvent; - Fonmoveend: THTMLOptionButtonElementEventsonmoveendEvent; - Fonresizestart: THTMLOptionButtonElementEventsonresizestartEvent; - Fonresizeend: THTMLOptionButtonElementEventsonresizeendEvent; - Fonmouseenter: THTMLOptionButtonElementEventsonmouseenterEvent; - Fonmouseleave: THTMLOptionButtonElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLOptionButtonElementEventsonmousewheelEvent; - Fonactivate: THTMLOptionButtonElementEventsonactivateEvent; - Fondeactivate: THTMLOptionButtonElementEventsondeactivateEvent; - Fonfocusin: THTMLOptionButtonElementEventsonfocusinEvent; - Fonfocusout: THTMLOptionButtonElementEventsonfocusoutEvent; - Fonchange: THTMLOptionButtonElementEventsonchangeEvent; - Fonselect: THTMLOptionButtonElementEventsonselectEvent; - Fonload: THTMLOptionButtonElementEventsonloadEvent; - Fonerror: THTMLOptionButtonElementEventsonerrorEvent; - Fonabort: THTMLOptionButtonElementEventsonabortEvent; - published - //SinkEventsPublished// - property onhelp: THTMLOptionButtonElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLOptionButtonElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLOptionButtonElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLOptionButtonElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLOptionButtonElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLOptionButtonElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLOptionButtonElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLOptionButtonElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLOptionButtonElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLOptionButtonElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLOptionButtonElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLOptionButtonElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLOptionButtonElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLOptionButtonElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLOptionButtonElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLOptionButtonElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLOptionButtonElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLOptionButtonElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLOptionButtonElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLOptionButtonElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLOptionButtonElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLOptionButtonElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLOptionButtonElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLOptionButtonElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLOptionButtonElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLOptionButtonElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLOptionButtonElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLOptionButtonElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLOptionButtonElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLOptionButtonElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLOptionButtonElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLOptionButtonElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLOptionButtonElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLOptionButtonElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLOptionButtonElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLOptionButtonElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLOptionButtonElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLOptionButtonElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLOptionButtonElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLOptionButtonElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLOptionButtonElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLOptionButtonElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLOptionButtonElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLOptionButtonElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLOptionButtonElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLOptionButtonElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLOptionButtonElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLOptionButtonElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLOptionButtonElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLOptionButtonElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLOptionButtonElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLOptionButtonElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLOptionButtonElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLOptionButtonElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLOptionButtonElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLOptionButtonElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLOptionButtonElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLOptionButtonElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLOptionButtonElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLOptionButtonElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLOptionButtonElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLOptionButtonElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLOptionButtonElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onchange: THTMLOptionButtonElementEventsonchangeEvent read Fonchange write Fonchange; - property onselect: THTMLOptionButtonElementEventsonselectEvent read Fonselect write Fonselect; - property onload: THTMLOptionButtonElementEventsonloadEvent read Fonload write Fonload; - property onerror: THTMLOptionButtonElementEventsonerrorEvent read Fonerror write Fonerror; - property onabort: THTMLOptionButtonElementEventsonabortEvent read Fonabort write Fonabort; - end; - - - //SinkEventsForwards// - THTMLButtonElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLButtonElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLButtonElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLButtonElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLButtonElementEventsonhelpEvent; - Fonclick: THTMLButtonElementEventsonclickEvent; - Fondblclick: THTMLButtonElementEventsondblclickEvent; - Fonkeypress: THTMLButtonElementEventsonkeypressEvent; - Fonkeydown: THTMLButtonElementEventsonkeydownEvent; - Fonkeyup: THTMLButtonElementEventsonkeyupEvent; - Fonmouseout: THTMLButtonElementEventsonmouseoutEvent; - Fonmouseover: THTMLButtonElementEventsonmouseoverEvent; - Fonmousemove: THTMLButtonElementEventsonmousemoveEvent; - Fonmousedown: THTMLButtonElementEventsonmousedownEvent; - Fonmouseup: THTMLButtonElementEventsonmouseupEvent; - Fonselectstart: THTMLButtonElementEventsonselectstartEvent; - Fonfilterchange: THTMLButtonElementEventsonfilterchangeEvent; - Fondragstart: THTMLButtonElementEventsondragstartEvent; - Fonbeforeupdate: THTMLButtonElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLButtonElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLButtonElementEventsonerrorupdateEvent; - Fonrowexit: THTMLButtonElementEventsonrowexitEvent; - Fonrowenter: THTMLButtonElementEventsonrowenterEvent; - Fondatasetchanged: THTMLButtonElementEventsondatasetchangedEvent; - Fondataavailable: THTMLButtonElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLButtonElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLButtonElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLButtonElementEventsonpropertychangeEvent; - Fonscroll: THTMLButtonElementEventsonscrollEvent; - Fonfocus: THTMLButtonElementEventsonfocusEvent; - Fonblur: THTMLButtonElementEventsonblurEvent; - Fonresize: THTMLButtonElementEventsonresizeEvent; - Fondrag: THTMLButtonElementEventsondragEvent; - Fondragend: THTMLButtonElementEventsondragendEvent; - Fondragenter: THTMLButtonElementEventsondragenterEvent; - Fondragover: THTMLButtonElementEventsondragoverEvent; - Fondragleave: THTMLButtonElementEventsondragleaveEvent; - Fondrop: THTMLButtonElementEventsondropEvent; - Fonbeforecut: THTMLButtonElementEventsonbeforecutEvent; - Foncut: THTMLButtonElementEventsoncutEvent; - Fonbeforecopy: THTMLButtonElementEventsonbeforecopyEvent; - Foncopy: THTMLButtonElementEventsoncopyEvent; - Fonbeforepaste: THTMLButtonElementEventsonbeforepasteEvent; - Fonpaste: THTMLButtonElementEventsonpasteEvent; - Foncontextmenu: THTMLButtonElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLButtonElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLButtonElementEventsonrowsinsertedEvent; - Foncellchange: THTMLButtonElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLButtonElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLButtonElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLButtonElementEventsonlayoutcompleteEvent; - Fonpage: THTMLButtonElementEventsonpageEvent; - Fonbeforedeactivate: THTMLButtonElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLButtonElementEventsonbeforeactivateEvent; - Fonmove: THTMLButtonElementEventsonmoveEvent; - Foncontrolselect: THTMLButtonElementEventsoncontrolselectEvent; - Fonmovestart: THTMLButtonElementEventsonmovestartEvent; - Fonmoveend: THTMLButtonElementEventsonmoveendEvent; - Fonresizestart: THTMLButtonElementEventsonresizestartEvent; - Fonresizeend: THTMLButtonElementEventsonresizeendEvent; - Fonmouseenter: THTMLButtonElementEventsonmouseenterEvent; - Fonmouseleave: THTMLButtonElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLButtonElementEventsonmousewheelEvent; - Fonactivate: THTMLButtonElementEventsonactivateEvent; - Fondeactivate: THTMLButtonElementEventsondeactivateEvent; - Fonfocusin: THTMLButtonElementEventsonfocusinEvent; - Fonfocusout: THTMLButtonElementEventsonfocusoutEvent; - published - //SinkEventsPublished// - property onhelp: THTMLButtonElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLButtonElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLButtonElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLButtonElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLButtonElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLButtonElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLButtonElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLButtonElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLButtonElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLButtonElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLButtonElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLButtonElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLButtonElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLButtonElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLButtonElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLButtonElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLButtonElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLButtonElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLButtonElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLButtonElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLButtonElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLButtonElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLButtonElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLButtonElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLButtonElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLButtonElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLButtonElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLButtonElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLButtonElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLButtonElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLButtonElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLButtonElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLButtonElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLButtonElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLButtonElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLButtonElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLButtonElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLButtonElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLButtonElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLButtonElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLButtonElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLButtonElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLButtonElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLButtonElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLButtonElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLButtonElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLButtonElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLButtonElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLButtonElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLButtonElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLButtonElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLButtonElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLButtonElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLButtonElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLButtonElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLButtonElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLButtonElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLButtonElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLButtonElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLButtonElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLButtonElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLButtonElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLButtonElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - end; - - - //SinkEventsForwards// - THTMLButtonElementEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLButtonElementEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLButtonElementEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLButtonElementEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLButtonElementEvents2onhelpEvent; - Fonclick: THTMLButtonElementEvents2onclickEvent; - Fondblclick: THTMLButtonElementEvents2ondblclickEvent; - Fonkeypress: THTMLButtonElementEvents2onkeypressEvent; - Fonkeydown: THTMLButtonElementEvents2onkeydownEvent; - Fonkeyup: THTMLButtonElementEvents2onkeyupEvent; - Fonmouseout: THTMLButtonElementEvents2onmouseoutEvent; - Fonmouseover: THTMLButtonElementEvents2onmouseoverEvent; - Fonmousemove: THTMLButtonElementEvents2onmousemoveEvent; - Fonmousedown: THTMLButtonElementEvents2onmousedownEvent; - Fonmouseup: THTMLButtonElementEvents2onmouseupEvent; - Fonselectstart: THTMLButtonElementEvents2onselectstartEvent; - Fonfilterchange: THTMLButtonElementEvents2onfilterchangeEvent; - Fondragstart: THTMLButtonElementEvents2ondragstartEvent; - Fonbeforeupdate: THTMLButtonElementEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLButtonElementEvents2onafterupdateEvent; - Fonerrorupdate: THTMLButtonElementEvents2onerrorupdateEvent; - Fonrowexit: THTMLButtonElementEvents2onrowexitEvent; - Fonrowenter: THTMLButtonElementEvents2onrowenterEvent; - Fondatasetchanged: THTMLButtonElementEvents2ondatasetchangedEvent; - Fondataavailable: THTMLButtonElementEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLButtonElementEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLButtonElementEvents2onlosecaptureEvent; - Fonpropertychange: THTMLButtonElementEvents2onpropertychangeEvent; - Fonscroll: THTMLButtonElementEvents2onscrollEvent; - Fonfocus: THTMLButtonElementEvents2onfocusEvent; - Fonblur: THTMLButtonElementEvents2onblurEvent; - Fonresize: THTMLButtonElementEvents2onresizeEvent; - Fondrag: THTMLButtonElementEvents2ondragEvent; - Fondragend: THTMLButtonElementEvents2ondragendEvent; - Fondragenter: THTMLButtonElementEvents2ondragenterEvent; - Fondragover: THTMLButtonElementEvents2ondragoverEvent; - Fondragleave: THTMLButtonElementEvents2ondragleaveEvent; - Fondrop: THTMLButtonElementEvents2ondropEvent; - Fonbeforecut: THTMLButtonElementEvents2onbeforecutEvent; - Foncut: THTMLButtonElementEvents2oncutEvent; - Fonbeforecopy: THTMLButtonElementEvents2onbeforecopyEvent; - Foncopy: THTMLButtonElementEvents2oncopyEvent; - Fonbeforepaste: THTMLButtonElementEvents2onbeforepasteEvent; - Fonpaste: THTMLButtonElementEvents2onpasteEvent; - Foncontextmenu: THTMLButtonElementEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLButtonElementEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLButtonElementEvents2onrowsinsertedEvent; - Foncellchange: THTMLButtonElementEvents2oncellchangeEvent; - Fonreadystatechange: THTMLButtonElementEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLButtonElementEvents2onlayoutcompleteEvent; - Fonpage: THTMLButtonElementEvents2onpageEvent; - Fonmouseenter: THTMLButtonElementEvents2onmouseenterEvent; - Fonmouseleave: THTMLButtonElementEvents2onmouseleaveEvent; - Fonactivate: THTMLButtonElementEvents2onactivateEvent; - Fondeactivate: THTMLButtonElementEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLButtonElementEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLButtonElementEvents2onbeforeactivateEvent; - Fonfocusin: THTMLButtonElementEvents2onfocusinEvent; - Fonfocusout: THTMLButtonElementEvents2onfocusoutEvent; - Fonmove: THTMLButtonElementEvents2onmoveEvent; - Foncontrolselect: THTMLButtonElementEvents2oncontrolselectEvent; - Fonmovestart: THTMLButtonElementEvents2onmovestartEvent; - Fonmoveend: THTMLButtonElementEvents2onmoveendEvent; - Fonresizestart: THTMLButtonElementEvents2onresizestartEvent; - Fonresizeend: THTMLButtonElementEvents2onresizeendEvent; - Fonmousewheel: THTMLButtonElementEvents2onmousewheelEvent; - published - //SinkEventsPublished// - property onhelp: THTMLButtonElementEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLButtonElementEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLButtonElementEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLButtonElementEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLButtonElementEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLButtonElementEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLButtonElementEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLButtonElementEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLButtonElementEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLButtonElementEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLButtonElementEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLButtonElementEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLButtonElementEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLButtonElementEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLButtonElementEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLButtonElementEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLButtonElementEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLButtonElementEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLButtonElementEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLButtonElementEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLButtonElementEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLButtonElementEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLButtonElementEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLButtonElementEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLButtonElementEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLButtonElementEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLButtonElementEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLButtonElementEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLButtonElementEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLButtonElementEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLButtonElementEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLButtonElementEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLButtonElementEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLButtonElementEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLButtonElementEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLButtonElementEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLButtonElementEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLButtonElementEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLButtonElementEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLButtonElementEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLButtonElementEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLButtonElementEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLButtonElementEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLButtonElementEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLButtonElementEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLButtonElementEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLButtonElementEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLButtonElementEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLButtonElementEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLButtonElementEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLButtonElementEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLButtonElementEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLButtonElementEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLButtonElementEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLButtonElementEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLButtonElementEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLButtonElementEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLButtonElementEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLButtonElementEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLButtonElementEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLButtonElementEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLButtonElementEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - end; - - - //SinkEventsForwards// - THTMLMarqueeElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLMarqueeElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonchangeEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonselectEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonbounceEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonfinishEvent = procedure(Sender: TObject) of object; - THTMLMarqueeElementEventsonstartEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLMarqueeElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - procedure Doonchange; safecall; - procedure Doonselect; safecall; - procedure Doonbounce; safecall; - procedure Doonfinish; safecall; - procedure Doonstart; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLMarqueeElementEventsonhelpEvent; - Fonclick: THTMLMarqueeElementEventsonclickEvent; - Fondblclick: THTMLMarqueeElementEventsondblclickEvent; - Fonkeypress: THTMLMarqueeElementEventsonkeypressEvent; - Fonkeydown: THTMLMarqueeElementEventsonkeydownEvent; - Fonkeyup: THTMLMarqueeElementEventsonkeyupEvent; - Fonmouseout: THTMLMarqueeElementEventsonmouseoutEvent; - Fonmouseover: THTMLMarqueeElementEventsonmouseoverEvent; - Fonmousemove: THTMLMarqueeElementEventsonmousemoveEvent; - Fonmousedown: THTMLMarqueeElementEventsonmousedownEvent; - Fonmouseup: THTMLMarqueeElementEventsonmouseupEvent; - Fonselectstart: THTMLMarqueeElementEventsonselectstartEvent; - Fonfilterchange: THTMLMarqueeElementEventsonfilterchangeEvent; - Fondragstart: THTMLMarqueeElementEventsondragstartEvent; - Fonbeforeupdate: THTMLMarqueeElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLMarqueeElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLMarqueeElementEventsonerrorupdateEvent; - Fonrowexit: THTMLMarqueeElementEventsonrowexitEvent; - Fonrowenter: THTMLMarqueeElementEventsonrowenterEvent; - Fondatasetchanged: THTMLMarqueeElementEventsondatasetchangedEvent; - Fondataavailable: THTMLMarqueeElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLMarqueeElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLMarqueeElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLMarqueeElementEventsonpropertychangeEvent; - Fonscroll: THTMLMarqueeElementEventsonscrollEvent; - Fonfocus: THTMLMarqueeElementEventsonfocusEvent; - Fonblur: THTMLMarqueeElementEventsonblurEvent; - Fonresize: THTMLMarqueeElementEventsonresizeEvent; - Fondrag: THTMLMarqueeElementEventsondragEvent; - Fondragend: THTMLMarqueeElementEventsondragendEvent; - Fondragenter: THTMLMarqueeElementEventsondragenterEvent; - Fondragover: THTMLMarqueeElementEventsondragoverEvent; - Fondragleave: THTMLMarqueeElementEventsondragleaveEvent; - Fondrop: THTMLMarqueeElementEventsondropEvent; - Fonbeforecut: THTMLMarqueeElementEventsonbeforecutEvent; - Foncut: THTMLMarqueeElementEventsoncutEvent; - Fonbeforecopy: THTMLMarqueeElementEventsonbeforecopyEvent; - Foncopy: THTMLMarqueeElementEventsoncopyEvent; - Fonbeforepaste: THTMLMarqueeElementEventsonbeforepasteEvent; - Fonpaste: THTMLMarqueeElementEventsonpasteEvent; - Foncontextmenu: THTMLMarqueeElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLMarqueeElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLMarqueeElementEventsonrowsinsertedEvent; - Foncellchange: THTMLMarqueeElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLMarqueeElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLMarqueeElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLMarqueeElementEventsonlayoutcompleteEvent; - Fonpage: THTMLMarqueeElementEventsonpageEvent; - Fonbeforedeactivate: THTMLMarqueeElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLMarqueeElementEventsonbeforeactivateEvent; - Fonmove: THTMLMarqueeElementEventsonmoveEvent; - Foncontrolselect: THTMLMarqueeElementEventsoncontrolselectEvent; - Fonmovestart: THTMLMarqueeElementEventsonmovestartEvent; - Fonmoveend: THTMLMarqueeElementEventsonmoveendEvent; - Fonresizestart: THTMLMarqueeElementEventsonresizestartEvent; - Fonresizeend: THTMLMarqueeElementEventsonresizeendEvent; - Fonmouseenter: THTMLMarqueeElementEventsonmouseenterEvent; - Fonmouseleave: THTMLMarqueeElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLMarqueeElementEventsonmousewheelEvent; - Fonactivate: THTMLMarqueeElementEventsonactivateEvent; - Fondeactivate: THTMLMarqueeElementEventsondeactivateEvent; - Fonfocusin: THTMLMarqueeElementEventsonfocusinEvent; - Fonfocusout: THTMLMarqueeElementEventsonfocusoutEvent; - Fonchange: THTMLMarqueeElementEventsonchangeEvent; - Fonselect: THTMLMarqueeElementEventsonselectEvent; - Fonbounce: THTMLMarqueeElementEventsonbounceEvent; - Fonfinish: THTMLMarqueeElementEventsonfinishEvent; - Fonstart: THTMLMarqueeElementEventsonstartEvent; - published - //SinkEventsPublished// - property onhelp: THTMLMarqueeElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLMarqueeElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLMarqueeElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLMarqueeElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLMarqueeElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLMarqueeElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLMarqueeElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLMarqueeElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLMarqueeElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLMarqueeElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLMarqueeElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLMarqueeElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLMarqueeElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLMarqueeElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLMarqueeElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLMarqueeElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLMarqueeElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLMarqueeElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLMarqueeElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLMarqueeElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLMarqueeElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLMarqueeElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLMarqueeElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLMarqueeElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLMarqueeElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLMarqueeElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLMarqueeElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLMarqueeElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLMarqueeElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLMarqueeElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLMarqueeElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLMarqueeElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLMarqueeElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLMarqueeElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLMarqueeElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLMarqueeElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLMarqueeElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLMarqueeElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLMarqueeElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLMarqueeElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLMarqueeElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLMarqueeElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLMarqueeElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLMarqueeElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLMarqueeElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLMarqueeElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLMarqueeElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLMarqueeElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLMarqueeElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLMarqueeElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLMarqueeElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLMarqueeElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLMarqueeElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLMarqueeElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLMarqueeElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLMarqueeElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLMarqueeElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLMarqueeElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLMarqueeElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLMarqueeElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLMarqueeElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLMarqueeElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLMarqueeElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onchange: THTMLMarqueeElementEventsonchangeEvent read Fonchange write Fonchange; - property onselect: THTMLMarqueeElementEventsonselectEvent read Fonselect write Fonselect; - property onbounce: THTMLMarqueeElementEventsonbounceEvent read Fonbounce write Fonbounce; - property onfinish: THTMLMarqueeElementEventsonfinishEvent read Fonfinish write Fonfinish; - property onstart: THTMLMarqueeElementEventsonstartEvent read Fonstart write Fonstart; - end; - - - //SinkEventsForwards// - THTMLMarqueeElementEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMarqueeElementEvents2onchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onselectEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onbounceEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onfinishEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMarqueeElementEvents2onstartEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLMarqueeElementEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonselect(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonbounce(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfinish(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonstart(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLMarqueeElementEvents2onhelpEvent; - Fonclick: THTMLMarqueeElementEvents2onclickEvent; - Fondblclick: THTMLMarqueeElementEvents2ondblclickEvent; - Fonkeypress: THTMLMarqueeElementEvents2onkeypressEvent; - Fonkeydown: THTMLMarqueeElementEvents2onkeydownEvent; - Fonkeyup: THTMLMarqueeElementEvents2onkeyupEvent; - Fonmouseout: THTMLMarqueeElementEvents2onmouseoutEvent; - Fonmouseover: THTMLMarqueeElementEvents2onmouseoverEvent; - Fonmousemove: THTMLMarqueeElementEvents2onmousemoveEvent; - Fonmousedown: THTMLMarqueeElementEvents2onmousedownEvent; - Fonmouseup: THTMLMarqueeElementEvents2onmouseupEvent; - Fonselectstart: THTMLMarqueeElementEvents2onselectstartEvent; - Fonfilterchange: THTMLMarqueeElementEvents2onfilterchangeEvent; - Fondragstart: THTMLMarqueeElementEvents2ondragstartEvent; - Fonbeforeupdate: THTMLMarqueeElementEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLMarqueeElementEvents2onafterupdateEvent; - Fonerrorupdate: THTMLMarqueeElementEvents2onerrorupdateEvent; - Fonrowexit: THTMLMarqueeElementEvents2onrowexitEvent; - Fonrowenter: THTMLMarqueeElementEvents2onrowenterEvent; - Fondatasetchanged: THTMLMarqueeElementEvents2ondatasetchangedEvent; - Fondataavailable: THTMLMarqueeElementEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLMarqueeElementEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLMarqueeElementEvents2onlosecaptureEvent; - Fonpropertychange: THTMLMarqueeElementEvents2onpropertychangeEvent; - Fonscroll: THTMLMarqueeElementEvents2onscrollEvent; - Fonfocus: THTMLMarqueeElementEvents2onfocusEvent; - Fonblur: THTMLMarqueeElementEvents2onblurEvent; - Fonresize: THTMLMarqueeElementEvents2onresizeEvent; - Fondrag: THTMLMarqueeElementEvents2ondragEvent; - Fondragend: THTMLMarqueeElementEvents2ondragendEvent; - Fondragenter: THTMLMarqueeElementEvents2ondragenterEvent; - Fondragover: THTMLMarqueeElementEvents2ondragoverEvent; - Fondragleave: THTMLMarqueeElementEvents2ondragleaveEvent; - Fondrop: THTMLMarqueeElementEvents2ondropEvent; - Fonbeforecut: THTMLMarqueeElementEvents2onbeforecutEvent; - Foncut: THTMLMarqueeElementEvents2oncutEvent; - Fonbeforecopy: THTMLMarqueeElementEvents2onbeforecopyEvent; - Foncopy: THTMLMarqueeElementEvents2oncopyEvent; - Fonbeforepaste: THTMLMarqueeElementEvents2onbeforepasteEvent; - Fonpaste: THTMLMarqueeElementEvents2onpasteEvent; - Foncontextmenu: THTMLMarqueeElementEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLMarqueeElementEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLMarqueeElementEvents2onrowsinsertedEvent; - Foncellchange: THTMLMarqueeElementEvents2oncellchangeEvent; - Fonreadystatechange: THTMLMarqueeElementEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLMarqueeElementEvents2onlayoutcompleteEvent; - Fonpage: THTMLMarqueeElementEvents2onpageEvent; - Fonmouseenter: THTMLMarqueeElementEvents2onmouseenterEvent; - Fonmouseleave: THTMLMarqueeElementEvents2onmouseleaveEvent; - Fonactivate: THTMLMarqueeElementEvents2onactivateEvent; - Fondeactivate: THTMLMarqueeElementEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLMarqueeElementEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLMarqueeElementEvents2onbeforeactivateEvent; - Fonfocusin: THTMLMarqueeElementEvents2onfocusinEvent; - Fonfocusout: THTMLMarqueeElementEvents2onfocusoutEvent; - Fonmove: THTMLMarqueeElementEvents2onmoveEvent; - Foncontrolselect: THTMLMarqueeElementEvents2oncontrolselectEvent; - Fonmovestart: THTMLMarqueeElementEvents2onmovestartEvent; - Fonmoveend: THTMLMarqueeElementEvents2onmoveendEvent; - Fonresizestart: THTMLMarqueeElementEvents2onresizestartEvent; - Fonresizeend: THTMLMarqueeElementEvents2onresizeendEvent; - Fonmousewheel: THTMLMarqueeElementEvents2onmousewheelEvent; - Fonchange: THTMLMarqueeElementEvents2onchangeEvent; - Fonselect: THTMLMarqueeElementEvents2onselectEvent; - Fonbounce: THTMLMarqueeElementEvents2onbounceEvent; - Fonfinish: THTMLMarqueeElementEvents2onfinishEvent; - Fonstart: THTMLMarqueeElementEvents2onstartEvent; - published - //SinkEventsPublished// - property onhelp: THTMLMarqueeElementEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLMarqueeElementEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLMarqueeElementEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLMarqueeElementEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLMarqueeElementEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLMarqueeElementEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLMarqueeElementEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLMarqueeElementEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLMarqueeElementEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLMarqueeElementEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLMarqueeElementEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLMarqueeElementEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLMarqueeElementEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLMarqueeElementEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLMarqueeElementEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLMarqueeElementEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLMarqueeElementEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLMarqueeElementEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLMarqueeElementEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLMarqueeElementEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLMarqueeElementEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLMarqueeElementEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLMarqueeElementEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLMarqueeElementEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLMarqueeElementEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLMarqueeElementEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLMarqueeElementEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLMarqueeElementEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLMarqueeElementEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLMarqueeElementEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLMarqueeElementEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLMarqueeElementEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLMarqueeElementEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLMarqueeElementEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLMarqueeElementEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLMarqueeElementEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLMarqueeElementEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLMarqueeElementEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLMarqueeElementEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLMarqueeElementEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLMarqueeElementEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLMarqueeElementEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLMarqueeElementEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLMarqueeElementEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLMarqueeElementEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLMarqueeElementEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLMarqueeElementEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLMarqueeElementEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLMarqueeElementEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLMarqueeElementEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLMarqueeElementEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLMarqueeElementEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLMarqueeElementEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLMarqueeElementEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLMarqueeElementEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLMarqueeElementEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLMarqueeElementEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLMarqueeElementEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLMarqueeElementEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLMarqueeElementEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLMarqueeElementEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLMarqueeElementEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onchange: THTMLMarqueeElementEvents2onchangeEvent read Fonchange write Fonchange; - property onselect: THTMLMarqueeElementEvents2onselectEvent read Fonselect write Fonselect; - property onbounce: THTMLMarqueeElementEvents2onbounceEvent read Fonbounce write Fonbounce; - property onfinish: THTMLMarqueeElementEvents2onfinishEvent read Fonfinish write Fonfinish; - property onstart: THTMLMarqueeElementEvents2onstartEvent read Fonstart write Fonstart; - end; - - - //SinkEventsForwards// - THTMLWindowEventsonloadEvent = procedure(Sender: TObject) of object; - THTMLWindowEventsonunloadEvent = procedure(Sender: TObject) of object; - THTMLWindowEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLWindowEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLWindowEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLWindowEventsonerrorEvent = procedure(Sender: TObject; const description: WideString; const url: WideString; line: Integer) of object; - THTMLWindowEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLWindowEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLWindowEventsonbeforeunloadEvent = procedure(Sender: TObject) of object; - THTMLWindowEventsonbeforeprintEvent = procedure(Sender: TObject) of object; - THTMLWindowEventsonafterprintEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLWindowEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - procedure Doonload; safecall; - procedure Doonunload; safecall; - function Doonhelp: WordBool; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonerror(const description: WideString; const url: WideString; line: Integer); safecall; - procedure Doonresize; safecall; - procedure Doonscroll; safecall; - procedure Doonbeforeunload; safecall; - procedure Doonbeforeprint; safecall; - procedure Doonafterprint; safecall; - protected - //SinkEventsProtected// - Fonload: THTMLWindowEventsonloadEvent; - Fonunload: THTMLWindowEventsonunloadEvent; - Fonhelp: THTMLWindowEventsonhelpEvent; - Fonfocus: THTMLWindowEventsonfocusEvent; - Fonblur: THTMLWindowEventsonblurEvent; - Fonerror: THTMLWindowEventsonerrorEvent; - Fonresize: THTMLWindowEventsonresizeEvent; - Fonscroll: THTMLWindowEventsonscrollEvent; - Fonbeforeunload: THTMLWindowEventsonbeforeunloadEvent; - Fonbeforeprint: THTMLWindowEventsonbeforeprintEvent; - Fonafterprint: THTMLWindowEventsonafterprintEvent; - published - //SinkEventsPublished// - property onload: THTMLWindowEventsonloadEvent read Fonload write Fonload; - property onunload: THTMLWindowEventsonunloadEvent read Fonunload write Fonunload; - property onhelp: THTMLWindowEventsonhelpEvent read Fonhelp write Fonhelp; - property onfocus: THTMLWindowEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLWindowEventsonblurEvent read Fonblur write Fonblur; - property onerror: THTMLWindowEventsonerrorEvent read Fonerror write Fonerror; - property onresize: THTMLWindowEventsonresizeEvent read Fonresize write Fonresize; - property onscroll: THTMLWindowEventsonscrollEvent read Fonscroll write Fonscroll; - property onbeforeunload: THTMLWindowEventsonbeforeunloadEvent read Fonbeforeunload write Fonbeforeunload; - property onbeforeprint: THTMLWindowEventsonbeforeprintEvent read Fonbeforeprint write Fonbeforeprint; - property onafterprint: THTMLWindowEventsonafterprintEvent read Fonafterprint write Fonafterprint; - end; - - - //SinkEventsForwards// - THTMLWindowEvents2onloadEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLWindowEvents2onunloadEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLWindowEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLWindowEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLWindowEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLWindowEvents2onerrorEvent = procedure(Sender: TObject; const description: WideString; const url: WideString; line: Integer) of object; - THTMLWindowEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLWindowEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLWindowEvents2onbeforeunloadEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLWindowEvents2onbeforeprintEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLWindowEvents2onafterprintEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLWindowEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - procedure Doonload(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonunload(const pEvtObj: IHTMLEventObj); safecall; - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonerror(const description: WideString; const url: WideString; line: Integer); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonbeforeunload(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonbeforeprint(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonafterprint(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonload: THTMLWindowEvents2onloadEvent; - Fonunload: THTMLWindowEvents2onunloadEvent; - Fonhelp: THTMLWindowEvents2onhelpEvent; - Fonfocus: THTMLWindowEvents2onfocusEvent; - Fonblur: THTMLWindowEvents2onblurEvent; - Fonerror: THTMLWindowEvents2onerrorEvent; - Fonresize: THTMLWindowEvents2onresizeEvent; - Fonscroll: THTMLWindowEvents2onscrollEvent; - Fonbeforeunload: THTMLWindowEvents2onbeforeunloadEvent; - Fonbeforeprint: THTMLWindowEvents2onbeforeprintEvent; - Fonafterprint: THTMLWindowEvents2onafterprintEvent; - published - //SinkEventsPublished// - property onload: THTMLWindowEvents2onloadEvent read Fonload write Fonload; - property onunload: THTMLWindowEvents2onunloadEvent read Fonunload write Fonunload; - property onhelp: THTMLWindowEvents2onhelpEvent read Fonhelp write Fonhelp; - property onfocus: THTMLWindowEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLWindowEvents2onblurEvent read Fonblur write Fonblur; - property onerror: THTMLWindowEvents2onerrorEvent read Fonerror write Fonerror; - property onresize: THTMLWindowEvents2onresizeEvent read Fonresize write Fonresize; - property onscroll: THTMLWindowEvents2onscrollEvent read Fonscroll write Fonscroll; - property onbeforeunload: THTMLWindowEvents2onbeforeunloadEvent read Fonbeforeunload write Fonbeforeunload; - property onbeforeprint: THTMLWindowEvents2onbeforeprintEvent read Fonbeforeprint write Fonbeforeprint; - property onafterprint: THTMLWindowEvents2onafterprintEvent read Fonafterprint write Fonafterprint; - end; - - - //SinkEventsForwards// - THTMLDocumentEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonstopEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonselectionchangeEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLDocumentEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLDocumentEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLDocumentEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonmousedown; safecall; - procedure Doonmousemove; safecall; - procedure Doonmouseup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonreadystatechange; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - function Doondragstart: WordBool; safecall; - function Doonselectstart: WordBool; safecall; - function Doonerrorupdate: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - function Doonstop: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonpropertychange; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonselectionchange; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - function Doonbeforeactivate: WordBool; safecall; - function Doonbeforedeactivate: WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLDocumentEventsonhelpEvent; - Fonclick: THTMLDocumentEventsonclickEvent; - Fondblclick: THTMLDocumentEventsondblclickEvent; - Fonkeydown: THTMLDocumentEventsonkeydownEvent; - Fonkeyup: THTMLDocumentEventsonkeyupEvent; - Fonkeypress: THTMLDocumentEventsonkeypressEvent; - Fonmousedown: THTMLDocumentEventsonmousedownEvent; - Fonmousemove: THTMLDocumentEventsonmousemoveEvent; - Fonmouseup: THTMLDocumentEventsonmouseupEvent; - Fonmouseout: THTMLDocumentEventsonmouseoutEvent; - Fonmouseover: THTMLDocumentEventsonmouseoverEvent; - Fonreadystatechange: THTMLDocumentEventsonreadystatechangeEvent; - Fonbeforeupdate: THTMLDocumentEventsonbeforeupdateEvent; - Fonafterupdate: THTMLDocumentEventsonafterupdateEvent; - Fonrowexit: THTMLDocumentEventsonrowexitEvent; - Fonrowenter: THTMLDocumentEventsonrowenterEvent; - Fondragstart: THTMLDocumentEventsondragstartEvent; - Fonselectstart: THTMLDocumentEventsonselectstartEvent; - Fonerrorupdate: THTMLDocumentEventsonerrorupdateEvent; - Foncontextmenu: THTMLDocumentEventsoncontextmenuEvent; - Fonstop: THTMLDocumentEventsonstopEvent; - Fonrowsdelete: THTMLDocumentEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLDocumentEventsonrowsinsertedEvent; - Foncellchange: THTMLDocumentEventsoncellchangeEvent; - Fonpropertychange: THTMLDocumentEventsonpropertychangeEvent; - Fondatasetchanged: THTMLDocumentEventsondatasetchangedEvent; - Fondataavailable: THTMLDocumentEventsondataavailableEvent; - Fondatasetcomplete: THTMLDocumentEventsondatasetcompleteEvent; - Fonbeforeeditfocus: THTMLDocumentEventsonbeforeeditfocusEvent; - Fonselectionchange: THTMLDocumentEventsonselectionchangeEvent; - Foncontrolselect: THTMLDocumentEventsoncontrolselectEvent; - Fonmousewheel: THTMLDocumentEventsonmousewheelEvent; - Fonfocusin: THTMLDocumentEventsonfocusinEvent; - Fonfocusout: THTMLDocumentEventsonfocusoutEvent; - Fonactivate: THTMLDocumentEventsonactivateEvent; - Fondeactivate: THTMLDocumentEventsondeactivateEvent; - Fonbeforeactivate: THTMLDocumentEventsonbeforeactivateEvent; - Fonbeforedeactivate: THTMLDocumentEventsonbeforedeactivateEvent; - published - //SinkEventsPublished// - property onhelp: THTMLDocumentEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLDocumentEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLDocumentEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeydown: THTMLDocumentEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLDocumentEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onkeypress: THTMLDocumentEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onmousedown: THTMLDocumentEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmousemove: THTMLDocumentEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmouseup: THTMLDocumentEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onmouseout: THTMLDocumentEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLDocumentEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onreadystatechange: THTMLDocumentEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeupdate: THTMLDocumentEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLDocumentEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onrowexit: THTMLDocumentEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLDocumentEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondragstart: THTMLDocumentEventsondragstartEvent read Fondragstart write Fondragstart; - property onselectstart: THTMLDocumentEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onerrorupdate: THTMLDocumentEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property oncontextmenu: THTMLDocumentEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onstop: THTMLDocumentEventsonstopEvent read Fonstop write Fonstop; - property onrowsdelete: THTMLDocumentEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLDocumentEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLDocumentEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onpropertychange: THTMLDocumentEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property ondatasetchanged: THTMLDocumentEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLDocumentEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLDocumentEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onbeforeeditfocus: THTMLDocumentEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onselectionchange: THTMLDocumentEventsonselectionchangeEvent read Fonselectionchange write Fonselectionchange; - property oncontrolselect: THTMLDocumentEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmousewheel: THTMLDocumentEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onfocusin: THTMLDocumentEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLDocumentEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onactivate: THTMLDocumentEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLDocumentEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforeactivate: THTMLDocumentEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onbeforedeactivate: THTMLDocumentEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - end; - - - //SinkEventsForwards// - THTMLDocumentEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onstopEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onbeforeeditfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onselectionchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLDocumentEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLDocumentEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLDocumentEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonstop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonbeforeeditfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonselectionchange(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLDocumentEvents2onhelpEvent; - Fonclick: THTMLDocumentEvents2onclickEvent; - Fondblclick: THTMLDocumentEvents2ondblclickEvent; - Fonkeydown: THTMLDocumentEvents2onkeydownEvent; - Fonkeyup: THTMLDocumentEvents2onkeyupEvent; - Fonkeypress: THTMLDocumentEvents2onkeypressEvent; - Fonmousedown: THTMLDocumentEvents2onmousedownEvent; - Fonmousemove: THTMLDocumentEvents2onmousemoveEvent; - Fonmouseup: THTMLDocumentEvents2onmouseupEvent; - Fonmouseout: THTMLDocumentEvents2onmouseoutEvent; - Fonmouseover: THTMLDocumentEvents2onmouseoverEvent; - Fonreadystatechange: THTMLDocumentEvents2onreadystatechangeEvent; - Fonbeforeupdate: THTMLDocumentEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLDocumentEvents2onafterupdateEvent; - Fonrowexit: THTMLDocumentEvents2onrowexitEvent; - Fonrowenter: THTMLDocumentEvents2onrowenterEvent; - Fondragstart: THTMLDocumentEvents2ondragstartEvent; - Fonselectstart: THTMLDocumentEvents2onselectstartEvent; - Fonerrorupdate: THTMLDocumentEvents2onerrorupdateEvent; - Foncontextmenu: THTMLDocumentEvents2oncontextmenuEvent; - Fonstop: THTMLDocumentEvents2onstopEvent; - Fonrowsdelete: THTMLDocumentEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLDocumentEvents2onrowsinsertedEvent; - Foncellchange: THTMLDocumentEvents2oncellchangeEvent; - Fonpropertychange: THTMLDocumentEvents2onpropertychangeEvent; - Fondatasetchanged: THTMLDocumentEvents2ondatasetchangedEvent; - Fondataavailable: THTMLDocumentEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLDocumentEvents2ondatasetcompleteEvent; - Fonbeforeeditfocus: THTMLDocumentEvents2onbeforeeditfocusEvent; - Fonselectionchange: THTMLDocumentEvents2onselectionchangeEvent; - Foncontrolselect: THTMLDocumentEvents2oncontrolselectEvent; - Fonmousewheel: THTMLDocumentEvents2onmousewheelEvent; - Fonfocusin: THTMLDocumentEvents2onfocusinEvent; - Fonfocusout: THTMLDocumentEvents2onfocusoutEvent; - Fonactivate: THTMLDocumentEvents2onactivateEvent; - Fondeactivate: THTMLDocumentEvents2ondeactivateEvent; - Fonbeforeactivate: THTMLDocumentEvents2onbeforeactivateEvent; - Fonbeforedeactivate: THTMLDocumentEvents2onbeforedeactivateEvent; - published - //SinkEventsPublished// - property onhelp: THTMLDocumentEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLDocumentEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLDocumentEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeydown: THTMLDocumentEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLDocumentEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onkeypress: THTMLDocumentEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onmousedown: THTMLDocumentEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmousemove: THTMLDocumentEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmouseup: THTMLDocumentEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onmouseout: THTMLDocumentEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLDocumentEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onreadystatechange: THTMLDocumentEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeupdate: THTMLDocumentEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLDocumentEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onrowexit: THTMLDocumentEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLDocumentEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondragstart: THTMLDocumentEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onselectstart: THTMLDocumentEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onerrorupdate: THTMLDocumentEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property oncontextmenu: THTMLDocumentEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onstop: THTMLDocumentEvents2onstopEvent read Fonstop write Fonstop; - property onrowsdelete: THTMLDocumentEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLDocumentEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLDocumentEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onpropertychange: THTMLDocumentEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property ondatasetchanged: THTMLDocumentEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLDocumentEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLDocumentEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onbeforeeditfocus: THTMLDocumentEvents2onbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onselectionchange: THTMLDocumentEvents2onselectionchangeEvent read Fonselectionchange write Fonselectionchange; - property oncontrolselect: THTMLDocumentEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmousewheel: THTMLDocumentEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onfocusin: THTMLDocumentEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLDocumentEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onactivate: THTMLDocumentEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLDocumentEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforeactivate: THTMLDocumentEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onbeforedeactivate: THTMLDocumentEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - end; - - - //SinkEventsForwards// - TDWebBridgeEventsonscriptleteventEvent = procedure(Sender: TObject; const name: WideString; eventData: OleVariant) of object; - TDWebBridgeEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - TDWebBridgeEventsonclickEvent = function(Sender: TObject): WordBool of object; - TDWebBridgeEventsondblclickEvent = function(Sender: TObject): WordBool of object; - TDWebBridgeEventsonkeydownEvent = procedure(Sender: TObject) of object; - TDWebBridgeEventsonkeyupEvent = procedure(Sender: TObject) of object; - TDWebBridgeEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - TDWebBridgeEventsonmousedownEvent = procedure(Sender: TObject) of object; - TDWebBridgeEventsonmousemoveEvent = procedure(Sender: TObject) of object; - TDWebBridgeEventsonmouseupEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLDWebBridgeEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - procedure Doonscriptletevent(const name: WideString; eventData: OleVariant); safecall; - procedure Doonreadystatechange; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonmousedown; safecall; - procedure Doonmousemove; safecall; - procedure Doonmouseup; safecall; - protected - //SinkEventsProtected// - Fonscriptletevent: TDWebBridgeEventsonscriptleteventEvent; - Fonreadystatechange: TDWebBridgeEventsonreadystatechangeEvent; - Fonclick: TDWebBridgeEventsonclickEvent; - Fondblclick: TDWebBridgeEventsondblclickEvent; - Fonkeydown: TDWebBridgeEventsonkeydownEvent; - Fonkeyup: TDWebBridgeEventsonkeyupEvent; - Fonkeypress: TDWebBridgeEventsonkeypressEvent; - Fonmousedown: TDWebBridgeEventsonmousedownEvent; - Fonmousemove: TDWebBridgeEventsonmousemoveEvent; - Fonmouseup: TDWebBridgeEventsonmouseupEvent; - published - //SinkEventsPublished// - property onscriptletevent: TDWebBridgeEventsonscriptleteventEvent read Fonscriptletevent write Fonscriptletevent; - property onreadystatechange: TDWebBridgeEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onclick: TDWebBridgeEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: TDWebBridgeEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeydown: TDWebBridgeEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: TDWebBridgeEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onkeypress: TDWebBridgeEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onmousedown: TDWebBridgeEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmousemove: TDWebBridgeEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmouseup: TDWebBridgeEventsonmouseupEvent read Fonmouseup write Fonmouseup; - end; - - - //SinkEventsForwards// - THTMLControlElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLControlElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLControlElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLControlElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLControlElementEventsonhelpEvent; - Fonclick: THTMLControlElementEventsonclickEvent; - Fondblclick: THTMLControlElementEventsondblclickEvent; - Fonkeypress: THTMLControlElementEventsonkeypressEvent; - Fonkeydown: THTMLControlElementEventsonkeydownEvent; - Fonkeyup: THTMLControlElementEventsonkeyupEvent; - Fonmouseout: THTMLControlElementEventsonmouseoutEvent; - Fonmouseover: THTMLControlElementEventsonmouseoverEvent; - Fonmousemove: THTMLControlElementEventsonmousemoveEvent; - Fonmousedown: THTMLControlElementEventsonmousedownEvent; - Fonmouseup: THTMLControlElementEventsonmouseupEvent; - Fonselectstart: THTMLControlElementEventsonselectstartEvent; - Fonfilterchange: THTMLControlElementEventsonfilterchangeEvent; - Fondragstart: THTMLControlElementEventsondragstartEvent; - Fonbeforeupdate: THTMLControlElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLControlElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLControlElementEventsonerrorupdateEvent; - Fonrowexit: THTMLControlElementEventsonrowexitEvent; - Fonrowenter: THTMLControlElementEventsonrowenterEvent; - Fondatasetchanged: THTMLControlElementEventsondatasetchangedEvent; - Fondataavailable: THTMLControlElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLControlElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLControlElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLControlElementEventsonpropertychangeEvent; - Fonscroll: THTMLControlElementEventsonscrollEvent; - Fonfocus: THTMLControlElementEventsonfocusEvent; - Fonblur: THTMLControlElementEventsonblurEvent; - Fonresize: THTMLControlElementEventsonresizeEvent; - Fondrag: THTMLControlElementEventsondragEvent; - Fondragend: THTMLControlElementEventsondragendEvent; - Fondragenter: THTMLControlElementEventsondragenterEvent; - Fondragover: THTMLControlElementEventsondragoverEvent; - Fondragleave: THTMLControlElementEventsondragleaveEvent; - Fondrop: THTMLControlElementEventsondropEvent; - Fonbeforecut: THTMLControlElementEventsonbeforecutEvent; - Foncut: THTMLControlElementEventsoncutEvent; - Fonbeforecopy: THTMLControlElementEventsonbeforecopyEvent; - Foncopy: THTMLControlElementEventsoncopyEvent; - Fonbeforepaste: THTMLControlElementEventsonbeforepasteEvent; - Fonpaste: THTMLControlElementEventsonpasteEvent; - Foncontextmenu: THTMLControlElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLControlElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLControlElementEventsonrowsinsertedEvent; - Foncellchange: THTMLControlElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLControlElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLControlElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLControlElementEventsonlayoutcompleteEvent; - Fonpage: THTMLControlElementEventsonpageEvent; - Fonbeforedeactivate: THTMLControlElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLControlElementEventsonbeforeactivateEvent; - Fonmove: THTMLControlElementEventsonmoveEvent; - Foncontrolselect: THTMLControlElementEventsoncontrolselectEvent; - Fonmovestart: THTMLControlElementEventsonmovestartEvent; - Fonmoveend: THTMLControlElementEventsonmoveendEvent; - Fonresizestart: THTMLControlElementEventsonresizestartEvent; - Fonresizeend: THTMLControlElementEventsonresizeendEvent; - Fonmouseenter: THTMLControlElementEventsonmouseenterEvent; - Fonmouseleave: THTMLControlElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLControlElementEventsonmousewheelEvent; - Fonactivate: THTMLControlElementEventsonactivateEvent; - Fondeactivate: THTMLControlElementEventsondeactivateEvent; - Fonfocusin: THTMLControlElementEventsonfocusinEvent; - Fonfocusout: THTMLControlElementEventsonfocusoutEvent; - published - //SinkEventsPublished// - property onhelp: THTMLControlElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLControlElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLControlElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLControlElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLControlElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLControlElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLControlElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLControlElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLControlElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLControlElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLControlElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLControlElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLControlElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLControlElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLControlElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLControlElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLControlElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLControlElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLControlElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLControlElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLControlElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLControlElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLControlElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLControlElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLControlElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLControlElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLControlElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLControlElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLControlElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLControlElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLControlElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLControlElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLControlElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLControlElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLControlElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLControlElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLControlElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLControlElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLControlElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLControlElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLControlElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLControlElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLControlElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLControlElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLControlElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLControlElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLControlElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLControlElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLControlElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLControlElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLControlElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLControlElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLControlElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLControlElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLControlElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLControlElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLControlElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLControlElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLControlElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLControlElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLControlElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLControlElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLControlElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - end; - - - //SinkEventsForwards// - THTMLControlElementEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLControlElementEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLControlElementEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLControlElementEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLControlElementEvents2onhelpEvent; - Fonclick: THTMLControlElementEvents2onclickEvent; - Fondblclick: THTMLControlElementEvents2ondblclickEvent; - Fonkeypress: THTMLControlElementEvents2onkeypressEvent; - Fonkeydown: THTMLControlElementEvents2onkeydownEvent; - Fonkeyup: THTMLControlElementEvents2onkeyupEvent; - Fonmouseout: THTMLControlElementEvents2onmouseoutEvent; - Fonmouseover: THTMLControlElementEvents2onmouseoverEvent; - Fonmousemove: THTMLControlElementEvents2onmousemoveEvent; - Fonmousedown: THTMLControlElementEvents2onmousedownEvent; - Fonmouseup: THTMLControlElementEvents2onmouseupEvent; - Fonselectstart: THTMLControlElementEvents2onselectstartEvent; - Fonfilterchange: THTMLControlElementEvents2onfilterchangeEvent; - Fondragstart: THTMLControlElementEvents2ondragstartEvent; - Fonbeforeupdate: THTMLControlElementEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLControlElementEvents2onafterupdateEvent; - Fonerrorupdate: THTMLControlElementEvents2onerrorupdateEvent; - Fonrowexit: THTMLControlElementEvents2onrowexitEvent; - Fonrowenter: THTMLControlElementEvents2onrowenterEvent; - Fondatasetchanged: THTMLControlElementEvents2ondatasetchangedEvent; - Fondataavailable: THTMLControlElementEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLControlElementEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLControlElementEvents2onlosecaptureEvent; - Fonpropertychange: THTMLControlElementEvents2onpropertychangeEvent; - Fonscroll: THTMLControlElementEvents2onscrollEvent; - Fonfocus: THTMLControlElementEvents2onfocusEvent; - Fonblur: THTMLControlElementEvents2onblurEvent; - Fonresize: THTMLControlElementEvents2onresizeEvent; - Fondrag: THTMLControlElementEvents2ondragEvent; - Fondragend: THTMLControlElementEvents2ondragendEvent; - Fondragenter: THTMLControlElementEvents2ondragenterEvent; - Fondragover: THTMLControlElementEvents2ondragoverEvent; - Fondragleave: THTMLControlElementEvents2ondragleaveEvent; - Fondrop: THTMLControlElementEvents2ondropEvent; - Fonbeforecut: THTMLControlElementEvents2onbeforecutEvent; - Foncut: THTMLControlElementEvents2oncutEvent; - Fonbeforecopy: THTMLControlElementEvents2onbeforecopyEvent; - Foncopy: THTMLControlElementEvents2oncopyEvent; - Fonbeforepaste: THTMLControlElementEvents2onbeforepasteEvent; - Fonpaste: THTMLControlElementEvents2onpasteEvent; - Foncontextmenu: THTMLControlElementEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLControlElementEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLControlElementEvents2onrowsinsertedEvent; - Foncellchange: THTMLControlElementEvents2oncellchangeEvent; - Fonreadystatechange: THTMLControlElementEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLControlElementEvents2onlayoutcompleteEvent; - Fonpage: THTMLControlElementEvents2onpageEvent; - Fonmouseenter: THTMLControlElementEvents2onmouseenterEvent; - Fonmouseleave: THTMLControlElementEvents2onmouseleaveEvent; - Fonactivate: THTMLControlElementEvents2onactivateEvent; - Fondeactivate: THTMLControlElementEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLControlElementEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLControlElementEvents2onbeforeactivateEvent; - Fonfocusin: THTMLControlElementEvents2onfocusinEvent; - Fonfocusout: THTMLControlElementEvents2onfocusoutEvent; - Fonmove: THTMLControlElementEvents2onmoveEvent; - Foncontrolselect: THTMLControlElementEvents2oncontrolselectEvent; - Fonmovestart: THTMLControlElementEvents2onmovestartEvent; - Fonmoveend: THTMLControlElementEvents2onmoveendEvent; - Fonresizestart: THTMLControlElementEvents2onresizestartEvent; - Fonresizeend: THTMLControlElementEvents2onresizeendEvent; - Fonmousewheel: THTMLControlElementEvents2onmousewheelEvent; - published - //SinkEventsPublished// - property onhelp: THTMLControlElementEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLControlElementEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLControlElementEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLControlElementEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLControlElementEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLControlElementEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLControlElementEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLControlElementEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLControlElementEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLControlElementEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLControlElementEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLControlElementEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLControlElementEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLControlElementEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLControlElementEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLControlElementEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLControlElementEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLControlElementEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLControlElementEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLControlElementEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLControlElementEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLControlElementEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLControlElementEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLControlElementEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLControlElementEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLControlElementEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLControlElementEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLControlElementEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLControlElementEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLControlElementEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLControlElementEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLControlElementEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLControlElementEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLControlElementEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLControlElementEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLControlElementEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLControlElementEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLControlElementEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLControlElementEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLControlElementEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLControlElementEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLControlElementEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLControlElementEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLControlElementEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLControlElementEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLControlElementEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLControlElementEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLControlElementEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLControlElementEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLControlElementEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLControlElementEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLControlElementEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLControlElementEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLControlElementEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLControlElementEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLControlElementEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLControlElementEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLControlElementEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLControlElementEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLControlElementEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLControlElementEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLControlElementEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - end; - - - //SinkEventsForwards// - THTMLMapEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLMapEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLMapEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLMapEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLMapEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLMapEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLMapEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLMapEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLMapEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLMapEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLMapEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLMapEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLMapEventsonfocusoutEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLMapEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLMapEventsonhelpEvent; - Fonclick: THTMLMapEventsonclickEvent; - Fondblclick: THTMLMapEventsondblclickEvent; - Fonkeypress: THTMLMapEventsonkeypressEvent; - Fonkeydown: THTMLMapEventsonkeydownEvent; - Fonkeyup: THTMLMapEventsonkeyupEvent; - Fonmouseout: THTMLMapEventsonmouseoutEvent; - Fonmouseover: THTMLMapEventsonmouseoverEvent; - Fonmousemove: THTMLMapEventsonmousemoveEvent; - Fonmousedown: THTMLMapEventsonmousedownEvent; - Fonmouseup: THTMLMapEventsonmouseupEvent; - Fonselectstart: THTMLMapEventsonselectstartEvent; - Fonfilterchange: THTMLMapEventsonfilterchangeEvent; - Fondragstart: THTMLMapEventsondragstartEvent; - Fonbeforeupdate: THTMLMapEventsonbeforeupdateEvent; - Fonafterupdate: THTMLMapEventsonafterupdateEvent; - Fonerrorupdate: THTMLMapEventsonerrorupdateEvent; - Fonrowexit: THTMLMapEventsonrowexitEvent; - Fonrowenter: THTMLMapEventsonrowenterEvent; - Fondatasetchanged: THTMLMapEventsondatasetchangedEvent; - Fondataavailable: THTMLMapEventsondataavailableEvent; - Fondatasetcomplete: THTMLMapEventsondatasetcompleteEvent; - Fonlosecapture: THTMLMapEventsonlosecaptureEvent; - Fonpropertychange: THTMLMapEventsonpropertychangeEvent; - Fonscroll: THTMLMapEventsonscrollEvent; - Fonfocus: THTMLMapEventsonfocusEvent; - Fonblur: THTMLMapEventsonblurEvent; - Fonresize: THTMLMapEventsonresizeEvent; - Fondrag: THTMLMapEventsondragEvent; - Fondragend: THTMLMapEventsondragendEvent; - Fondragenter: THTMLMapEventsondragenterEvent; - Fondragover: THTMLMapEventsondragoverEvent; - Fondragleave: THTMLMapEventsondragleaveEvent; - Fondrop: THTMLMapEventsondropEvent; - Fonbeforecut: THTMLMapEventsonbeforecutEvent; - Foncut: THTMLMapEventsoncutEvent; - Fonbeforecopy: THTMLMapEventsonbeforecopyEvent; - Foncopy: THTMLMapEventsoncopyEvent; - Fonbeforepaste: THTMLMapEventsonbeforepasteEvent; - Fonpaste: THTMLMapEventsonpasteEvent; - Foncontextmenu: THTMLMapEventsoncontextmenuEvent; - Fonrowsdelete: THTMLMapEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLMapEventsonrowsinsertedEvent; - Foncellchange: THTMLMapEventsoncellchangeEvent; - Fonreadystatechange: THTMLMapEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLMapEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLMapEventsonlayoutcompleteEvent; - Fonpage: THTMLMapEventsonpageEvent; - Fonbeforedeactivate: THTMLMapEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLMapEventsonbeforeactivateEvent; - Fonmove: THTMLMapEventsonmoveEvent; - Foncontrolselect: THTMLMapEventsoncontrolselectEvent; - Fonmovestart: THTMLMapEventsonmovestartEvent; - Fonmoveend: THTMLMapEventsonmoveendEvent; - Fonresizestart: THTMLMapEventsonresizestartEvent; - Fonresizeend: THTMLMapEventsonresizeendEvent; - Fonmouseenter: THTMLMapEventsonmouseenterEvent; - Fonmouseleave: THTMLMapEventsonmouseleaveEvent; - Fonmousewheel: THTMLMapEventsonmousewheelEvent; - Fonactivate: THTMLMapEventsonactivateEvent; - Fondeactivate: THTMLMapEventsondeactivateEvent; - Fonfocusin: THTMLMapEventsonfocusinEvent; - Fonfocusout: THTMLMapEventsonfocusoutEvent; - published - //SinkEventsPublished// - property onhelp: THTMLMapEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLMapEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLMapEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLMapEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLMapEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLMapEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLMapEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLMapEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLMapEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLMapEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLMapEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLMapEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLMapEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLMapEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLMapEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLMapEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLMapEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLMapEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLMapEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLMapEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLMapEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLMapEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLMapEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLMapEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLMapEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLMapEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLMapEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLMapEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLMapEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLMapEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLMapEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLMapEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLMapEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLMapEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLMapEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLMapEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLMapEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLMapEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLMapEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLMapEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLMapEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLMapEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLMapEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLMapEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLMapEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLMapEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLMapEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLMapEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLMapEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLMapEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLMapEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLMapEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLMapEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLMapEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLMapEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLMapEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLMapEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLMapEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLMapEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLMapEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLMapEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLMapEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLMapEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - end; - - - //SinkEventsForwards// - THTMLMapEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLMapEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLMapEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLMapEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLMapEvents2onhelpEvent; - Fonclick: THTMLMapEvents2onclickEvent; - Fondblclick: THTMLMapEvents2ondblclickEvent; - Fonkeypress: THTMLMapEvents2onkeypressEvent; - Fonkeydown: THTMLMapEvents2onkeydownEvent; - Fonkeyup: THTMLMapEvents2onkeyupEvent; - Fonmouseout: THTMLMapEvents2onmouseoutEvent; - Fonmouseover: THTMLMapEvents2onmouseoverEvent; - Fonmousemove: THTMLMapEvents2onmousemoveEvent; - Fonmousedown: THTMLMapEvents2onmousedownEvent; - Fonmouseup: THTMLMapEvents2onmouseupEvent; - Fonselectstart: THTMLMapEvents2onselectstartEvent; - Fonfilterchange: THTMLMapEvents2onfilterchangeEvent; - Fondragstart: THTMLMapEvents2ondragstartEvent; - Fonbeforeupdate: THTMLMapEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLMapEvents2onafterupdateEvent; - Fonerrorupdate: THTMLMapEvents2onerrorupdateEvent; - Fonrowexit: THTMLMapEvents2onrowexitEvent; - Fonrowenter: THTMLMapEvents2onrowenterEvent; - Fondatasetchanged: THTMLMapEvents2ondatasetchangedEvent; - Fondataavailable: THTMLMapEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLMapEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLMapEvents2onlosecaptureEvent; - Fonpropertychange: THTMLMapEvents2onpropertychangeEvent; - Fonscroll: THTMLMapEvents2onscrollEvent; - Fonfocus: THTMLMapEvents2onfocusEvent; - Fonblur: THTMLMapEvents2onblurEvent; - Fonresize: THTMLMapEvents2onresizeEvent; - Fondrag: THTMLMapEvents2ondragEvent; - Fondragend: THTMLMapEvents2ondragendEvent; - Fondragenter: THTMLMapEvents2ondragenterEvent; - Fondragover: THTMLMapEvents2ondragoverEvent; - Fondragleave: THTMLMapEvents2ondragleaveEvent; - Fondrop: THTMLMapEvents2ondropEvent; - Fonbeforecut: THTMLMapEvents2onbeforecutEvent; - Foncut: THTMLMapEvents2oncutEvent; - Fonbeforecopy: THTMLMapEvents2onbeforecopyEvent; - Foncopy: THTMLMapEvents2oncopyEvent; - Fonbeforepaste: THTMLMapEvents2onbeforepasteEvent; - Fonpaste: THTMLMapEvents2onpasteEvent; - Foncontextmenu: THTMLMapEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLMapEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLMapEvents2onrowsinsertedEvent; - Foncellchange: THTMLMapEvents2oncellchangeEvent; - Fonreadystatechange: THTMLMapEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLMapEvents2onlayoutcompleteEvent; - Fonpage: THTMLMapEvents2onpageEvent; - Fonmouseenter: THTMLMapEvents2onmouseenterEvent; - Fonmouseleave: THTMLMapEvents2onmouseleaveEvent; - Fonactivate: THTMLMapEvents2onactivateEvent; - Fondeactivate: THTMLMapEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLMapEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLMapEvents2onbeforeactivateEvent; - Fonfocusin: THTMLMapEvents2onfocusinEvent; - Fonfocusout: THTMLMapEvents2onfocusoutEvent; - Fonmove: THTMLMapEvents2onmoveEvent; - Foncontrolselect: THTMLMapEvents2oncontrolselectEvent; - Fonmovestart: THTMLMapEvents2onmovestartEvent; - Fonmoveend: THTMLMapEvents2onmoveendEvent; - Fonresizestart: THTMLMapEvents2onresizestartEvent; - Fonresizeend: THTMLMapEvents2onresizeendEvent; - Fonmousewheel: THTMLMapEvents2onmousewheelEvent; - published - //SinkEventsPublished// - property onhelp: THTMLMapEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLMapEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLMapEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLMapEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLMapEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLMapEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLMapEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLMapEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLMapEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLMapEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLMapEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLMapEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLMapEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLMapEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLMapEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLMapEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLMapEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLMapEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLMapEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLMapEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLMapEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLMapEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLMapEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLMapEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLMapEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLMapEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLMapEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLMapEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLMapEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLMapEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLMapEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLMapEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLMapEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLMapEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLMapEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLMapEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLMapEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLMapEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLMapEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLMapEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLMapEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLMapEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLMapEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLMapEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLMapEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLMapEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLMapEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLMapEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLMapEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLMapEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLMapEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLMapEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLMapEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLMapEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLMapEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLMapEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLMapEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLMapEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLMapEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLMapEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLMapEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLMapEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - end; - - - //SinkEventsForwards// - THTMLAreaEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLAreaEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLAreaEventsonfocusoutEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLAreaEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLAreaEventsonhelpEvent; - Fonclick: THTMLAreaEventsonclickEvent; - Fondblclick: THTMLAreaEventsondblclickEvent; - Fonkeypress: THTMLAreaEventsonkeypressEvent; - Fonkeydown: THTMLAreaEventsonkeydownEvent; - Fonkeyup: THTMLAreaEventsonkeyupEvent; - Fonmouseout: THTMLAreaEventsonmouseoutEvent; - Fonmouseover: THTMLAreaEventsonmouseoverEvent; - Fonmousemove: THTMLAreaEventsonmousemoveEvent; - Fonmousedown: THTMLAreaEventsonmousedownEvent; - Fonmouseup: THTMLAreaEventsonmouseupEvent; - Fonselectstart: THTMLAreaEventsonselectstartEvent; - Fonfilterchange: THTMLAreaEventsonfilterchangeEvent; - Fondragstart: THTMLAreaEventsondragstartEvent; - Fonbeforeupdate: THTMLAreaEventsonbeforeupdateEvent; - Fonafterupdate: THTMLAreaEventsonafterupdateEvent; - Fonerrorupdate: THTMLAreaEventsonerrorupdateEvent; - Fonrowexit: THTMLAreaEventsonrowexitEvent; - Fonrowenter: THTMLAreaEventsonrowenterEvent; - Fondatasetchanged: THTMLAreaEventsondatasetchangedEvent; - Fondataavailable: THTMLAreaEventsondataavailableEvent; - Fondatasetcomplete: THTMLAreaEventsondatasetcompleteEvent; - Fonlosecapture: THTMLAreaEventsonlosecaptureEvent; - Fonpropertychange: THTMLAreaEventsonpropertychangeEvent; - Fonscroll: THTMLAreaEventsonscrollEvent; - Fonfocus: THTMLAreaEventsonfocusEvent; - Fonblur: THTMLAreaEventsonblurEvent; - Fonresize: THTMLAreaEventsonresizeEvent; - Fondrag: THTMLAreaEventsondragEvent; - Fondragend: THTMLAreaEventsondragendEvent; - Fondragenter: THTMLAreaEventsondragenterEvent; - Fondragover: THTMLAreaEventsondragoverEvent; - Fondragleave: THTMLAreaEventsondragleaveEvent; - Fondrop: THTMLAreaEventsondropEvent; - Fonbeforecut: THTMLAreaEventsonbeforecutEvent; - Foncut: THTMLAreaEventsoncutEvent; - Fonbeforecopy: THTMLAreaEventsonbeforecopyEvent; - Foncopy: THTMLAreaEventsoncopyEvent; - Fonbeforepaste: THTMLAreaEventsonbeforepasteEvent; - Fonpaste: THTMLAreaEventsonpasteEvent; - Foncontextmenu: THTMLAreaEventsoncontextmenuEvent; - Fonrowsdelete: THTMLAreaEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLAreaEventsonrowsinsertedEvent; - Foncellchange: THTMLAreaEventsoncellchangeEvent; - Fonreadystatechange: THTMLAreaEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLAreaEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLAreaEventsonlayoutcompleteEvent; - Fonpage: THTMLAreaEventsonpageEvent; - Fonbeforedeactivate: THTMLAreaEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLAreaEventsonbeforeactivateEvent; - Fonmove: THTMLAreaEventsonmoveEvent; - Foncontrolselect: THTMLAreaEventsoncontrolselectEvent; - Fonmovestart: THTMLAreaEventsonmovestartEvent; - Fonmoveend: THTMLAreaEventsonmoveendEvent; - Fonresizestart: THTMLAreaEventsonresizestartEvent; - Fonresizeend: THTMLAreaEventsonresizeendEvent; - Fonmouseenter: THTMLAreaEventsonmouseenterEvent; - Fonmouseleave: THTMLAreaEventsonmouseleaveEvent; - Fonmousewheel: THTMLAreaEventsonmousewheelEvent; - Fonactivate: THTMLAreaEventsonactivateEvent; - Fondeactivate: THTMLAreaEventsondeactivateEvent; - Fonfocusin: THTMLAreaEventsonfocusinEvent; - Fonfocusout: THTMLAreaEventsonfocusoutEvent; - published - //SinkEventsPublished// - property onhelp: THTMLAreaEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLAreaEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLAreaEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLAreaEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLAreaEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLAreaEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLAreaEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLAreaEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLAreaEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLAreaEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLAreaEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLAreaEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLAreaEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLAreaEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLAreaEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLAreaEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLAreaEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLAreaEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLAreaEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLAreaEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLAreaEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLAreaEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLAreaEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLAreaEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLAreaEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLAreaEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLAreaEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLAreaEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLAreaEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLAreaEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLAreaEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLAreaEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLAreaEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLAreaEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLAreaEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLAreaEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLAreaEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLAreaEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLAreaEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLAreaEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLAreaEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLAreaEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLAreaEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLAreaEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLAreaEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLAreaEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLAreaEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLAreaEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLAreaEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLAreaEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLAreaEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLAreaEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLAreaEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLAreaEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLAreaEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLAreaEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLAreaEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLAreaEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLAreaEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLAreaEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLAreaEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLAreaEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLAreaEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - end; - - - //SinkEventsForwards// - THTMLAreaEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLAreaEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLAreaEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLAreaEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLAreaEvents2onhelpEvent; - Fonclick: THTMLAreaEvents2onclickEvent; - Fondblclick: THTMLAreaEvents2ondblclickEvent; - Fonkeypress: THTMLAreaEvents2onkeypressEvent; - Fonkeydown: THTMLAreaEvents2onkeydownEvent; - Fonkeyup: THTMLAreaEvents2onkeyupEvent; - Fonmouseout: THTMLAreaEvents2onmouseoutEvent; - Fonmouseover: THTMLAreaEvents2onmouseoverEvent; - Fonmousemove: THTMLAreaEvents2onmousemoveEvent; - Fonmousedown: THTMLAreaEvents2onmousedownEvent; - Fonmouseup: THTMLAreaEvents2onmouseupEvent; - Fonselectstart: THTMLAreaEvents2onselectstartEvent; - Fonfilterchange: THTMLAreaEvents2onfilterchangeEvent; - Fondragstart: THTMLAreaEvents2ondragstartEvent; - Fonbeforeupdate: THTMLAreaEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLAreaEvents2onafterupdateEvent; - Fonerrorupdate: THTMLAreaEvents2onerrorupdateEvent; - Fonrowexit: THTMLAreaEvents2onrowexitEvent; - Fonrowenter: THTMLAreaEvents2onrowenterEvent; - Fondatasetchanged: THTMLAreaEvents2ondatasetchangedEvent; - Fondataavailable: THTMLAreaEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLAreaEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLAreaEvents2onlosecaptureEvent; - Fonpropertychange: THTMLAreaEvents2onpropertychangeEvent; - Fonscroll: THTMLAreaEvents2onscrollEvent; - Fonfocus: THTMLAreaEvents2onfocusEvent; - Fonblur: THTMLAreaEvents2onblurEvent; - Fonresize: THTMLAreaEvents2onresizeEvent; - Fondrag: THTMLAreaEvents2ondragEvent; - Fondragend: THTMLAreaEvents2ondragendEvent; - Fondragenter: THTMLAreaEvents2ondragenterEvent; - Fondragover: THTMLAreaEvents2ondragoverEvent; - Fondragleave: THTMLAreaEvents2ondragleaveEvent; - Fondrop: THTMLAreaEvents2ondropEvent; - Fonbeforecut: THTMLAreaEvents2onbeforecutEvent; - Foncut: THTMLAreaEvents2oncutEvent; - Fonbeforecopy: THTMLAreaEvents2onbeforecopyEvent; - Foncopy: THTMLAreaEvents2oncopyEvent; - Fonbeforepaste: THTMLAreaEvents2onbeforepasteEvent; - Fonpaste: THTMLAreaEvents2onpasteEvent; - Foncontextmenu: THTMLAreaEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLAreaEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLAreaEvents2onrowsinsertedEvent; - Foncellchange: THTMLAreaEvents2oncellchangeEvent; - Fonreadystatechange: THTMLAreaEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLAreaEvents2onlayoutcompleteEvent; - Fonpage: THTMLAreaEvents2onpageEvent; - Fonmouseenter: THTMLAreaEvents2onmouseenterEvent; - Fonmouseleave: THTMLAreaEvents2onmouseleaveEvent; - Fonactivate: THTMLAreaEvents2onactivateEvent; - Fondeactivate: THTMLAreaEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLAreaEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLAreaEvents2onbeforeactivateEvent; - Fonfocusin: THTMLAreaEvents2onfocusinEvent; - Fonfocusout: THTMLAreaEvents2onfocusoutEvent; - Fonmove: THTMLAreaEvents2onmoveEvent; - Foncontrolselect: THTMLAreaEvents2oncontrolselectEvent; - Fonmovestart: THTMLAreaEvents2onmovestartEvent; - Fonmoveend: THTMLAreaEvents2onmoveendEvent; - Fonresizestart: THTMLAreaEvents2onresizestartEvent; - Fonresizeend: THTMLAreaEvents2onresizeendEvent; - Fonmousewheel: THTMLAreaEvents2onmousewheelEvent; - published - //SinkEventsPublished// - property onhelp: THTMLAreaEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLAreaEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLAreaEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLAreaEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLAreaEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLAreaEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLAreaEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLAreaEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLAreaEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLAreaEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLAreaEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLAreaEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLAreaEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLAreaEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLAreaEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLAreaEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLAreaEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLAreaEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLAreaEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLAreaEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLAreaEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLAreaEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLAreaEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLAreaEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLAreaEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLAreaEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLAreaEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLAreaEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLAreaEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLAreaEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLAreaEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLAreaEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLAreaEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLAreaEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLAreaEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLAreaEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLAreaEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLAreaEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLAreaEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLAreaEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLAreaEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLAreaEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLAreaEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLAreaEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLAreaEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLAreaEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLAreaEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLAreaEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLAreaEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLAreaEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLAreaEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLAreaEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLAreaEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLAreaEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLAreaEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLAreaEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLAreaEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLAreaEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLAreaEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLAreaEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLAreaEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLAreaEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - end; - - - //SinkEventsForwards// - THTMLTableEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLTableEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLTableEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLTableEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLTableEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLTableEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLTableEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLTableEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLTableEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLTableEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLTableEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLTableEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLTableEventsonfocusoutEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLTableEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLTableEventsonhelpEvent; - Fonclick: THTMLTableEventsonclickEvent; - Fondblclick: THTMLTableEventsondblclickEvent; - Fonkeypress: THTMLTableEventsonkeypressEvent; - Fonkeydown: THTMLTableEventsonkeydownEvent; - Fonkeyup: THTMLTableEventsonkeyupEvent; - Fonmouseout: THTMLTableEventsonmouseoutEvent; - Fonmouseover: THTMLTableEventsonmouseoverEvent; - Fonmousemove: THTMLTableEventsonmousemoveEvent; - Fonmousedown: THTMLTableEventsonmousedownEvent; - Fonmouseup: THTMLTableEventsonmouseupEvent; - Fonselectstart: THTMLTableEventsonselectstartEvent; - Fonfilterchange: THTMLTableEventsonfilterchangeEvent; - Fondragstart: THTMLTableEventsondragstartEvent; - Fonbeforeupdate: THTMLTableEventsonbeforeupdateEvent; - Fonafterupdate: THTMLTableEventsonafterupdateEvent; - Fonerrorupdate: THTMLTableEventsonerrorupdateEvent; - Fonrowexit: THTMLTableEventsonrowexitEvent; - Fonrowenter: THTMLTableEventsonrowenterEvent; - Fondatasetchanged: THTMLTableEventsondatasetchangedEvent; - Fondataavailable: THTMLTableEventsondataavailableEvent; - Fondatasetcomplete: THTMLTableEventsondatasetcompleteEvent; - Fonlosecapture: THTMLTableEventsonlosecaptureEvent; - Fonpropertychange: THTMLTableEventsonpropertychangeEvent; - Fonscroll: THTMLTableEventsonscrollEvent; - Fonfocus: THTMLTableEventsonfocusEvent; - Fonblur: THTMLTableEventsonblurEvent; - Fonresize: THTMLTableEventsonresizeEvent; - Fondrag: THTMLTableEventsondragEvent; - Fondragend: THTMLTableEventsondragendEvent; - Fondragenter: THTMLTableEventsondragenterEvent; - Fondragover: THTMLTableEventsondragoverEvent; - Fondragleave: THTMLTableEventsondragleaveEvent; - Fondrop: THTMLTableEventsondropEvent; - Fonbeforecut: THTMLTableEventsonbeforecutEvent; - Foncut: THTMLTableEventsoncutEvent; - Fonbeforecopy: THTMLTableEventsonbeforecopyEvent; - Foncopy: THTMLTableEventsoncopyEvent; - Fonbeforepaste: THTMLTableEventsonbeforepasteEvent; - Fonpaste: THTMLTableEventsonpasteEvent; - Foncontextmenu: THTMLTableEventsoncontextmenuEvent; - Fonrowsdelete: THTMLTableEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLTableEventsonrowsinsertedEvent; - Foncellchange: THTMLTableEventsoncellchangeEvent; - Fonreadystatechange: THTMLTableEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLTableEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLTableEventsonlayoutcompleteEvent; - Fonpage: THTMLTableEventsonpageEvent; - Fonbeforedeactivate: THTMLTableEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLTableEventsonbeforeactivateEvent; - Fonmove: THTMLTableEventsonmoveEvent; - Foncontrolselect: THTMLTableEventsoncontrolselectEvent; - Fonmovestart: THTMLTableEventsonmovestartEvent; - Fonmoveend: THTMLTableEventsonmoveendEvent; - Fonresizestart: THTMLTableEventsonresizestartEvent; - Fonresizeend: THTMLTableEventsonresizeendEvent; - Fonmouseenter: THTMLTableEventsonmouseenterEvent; - Fonmouseleave: THTMLTableEventsonmouseleaveEvent; - Fonmousewheel: THTMLTableEventsonmousewheelEvent; - Fonactivate: THTMLTableEventsonactivateEvent; - Fondeactivate: THTMLTableEventsondeactivateEvent; - Fonfocusin: THTMLTableEventsonfocusinEvent; - Fonfocusout: THTMLTableEventsonfocusoutEvent; - published - //SinkEventsPublished// - property onhelp: THTMLTableEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLTableEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLTableEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLTableEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLTableEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLTableEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLTableEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLTableEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLTableEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLTableEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLTableEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLTableEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLTableEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLTableEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLTableEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLTableEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLTableEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLTableEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLTableEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLTableEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLTableEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLTableEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLTableEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLTableEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLTableEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLTableEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLTableEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLTableEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLTableEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLTableEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLTableEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLTableEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLTableEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLTableEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLTableEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLTableEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLTableEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLTableEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLTableEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLTableEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLTableEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLTableEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLTableEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLTableEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLTableEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLTableEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLTableEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLTableEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLTableEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLTableEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLTableEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLTableEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLTableEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLTableEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLTableEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLTableEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLTableEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLTableEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLTableEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLTableEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLTableEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLTableEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLTableEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - end; - - - //SinkEventsForwards// - THTMLTableEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLTableEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLTableEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - - //SinkComponent// - TMSHTMLHTMLTableEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLTableEvents2onhelpEvent; - Fonclick: THTMLTableEvents2onclickEvent; - Fondblclick: THTMLTableEvents2ondblclickEvent; - Fonkeypress: THTMLTableEvents2onkeypressEvent; - Fonkeydown: THTMLTableEvents2onkeydownEvent; - Fonkeyup: THTMLTableEvents2onkeyupEvent; - Fonmouseout: THTMLTableEvents2onmouseoutEvent; - Fonmouseover: THTMLTableEvents2onmouseoverEvent; - Fonmousemove: THTMLTableEvents2onmousemoveEvent; - Fonmousedown: THTMLTableEvents2onmousedownEvent; - Fonmouseup: THTMLTableEvents2onmouseupEvent; - Fonselectstart: THTMLTableEvents2onselectstartEvent; - Fonfilterchange: THTMLTableEvents2onfilterchangeEvent; - Fondragstart: THTMLTableEvents2ondragstartEvent; - Fonbeforeupdate: THTMLTableEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLTableEvents2onafterupdateEvent; - Fonerrorupdate: THTMLTableEvents2onerrorupdateEvent; - Fonrowexit: THTMLTableEvents2onrowexitEvent; - Fonrowenter: THTMLTableEvents2onrowenterEvent; - Fondatasetchanged: THTMLTableEvents2ondatasetchangedEvent; - Fondataavailable: THTMLTableEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLTableEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLTableEvents2onlosecaptureEvent; - Fonpropertychange: THTMLTableEvents2onpropertychangeEvent; - Fonscroll: THTMLTableEvents2onscrollEvent; - Fonfocus: THTMLTableEvents2onfocusEvent; - Fonblur: THTMLTableEvents2onblurEvent; - Fonresize: THTMLTableEvents2onresizeEvent; - Fondrag: THTMLTableEvents2ondragEvent; - Fondragend: THTMLTableEvents2ondragendEvent; - Fondragenter: THTMLTableEvents2ondragenterEvent; - Fondragover: THTMLTableEvents2ondragoverEvent; - Fondragleave: THTMLTableEvents2ondragleaveEvent; - Fondrop: THTMLTableEvents2ondropEvent; - Fonbeforecut: THTMLTableEvents2onbeforecutEvent; - Foncut: THTMLTableEvents2oncutEvent; - Fonbeforecopy: THTMLTableEvents2onbeforecopyEvent; - Foncopy: THTMLTableEvents2oncopyEvent; - Fonbeforepaste: THTMLTableEvents2onbeforepasteEvent; - Fonpaste: THTMLTableEvents2onpasteEvent; - Foncontextmenu: THTMLTableEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLTableEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLTableEvents2onrowsinsertedEvent; - Foncellchange: THTMLTableEvents2oncellchangeEvent; - Fonreadystatechange: THTMLTableEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLTableEvents2onlayoutcompleteEvent; - Fonpage: THTMLTableEvents2onpageEvent; - Fonmouseenter: THTMLTableEvents2onmouseenterEvent; - Fonmouseleave: THTMLTableEvents2onmouseleaveEvent; - Fonactivate: THTMLTableEvents2onactivateEvent; - Fondeactivate: THTMLTableEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLTableEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLTableEvents2onbeforeactivateEvent; - Fonfocusin: THTMLTableEvents2onfocusinEvent; - Fonfocusout: THTMLTableEvents2onfocusoutEvent; - Fonmove: THTMLTableEvents2onmoveEvent; - Foncontrolselect: THTMLTableEvents2oncontrolselectEvent; - Fonmovestart: THTMLTableEvents2onmovestartEvent; - Fonmoveend: THTMLTableEvents2onmoveendEvent; - Fonresizestart: THTMLTableEvents2onresizestartEvent; - Fonresizeend: THTMLTableEvents2onresizeendEvent; - Fonmousewheel: THTMLTableEvents2onmousewheelEvent; - published - //SinkEventsPublished// - property onhelp: THTMLTableEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLTableEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLTableEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLTableEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLTableEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLTableEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLTableEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLTableEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLTableEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLTableEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLTableEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLTableEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLTableEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLTableEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLTableEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLTableEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLTableEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLTableEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLTableEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLTableEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLTableEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLTableEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLTableEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLTableEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLTableEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLTableEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLTableEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLTableEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLTableEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLTableEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLTableEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLTableEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLTableEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLTableEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLTableEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLTableEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLTableEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLTableEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLTableEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLTableEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLTableEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLTableEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLTableEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLTableEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLTableEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLTableEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLTableEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLTableEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLTableEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLTableEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLTableEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLTableEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLTableEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLTableEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLTableEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLTableEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLTableEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLTableEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLTableEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLTableEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLTableEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLTableEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - end; - - - //SinkEventsForwards// - THTMLScriptEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLScriptEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLScriptEventsonerrorEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLScriptEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - procedure Doonerror; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLScriptEventsonhelpEvent; - Fonclick: THTMLScriptEventsonclickEvent; - Fondblclick: THTMLScriptEventsondblclickEvent; - Fonkeypress: THTMLScriptEventsonkeypressEvent; - Fonkeydown: THTMLScriptEventsonkeydownEvent; - Fonkeyup: THTMLScriptEventsonkeyupEvent; - Fonmouseout: THTMLScriptEventsonmouseoutEvent; - Fonmouseover: THTMLScriptEventsonmouseoverEvent; - Fonmousemove: THTMLScriptEventsonmousemoveEvent; - Fonmousedown: THTMLScriptEventsonmousedownEvent; - Fonmouseup: THTMLScriptEventsonmouseupEvent; - Fonselectstart: THTMLScriptEventsonselectstartEvent; - Fonfilterchange: THTMLScriptEventsonfilterchangeEvent; - Fondragstart: THTMLScriptEventsondragstartEvent; - Fonbeforeupdate: THTMLScriptEventsonbeforeupdateEvent; - Fonafterupdate: THTMLScriptEventsonafterupdateEvent; - Fonerrorupdate: THTMLScriptEventsonerrorupdateEvent; - Fonrowexit: THTMLScriptEventsonrowexitEvent; - Fonrowenter: THTMLScriptEventsonrowenterEvent; - Fondatasetchanged: THTMLScriptEventsondatasetchangedEvent; - Fondataavailable: THTMLScriptEventsondataavailableEvent; - Fondatasetcomplete: THTMLScriptEventsondatasetcompleteEvent; - Fonlosecapture: THTMLScriptEventsonlosecaptureEvent; - Fonpropertychange: THTMLScriptEventsonpropertychangeEvent; - Fonscroll: THTMLScriptEventsonscrollEvent; - Fonfocus: THTMLScriptEventsonfocusEvent; - Fonblur: THTMLScriptEventsonblurEvent; - Fonresize: THTMLScriptEventsonresizeEvent; - Fondrag: THTMLScriptEventsondragEvent; - Fondragend: THTMLScriptEventsondragendEvent; - Fondragenter: THTMLScriptEventsondragenterEvent; - Fondragover: THTMLScriptEventsondragoverEvent; - Fondragleave: THTMLScriptEventsondragleaveEvent; - Fondrop: THTMLScriptEventsondropEvent; - Fonbeforecut: THTMLScriptEventsonbeforecutEvent; - Foncut: THTMLScriptEventsoncutEvent; - Fonbeforecopy: THTMLScriptEventsonbeforecopyEvent; - Foncopy: THTMLScriptEventsoncopyEvent; - Fonbeforepaste: THTMLScriptEventsonbeforepasteEvent; - Fonpaste: THTMLScriptEventsonpasteEvent; - Foncontextmenu: THTMLScriptEventsoncontextmenuEvent; - Fonrowsdelete: THTMLScriptEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLScriptEventsonrowsinsertedEvent; - Foncellchange: THTMLScriptEventsoncellchangeEvent; - Fonreadystatechange: THTMLScriptEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLScriptEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLScriptEventsonlayoutcompleteEvent; - Fonpage: THTMLScriptEventsonpageEvent; - Fonbeforedeactivate: THTMLScriptEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLScriptEventsonbeforeactivateEvent; - Fonmove: THTMLScriptEventsonmoveEvent; - Foncontrolselect: THTMLScriptEventsoncontrolselectEvent; - Fonmovestart: THTMLScriptEventsonmovestartEvent; - Fonmoveend: THTMLScriptEventsonmoveendEvent; - Fonresizestart: THTMLScriptEventsonresizestartEvent; - Fonresizeend: THTMLScriptEventsonresizeendEvent; - Fonmouseenter: THTMLScriptEventsonmouseenterEvent; - Fonmouseleave: THTMLScriptEventsonmouseleaveEvent; - Fonmousewheel: THTMLScriptEventsonmousewheelEvent; - Fonactivate: THTMLScriptEventsonactivateEvent; - Fondeactivate: THTMLScriptEventsondeactivateEvent; - Fonfocusin: THTMLScriptEventsonfocusinEvent; - Fonfocusout: THTMLScriptEventsonfocusoutEvent; - Fonerror: THTMLScriptEventsonerrorEvent; - published - //SinkEventsPublished// - property onhelp: THTMLScriptEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLScriptEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLScriptEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLScriptEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLScriptEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLScriptEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLScriptEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLScriptEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLScriptEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLScriptEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLScriptEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLScriptEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLScriptEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLScriptEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLScriptEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLScriptEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLScriptEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLScriptEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLScriptEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLScriptEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLScriptEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLScriptEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLScriptEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLScriptEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLScriptEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLScriptEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLScriptEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLScriptEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLScriptEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLScriptEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLScriptEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLScriptEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLScriptEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLScriptEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLScriptEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLScriptEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLScriptEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLScriptEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLScriptEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLScriptEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLScriptEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLScriptEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLScriptEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLScriptEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLScriptEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLScriptEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLScriptEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLScriptEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLScriptEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLScriptEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLScriptEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLScriptEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLScriptEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLScriptEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLScriptEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLScriptEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLScriptEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLScriptEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLScriptEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLScriptEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLScriptEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLScriptEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLScriptEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onerror: THTMLScriptEventsonerrorEvent read Fonerror write Fonerror; - end; - - - //SinkEventsForwards// - THTMLScriptEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLScriptEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLScriptEvents2onerrorEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLScriptEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonerror(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLScriptEvents2onhelpEvent; - Fonclick: THTMLScriptEvents2onclickEvent; - Fondblclick: THTMLScriptEvents2ondblclickEvent; - Fonkeypress: THTMLScriptEvents2onkeypressEvent; - Fonkeydown: THTMLScriptEvents2onkeydownEvent; - Fonkeyup: THTMLScriptEvents2onkeyupEvent; - Fonmouseout: THTMLScriptEvents2onmouseoutEvent; - Fonmouseover: THTMLScriptEvents2onmouseoverEvent; - Fonmousemove: THTMLScriptEvents2onmousemoveEvent; - Fonmousedown: THTMLScriptEvents2onmousedownEvent; - Fonmouseup: THTMLScriptEvents2onmouseupEvent; - Fonselectstart: THTMLScriptEvents2onselectstartEvent; - Fonfilterchange: THTMLScriptEvents2onfilterchangeEvent; - Fondragstart: THTMLScriptEvents2ondragstartEvent; - Fonbeforeupdate: THTMLScriptEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLScriptEvents2onafterupdateEvent; - Fonerrorupdate: THTMLScriptEvents2onerrorupdateEvent; - Fonrowexit: THTMLScriptEvents2onrowexitEvent; - Fonrowenter: THTMLScriptEvents2onrowenterEvent; - Fondatasetchanged: THTMLScriptEvents2ondatasetchangedEvent; - Fondataavailable: THTMLScriptEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLScriptEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLScriptEvents2onlosecaptureEvent; - Fonpropertychange: THTMLScriptEvents2onpropertychangeEvent; - Fonscroll: THTMLScriptEvents2onscrollEvent; - Fonfocus: THTMLScriptEvents2onfocusEvent; - Fonblur: THTMLScriptEvents2onblurEvent; - Fonresize: THTMLScriptEvents2onresizeEvent; - Fondrag: THTMLScriptEvents2ondragEvent; - Fondragend: THTMLScriptEvents2ondragendEvent; - Fondragenter: THTMLScriptEvents2ondragenterEvent; - Fondragover: THTMLScriptEvents2ondragoverEvent; - Fondragleave: THTMLScriptEvents2ondragleaveEvent; - Fondrop: THTMLScriptEvents2ondropEvent; - Fonbeforecut: THTMLScriptEvents2onbeforecutEvent; - Foncut: THTMLScriptEvents2oncutEvent; - Fonbeforecopy: THTMLScriptEvents2onbeforecopyEvent; - Foncopy: THTMLScriptEvents2oncopyEvent; - Fonbeforepaste: THTMLScriptEvents2onbeforepasteEvent; - Fonpaste: THTMLScriptEvents2onpasteEvent; - Foncontextmenu: THTMLScriptEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLScriptEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLScriptEvents2onrowsinsertedEvent; - Foncellchange: THTMLScriptEvents2oncellchangeEvent; - Fonreadystatechange: THTMLScriptEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLScriptEvents2onlayoutcompleteEvent; - Fonpage: THTMLScriptEvents2onpageEvent; - Fonmouseenter: THTMLScriptEvents2onmouseenterEvent; - Fonmouseleave: THTMLScriptEvents2onmouseleaveEvent; - Fonactivate: THTMLScriptEvents2onactivateEvent; - Fondeactivate: THTMLScriptEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLScriptEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLScriptEvents2onbeforeactivateEvent; - Fonfocusin: THTMLScriptEvents2onfocusinEvent; - Fonfocusout: THTMLScriptEvents2onfocusoutEvent; - Fonmove: THTMLScriptEvents2onmoveEvent; - Foncontrolselect: THTMLScriptEvents2oncontrolselectEvent; - Fonmovestart: THTMLScriptEvents2onmovestartEvent; - Fonmoveend: THTMLScriptEvents2onmoveendEvent; - Fonresizestart: THTMLScriptEvents2onresizestartEvent; - Fonresizeend: THTMLScriptEvents2onresizeendEvent; - Fonmousewheel: THTMLScriptEvents2onmousewheelEvent; - Fonerror: THTMLScriptEvents2onerrorEvent; - published - //SinkEventsPublished// - property onhelp: THTMLScriptEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLScriptEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLScriptEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLScriptEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLScriptEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLScriptEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLScriptEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLScriptEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLScriptEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLScriptEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLScriptEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLScriptEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLScriptEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLScriptEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLScriptEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLScriptEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLScriptEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLScriptEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLScriptEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLScriptEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLScriptEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLScriptEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLScriptEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLScriptEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLScriptEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLScriptEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLScriptEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLScriptEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLScriptEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLScriptEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLScriptEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLScriptEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLScriptEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLScriptEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLScriptEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLScriptEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLScriptEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLScriptEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLScriptEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLScriptEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLScriptEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLScriptEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLScriptEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLScriptEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLScriptEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLScriptEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLScriptEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLScriptEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLScriptEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLScriptEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLScriptEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLScriptEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLScriptEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLScriptEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLScriptEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLScriptEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLScriptEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLScriptEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLScriptEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLScriptEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLScriptEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLScriptEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onerror: THTMLScriptEvents2onerrorEvent read Fonerror write Fonerror; - end; - - - //SinkEventsForwards// - THTMLObjectElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLObjectElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLObjectElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLObjectElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLObjectElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLObjectElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLObjectElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLObjectElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLObjectElementEventsonerrorEvent = function(Sender: TObject): WordBool of object; - THTMLObjectElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLObjectElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLObjectElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLObjectElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLObjectElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - function Doonerror: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - protected - //SinkEventsProtected// - Fonbeforeupdate: THTMLObjectElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLObjectElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLObjectElementEventsonerrorupdateEvent; - Fonrowexit: THTMLObjectElementEventsonrowexitEvent; - Fonrowenter: THTMLObjectElementEventsonrowenterEvent; - Fondatasetchanged: THTMLObjectElementEventsondatasetchangedEvent; - Fondataavailable: THTMLObjectElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLObjectElementEventsondatasetcompleteEvent; - Fonerror: THTMLObjectElementEventsonerrorEvent; - Fonrowsdelete: THTMLObjectElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLObjectElementEventsonrowsinsertedEvent; - Foncellchange: THTMLObjectElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLObjectElementEventsonreadystatechangeEvent; - published - //SinkEventsPublished// - property onbeforeupdate: THTMLObjectElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLObjectElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLObjectElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLObjectElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLObjectElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLObjectElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLObjectElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLObjectElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onerror: THTMLObjectElementEventsonerrorEvent read Fonerror write Fonerror; - property onrowsdelete: THTMLObjectElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLObjectElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLObjectElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLObjectElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - end; - - - //SinkEventsForwards// - THTMLObjectElementEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLObjectElementEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLObjectElementEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLObjectElementEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLObjectElementEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLObjectElementEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLObjectElementEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLObjectElementEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLObjectElementEvents2onerrorEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLObjectElementEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLObjectElementEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLObjectElementEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLObjectElementEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLObjectElementEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - function Doonerror(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonbeforeupdate: THTMLObjectElementEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLObjectElementEvents2onafterupdateEvent; - Fonerrorupdate: THTMLObjectElementEvents2onerrorupdateEvent; - Fonrowexit: THTMLObjectElementEvents2onrowexitEvent; - Fonrowenter: THTMLObjectElementEvents2onrowenterEvent; - Fondatasetchanged: THTMLObjectElementEvents2ondatasetchangedEvent; - Fondataavailable: THTMLObjectElementEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLObjectElementEvents2ondatasetcompleteEvent; - Fonerror: THTMLObjectElementEvents2onerrorEvent; - Fonrowsdelete: THTMLObjectElementEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLObjectElementEvents2onrowsinsertedEvent; - Foncellchange: THTMLObjectElementEvents2oncellchangeEvent; - Fonreadystatechange: THTMLObjectElementEvents2onreadystatechangeEvent; - published - //SinkEventsPublished// - property onbeforeupdate: THTMLObjectElementEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLObjectElementEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLObjectElementEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLObjectElementEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLObjectElementEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLObjectElementEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLObjectElementEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLObjectElementEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onerror: THTMLObjectElementEvents2onerrorEvent read Fonerror write Fonerror; - property onrowsdelete: THTMLObjectElementEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLObjectElementEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLObjectElementEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLObjectElementEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - end; - - - //SinkEventsForwards// - THTMLFrameSiteEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLFrameSiteEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLFrameSiteEventsonloadEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLFrameSiteEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - procedure Doonload; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLFrameSiteEventsonhelpEvent; - Fonclick: THTMLFrameSiteEventsonclickEvent; - Fondblclick: THTMLFrameSiteEventsondblclickEvent; - Fonkeypress: THTMLFrameSiteEventsonkeypressEvent; - Fonkeydown: THTMLFrameSiteEventsonkeydownEvent; - Fonkeyup: THTMLFrameSiteEventsonkeyupEvent; - Fonmouseout: THTMLFrameSiteEventsonmouseoutEvent; - Fonmouseover: THTMLFrameSiteEventsonmouseoverEvent; - Fonmousemove: THTMLFrameSiteEventsonmousemoveEvent; - Fonmousedown: THTMLFrameSiteEventsonmousedownEvent; - Fonmouseup: THTMLFrameSiteEventsonmouseupEvent; - Fonselectstart: THTMLFrameSiteEventsonselectstartEvent; - Fonfilterchange: THTMLFrameSiteEventsonfilterchangeEvent; - Fondragstart: THTMLFrameSiteEventsondragstartEvent; - Fonbeforeupdate: THTMLFrameSiteEventsonbeforeupdateEvent; - Fonafterupdate: THTMLFrameSiteEventsonafterupdateEvent; - Fonerrorupdate: THTMLFrameSiteEventsonerrorupdateEvent; - Fonrowexit: THTMLFrameSiteEventsonrowexitEvent; - Fonrowenter: THTMLFrameSiteEventsonrowenterEvent; - Fondatasetchanged: THTMLFrameSiteEventsondatasetchangedEvent; - Fondataavailable: THTMLFrameSiteEventsondataavailableEvent; - Fondatasetcomplete: THTMLFrameSiteEventsondatasetcompleteEvent; - Fonlosecapture: THTMLFrameSiteEventsonlosecaptureEvent; - Fonpropertychange: THTMLFrameSiteEventsonpropertychangeEvent; - Fonscroll: THTMLFrameSiteEventsonscrollEvent; - Fonfocus: THTMLFrameSiteEventsonfocusEvent; - Fonblur: THTMLFrameSiteEventsonblurEvent; - Fonresize: THTMLFrameSiteEventsonresizeEvent; - Fondrag: THTMLFrameSiteEventsondragEvent; - Fondragend: THTMLFrameSiteEventsondragendEvent; - Fondragenter: THTMLFrameSiteEventsondragenterEvent; - Fondragover: THTMLFrameSiteEventsondragoverEvent; - Fondragleave: THTMLFrameSiteEventsondragleaveEvent; - Fondrop: THTMLFrameSiteEventsondropEvent; - Fonbeforecut: THTMLFrameSiteEventsonbeforecutEvent; - Foncut: THTMLFrameSiteEventsoncutEvent; - Fonbeforecopy: THTMLFrameSiteEventsonbeforecopyEvent; - Foncopy: THTMLFrameSiteEventsoncopyEvent; - Fonbeforepaste: THTMLFrameSiteEventsonbeforepasteEvent; - Fonpaste: THTMLFrameSiteEventsonpasteEvent; - Foncontextmenu: THTMLFrameSiteEventsoncontextmenuEvent; - Fonrowsdelete: THTMLFrameSiteEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLFrameSiteEventsonrowsinsertedEvent; - Foncellchange: THTMLFrameSiteEventsoncellchangeEvent; - Fonreadystatechange: THTMLFrameSiteEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLFrameSiteEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLFrameSiteEventsonlayoutcompleteEvent; - Fonpage: THTMLFrameSiteEventsonpageEvent; - Fonbeforedeactivate: THTMLFrameSiteEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLFrameSiteEventsonbeforeactivateEvent; - Fonmove: THTMLFrameSiteEventsonmoveEvent; - Foncontrolselect: THTMLFrameSiteEventsoncontrolselectEvent; - Fonmovestart: THTMLFrameSiteEventsonmovestartEvent; - Fonmoveend: THTMLFrameSiteEventsonmoveendEvent; - Fonresizestart: THTMLFrameSiteEventsonresizestartEvent; - Fonresizeend: THTMLFrameSiteEventsonresizeendEvent; - Fonmouseenter: THTMLFrameSiteEventsonmouseenterEvent; - Fonmouseleave: THTMLFrameSiteEventsonmouseleaveEvent; - Fonmousewheel: THTMLFrameSiteEventsonmousewheelEvent; - Fonactivate: THTMLFrameSiteEventsonactivateEvent; - Fondeactivate: THTMLFrameSiteEventsondeactivateEvent; - Fonfocusin: THTMLFrameSiteEventsonfocusinEvent; - Fonfocusout: THTMLFrameSiteEventsonfocusoutEvent; - Fonload: THTMLFrameSiteEventsonloadEvent; - published - //SinkEventsPublished// - property onhelp: THTMLFrameSiteEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLFrameSiteEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLFrameSiteEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLFrameSiteEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLFrameSiteEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLFrameSiteEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLFrameSiteEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLFrameSiteEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLFrameSiteEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLFrameSiteEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLFrameSiteEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLFrameSiteEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLFrameSiteEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLFrameSiteEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLFrameSiteEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLFrameSiteEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLFrameSiteEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLFrameSiteEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLFrameSiteEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLFrameSiteEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLFrameSiteEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLFrameSiteEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLFrameSiteEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLFrameSiteEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLFrameSiteEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLFrameSiteEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLFrameSiteEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLFrameSiteEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLFrameSiteEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLFrameSiteEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLFrameSiteEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLFrameSiteEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLFrameSiteEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLFrameSiteEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLFrameSiteEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLFrameSiteEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLFrameSiteEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLFrameSiteEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLFrameSiteEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLFrameSiteEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLFrameSiteEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLFrameSiteEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLFrameSiteEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLFrameSiteEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLFrameSiteEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLFrameSiteEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLFrameSiteEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLFrameSiteEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLFrameSiteEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLFrameSiteEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLFrameSiteEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLFrameSiteEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLFrameSiteEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLFrameSiteEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLFrameSiteEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLFrameSiteEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLFrameSiteEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLFrameSiteEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLFrameSiteEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLFrameSiteEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLFrameSiteEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLFrameSiteEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLFrameSiteEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onload: THTMLFrameSiteEventsonloadEvent read Fonload write Fonload; - end; - - - //SinkEventsForwards// - THTMLFrameSiteEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLFrameSiteEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLFrameSiteEvents2onloadEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLFrameSiteEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonload(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLFrameSiteEvents2onhelpEvent; - Fonclick: THTMLFrameSiteEvents2onclickEvent; - Fondblclick: THTMLFrameSiteEvents2ondblclickEvent; - Fonkeypress: THTMLFrameSiteEvents2onkeypressEvent; - Fonkeydown: THTMLFrameSiteEvents2onkeydownEvent; - Fonkeyup: THTMLFrameSiteEvents2onkeyupEvent; - Fonmouseout: THTMLFrameSiteEvents2onmouseoutEvent; - Fonmouseover: THTMLFrameSiteEvents2onmouseoverEvent; - Fonmousemove: THTMLFrameSiteEvents2onmousemoveEvent; - Fonmousedown: THTMLFrameSiteEvents2onmousedownEvent; - Fonmouseup: THTMLFrameSiteEvents2onmouseupEvent; - Fonselectstart: THTMLFrameSiteEvents2onselectstartEvent; - Fonfilterchange: THTMLFrameSiteEvents2onfilterchangeEvent; - Fondragstart: THTMLFrameSiteEvents2ondragstartEvent; - Fonbeforeupdate: THTMLFrameSiteEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLFrameSiteEvents2onafterupdateEvent; - Fonerrorupdate: THTMLFrameSiteEvents2onerrorupdateEvent; - Fonrowexit: THTMLFrameSiteEvents2onrowexitEvent; - Fonrowenter: THTMLFrameSiteEvents2onrowenterEvent; - Fondatasetchanged: THTMLFrameSiteEvents2ondatasetchangedEvent; - Fondataavailable: THTMLFrameSiteEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLFrameSiteEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLFrameSiteEvents2onlosecaptureEvent; - Fonpropertychange: THTMLFrameSiteEvents2onpropertychangeEvent; - Fonscroll: THTMLFrameSiteEvents2onscrollEvent; - Fonfocus: THTMLFrameSiteEvents2onfocusEvent; - Fonblur: THTMLFrameSiteEvents2onblurEvent; - Fonresize: THTMLFrameSiteEvents2onresizeEvent; - Fondrag: THTMLFrameSiteEvents2ondragEvent; - Fondragend: THTMLFrameSiteEvents2ondragendEvent; - Fondragenter: THTMLFrameSiteEvents2ondragenterEvent; - Fondragover: THTMLFrameSiteEvents2ondragoverEvent; - Fondragleave: THTMLFrameSiteEvents2ondragleaveEvent; - Fondrop: THTMLFrameSiteEvents2ondropEvent; - Fonbeforecut: THTMLFrameSiteEvents2onbeforecutEvent; - Foncut: THTMLFrameSiteEvents2oncutEvent; - Fonbeforecopy: THTMLFrameSiteEvents2onbeforecopyEvent; - Foncopy: THTMLFrameSiteEvents2oncopyEvent; - Fonbeforepaste: THTMLFrameSiteEvents2onbeforepasteEvent; - Fonpaste: THTMLFrameSiteEvents2onpasteEvent; - Foncontextmenu: THTMLFrameSiteEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLFrameSiteEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLFrameSiteEvents2onrowsinsertedEvent; - Foncellchange: THTMLFrameSiteEvents2oncellchangeEvent; - Fonreadystatechange: THTMLFrameSiteEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLFrameSiteEvents2onlayoutcompleteEvent; - Fonpage: THTMLFrameSiteEvents2onpageEvent; - Fonmouseenter: THTMLFrameSiteEvents2onmouseenterEvent; - Fonmouseleave: THTMLFrameSiteEvents2onmouseleaveEvent; - Fonactivate: THTMLFrameSiteEvents2onactivateEvent; - Fondeactivate: THTMLFrameSiteEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLFrameSiteEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLFrameSiteEvents2onbeforeactivateEvent; - Fonfocusin: THTMLFrameSiteEvents2onfocusinEvent; - Fonfocusout: THTMLFrameSiteEvents2onfocusoutEvent; - Fonmove: THTMLFrameSiteEvents2onmoveEvent; - Foncontrolselect: THTMLFrameSiteEvents2oncontrolselectEvent; - Fonmovestart: THTMLFrameSiteEvents2onmovestartEvent; - Fonmoveend: THTMLFrameSiteEvents2onmoveendEvent; - Fonresizestart: THTMLFrameSiteEvents2onresizestartEvent; - Fonresizeend: THTMLFrameSiteEvents2onresizeendEvent; - Fonmousewheel: THTMLFrameSiteEvents2onmousewheelEvent; - Fonload: THTMLFrameSiteEvents2onloadEvent; - published - //SinkEventsPublished// - property onhelp: THTMLFrameSiteEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLFrameSiteEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLFrameSiteEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLFrameSiteEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLFrameSiteEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLFrameSiteEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLFrameSiteEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLFrameSiteEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLFrameSiteEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLFrameSiteEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLFrameSiteEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLFrameSiteEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLFrameSiteEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLFrameSiteEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLFrameSiteEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLFrameSiteEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLFrameSiteEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLFrameSiteEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLFrameSiteEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLFrameSiteEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLFrameSiteEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLFrameSiteEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLFrameSiteEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLFrameSiteEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLFrameSiteEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLFrameSiteEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLFrameSiteEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLFrameSiteEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLFrameSiteEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLFrameSiteEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLFrameSiteEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLFrameSiteEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLFrameSiteEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLFrameSiteEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLFrameSiteEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLFrameSiteEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLFrameSiteEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLFrameSiteEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLFrameSiteEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLFrameSiteEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLFrameSiteEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLFrameSiteEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLFrameSiteEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLFrameSiteEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLFrameSiteEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLFrameSiteEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLFrameSiteEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLFrameSiteEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLFrameSiteEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLFrameSiteEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLFrameSiteEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLFrameSiteEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLFrameSiteEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLFrameSiteEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLFrameSiteEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLFrameSiteEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLFrameSiteEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLFrameSiteEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLFrameSiteEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLFrameSiteEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLFrameSiteEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLFrameSiteEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onload: THTMLFrameSiteEvents2onloadEvent read Fonload write Fonload; - end; - - - //SinkEventsForwards// - THTMLStyleElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLStyleElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonloadEvent = procedure(Sender: TObject) of object; - THTMLStyleElementEventsonerrorEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLStyleElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - procedure Doonload; safecall; - procedure Doonerror; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLStyleElementEventsonhelpEvent; - Fonclick: THTMLStyleElementEventsonclickEvent; - Fondblclick: THTMLStyleElementEventsondblclickEvent; - Fonkeypress: THTMLStyleElementEventsonkeypressEvent; - Fonkeydown: THTMLStyleElementEventsonkeydownEvent; - Fonkeyup: THTMLStyleElementEventsonkeyupEvent; - Fonmouseout: THTMLStyleElementEventsonmouseoutEvent; - Fonmouseover: THTMLStyleElementEventsonmouseoverEvent; - Fonmousemove: THTMLStyleElementEventsonmousemoveEvent; - Fonmousedown: THTMLStyleElementEventsonmousedownEvent; - Fonmouseup: THTMLStyleElementEventsonmouseupEvent; - Fonselectstart: THTMLStyleElementEventsonselectstartEvent; - Fonfilterchange: THTMLStyleElementEventsonfilterchangeEvent; - Fondragstart: THTMLStyleElementEventsondragstartEvent; - Fonbeforeupdate: THTMLStyleElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLStyleElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLStyleElementEventsonerrorupdateEvent; - Fonrowexit: THTMLStyleElementEventsonrowexitEvent; - Fonrowenter: THTMLStyleElementEventsonrowenterEvent; - Fondatasetchanged: THTMLStyleElementEventsondatasetchangedEvent; - Fondataavailable: THTMLStyleElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLStyleElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLStyleElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLStyleElementEventsonpropertychangeEvent; - Fonscroll: THTMLStyleElementEventsonscrollEvent; - Fonfocus: THTMLStyleElementEventsonfocusEvent; - Fonblur: THTMLStyleElementEventsonblurEvent; - Fonresize: THTMLStyleElementEventsonresizeEvent; - Fondrag: THTMLStyleElementEventsondragEvent; - Fondragend: THTMLStyleElementEventsondragendEvent; - Fondragenter: THTMLStyleElementEventsondragenterEvent; - Fondragover: THTMLStyleElementEventsondragoverEvent; - Fondragleave: THTMLStyleElementEventsondragleaveEvent; - Fondrop: THTMLStyleElementEventsondropEvent; - Fonbeforecut: THTMLStyleElementEventsonbeforecutEvent; - Foncut: THTMLStyleElementEventsoncutEvent; - Fonbeforecopy: THTMLStyleElementEventsonbeforecopyEvent; - Foncopy: THTMLStyleElementEventsoncopyEvent; - Fonbeforepaste: THTMLStyleElementEventsonbeforepasteEvent; - Fonpaste: THTMLStyleElementEventsonpasteEvent; - Foncontextmenu: THTMLStyleElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLStyleElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLStyleElementEventsonrowsinsertedEvent; - Foncellchange: THTMLStyleElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLStyleElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLStyleElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLStyleElementEventsonlayoutcompleteEvent; - Fonpage: THTMLStyleElementEventsonpageEvent; - Fonbeforedeactivate: THTMLStyleElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLStyleElementEventsonbeforeactivateEvent; - Fonmove: THTMLStyleElementEventsonmoveEvent; - Foncontrolselect: THTMLStyleElementEventsoncontrolselectEvent; - Fonmovestart: THTMLStyleElementEventsonmovestartEvent; - Fonmoveend: THTMLStyleElementEventsonmoveendEvent; - Fonresizestart: THTMLStyleElementEventsonresizestartEvent; - Fonresizeend: THTMLStyleElementEventsonresizeendEvent; - Fonmouseenter: THTMLStyleElementEventsonmouseenterEvent; - Fonmouseleave: THTMLStyleElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLStyleElementEventsonmousewheelEvent; - Fonactivate: THTMLStyleElementEventsonactivateEvent; - Fondeactivate: THTMLStyleElementEventsondeactivateEvent; - Fonfocusin: THTMLStyleElementEventsonfocusinEvent; - Fonfocusout: THTMLStyleElementEventsonfocusoutEvent; - Fonload: THTMLStyleElementEventsonloadEvent; - Fonerror: THTMLStyleElementEventsonerrorEvent; - published - //SinkEventsPublished// - property onhelp: THTMLStyleElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLStyleElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLStyleElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLStyleElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLStyleElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLStyleElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLStyleElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLStyleElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLStyleElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLStyleElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLStyleElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLStyleElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLStyleElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLStyleElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLStyleElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLStyleElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLStyleElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLStyleElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLStyleElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLStyleElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLStyleElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLStyleElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLStyleElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLStyleElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLStyleElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLStyleElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLStyleElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLStyleElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLStyleElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLStyleElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLStyleElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLStyleElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLStyleElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLStyleElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLStyleElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLStyleElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLStyleElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLStyleElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLStyleElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLStyleElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLStyleElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLStyleElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLStyleElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLStyleElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLStyleElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLStyleElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLStyleElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLStyleElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLStyleElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLStyleElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLStyleElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLStyleElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLStyleElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLStyleElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLStyleElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLStyleElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLStyleElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLStyleElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLStyleElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLStyleElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLStyleElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLStyleElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLStyleElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onload: THTMLStyleElementEventsonloadEvent read Fonload write Fonload; - property onerror: THTMLStyleElementEventsonerrorEvent read Fonerror write Fonerror; - end; - - - //SinkEventsForwards// - THTMLStyleElementEvents2onhelpEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2ondblclickEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onkeypressEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onkeydownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onkeyupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onmouseoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onmouseoverEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onmousemoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onmousedownEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onmouseupEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onselectstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onfilterchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2ondragstartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onbeforeupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onafterupdateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onerrorupdateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onrowexitEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onrowenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2ondatasetchangedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2ondataavailableEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2ondatasetcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onlosecaptureEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onpropertychangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onscrollEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onfocusEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onblurEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onresizeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2ondragEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2ondragendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2ondragenterEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2ondragoverEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2ondragleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2ondropEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onbeforecutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2oncutEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onbeforecopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2oncopyEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onbeforepasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onpasteEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2oncontextmenuEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onrowsdeleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onrowsinsertedEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2oncellchangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onlayoutcompleteEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onpageEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onmouseenterEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onmouseleaveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2ondeactivateEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onbeforedeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onbeforeactivateEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onfocusinEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onfocusoutEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onmoveEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2oncontrolselectEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onmovestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onmoveendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onresizestartEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onresizeendEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onmousewheelEvent = function(Sender: TObject; const pEvtObj: IHTMLEventObj): WordBool of object; - THTMLStyleElementEvents2onloadEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - THTMLStyleElementEvents2onerrorEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLStyleElementEvents2 = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonkeydown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonkeyup(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseover(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousemove(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmousedown(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseup(const pEvtObj: IHTMLEventObj); safecall; - function Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfilterchange(const pEvtObj: IHTMLEventObj); safecall; - function Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonafterupdate(const pEvtObj: IHTMLEventObj); safecall; - function Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetchanged(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondataavailable(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondatasetcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlosecapture(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpropertychange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonscroll(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocus(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonblur(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonresize(const pEvtObj: IHTMLEventObj); safecall; - function Doondrag(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragend(const pEvtObj: IHTMLEventObj); safecall; - function Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doondragover(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doondragleave(const pEvtObj: IHTMLEventObj); safecall; - function Doondrop(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncut(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonrowsdelete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonrowsinserted(const pEvtObj: IHTMLEventObj); safecall; - procedure Dooncellchange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonpage(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseenter(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmouseleave(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonactivate(const pEvtObj: IHTMLEventObj); safecall; - procedure Doondeactivate(const pEvtObj: IHTMLEventObj); safecall; - function Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonfocusin(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonfocusout(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonmove(const pEvtObj: IHTMLEventObj); safecall; - function Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; safecall; - function Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonmoveend(const pEvtObj: IHTMLEventObj); safecall; - function Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonresizeend(const pEvtObj: IHTMLEventObj); safecall; - function Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; safecall; - procedure Doonload(const pEvtObj: IHTMLEventObj); safecall; - procedure Doonerror(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLStyleElementEvents2onhelpEvent; - Fonclick: THTMLStyleElementEvents2onclickEvent; - Fondblclick: THTMLStyleElementEvents2ondblclickEvent; - Fonkeypress: THTMLStyleElementEvents2onkeypressEvent; - Fonkeydown: THTMLStyleElementEvents2onkeydownEvent; - Fonkeyup: THTMLStyleElementEvents2onkeyupEvent; - Fonmouseout: THTMLStyleElementEvents2onmouseoutEvent; - Fonmouseover: THTMLStyleElementEvents2onmouseoverEvent; - Fonmousemove: THTMLStyleElementEvents2onmousemoveEvent; - Fonmousedown: THTMLStyleElementEvents2onmousedownEvent; - Fonmouseup: THTMLStyleElementEvents2onmouseupEvent; - Fonselectstart: THTMLStyleElementEvents2onselectstartEvent; - Fonfilterchange: THTMLStyleElementEvents2onfilterchangeEvent; - Fondragstart: THTMLStyleElementEvents2ondragstartEvent; - Fonbeforeupdate: THTMLStyleElementEvents2onbeforeupdateEvent; - Fonafterupdate: THTMLStyleElementEvents2onafterupdateEvent; - Fonerrorupdate: THTMLStyleElementEvents2onerrorupdateEvent; - Fonrowexit: THTMLStyleElementEvents2onrowexitEvent; - Fonrowenter: THTMLStyleElementEvents2onrowenterEvent; - Fondatasetchanged: THTMLStyleElementEvents2ondatasetchangedEvent; - Fondataavailable: THTMLStyleElementEvents2ondataavailableEvent; - Fondatasetcomplete: THTMLStyleElementEvents2ondatasetcompleteEvent; - Fonlosecapture: THTMLStyleElementEvents2onlosecaptureEvent; - Fonpropertychange: THTMLStyleElementEvents2onpropertychangeEvent; - Fonscroll: THTMLStyleElementEvents2onscrollEvent; - Fonfocus: THTMLStyleElementEvents2onfocusEvent; - Fonblur: THTMLStyleElementEvents2onblurEvent; - Fonresize: THTMLStyleElementEvents2onresizeEvent; - Fondrag: THTMLStyleElementEvents2ondragEvent; - Fondragend: THTMLStyleElementEvents2ondragendEvent; - Fondragenter: THTMLStyleElementEvents2ondragenterEvent; - Fondragover: THTMLStyleElementEvents2ondragoverEvent; - Fondragleave: THTMLStyleElementEvents2ondragleaveEvent; - Fondrop: THTMLStyleElementEvents2ondropEvent; - Fonbeforecut: THTMLStyleElementEvents2onbeforecutEvent; - Foncut: THTMLStyleElementEvents2oncutEvent; - Fonbeforecopy: THTMLStyleElementEvents2onbeforecopyEvent; - Foncopy: THTMLStyleElementEvents2oncopyEvent; - Fonbeforepaste: THTMLStyleElementEvents2onbeforepasteEvent; - Fonpaste: THTMLStyleElementEvents2onpasteEvent; - Foncontextmenu: THTMLStyleElementEvents2oncontextmenuEvent; - Fonrowsdelete: THTMLStyleElementEvents2onrowsdeleteEvent; - Fonrowsinserted: THTMLStyleElementEvents2onrowsinsertedEvent; - Foncellchange: THTMLStyleElementEvents2oncellchangeEvent; - Fonreadystatechange: THTMLStyleElementEvents2onreadystatechangeEvent; - Fonlayoutcomplete: THTMLStyleElementEvents2onlayoutcompleteEvent; - Fonpage: THTMLStyleElementEvents2onpageEvent; - Fonmouseenter: THTMLStyleElementEvents2onmouseenterEvent; - Fonmouseleave: THTMLStyleElementEvents2onmouseleaveEvent; - Fonactivate: THTMLStyleElementEvents2onactivateEvent; - Fondeactivate: THTMLStyleElementEvents2ondeactivateEvent; - Fonbeforedeactivate: THTMLStyleElementEvents2onbeforedeactivateEvent; - Fonbeforeactivate: THTMLStyleElementEvents2onbeforeactivateEvent; - Fonfocusin: THTMLStyleElementEvents2onfocusinEvent; - Fonfocusout: THTMLStyleElementEvents2onfocusoutEvent; - Fonmove: THTMLStyleElementEvents2onmoveEvent; - Foncontrolselect: THTMLStyleElementEvents2oncontrolselectEvent; - Fonmovestart: THTMLStyleElementEvents2onmovestartEvent; - Fonmoveend: THTMLStyleElementEvents2onmoveendEvent; - Fonresizestart: THTMLStyleElementEvents2onresizestartEvent; - Fonresizeend: THTMLStyleElementEvents2onresizeendEvent; - Fonmousewheel: THTMLStyleElementEvents2onmousewheelEvent; - Fonload: THTMLStyleElementEvents2onloadEvent; - Fonerror: THTMLStyleElementEvents2onerrorEvent; - published - //SinkEventsPublished// - property onhelp: THTMLStyleElementEvents2onhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLStyleElementEvents2onclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLStyleElementEvents2ondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLStyleElementEvents2onkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLStyleElementEvents2onkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLStyleElementEvents2onkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLStyleElementEvents2onmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLStyleElementEvents2onmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLStyleElementEvents2onmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLStyleElementEvents2onmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLStyleElementEvents2onmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLStyleElementEvents2onselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLStyleElementEvents2onfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLStyleElementEvents2ondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLStyleElementEvents2onbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLStyleElementEvents2onafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLStyleElementEvents2onerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLStyleElementEvents2onrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLStyleElementEvents2onrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLStyleElementEvents2ondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLStyleElementEvents2ondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLStyleElementEvents2ondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLStyleElementEvents2onlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLStyleElementEvents2onpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLStyleElementEvents2onscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLStyleElementEvents2onfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLStyleElementEvents2onblurEvent read Fonblur write Fonblur; - property onresize: THTMLStyleElementEvents2onresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLStyleElementEvents2ondragEvent read Fondrag write Fondrag; - property ondragend: THTMLStyleElementEvents2ondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLStyleElementEvents2ondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLStyleElementEvents2ondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLStyleElementEvents2ondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLStyleElementEvents2ondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLStyleElementEvents2onbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLStyleElementEvents2oncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLStyleElementEvents2onbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLStyleElementEvents2oncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLStyleElementEvents2onbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLStyleElementEvents2onpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLStyleElementEvents2oncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLStyleElementEvents2onrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLStyleElementEvents2onrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLStyleElementEvents2oncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLStyleElementEvents2onreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onlayoutcomplete: THTMLStyleElementEvents2onlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLStyleElementEvents2onpageEvent read Fonpage write Fonpage; - property onmouseenter: THTMLStyleElementEvents2onmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLStyleElementEvents2onmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onactivate: THTMLStyleElementEvents2onactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLStyleElementEvents2ondeactivateEvent read Fondeactivate write Fondeactivate; - property onbeforedeactivate: THTMLStyleElementEvents2onbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLStyleElementEvents2onbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onfocusin: THTMLStyleElementEvents2onfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLStyleElementEvents2onfocusoutEvent read Fonfocusout write Fonfocusout; - property onmove: THTMLStyleElementEvents2onmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLStyleElementEvents2oncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLStyleElementEvents2onmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLStyleElementEvents2onmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLStyleElementEvents2onresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLStyleElementEvents2onresizeendEvent read Fonresizeend write Fonresizeend; - property onmousewheel: THTMLStyleElementEvents2onmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onload: THTMLStyleElementEvents2onloadEvent read Fonload write Fonload; - property onerror: THTMLStyleElementEvents2onerrorEvent read Fonerror write Fonerror; - end; - - - //SinkEventsForwards// - THTMLNamespaceEventsonreadystatechangeEvent = procedure(Sender: TObject; const pEvtObj: IHTMLEventObj) of object; - - //SinkComponent// - TMSHTMLHTMLNamespaceEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - procedure Doonreadystatechange(const pEvtObj: IHTMLEventObj); safecall; - protected - //SinkEventsProtected// - Fonreadystatechange: THTMLNamespaceEventsonreadystatechangeEvent; - published - //SinkEventsPublished// - property onreadystatechange: THTMLNamespaceEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - end; - - - //SinkEventsForwards// - THTMLInputFileElementEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonchangeEvent = function(Sender: TObject): WordBool of object; - THTMLInputFileElementEventsonselectEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonloadEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonerrorEvent = procedure(Sender: TObject) of object; - THTMLInputFileElementEventsonabortEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLInputFileElementEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - function Doonchange: WordBool; safecall; - procedure Doonselect; safecall; - procedure Doonload; safecall; - procedure Doonerror; safecall; - procedure Doonabort; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLInputFileElementEventsonhelpEvent; - Fonclick: THTMLInputFileElementEventsonclickEvent; - Fondblclick: THTMLInputFileElementEventsondblclickEvent; - Fonkeypress: THTMLInputFileElementEventsonkeypressEvent; - Fonkeydown: THTMLInputFileElementEventsonkeydownEvent; - Fonkeyup: THTMLInputFileElementEventsonkeyupEvent; - Fonmouseout: THTMLInputFileElementEventsonmouseoutEvent; - Fonmouseover: THTMLInputFileElementEventsonmouseoverEvent; - Fonmousemove: THTMLInputFileElementEventsonmousemoveEvent; - Fonmousedown: THTMLInputFileElementEventsonmousedownEvent; - Fonmouseup: THTMLInputFileElementEventsonmouseupEvent; - Fonselectstart: THTMLInputFileElementEventsonselectstartEvent; - Fonfilterchange: THTMLInputFileElementEventsonfilterchangeEvent; - Fondragstart: THTMLInputFileElementEventsondragstartEvent; - Fonbeforeupdate: THTMLInputFileElementEventsonbeforeupdateEvent; - Fonafterupdate: THTMLInputFileElementEventsonafterupdateEvent; - Fonerrorupdate: THTMLInputFileElementEventsonerrorupdateEvent; - Fonrowexit: THTMLInputFileElementEventsonrowexitEvent; - Fonrowenter: THTMLInputFileElementEventsonrowenterEvent; - Fondatasetchanged: THTMLInputFileElementEventsondatasetchangedEvent; - Fondataavailable: THTMLInputFileElementEventsondataavailableEvent; - Fondatasetcomplete: THTMLInputFileElementEventsondatasetcompleteEvent; - Fonlosecapture: THTMLInputFileElementEventsonlosecaptureEvent; - Fonpropertychange: THTMLInputFileElementEventsonpropertychangeEvent; - Fonscroll: THTMLInputFileElementEventsonscrollEvent; - Fonfocus: THTMLInputFileElementEventsonfocusEvent; - Fonblur: THTMLInputFileElementEventsonblurEvent; - Fonresize: THTMLInputFileElementEventsonresizeEvent; - Fondrag: THTMLInputFileElementEventsondragEvent; - Fondragend: THTMLInputFileElementEventsondragendEvent; - Fondragenter: THTMLInputFileElementEventsondragenterEvent; - Fondragover: THTMLInputFileElementEventsondragoverEvent; - Fondragleave: THTMLInputFileElementEventsondragleaveEvent; - Fondrop: THTMLInputFileElementEventsondropEvent; - Fonbeforecut: THTMLInputFileElementEventsonbeforecutEvent; - Foncut: THTMLInputFileElementEventsoncutEvent; - Fonbeforecopy: THTMLInputFileElementEventsonbeforecopyEvent; - Foncopy: THTMLInputFileElementEventsoncopyEvent; - Fonbeforepaste: THTMLInputFileElementEventsonbeforepasteEvent; - Fonpaste: THTMLInputFileElementEventsonpasteEvent; - Foncontextmenu: THTMLInputFileElementEventsoncontextmenuEvent; - Fonrowsdelete: THTMLInputFileElementEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLInputFileElementEventsonrowsinsertedEvent; - Foncellchange: THTMLInputFileElementEventsoncellchangeEvent; - Fonreadystatechange: THTMLInputFileElementEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLInputFileElementEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLInputFileElementEventsonlayoutcompleteEvent; - Fonpage: THTMLInputFileElementEventsonpageEvent; - Fonbeforedeactivate: THTMLInputFileElementEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLInputFileElementEventsonbeforeactivateEvent; - Fonmove: THTMLInputFileElementEventsonmoveEvent; - Foncontrolselect: THTMLInputFileElementEventsoncontrolselectEvent; - Fonmovestart: THTMLInputFileElementEventsonmovestartEvent; - Fonmoveend: THTMLInputFileElementEventsonmoveendEvent; - Fonresizestart: THTMLInputFileElementEventsonresizestartEvent; - Fonresizeend: THTMLInputFileElementEventsonresizeendEvent; - Fonmouseenter: THTMLInputFileElementEventsonmouseenterEvent; - Fonmouseleave: THTMLInputFileElementEventsonmouseleaveEvent; - Fonmousewheel: THTMLInputFileElementEventsonmousewheelEvent; - Fonactivate: THTMLInputFileElementEventsonactivateEvent; - Fondeactivate: THTMLInputFileElementEventsondeactivateEvent; - Fonfocusin: THTMLInputFileElementEventsonfocusinEvent; - Fonfocusout: THTMLInputFileElementEventsonfocusoutEvent; - Fonchange: THTMLInputFileElementEventsonchangeEvent; - Fonselect: THTMLInputFileElementEventsonselectEvent; - Fonload: THTMLInputFileElementEventsonloadEvent; - Fonerror: THTMLInputFileElementEventsonerrorEvent; - Fonabort: THTMLInputFileElementEventsonabortEvent; - published - //SinkEventsPublished// - property onhelp: THTMLInputFileElementEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLInputFileElementEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLInputFileElementEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLInputFileElementEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLInputFileElementEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLInputFileElementEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLInputFileElementEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLInputFileElementEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLInputFileElementEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLInputFileElementEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLInputFileElementEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLInputFileElementEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLInputFileElementEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLInputFileElementEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLInputFileElementEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLInputFileElementEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLInputFileElementEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLInputFileElementEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLInputFileElementEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLInputFileElementEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLInputFileElementEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLInputFileElementEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLInputFileElementEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLInputFileElementEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLInputFileElementEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLInputFileElementEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLInputFileElementEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLInputFileElementEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLInputFileElementEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLInputFileElementEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLInputFileElementEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLInputFileElementEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLInputFileElementEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLInputFileElementEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLInputFileElementEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLInputFileElementEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLInputFileElementEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLInputFileElementEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLInputFileElementEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLInputFileElementEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLInputFileElementEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLInputFileElementEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLInputFileElementEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLInputFileElementEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLInputFileElementEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLInputFileElementEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLInputFileElementEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLInputFileElementEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLInputFileElementEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLInputFileElementEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLInputFileElementEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLInputFileElementEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLInputFileElementEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLInputFileElementEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLInputFileElementEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLInputFileElementEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLInputFileElementEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLInputFileElementEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLInputFileElementEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLInputFileElementEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLInputFileElementEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLInputFileElementEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLInputFileElementEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onchange: THTMLInputFileElementEventsonchangeEvent read Fonchange write Fonchange; - property onselect: THTMLInputFileElementEventsonselectEvent read Fonselect write Fonselect; - property onload: THTMLInputFileElementEventsonloadEvent read Fonload write Fonload; - property onerror: THTMLInputFileElementEventsonerrorEvent read Fonerror write Fonerror; - property onabort: THTMLInputFileElementEventsonabortEvent read Fonabort write Fonabort; - end; - - - //SinkEventsForwards// - THTMLInputImageEventsonhelpEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonclickEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsondblclickEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonkeypressEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonkeydownEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonkeyupEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonmouseoutEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonmouseoverEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonmousemoveEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonmousedownEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonmouseupEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonselectstartEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonfilterchangeEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsondragstartEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonbeforeupdateEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonafterupdateEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonerrorupdateEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonrowexitEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonrowenterEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsondatasetchangedEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsondataavailableEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsondatasetcompleteEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonlosecaptureEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonpropertychangeEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonscrollEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonfocusEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonblurEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonresizeEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsondragEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsondragendEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsondragenterEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsondragoverEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsondragleaveEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsondropEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonbeforecutEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsoncutEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonbeforecopyEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsoncopyEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonbeforepasteEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonpasteEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsoncontextmenuEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonrowsdeleteEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonrowsinsertedEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsoncellchangeEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonreadystatechangeEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonbeforeeditfocusEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonlayoutcompleteEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonpageEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonbeforedeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonbeforeactivateEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonmoveEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsoncontrolselectEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonmovestartEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonmoveendEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonresizestartEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonresizeendEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonmouseenterEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonmouseleaveEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonmousewheelEvent = function(Sender: TObject): WordBool of object; - THTMLInputImageEventsonactivateEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsondeactivateEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonfocusinEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonfocusoutEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonloadEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonerrorEvent = procedure(Sender: TObject) of object; - THTMLInputImageEventsonabortEvent = procedure(Sender: TObject) of object; - - //SinkComponent// - TMSHTMLHTMLInputImageEvents = class(TMSHTMLEventsBaseSink - //ISinkInterface// - ) - protected - function DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; override; - - //ISinkInterfaceMethods// - public - { system methods } - constructor Create(AOwner: TComponent); override; - protected - //SinkInterface// - function Doonhelp: WordBool; safecall; - function Doonclick: WordBool; safecall; - function Doondblclick: WordBool; safecall; - function Doonkeypress: WordBool; safecall; - procedure Doonkeydown; safecall; - procedure Doonkeyup; safecall; - procedure Doonmouseout; safecall; - procedure Doonmouseover; safecall; - procedure Doonmousemove; safecall; - procedure Doonmousedown; safecall; - procedure Doonmouseup; safecall; - function Doonselectstart: WordBool; safecall; - procedure Doonfilterchange; safecall; - function Doondragstart: WordBool; safecall; - function Doonbeforeupdate: WordBool; safecall; - procedure Doonafterupdate; safecall; - function Doonerrorupdate: WordBool; safecall; - function Doonrowexit: WordBool; safecall; - procedure Doonrowenter; safecall; - procedure Doondatasetchanged; safecall; - procedure Doondataavailable; safecall; - procedure Doondatasetcomplete; safecall; - procedure Doonlosecapture; safecall; - procedure Doonpropertychange; safecall; - procedure Doonscroll; safecall; - procedure Doonfocus; safecall; - procedure Doonblur; safecall; - procedure Doonresize; safecall; - function Doondrag: WordBool; safecall; - procedure Doondragend; safecall; - function Doondragenter: WordBool; safecall; - function Doondragover: WordBool; safecall; - procedure Doondragleave; safecall; - function Doondrop: WordBool; safecall; - function Doonbeforecut: WordBool; safecall; - function Dooncut: WordBool; safecall; - function Doonbeforecopy: WordBool; safecall; - function Dooncopy: WordBool; safecall; - function Doonbeforepaste: WordBool; safecall; - function Doonpaste: WordBool; safecall; - function Dooncontextmenu: WordBool; safecall; - procedure Doonrowsdelete; safecall; - procedure Doonrowsinserted; safecall; - procedure Dooncellchange; safecall; - procedure Doonreadystatechange; safecall; - procedure Doonbeforeeditfocus; safecall; - procedure Doonlayoutcomplete; safecall; - procedure Doonpage; safecall; - function Doonbeforedeactivate: WordBool; safecall; - function Doonbeforeactivate: WordBool; safecall; - procedure Doonmove; safecall; - function Dooncontrolselect: WordBool; safecall; - function Doonmovestart: WordBool; safecall; - procedure Doonmoveend; safecall; - function Doonresizestart: WordBool; safecall; - procedure Doonresizeend; safecall; - procedure Doonmouseenter; safecall; - procedure Doonmouseleave; safecall; - function Doonmousewheel: WordBool; safecall; - procedure Doonactivate; safecall; - procedure Doondeactivate; safecall; - procedure Doonfocusin; safecall; - procedure Doonfocusout; safecall; - procedure Doonload; safecall; - procedure Doonerror; safecall; - procedure Doonabort; safecall; - protected - //SinkEventsProtected// - Fonhelp: THTMLInputImageEventsonhelpEvent; - Fonclick: THTMLInputImageEventsonclickEvent; - Fondblclick: THTMLInputImageEventsondblclickEvent; - Fonkeypress: THTMLInputImageEventsonkeypressEvent; - Fonkeydown: THTMLInputImageEventsonkeydownEvent; - Fonkeyup: THTMLInputImageEventsonkeyupEvent; - Fonmouseout: THTMLInputImageEventsonmouseoutEvent; - Fonmouseover: THTMLInputImageEventsonmouseoverEvent; - Fonmousemove: THTMLInputImageEventsonmousemoveEvent; - Fonmousedown: THTMLInputImageEventsonmousedownEvent; - Fonmouseup: THTMLInputImageEventsonmouseupEvent; - Fonselectstart: THTMLInputImageEventsonselectstartEvent; - Fonfilterchange: THTMLInputImageEventsonfilterchangeEvent; - Fondragstart: THTMLInputImageEventsondragstartEvent; - Fonbeforeupdate: THTMLInputImageEventsonbeforeupdateEvent; - Fonafterupdate: THTMLInputImageEventsonafterupdateEvent; - Fonerrorupdate: THTMLInputImageEventsonerrorupdateEvent; - Fonrowexit: THTMLInputImageEventsonrowexitEvent; - Fonrowenter: THTMLInputImageEventsonrowenterEvent; - Fondatasetchanged: THTMLInputImageEventsondatasetchangedEvent; - Fondataavailable: THTMLInputImageEventsondataavailableEvent; - Fondatasetcomplete: THTMLInputImageEventsondatasetcompleteEvent; - Fonlosecapture: THTMLInputImageEventsonlosecaptureEvent; - Fonpropertychange: THTMLInputImageEventsonpropertychangeEvent; - Fonscroll: THTMLInputImageEventsonscrollEvent; - Fonfocus: THTMLInputImageEventsonfocusEvent; - Fonblur: THTMLInputImageEventsonblurEvent; - Fonresize: THTMLInputImageEventsonresizeEvent; - Fondrag: THTMLInputImageEventsondragEvent; - Fondragend: THTMLInputImageEventsondragendEvent; - Fondragenter: THTMLInputImageEventsondragenterEvent; - Fondragover: THTMLInputImageEventsondragoverEvent; - Fondragleave: THTMLInputImageEventsondragleaveEvent; - Fondrop: THTMLInputImageEventsondropEvent; - Fonbeforecut: THTMLInputImageEventsonbeforecutEvent; - Foncut: THTMLInputImageEventsoncutEvent; - Fonbeforecopy: THTMLInputImageEventsonbeforecopyEvent; - Foncopy: THTMLInputImageEventsoncopyEvent; - Fonbeforepaste: THTMLInputImageEventsonbeforepasteEvent; - Fonpaste: THTMLInputImageEventsonpasteEvent; - Foncontextmenu: THTMLInputImageEventsoncontextmenuEvent; - Fonrowsdelete: THTMLInputImageEventsonrowsdeleteEvent; - Fonrowsinserted: THTMLInputImageEventsonrowsinsertedEvent; - Foncellchange: THTMLInputImageEventsoncellchangeEvent; - Fonreadystatechange: THTMLInputImageEventsonreadystatechangeEvent; - Fonbeforeeditfocus: THTMLInputImageEventsonbeforeeditfocusEvent; - Fonlayoutcomplete: THTMLInputImageEventsonlayoutcompleteEvent; - Fonpage: THTMLInputImageEventsonpageEvent; - Fonbeforedeactivate: THTMLInputImageEventsonbeforedeactivateEvent; - Fonbeforeactivate: THTMLInputImageEventsonbeforeactivateEvent; - Fonmove: THTMLInputImageEventsonmoveEvent; - Foncontrolselect: THTMLInputImageEventsoncontrolselectEvent; - Fonmovestart: THTMLInputImageEventsonmovestartEvent; - Fonmoveend: THTMLInputImageEventsonmoveendEvent; - Fonresizestart: THTMLInputImageEventsonresizestartEvent; - Fonresizeend: THTMLInputImageEventsonresizeendEvent; - Fonmouseenter: THTMLInputImageEventsonmouseenterEvent; - Fonmouseleave: THTMLInputImageEventsonmouseleaveEvent; - Fonmousewheel: THTMLInputImageEventsonmousewheelEvent; - Fonactivate: THTMLInputImageEventsonactivateEvent; - Fondeactivate: THTMLInputImageEventsondeactivateEvent; - Fonfocusin: THTMLInputImageEventsonfocusinEvent; - Fonfocusout: THTMLInputImageEventsonfocusoutEvent; - Fonload: THTMLInputImageEventsonloadEvent; - Fonerror: THTMLInputImageEventsonerrorEvent; - Fonabort: THTMLInputImageEventsonabortEvent; - published - //SinkEventsPublished// - property onhelp: THTMLInputImageEventsonhelpEvent read Fonhelp write Fonhelp; - property onclick: THTMLInputImageEventsonclickEvent read Fonclick write Fonclick; - property ondblclick: THTMLInputImageEventsondblclickEvent read Fondblclick write Fondblclick; - property onkeypress: THTMLInputImageEventsonkeypressEvent read Fonkeypress write Fonkeypress; - property onkeydown: THTMLInputImageEventsonkeydownEvent read Fonkeydown write Fonkeydown; - property onkeyup: THTMLInputImageEventsonkeyupEvent read Fonkeyup write Fonkeyup; - property onmouseout: THTMLInputImageEventsonmouseoutEvent read Fonmouseout write Fonmouseout; - property onmouseover: THTMLInputImageEventsonmouseoverEvent read Fonmouseover write Fonmouseover; - property onmousemove: THTMLInputImageEventsonmousemoveEvent read Fonmousemove write Fonmousemove; - property onmousedown: THTMLInputImageEventsonmousedownEvent read Fonmousedown write Fonmousedown; - property onmouseup: THTMLInputImageEventsonmouseupEvent read Fonmouseup write Fonmouseup; - property onselectstart: THTMLInputImageEventsonselectstartEvent read Fonselectstart write Fonselectstart; - property onfilterchange: THTMLInputImageEventsonfilterchangeEvent read Fonfilterchange write Fonfilterchange; - property ondragstart: THTMLInputImageEventsondragstartEvent read Fondragstart write Fondragstart; - property onbeforeupdate: THTMLInputImageEventsonbeforeupdateEvent read Fonbeforeupdate write Fonbeforeupdate; - property onafterupdate: THTMLInputImageEventsonafterupdateEvent read Fonafterupdate write Fonafterupdate; - property onerrorupdate: THTMLInputImageEventsonerrorupdateEvent read Fonerrorupdate write Fonerrorupdate; - property onrowexit: THTMLInputImageEventsonrowexitEvent read Fonrowexit write Fonrowexit; - property onrowenter: THTMLInputImageEventsonrowenterEvent read Fonrowenter write Fonrowenter; - property ondatasetchanged: THTMLInputImageEventsondatasetchangedEvent read Fondatasetchanged write Fondatasetchanged; - property ondataavailable: THTMLInputImageEventsondataavailableEvent read Fondataavailable write Fondataavailable; - property ondatasetcomplete: THTMLInputImageEventsondatasetcompleteEvent read Fondatasetcomplete write Fondatasetcomplete; - property onlosecapture: THTMLInputImageEventsonlosecaptureEvent read Fonlosecapture write Fonlosecapture; - property onpropertychange: THTMLInputImageEventsonpropertychangeEvent read Fonpropertychange write Fonpropertychange; - property onscroll: THTMLInputImageEventsonscrollEvent read Fonscroll write Fonscroll; - property onfocus: THTMLInputImageEventsonfocusEvent read Fonfocus write Fonfocus; - property onblur: THTMLInputImageEventsonblurEvent read Fonblur write Fonblur; - property onresize: THTMLInputImageEventsonresizeEvent read Fonresize write Fonresize; - property ondrag: THTMLInputImageEventsondragEvent read Fondrag write Fondrag; - property ondragend: THTMLInputImageEventsondragendEvent read Fondragend write Fondragend; - property ondragenter: THTMLInputImageEventsondragenterEvent read Fondragenter write Fondragenter; - property ondragover: THTMLInputImageEventsondragoverEvent read Fondragover write Fondragover; - property ondragleave: THTMLInputImageEventsondragleaveEvent read Fondragleave write Fondragleave; - property ondrop: THTMLInputImageEventsondropEvent read Fondrop write Fondrop; - property onbeforecut: THTMLInputImageEventsonbeforecutEvent read Fonbeforecut write Fonbeforecut; - property oncut: THTMLInputImageEventsoncutEvent read Foncut write Foncut; - property onbeforecopy: THTMLInputImageEventsonbeforecopyEvent read Fonbeforecopy write Fonbeforecopy; - property oncopy: THTMLInputImageEventsoncopyEvent read Foncopy write Foncopy; - property onbeforepaste: THTMLInputImageEventsonbeforepasteEvent read Fonbeforepaste write Fonbeforepaste; - property onpaste: THTMLInputImageEventsonpasteEvent read Fonpaste write Fonpaste; - property oncontextmenu: THTMLInputImageEventsoncontextmenuEvent read Foncontextmenu write Foncontextmenu; - property onrowsdelete: THTMLInputImageEventsonrowsdeleteEvent read Fonrowsdelete write Fonrowsdelete; - property onrowsinserted: THTMLInputImageEventsonrowsinsertedEvent read Fonrowsinserted write Fonrowsinserted; - property oncellchange: THTMLInputImageEventsoncellchangeEvent read Foncellchange write Foncellchange; - property onreadystatechange: THTMLInputImageEventsonreadystatechangeEvent read Fonreadystatechange write Fonreadystatechange; - property onbeforeeditfocus: THTMLInputImageEventsonbeforeeditfocusEvent read Fonbeforeeditfocus write Fonbeforeeditfocus; - property onlayoutcomplete: THTMLInputImageEventsonlayoutcompleteEvent read Fonlayoutcomplete write Fonlayoutcomplete; - property onpage: THTMLInputImageEventsonpageEvent read Fonpage write Fonpage; - property onbeforedeactivate: THTMLInputImageEventsonbeforedeactivateEvent read Fonbeforedeactivate write Fonbeforedeactivate; - property onbeforeactivate: THTMLInputImageEventsonbeforeactivateEvent read Fonbeforeactivate write Fonbeforeactivate; - property onmove: THTMLInputImageEventsonmoveEvent read Fonmove write Fonmove; - property oncontrolselect: THTMLInputImageEventsoncontrolselectEvent read Foncontrolselect write Foncontrolselect; - property onmovestart: THTMLInputImageEventsonmovestartEvent read Fonmovestart write Fonmovestart; - property onmoveend: THTMLInputImageEventsonmoveendEvent read Fonmoveend write Fonmoveend; - property onresizestart: THTMLInputImageEventsonresizestartEvent read Fonresizestart write Fonresizestart; - property onresizeend: THTMLInputImageEventsonresizeendEvent read Fonresizeend write Fonresizeend; - property onmouseenter: THTMLInputImageEventsonmouseenterEvent read Fonmouseenter write Fonmouseenter; - property onmouseleave: THTMLInputImageEventsonmouseleaveEvent read Fonmouseleave write Fonmouseleave; - property onmousewheel: THTMLInputImageEventsonmousewheelEvent read Fonmousewheel write Fonmousewheel; - property onactivate: THTMLInputImageEventsonactivateEvent read Fonactivate write Fonactivate; - property ondeactivate: THTMLInputImageEventsondeactivateEvent read Fondeactivate write Fondeactivate; - property onfocusin: THTMLInputImageEventsonfocusinEvent read Fonfocusin write Fonfocusin; - property onfocusout: THTMLInputImageEventsonfocusoutEvent read Fonfocusout write Fonfocusout; - property onload: THTMLInputImageEventsonloadEvent read Fonload write Fonload; - property onerror: THTMLInputImageEventsonerrorEvent read Fonerror write Fonerror; - property onabort: THTMLInputImageEventsonabortEvent read Fonabort write Fonabort; - end; - - //SinkIntfEnd// - -procedure Register; - -implementation - -uses - SysUtils; - -{ globals } - -procedure BuildPositionalDispIds(pDispIds: PDispIdList; const dps: TDispParams); -var - i: integer; -begin - Assert(pDispIds <> nil); - - { by default, directly arrange in reverse order } - for i := 0 to dps.cArgs - 1 do - pDispIds^[i] := dps.cArgs - 1 - i; - - { check for named args } - if (dps.cNamedArgs <= 0) then Exit; - - { parse named args } - for i := 0 to dps.cNamedArgs - 1 do - pDispIds^[dps.rgdispidNamedArgs^[i]] := i; -end; - - -{ TMSHTMLEventsBaseSink } - -function TMSHTMLEventsBaseSink.GetIDsOfNames(const IID: TGUID; Names: Pointer; - NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; -begin - Result := E_NOTIMPL; -end; - -function TMSHTMLEventsBaseSink.GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; -begin - Result := E_NOTIMPL; - pointer(TypeInfo) := nil; -end; - -function TMSHTMLEventsBaseSink.GetTypeInfoCount(out Count: Integer): HResult; -begin - Result := E_NOTIMPL; - Count := 0; -end; - -function TMSHTMLEventsBaseSink.Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; -var - dps: TDispParams absolute Params; - bHasParams: boolean; - pDispIds: PDispIdList; - iDispIdsSize: integer; -begin - { validity checks } - if (Flags and DISPATCH_METHOD = 0) then - raise Exception.Create( - Format('%s only supports sinking of method calls!', [ClassName] - )); - - { build pDispIds array. this maybe a bit of overhead but it allows us to - sink named-argument calls such as Excel's AppEvents, etc! - } - pDispIds := nil; - iDispIdsSize := 0; - bHasParams := (dps.cArgs > 0); - if (bHasParams) then - begin - iDispIdsSize := dps.cArgs * SizeOf(TDispId); - GetMem(pDispIds, iDispIdsSize); - end; { if } - - try - { rearrange dispids properly } - if (bHasParams) then BuildPositionalDispIds(pDispIds, dps); - Result := DoInvoke(DispId, IID, LocaleID, Flags, dps, pDispIds, VarResult, ExcepInfo, ArgErr); - finally - { free pDispIds array } - if (bHasParams) then FreeMem(pDispIds, iDispIdsSize); - end; { finally } -end; - -function TMSHTMLEventsBaseSink.QueryInterface(const IID: TGUID; out Obj): HResult; -begin - if (GetInterface(IID, Obj)) then - begin - Result := S_OK; - Exit; - end - else - if (IsEqualIID(IID, FSinkIID)) then - if (GetInterface(IDispatch, Obj)) then - begin - Result := S_OK; - Exit; - end; - Result := E_NOINTERFACE; - pointer(Obj) := nil; -end; - -function TMSHTMLEventsBaseSink._AddRef: Integer; -begin - Result := 2; -end; - -function TMSHTMLEventsBaseSink._Release: Integer; -begin - Result := 1; -end; - -destructor TMSHTMLEventsBaseSink.Destroy; -begin - Disconnect; - inherited; -end; - -procedure TMSHTMLEventsBaseSink.Connect(const ASource: IUnknown); -var - pcpc: IConnectionPointContainer; -begin - Assert(ASource <> nil); - Disconnect; - try - OleCheck(ASource.QueryInterface(IConnectionPointContainer, pcpc)); - OleCheck(pcpc.FindConnectionPoint(FSinkIID, FCP)); - OleCheck(FCP.Advise(Self, FCookie)); - FSource := ASource; - except - raise Exception.Create(Format('Unable to connect %s.'#13'%s', - [Name, Exception(ExceptObject).Message] - )); - end; { finally } -end; - -procedure TMSHTMLEventsBaseSink.Disconnect; -begin - if (FSource = nil) then Exit; - try - OleCheck(FCP.Unadvise(FCookie)); - FCP := nil; - FSource := nil; - except - pointer(FCP) := nil; - pointer(FSource) := nil; - end; { except } -end; - - -//SinkImplStart// - -function TMSHTMLHTMLElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - - - -function TMSHTMLHTMLElementEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLElementEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLElementEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLElementEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLElementEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLElementEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLLinkElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1003: - begin - Doonload(); - Result := S_OK; - end; - 1002: - begin - Doonerror(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLLinkElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLLinkElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLLinkElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLLinkElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonload; -begin - if not Assigned(onload) then System.Exit; - onload(Self); -end; - -procedure TMSHTMLHTMLLinkElementEvents.Doonerror; -begin - if not Assigned(onerror) then System.Exit; - onerror(Self); -end; - - - -function TMSHTMLHTMLLinkElementEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1003: - begin - Doonload(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1002: - begin - Doonerror(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLLinkElementEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLLinkElementEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLLinkElementEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLLinkElementEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonload(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onload) then System.Exit; - onload(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLinkElementEvents2.Doonerror(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onerror) then System.Exit; - onerror(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLFormElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1007: - begin - OleVariant(VarResult^) := Doonsubmit(); - Result := S_OK; - end; - 1015: - begin - OleVariant(VarResult^) := Doonreset(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLFormElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLFormElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLFormElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLFormElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonsubmit: WordBool; -begin - if not Assigned(onsubmit) then System.Exit; - Result := onsubmit(Self); -end; - -function TMSHTMLHTMLFormElementEvents.Doonreset: WordBool; -begin - if not Assigned(onreset) then System.Exit; - Result := onreset(Self); -end; - - - -function TMSHTMLHTMLFormElementEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1007: - begin - OleVariant(VarResult^) := Doonsubmit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1015: - begin - OleVariant(VarResult^) := Doonreset(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLFormElementEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLFormElementEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLFormElementEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFormElementEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonsubmit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onsubmit) then System.Exit; - Result := onsubmit(Self, pEvtObj); -end; - -function TMSHTMLHTMLFormElementEvents2.Doonreset(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onreset) then System.Exit; - Result := onreset(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLImgEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1003: - begin - Doonload(); - Result := S_OK; - end; - 1002: - begin - Doonerror(); - Result := S_OK; - end; - 1000: - begin - Doonabort(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLImgEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLImgEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLImgEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLImgEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLImgEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLImgEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLImgEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLImgEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLImgEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLImgEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLImgEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLImgEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLImgEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLImgEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonload; -begin - if not Assigned(onload) then System.Exit; - onload(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonerror; -begin - if not Assigned(onerror) then System.Exit; - onerror(Self); -end; - -procedure TMSHTMLHTMLImgEvents.Doonabort; -begin - if not Assigned(onabort) then System.Exit; - onabort(Self); -end; - - - -function TMSHTMLHTMLImgEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1003: - begin - Doonload(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1002: - begin - Doonerror(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1000: - begin - Doonabort(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLImgEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLImgEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLImgEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLImgEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonload(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onload) then System.Exit; - onload(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonerror(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onerror) then System.Exit; - onerror(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLImgEvents2.Doonabort(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onabort) then System.Exit; - onabort(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLTextContainerEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1001: - begin - Doonchange(); - Result := S_OK; - end; - 1006: - begin - Doonselect(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLTextContainerEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLTextContainerEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLTextContainerEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLTextContainerEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonchange; -begin - if not Assigned(onchange) then System.Exit; - onchange(Self); -end; - -procedure TMSHTMLHTMLTextContainerEvents.Doonselect; -begin - if not Assigned(onselect) then System.Exit; - onselect(Self); -end; - - - -function TMSHTMLHTMLTextContainerEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1001: - begin - Doonchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1006: - begin - Doonselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLTextContainerEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLTextContainerEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLTextContainerEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLTextContainerEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onchange) then System.Exit; - onchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTextContainerEvents2.Doonselect(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onselect) then System.Exit; - onselect(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLAnchorEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLAnchorEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLAnchorEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLAnchorEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLAnchorEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLAnchorEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - - - -function TMSHTMLHTMLAnchorEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLAnchorEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLAnchorEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLAnchorEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAnchorEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLAnchorEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLLabelEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLLabelEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLLabelEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLLabelEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLLabelEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLLabelEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLLabelEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLLabelEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLLabelEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLLabelEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - - - -function TMSHTMLHTMLLabelEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLLabelEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLLabelEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLLabelEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLLabelEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLLabelEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLSelectElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1001: - begin - Doonchange(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLSelectElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLSelectElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLSelectElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLSelectElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -procedure TMSHTMLHTMLSelectElementEvents.Doonchange; -begin - if not Assigned(onchange) then System.Exit; - onchange(Self); -end; - - - -function TMSHTMLHTMLSelectElementEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1001: - begin - Doonchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLSelectElementEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLSelectElementEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLSelectElementEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLSelectElementEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLSelectElementEvents2.Doonchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onchange) then System.Exit; - onchange(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLInputTextElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1001: - begin - OleVariant(VarResult^) := Doonchange(); - Result := S_OK; - end; - 1006: - begin - Doonselect(); - Result := S_OK; - end; - 1003: - begin - Doonload(); - Result := S_OK; - end; - 1002: - begin - Doonerror(); - Result := S_OK; - end; - 1000: - begin - Doonabort(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLInputTextElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLInputTextElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLInputTextElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -function TMSHTMLHTMLInputTextElementEvents.Doonchange: WordBool; -begin - if not Assigned(onchange) then System.Exit; - Result := onchange(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonselect; -begin - if not Assigned(onselect) then System.Exit; - onselect(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonload; -begin - if not Assigned(onload) then System.Exit; - onload(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonerror; -begin - if not Assigned(onerror) then System.Exit; - onerror(Self); -end; - -procedure TMSHTMLHTMLInputTextElementEvents.Doonabort; -begin - if not Assigned(onabort) then System.Exit; - onabort(Self); -end; - - - -function TMSHTMLHTMLInputTextElementEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1001: - begin - OleVariant(VarResult^) := Doonchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1006: - begin - Doonselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1003: - begin - Doonload(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1002: - begin - Doonerror(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1000: - begin - Doonabort(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLInputTextElementEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLInputTextElementEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLInputTextElementEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -function TMSHTMLHTMLInputTextElementEvents2.Doonchange(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onchange) then System.Exit; - Result := onchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonselect(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onselect) then System.Exit; - onselect(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonload(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onload) then System.Exit; - onload(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonerror(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onerror) then System.Exit; - onerror(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLInputTextElementEvents2.Doonabort(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onabort) then System.Exit; - onabort(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLOptionButtonElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1001: - begin - OleVariant(VarResult^) := Doonchange(); - Result := S_OK; - end; - 1006: - begin - Doonselect(); - Result := S_OK; - end; - 1003: - begin - Doonload(); - Result := S_OK; - end; - 1002: - begin - Doonerror(); - Result := S_OK; - end; - 1000: - begin - Doonabort(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLOptionButtonElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLOptionButtonElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLOptionButtonElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -function TMSHTMLHTMLOptionButtonElementEvents.Doonchange: WordBool; -begin - if not Assigned(onchange) then System.Exit; - Result := onchange(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonselect; -begin - if not Assigned(onselect) then System.Exit; - onselect(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonload; -begin - if not Assigned(onload) then System.Exit; - onload(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonerror; -begin - if not Assigned(onerror) then System.Exit; - onerror(Self); -end; - -procedure TMSHTMLHTMLOptionButtonElementEvents.Doonabort; -begin - if not Assigned(onabort) then System.Exit; - onabort(Self); -end; - - - -function TMSHTMLHTMLButtonElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLButtonElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLButtonElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLButtonElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLButtonElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLButtonElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - - - -function TMSHTMLHTMLButtonElementEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLButtonElementEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLButtonElementEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLButtonElementEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLButtonElementEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLButtonElementEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLMarqueeElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1001: - begin - Doonchange(); - Result := S_OK; - end; - 1006: - begin - Doonselect(); - Result := S_OK; - end; - 1009: - begin - Doonbounce(); - Result := S_OK; - end; - 1010: - begin - Doonfinish(); - Result := S_OK; - end; - 1011: - begin - Doonstart(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLMarqueeElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLMarqueeElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLMarqueeElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLMarqueeElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonchange; -begin - if not Assigned(onchange) then System.Exit; - onchange(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonselect; -begin - if not Assigned(onselect) then System.Exit; - onselect(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonbounce; -begin - if not Assigned(onbounce) then System.Exit; - onbounce(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonfinish; -begin - if not Assigned(onfinish) then System.Exit; - onfinish(Self); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents.Doonstart; -begin - if not Assigned(onstart) then System.Exit; - onstart(Self); -end; - - - -function TMSHTMLHTMLMarqueeElementEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1001: - begin - Doonchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1006: - begin - Doonselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1009: - begin - Doonbounce(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1010: - begin - Doonfinish(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1011: - begin - Doonstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLMarqueeElementEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLMarqueeElementEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLMarqueeElementEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLMarqueeElementEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onchange) then System.Exit; - onchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonselect(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onselect) then System.Exit; - onselect(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonbounce(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onbounce) then System.Exit; - onbounce(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonfinish(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfinish) then System.Exit; - onfinish(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMarqueeElementEvents2.Doonstart(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onstart) then System.Exit; - onstart(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLWindowEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - 1003: - begin - Doonload(); - Result := S_OK; - end; - 1008: - begin - Doonunload(); - Result := S_OK; - end; - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1002: - begin - Doonerror(dps.rgvarg^[pDispIds^[0]].bstrval, dps.rgvarg^[pDispIds^[1]].bstrval, dps.rgvarg^[pDispIds^[2]].lval); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - 1017: - begin - Doonbeforeunload(); - Result := S_OK; - end; - 1024: - begin - Doonbeforeprint(); - Result := S_OK; - end; - 1025: - begin - Doonafterprint(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLWindowEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLWindowEvents; -end; - -//SinkImplementation// - -procedure TMSHTMLHTMLWindowEvents.Doonload; -begin - if not Assigned(onload) then System.Exit; - onload(Self); -end; - -procedure TMSHTMLHTMLWindowEvents.Doonunload; -begin - if not Assigned(onunload) then System.Exit; - onunload(Self); -end; - -function TMSHTMLHTMLWindowEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -procedure TMSHTMLHTMLWindowEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLWindowEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLWindowEvents.Doonerror(const description: WideString; const url: WideString; line: Integer); -begin - if not Assigned(onerror) then System.Exit; - onerror(Self, description, url, line); -end; - -procedure TMSHTMLHTMLWindowEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -procedure TMSHTMLHTMLWindowEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLWindowEvents.Doonbeforeunload; -begin - if not Assigned(onbeforeunload) then System.Exit; - onbeforeunload(Self); -end; - -procedure TMSHTMLHTMLWindowEvents.Doonbeforeprint; -begin - if not Assigned(onbeforeprint) then System.Exit; - onbeforeprint(Self); -end; - -procedure TMSHTMLHTMLWindowEvents.Doonafterprint; -begin - if not Assigned(onafterprint) then System.Exit; - onafterprint(Self); -end; - - - -function TMSHTMLHTMLWindowEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - 1003: - begin - Doonload(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1008: - begin - Doonunload(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1002: - begin - Doonerror(dps.rgvarg^[pDispIds^[0]].bstrval, dps.rgvarg^[pDispIds^[1]].bstrval, dps.rgvarg^[pDispIds^[2]].lval); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1017: - begin - Doonbeforeunload(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1024: - begin - Doonbeforeprint(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1025: - begin - Doonafterprint(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLWindowEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLWindowEvents2; -end; - -//SinkImplementation// - -procedure TMSHTMLHTMLWindowEvents2.Doonload(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onload) then System.Exit; - onload(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLWindowEvents2.Doonunload(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onunload) then System.Exit; - onunload(Self, pEvtObj); -end; - -function TMSHTMLHTMLWindowEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLWindowEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLWindowEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLWindowEvents2.Doonerror(const description: WideString; const url: WideString; line: Integer); -begin - if not Assigned(onerror) then System.Exit; - onerror(Self, description, url, line); -end; - -procedure TMSHTMLHTMLWindowEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLWindowEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLWindowEvents2.Doonbeforeunload(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onbeforeunload) then System.Exit; - onbeforeunload(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLWindowEvents2.Doonbeforeprint(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onbeforeprint) then System.Exit; - onbeforeprint(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLWindowEvents2.Doonafterprint(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterprint) then System.Exit; - onafterprint(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLDocumentEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - 1026: - begin - OleVariant(VarResult^) := Doonstop(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1037: - begin - Doonselectionchange(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLDocumentEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLDocumentEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLDocumentEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doonstop: WordBool; -begin - if not Assigned(onstop) then System.Exit; - Result := onstop(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonselectionchange; -begin - if not Assigned(onselectionchange) then System.Exit; - onselectionchange(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLDocumentEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -function TMSHTMLHTMLDocumentEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - - - -function TMSHTMLHTMLDocumentEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1026: - begin - OleVariant(VarResult^) := Doonstop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1037: - begin - Doonselectionchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLDocumentEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLDocumentEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLDocumentEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doonstop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onstop) then System.Exit; - Result := onstop(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonbeforeeditfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonselectionchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onselectionchange) then System.Exit; - onselectionchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLDocumentEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLDocumentEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - - - -function TMSHTMLDWebBridgeEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - 1: - begin - Doonscriptletevent(dps.rgvarg^[pDispIds^[0]].bstrval, OleVariant(dps.rgvarg^[pDispIds^[1]])); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLDWebBridgeEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := DWebBridgeEvents; -end; - -//SinkImplementation// - -procedure TMSHTMLDWebBridgeEvents.Doonscriptletevent(const name: WideString; eventData: OleVariant); -begin - if not Assigned(onscriptletevent) then System.Exit; - onscriptletevent(Self, name, eventData); -end; - -procedure TMSHTMLDWebBridgeEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -function TMSHTMLDWebBridgeEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLDWebBridgeEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -procedure TMSHTMLDWebBridgeEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLDWebBridgeEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -function TMSHTMLDWebBridgeEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLDWebBridgeEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLDWebBridgeEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLDWebBridgeEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - - - -function TMSHTMLHTMLControlElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLControlElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLControlElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLControlElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLControlElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLControlElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - - - -function TMSHTMLHTMLControlElementEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLControlElementEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLControlElementEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLControlElementEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLControlElementEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLControlElementEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLMapEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLMapEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLMapEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLMapEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLMapEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLMapEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLMapEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLMapEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLMapEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLMapEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLMapEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLMapEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLMapEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLMapEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLMapEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLMapEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - - - -function TMSHTMLHTMLMapEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLMapEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLMapEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLMapEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLMapEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLMapEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLAreaEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLAreaEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLAreaEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLAreaEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLAreaEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLAreaEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLAreaEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLAreaEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLAreaEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLAreaEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - - - -function TMSHTMLHTMLAreaEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLAreaEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLAreaEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLAreaEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLAreaEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLAreaEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLTableEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLTableEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLTableEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLTableEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLTableEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLTableEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLTableEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLTableEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLTableEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLTableEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLTableEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLTableEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLTableEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLTableEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLTableEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLTableEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - - - -function TMSHTMLHTMLTableEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLTableEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLTableEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLTableEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLTableEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLTableEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLScriptEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1002: - begin - Doonerror(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLScriptEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLScriptEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLScriptEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLScriptEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLScriptEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLScriptEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLScriptEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLScriptEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -procedure TMSHTMLHTMLScriptEvents.Doonerror; -begin - if not Assigned(onerror) then System.Exit; - onerror(Self); -end; - - - -function TMSHTMLHTMLScriptEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1002: - begin - Doonerror(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLScriptEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLScriptEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLScriptEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLScriptEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLScriptEvents2.Doonerror(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onerror) then System.Exit; - onerror(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLObjectElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418093: - begin - OleVariant(VarResult^) := Doonerror(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -2147418092: - begin - Doonreadystatechange(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLObjectElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLObjectElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLObjectElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLObjectElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLObjectElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLObjectElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLObjectElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLObjectElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLObjectElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLObjectElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -function TMSHTMLHTMLObjectElementEvents.Doonerror: WordBool; -begin - if not Assigned(onerror) then System.Exit; - Result := onerror(Self); -end; - -procedure TMSHTMLHTMLObjectElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLObjectElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLObjectElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLObjectElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - - - -function TMSHTMLHTMLObjectElementEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - OleVariant(VarResult^) := Doonerror(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLObjectElementEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLObjectElementEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLObjectElementEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLObjectElementEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLObjectElementEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLObjectElementEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLObjectElementEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLObjectElementEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLObjectElementEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLObjectElementEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -function TMSHTMLHTMLObjectElementEvents2.Doonerror(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerror) then System.Exit; - Result := onerror(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLObjectElementEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLObjectElementEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLObjectElementEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLObjectElementEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLFrameSiteEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1003: - begin - Doonload(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLFrameSiteEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLFrameSiteEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLFrameSiteEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLFrameSiteEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -procedure TMSHTMLHTMLFrameSiteEvents.Doonload; -begin - if not Assigned(onload) then System.Exit; - onload(Self); -end; - - - -function TMSHTMLHTMLFrameSiteEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1003: - begin - Doonload(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLFrameSiteEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLFrameSiteEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLFrameSiteEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLFrameSiteEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLFrameSiteEvents2.Doonload(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onload) then System.Exit; - onload(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLStyleElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1003: - begin - Doonload(); - Result := S_OK; - end; - 1002: - begin - Doonerror(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLStyleElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLStyleElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLStyleElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLStyleElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonload; -begin - if not Assigned(onload) then System.Exit; - onload(Self); -end; - -procedure TMSHTMLHTMLStyleElementEvents.Doonerror; -begin - if not Assigned(onerror) then System.Exit; - onerror(Self); -end; - - - -function TMSHTMLHTMLStyleElementEvents2.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -602: - begin - Doonkeydown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -604: - begin - Doonkeyup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -606: - begin - Doonmousemove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -605: - begin - Doonmousedown(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -607: - begin - Doonmouseup(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1014: - begin - Doonscroll(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1016: - begin - Doonresize(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1031: - begin - Doonpage(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1044: - begin - Doonactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1035: - begin - Doonmove(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1003: - begin - Doonload(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - 1002: - begin - Doonerror(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLStyleElementEvents2.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLStyleElementEvents2; -end; - -//SinkImplementation// - -function TMSHTMLHTMLStyleElementEvents2.Doonhelp(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doondblclick(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonkeypress(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonkeydown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonkeyup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonmouseout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonmouseover(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonmousemove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonmousedown(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonmouseup(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonselectstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonfilterchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doondragstart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonafterupdate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonrowexit(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonrowenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doondatasetchanged(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doondataavailable(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doondatasetcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonlosecapture(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonpropertychange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonscroll(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonfocus(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonblur(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onblur) then System.Exit; - onblur(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonresize(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresize) then System.Exit; - onresize(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doondrag(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doondragend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doondragenter(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doondragover(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doondragleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doondrop(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonbeforecut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Dooncut(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Dooncopy(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonpaste(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Dooncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonrowsdelete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonrowsinserted(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Dooncellchange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonlayoutcomplete(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonpage(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onpage) then System.Exit; - onpage(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonmouseenter(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonmouseleave(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doondeactivate(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonfocusin(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonfocusout(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonmove(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmove) then System.Exit; - onmove(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Dooncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonmovestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonmoveend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonresizestart(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonresizeend(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self, pEvtObj); -end; - -function TMSHTMLHTMLStyleElementEvents2.Doonmousewheel(const pEvtObj: IHTMLEventObj): WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonload(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onload) then System.Exit; - onload(Self, pEvtObj); -end; - -procedure TMSHTMLHTMLStyleElementEvents2.Doonerror(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onerror) then System.Exit; - onerror(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLNamespaceEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -609: - begin - Doonreadystatechange(IUnknown(dps.rgvarg^[pDispIds^[0]].unkval) as IHTMLEventObj); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLNamespaceEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLNamespaceEvents; -end; - -//SinkImplementation// - -procedure TMSHTMLHTMLNamespaceEvents.Doonreadystatechange(const pEvtObj: IHTMLEventObj); -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self, pEvtObj); -end; - - - -function TMSHTMLHTMLInputFileElementEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1001: - begin - OleVariant(VarResult^) := Doonchange(); - Result := S_OK; - end; - 1006: - begin - Doonselect(); - Result := S_OK; - end; - 1003: - begin - Doonload(); - Result := S_OK; - end; - 1002: - begin - Doonerror(); - Result := S_OK; - end; - 1000: - begin - Doonabort(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLInputFileElementEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLInputFileElementEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLInputFileElementEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -function TMSHTMLHTMLInputFileElementEvents.Doonchange: WordBool; -begin - if not Assigned(onchange) then System.Exit; - Result := onchange(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonselect; -begin - if not Assigned(onselect) then System.Exit; - onselect(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonload; -begin - if not Assigned(onload) then System.Exit; - onload(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonerror; -begin - if not Assigned(onerror) then System.Exit; - onerror(Self); -end; - -procedure TMSHTMLHTMLInputFileElementEvents.Doonabort; -begin - if not Assigned(onabort) then System.Exit; - onabort(Self); -end; - - - -function TMSHTMLHTMLInputImageEvents.DoInvoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var dps: TDispParams; pDispIds: PDispIdList; - VarResult, ExcepInfo, ArgErr: Pointer): HResult; -type - POleVariant = ^OleVariant; -begin - Result := DISP_E_MEMBERNOTFOUND; - - //SinkInvoke// - case DispId of - -2147418102: - begin - OleVariant(VarResult^) := Doonhelp(); - Result := S_OK; - end; - -600: - begin - OleVariant(VarResult^) := Doonclick(); - Result := S_OK; - end; - -601: - begin - OleVariant(VarResult^) := Doondblclick(); - Result := S_OK; - end; - -603: - begin - OleVariant(VarResult^) := Doonkeypress(); - Result := S_OK; - end; - -602: - begin - Doonkeydown(); - Result := S_OK; - end; - -604: - begin - Doonkeyup(); - Result := S_OK; - end; - -2147418103: - begin - Doonmouseout(); - Result := S_OK; - end; - -2147418104: - begin - Doonmouseover(); - Result := S_OK; - end; - -606: - begin - Doonmousemove(); - Result := S_OK; - end; - -605: - begin - Doonmousedown(); - Result := S_OK; - end; - -607: - begin - Doonmouseup(); - Result := S_OK; - end; - -2147418100: - begin - OleVariant(VarResult^) := Doonselectstart(); - Result := S_OK; - end; - -2147418095: - begin - Doonfilterchange(); - Result := S_OK; - end; - -2147418101: - begin - OleVariant(VarResult^) := Doondragstart(); - Result := S_OK; - end; - -2147418108: - begin - OleVariant(VarResult^) := Doonbeforeupdate(); - Result := S_OK; - end; - -2147418107: - begin - Doonafterupdate(); - Result := S_OK; - end; - -2147418099: - begin - OleVariant(VarResult^) := Doonerrorupdate(); - Result := S_OK; - end; - -2147418106: - begin - OleVariant(VarResult^) := Doonrowexit(); - Result := S_OK; - end; - -2147418105: - begin - Doonrowenter(); - Result := S_OK; - end; - -2147418098: - begin - Doondatasetchanged(); - Result := S_OK; - end; - -2147418097: - begin - Doondataavailable(); - Result := S_OK; - end; - -2147418096: - begin - Doondatasetcomplete(); - Result := S_OK; - end; - -2147418094: - begin - Doonlosecapture(); - Result := S_OK; - end; - -2147418093: - begin - Doonpropertychange(); - Result := S_OK; - end; - 1014: - begin - Doonscroll(); - Result := S_OK; - end; - -2147418111: - begin - Doonfocus(); - Result := S_OK; - end; - -2147418112: - begin - Doonblur(); - Result := S_OK; - end; - 1016: - begin - Doonresize(); - Result := S_OK; - end; - -2147418092: - begin - OleVariant(VarResult^) := Doondrag(); - Result := S_OK; - end; - -2147418091: - begin - Doondragend(); - Result := S_OK; - end; - -2147418090: - begin - OleVariant(VarResult^) := Doondragenter(); - Result := S_OK; - end; - -2147418089: - begin - OleVariant(VarResult^) := Doondragover(); - Result := S_OK; - end; - -2147418088: - begin - Doondragleave(); - Result := S_OK; - end; - -2147418087: - begin - OleVariant(VarResult^) := Doondrop(); - Result := S_OK; - end; - -2147418083: - begin - OleVariant(VarResult^) := Doonbeforecut(); - Result := S_OK; - end; - -2147418086: - begin - OleVariant(VarResult^) := Dooncut(); - Result := S_OK; - end; - -2147418082: - begin - OleVariant(VarResult^) := Doonbeforecopy(); - Result := S_OK; - end; - -2147418085: - begin - OleVariant(VarResult^) := Dooncopy(); - Result := S_OK; - end; - -2147418081: - begin - OleVariant(VarResult^) := Doonbeforepaste(); - Result := S_OK; - end; - -2147418084: - begin - OleVariant(VarResult^) := Doonpaste(); - Result := S_OK; - end; - 1023: - begin - OleVariant(VarResult^) := Dooncontextmenu(); - Result := S_OK; - end; - -2147418080: - begin - Doonrowsdelete(); - Result := S_OK; - end; - -2147418079: - begin - Doonrowsinserted(); - Result := S_OK; - end; - -2147418078: - begin - Dooncellchange(); - Result := S_OK; - end; - -609: - begin - Doonreadystatechange(); - Result := S_OK; - end; - 1027: - begin - Doonbeforeeditfocus(); - Result := S_OK; - end; - 1030: - begin - Doonlayoutcomplete(); - Result := S_OK; - end; - 1031: - begin - Doonpage(); - Result := S_OK; - end; - 1034: - begin - OleVariant(VarResult^) := Doonbeforedeactivate(); - Result := S_OK; - end; - 1047: - begin - OleVariant(VarResult^) := Doonbeforeactivate(); - Result := S_OK; - end; - 1035: - begin - Doonmove(); - Result := S_OK; - end; - 1036: - begin - OleVariant(VarResult^) := Dooncontrolselect(); - Result := S_OK; - end; - 1038: - begin - OleVariant(VarResult^) := Doonmovestart(); - Result := S_OK; - end; - 1039: - begin - Doonmoveend(); - Result := S_OK; - end; - 1040: - begin - OleVariant(VarResult^) := Doonresizestart(); - Result := S_OK; - end; - 1041: - begin - Doonresizeend(); - Result := S_OK; - end; - 1042: - begin - Doonmouseenter(); - Result := S_OK; - end; - 1043: - begin - Doonmouseleave(); - Result := S_OK; - end; - 1033: - begin - OleVariant(VarResult^) := Doonmousewheel(); - Result := S_OK; - end; - 1044: - begin - Doonactivate(); - Result := S_OK; - end; - 1045: - begin - Doondeactivate(); - Result := S_OK; - end; - 1048: - begin - Doonfocusin(); - Result := S_OK; - end; - 1049: - begin - Doonfocusout(); - Result := S_OK; - end; - 1003: - begin - Doonload(); - Result := S_OK; - end; - 1002: - begin - Doonerror(); - Result := S_OK; - end; - 1000: - begin - Doonabort(); - Result := S_OK; - end; - end; { case } - //SinkInvokeEnd// -end; - -constructor TMSHTMLHTMLInputImageEvents.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - //SinkInit// - FSinkIID := HTMLInputImageEvents; -end; - -//SinkImplementation// - -function TMSHTMLHTMLInputImageEvents.Doonhelp: WordBool; -begin - if not Assigned(onhelp) then System.Exit; - Result := onhelp(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonclick: WordBool; -begin - if not Assigned(onclick) then System.Exit; - Result := onclick(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doondblclick: WordBool; -begin - if not Assigned(ondblclick) then System.Exit; - Result := ondblclick(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonkeypress: WordBool; -begin - if not Assigned(onkeypress) then System.Exit; - Result := onkeypress(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonkeydown; -begin - if not Assigned(onkeydown) then System.Exit; - onkeydown(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonkeyup; -begin - if not Assigned(onkeyup) then System.Exit; - onkeyup(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonmouseout; -begin - if not Assigned(onmouseout) then System.Exit; - onmouseout(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonmouseover; -begin - if not Assigned(onmouseover) then System.Exit; - onmouseover(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonmousemove; -begin - if not Assigned(onmousemove) then System.Exit; - onmousemove(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonmousedown; -begin - if not Assigned(onmousedown) then System.Exit; - onmousedown(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonmouseup; -begin - if not Assigned(onmouseup) then System.Exit; - onmouseup(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonselectstart: WordBool; -begin - if not Assigned(onselectstart) then System.Exit; - Result := onselectstart(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonfilterchange; -begin - if not Assigned(onfilterchange) then System.Exit; - onfilterchange(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doondragstart: WordBool; -begin - if not Assigned(ondragstart) then System.Exit; - Result := ondragstart(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonbeforeupdate: WordBool; -begin - if not Assigned(onbeforeupdate) then System.Exit; - Result := onbeforeupdate(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonafterupdate; -begin - if not Assigned(onafterupdate) then System.Exit; - onafterupdate(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonerrorupdate: WordBool; -begin - if not Assigned(onerrorupdate) then System.Exit; - Result := onerrorupdate(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonrowexit: WordBool; -begin - if not Assigned(onrowexit) then System.Exit; - Result := onrowexit(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonrowenter; -begin - if not Assigned(onrowenter) then System.Exit; - onrowenter(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doondatasetchanged; -begin - if not Assigned(ondatasetchanged) then System.Exit; - ondatasetchanged(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doondataavailable; -begin - if not Assigned(ondataavailable) then System.Exit; - ondataavailable(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doondatasetcomplete; -begin - if not Assigned(ondatasetcomplete) then System.Exit; - ondatasetcomplete(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonlosecapture; -begin - if not Assigned(onlosecapture) then System.Exit; - onlosecapture(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonpropertychange; -begin - if not Assigned(onpropertychange) then System.Exit; - onpropertychange(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonscroll; -begin - if not Assigned(onscroll) then System.Exit; - onscroll(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonfocus; -begin - if not Assigned(onfocus) then System.Exit; - onfocus(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonblur; -begin - if not Assigned(onblur) then System.Exit; - onblur(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonresize; -begin - if not Assigned(onresize) then System.Exit; - onresize(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doondrag: WordBool; -begin - if not Assigned(ondrag) then System.Exit; - Result := ondrag(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doondragend; -begin - if not Assigned(ondragend) then System.Exit; - ondragend(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doondragenter: WordBool; -begin - if not Assigned(ondragenter) then System.Exit; - Result := ondragenter(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doondragover: WordBool; -begin - if not Assigned(ondragover) then System.Exit; - Result := ondragover(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doondragleave; -begin - if not Assigned(ondragleave) then System.Exit; - ondragleave(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doondrop: WordBool; -begin - if not Assigned(ondrop) then System.Exit; - Result := ondrop(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonbeforecut: WordBool; -begin - if not Assigned(onbeforecut) then System.Exit; - Result := onbeforecut(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Dooncut: WordBool; -begin - if not Assigned(oncut) then System.Exit; - Result := oncut(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonbeforecopy: WordBool; -begin - if not Assigned(onbeforecopy) then System.Exit; - Result := onbeforecopy(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Dooncopy: WordBool; -begin - if not Assigned(oncopy) then System.Exit; - Result := oncopy(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonbeforepaste: WordBool; -begin - if not Assigned(onbeforepaste) then System.Exit; - Result := onbeforepaste(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonpaste: WordBool; -begin - if not Assigned(onpaste) then System.Exit; - Result := onpaste(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Dooncontextmenu: WordBool; -begin - if not Assigned(oncontextmenu) then System.Exit; - Result := oncontextmenu(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonrowsdelete; -begin - if not Assigned(onrowsdelete) then System.Exit; - onrowsdelete(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonrowsinserted; -begin - if not Assigned(onrowsinserted) then System.Exit; - onrowsinserted(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Dooncellchange; -begin - if not Assigned(oncellchange) then System.Exit; - oncellchange(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonreadystatechange; -begin - if not Assigned(onreadystatechange) then System.Exit; - onreadystatechange(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonbeforeeditfocus; -begin - if not Assigned(onbeforeeditfocus) then System.Exit; - onbeforeeditfocus(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonlayoutcomplete; -begin - if not Assigned(onlayoutcomplete) then System.Exit; - onlayoutcomplete(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonpage; -begin - if not Assigned(onpage) then System.Exit; - onpage(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonbeforedeactivate: WordBool; -begin - if not Assigned(onbeforedeactivate) then System.Exit; - Result := onbeforedeactivate(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonbeforeactivate: WordBool; -begin - if not Assigned(onbeforeactivate) then System.Exit; - Result := onbeforeactivate(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonmove; -begin - if not Assigned(onmove) then System.Exit; - onmove(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Dooncontrolselect: WordBool; -begin - if not Assigned(oncontrolselect) then System.Exit; - Result := oncontrolselect(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonmovestart: WordBool; -begin - if not Assigned(onmovestart) then System.Exit; - Result := onmovestart(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonmoveend; -begin - if not Assigned(onmoveend) then System.Exit; - onmoveend(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonresizestart: WordBool; -begin - if not Assigned(onresizestart) then System.Exit; - Result := onresizestart(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonresizeend; -begin - if not Assigned(onresizeend) then System.Exit; - onresizeend(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonmouseenter; -begin - if not Assigned(onmouseenter) then System.Exit; - onmouseenter(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonmouseleave; -begin - if not Assigned(onmouseleave) then System.Exit; - onmouseleave(Self); -end; - -function TMSHTMLHTMLInputImageEvents.Doonmousewheel: WordBool; -begin - if not Assigned(onmousewheel) then System.Exit; - Result := onmousewheel(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonactivate; -begin - if not Assigned(onactivate) then System.Exit; - onactivate(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doondeactivate; -begin - if not Assigned(ondeactivate) then System.Exit; - ondeactivate(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonfocusin; -begin - if not Assigned(onfocusin) then System.Exit; - onfocusin(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonfocusout; -begin - if not Assigned(onfocusout) then System.Exit; - onfocusout(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonload; -begin - if not Assigned(onload) then System.Exit; - onload(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonerror; -begin - if not Assigned(onerror) then System.Exit; - onerror(Self); -end; - -procedure TMSHTMLHTMLInputImageEvents.Doonabort; -begin - if not Assigned(onabort) then System.Exit; - onabort(Self); -end; - - -//SinkImplEnd// - -procedure Register; -begin - //SinkRegisterStart// -{ RegisterComponents ('ActiveX', [TMSHTMLHTMLElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLElementEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLLinkElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLLinkElementEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLFormElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLFormElementEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLImgEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLImgEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLTextContainerEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLTextContainerEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLAnchorEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLAnchorEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLLabelEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLLabelEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLSelectElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLSelectElementEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLInputTextElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLInputTextElementEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLOptionButtonElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLButtonElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLButtonElementEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLMarqueeElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLMarqueeElementEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLWindowEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLWindowEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLDocumentEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLDocumentEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLDWebBridgeEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLControlElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLControlElementEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLMapEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLMapEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLAreaEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLAreaEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLTableEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLTableEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLScriptEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLScriptEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLObjectElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLObjectElementEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLFrameSiteEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLFrameSiteEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLStyleElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLStyleElementEvents2]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLNamespaceEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLInputFileElementEvents]); - RegisterComponents ('ActiveX', [TMSHTMLHTMLInputImageEvents]);} - //SinkRegisterEnd// -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/MenuContext.pas b/windows/src/ext/embeddedwb/Source/MenuContext.pas deleted file mode 100644 index 6084d73e8a..0000000000 --- a/windows/src/ext/embeddedwb/Source/MenuContext.pas +++ /dev/null @@ -1,586 +0,0 @@ -//************************************************************** -// * -// MenuContext * * -// Freeware unit * -// Eran Bodankin - (bsalsa) - bsalsa@gmail.com * -// * -// based on Code ideas by * -// Brad Stowers - bstowers@pobox.com * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -{*******************************************************************************} -//$Id: MenuContext.pas,v 1.2 2006/12/05 11:56:31 bsalsa Exp $ - -unit MenuContext; - -interface - -uses - Windows, Classes, ShlObj, ActiveX; - -type - PPIDLArray = ^TPIDLArray; - TPIDLArray = array[0..0] of PItemIDList; - TInterfaceCommand = (icContextMenu, icProperties, icDefaultAction, icVerb); - -function DisplayContextMenu(const Filename: string; Parent: Hwnd; Pos: TPoint): boolean; overload; -function DisplayContextMenu(const Directory: string; Items: TStringList; Parent: Hwnd; - Pos: TPoint): boolean; overload; -function DisplayContextMenu(AParent: IShellFolder; var APIDL: PItemIDList; Attr: ULONG; - Parent: Hwnd; Pos: TPoint; PidlCount: integer): boolean; overload; -function DisplayPropertiesDialog(const Filename: string; Parent: Hwnd): boolean; overload; -function DisplayPropertiesDialog(const Directory: string; Items: TStringList; - Parent: Hwnd): boolean; overload; -function DisplayPropertiesDialog(AParent: IShellFolder; var APIDL: PItemIDList; - Attr: ULONG; Parent: Hwnd; PidlCount: integer): boolean; overload; -function PerformDefaultAction(const Filename: string; Parent: Hwnd): boolean; overload; -function PerformDefaultAction(const Directory: string; Items: TStringList; - Parent: Hwnd): boolean; overload; -function PerformDefaultAction(AParent: IShellFolder; var APIDL: PItemIDList; - Attr: ULONG; Parent: Hwnd; PidlCount: integer): boolean; overload; -function PerformVerb(const Verb, Filename: string; Parent: Hwnd): boolean; overload; -function PerformVerb(const Verb, Directory: string; Items: TStringList; - Parent: Hwnd): boolean; overload; -function PerformVerb(const Verb: string; AParent: IShellFolder; var APIDL: PItemIDList; - Attr: ULONG; Parent: Hwnd; PidlCount: integer): boolean; overload; -function GetPIDLAndShellFolder(Path: string; out Folder: IShellFolder; - var PIDL: PItemIDList; ShellMalloc: IMalloc; Parent: Hwnd): boolean; - -implementation - -uses - SysUtils, Forms, Controls; - -var - IsCM3: Boolean; - -function MenuCallbackProc(Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LResult; stdcall; export; -const - WM_CREATE = $0001; - WM_DRAWITEM = $002B; - WM_MEASUREITEM = $002C; - WM_INITMENUPOPUP = $0117; -var - CM2: IContextMenu2; - CM3: IContextMenu3; -begin - case Msg of - WM_CREATE: - begin - if IsCM3 then - begin - CM3 := IContextMenu3(PCreateStruct(lParam).lpCreateParams); - SetWindowLong(Wnd, GWL_USERDATA, LongInt(CM3)); - end - else - begin - CM2 := IContextMenu2(PCreateStruct(lParam).lpCreateParams); - SetWindowLong(Wnd, GWL_USERDATA, LongInt(CM2)); - end; - Result := DefWindowProc(Wnd, Msg, wParam, lParam); - end; - WM_DRAWITEM, - WM_MEASUREITEM, - WM_INITMENUPOPUP: - begin - if IsCM3 then - begin - CM3 := IContextMenu3(GetWindowLong(Wnd, GWL_USERDATA)); - Assert(CM3 <> nil, 'nil Context Menu!'); - CM3.HandleMenuMsg2(Msg, wParam, lParam, Result); - end - else - begin - CM2 := IContextMenu2(GetWindowLong(Wnd, GWL_USERDATA)); - Assert(CM2 <> nil, 'Nil Context Menu!'); - CM2.HandleMenuMsg(Msg, wParam, lParam); - end; - if Msg = WM_INITMENUPOPUP then - Result := 0 - else - Result := 1; - end; - else - Result := DefWindowProc(Wnd, Msg, wParam, lParam); - end; -end; - -function HasWildcards(const s: string): boolean; -begin - Result := (StrScan(PChar(s), '*') <> nil) or (StrScan(PChar(s), '?') <> nil); -end; - -function InvokeInterfaceElement(Filename: string; AFolder: IShellFolder; - var APIDL: PItemIDList; AnAttr: ULONG; Cmd: TInterfaceCommand; - const Verb: string; Parent: HWND; Pos: TPoint; PidlCount: integer): boolean; - - function HandleContextMenu(const CtxMenu: IContextMenu; Attr: ULONG; HaveCM2: boolean): boolean; - var - Popup: HMenu; - ICI: TCMInvokeCommandInfo; - MenuCmd: Cardinal; - CallbackWnd: HWnd; - Temp: HWnd; - AWndClass: TWndClass; - begin - Result := False; - CallbackWnd := 0; - FillChar(ICI, SizeOf(TCMInvokeCommandInfo), #0); - with ICI do - begin - cbSize := SizeOf(TCMInvokeCommandInfo); - hWnd := Parent; - nShow := SW_SHOWNORMAL; - end; - case Cmd of - icContextMenu: - begin - Popup := CreatePopupMenu; - try - if Succeeded(CtxMenu.QueryContextMenu(Popup, 0, 1, $7FFF, CMF_EXPLORE)) then - begin - if HaveCM2 then - begin - FillChar(AWndClass, SizeOf(AWndClass), #0); - with AWndClass do - begin - lpszClassName := 'ItemPropMenuCallbackHelper'; - Style := CS_PARENTDC; - lpfnWndProc := @MenuCallbackProc; - hInstance := HInstance; - end; - Windows.RegisterClass(AWndClass); - CallbackWnd := CreateWindow('ItemPropMenuCallbackHelper', - 'ItemPropCallbackProcessor', WS_POPUPWINDOW, 0, 0, 0, 0, 0, - 0, HInstance, Pointer(CtxMenu)); - end; - Result := TRUE; - if CallbackWnd = 0 then - Temp := Parent - else - Temp := CallbackWnd; - MenuCmd := Cardinal(TrackPopupMenuEx(Popup, TPM_LEFTALIGN or - TPM_RETURNCMD or TPM_RIGHTBUTTON, Pos.x, Pos.y, Temp, nil)); - if MenuCmd <> 0 then - begin - ICI.lpVerb := PAnsiChar(MakeIntResource(MenuCmd - 1)); - Result := Succeeded(CtxMenu.InvokeCommand(ICI)); - end; - end; - finally - DestroyMenu(Popup); - if CallbackWnd <> 0 then - DestroyWindow(CallbackWnd); - end; - end; - icVerb: - begin - ICI.lpVerb := PAnsiChar(AnsiString(Verb)); - Result := Succeeded(CtxMenu.InvokeCommand(ICI)); - end; - icProperties: - begin - if (Attr and SFGAO_HASPROPSHEET) <> 0 then - begin - ICI.lpVerb := 'properties'; - Result := Succeeded(CtxMenu.InvokeCommand(ICI)); - end; - end; - icDefaultAction: - begin - Popup := CreatePopupMenu; - if Succeeded(CtxMenu.QueryContextMenu(Popup, 0, 1, $7FFF, - CMF_DEFAULTONLY)) then - begin - MenuCmd := GetMenuDefaultItem(Popup, 0, 0); - if MenuCmd <> $FFFFFFFF then - begin - ICI.lpVerb := PAnsiChar(MakeIntResource(MenuCmd - 1)); - Result := Succeeded(CtxMenu.InvokeCommand(ICI)); - end; - end; - end; - end; - end; - - function HandleFromPIDLs(Parent: HWND; SubFolder: IShellFolder; var ItemID: PItemIDList; - Attr: ULONG; PidlCount: integer): boolean; - const - IID_IContextMenu3: TGUID = (D1: $BCFCE0A0; D2: $EC17; D3: $11D0; D4: ($8D, $10, $00, $A0, $C9, $0F, $27, $19)); - var - HaveCM2: boolean; - ContextMenu: IContextMenu; - ContextMenu2: IContextMenu2; - ContextMenu3: IContextMenu3; - begin - Result := False; - HaveCM2 := False; - if Succeeded(SubFolder.GetUIObjectOf(Parent, PidlCount, ItemID, - IID_IContextMenu, nil, pointer(ContextMenu))) then - begin - if Succeeded(ContextMenu.QueryInterface(IID_IContextMenu2, - pointer(ContextMenu2))) then - begin - ContextMenu := ContextMenu2; - HaveCM2 := TRUE; - if Succeeded(ContextMenu.QueryInterface(IID_IContextMenu3, - pointer(ContextMenu3))) then - begin - ContextMenu := ContextMenu3; - IsCM3 := TRUE; - end; - end; - try - Result := HandleContextMenu(ContextMenu, Attr, HaveCM2); - finally - end; - end; - end; -var - ShellMalloc: IMalloc; - SubFolder: IShellFolder; - ShellFolder: IShellFolder; - FolderID: pItemIDList; - ItemID: pItemIDList; - Eaten, Attr: ULONG; - oleWild: widestring; - oleAll: widestring; - oleSubDir: widestring; - oleFilename: widestring; - OldCursor: TCursor; - JustName: string; - EnumList: IEnumIDList; - CompID: pItemIDList; - CompFolder: IShellFolder; - Fetched: ULONG; - SR: TSearchRec; - WildFiles: TStringList; - WildPIDLs: PPIDLArray; - Count: Integer; - x: Integer; -begin - IsCM3 := False; - Result := False; - OldCursor := Screen.Cursor; - Screen.Cursor := crHourglass; - try - if (APIDL <> nil) then - begin - Result := HandleFromPIDLs(Parent, AFolder, APIDL, AnAttr, PidlCount); - end - else - begin - SHGetMalloc(ShellMalloc); - try - JustName := ExtractFileName(FileName); - oleSubDir := ExtractFilePath(Filename); - oleFilename := JustName; - if Succeeded(SHGetDesktopFolder(ShellFolder)) and - Succeeded(ShellFolder.ParseDisplayName(Parent, nil, - PWideChar(oleSubDir), Eaten, FolderID, Attr)) then - if Succeeded(ShellFolder.BindToObject(FolderID, nil, - IID_IShellFolder, pointer(SubFolder))) then - if HasWildcards(JustName) then - begin - WildFiles := TStringList.Create; - try - if FindFirst(Filename, faAnyFile, SR) = 0 then - begin - WildFiles.Add(SR.Name); - while FindNext(SR) = 0 do - WildFiles.Add(SR.Name); - FindClose(SR); - end; - if WildFiles.Count > 0 then - begin - Count := 0; - GetMem(WildPIDLs, SizeOf(PItemIDList) * WildFiles.Count); - try - for x := 0 to WildFiles.Count - 1 do - begin - oleWild := StringToOLEStr(WildFiles[x]); - if Succeeded(SubFolder.ParseDisplayName(Parent, - nil, PWideChar(oleWild), Eaten, - WildPIDLs^[Count], Attr)) then - Inc(Count); - end; - Result := HandleFromPIDLS(Parent, SubFolder, - WildPIDLs^[0], Attr, Count); - finally - for x := 0 to Count - 1 do - ShellMalloc.Free(WildPIDLs^[x]); - FreeMem(WildPIDLs); - end; - end; - finally - WildFiles.Free; - end; - end - else - if Succeeded(SubFolder.ParseDisplayName(Parent, nil, - PWideChar(oleFilename), Eaten, ItemID, Attr)) then - begin - try - Result := HandleFromPIDLS(Parent, SubFolder, ItemID, Attr, 1); - finally - ShellMalloc.Free(ItemID); - end; - end - else - begin - oleAll := Filename; - if (Succeeded(ShellFolder.EnumObjects(Parent, SHCONTF_FOLDERS, EnumList))) and - (EnumList.Next(1, CompID, Fetched) = S_OK) then - begin - if Succeeded(ShellFolder.BindToObject(CompID, nil, - IID_IShellFolder, pointer(CompFolder))) and - Succeeded(CompFolder.ParseDisplayName(Parent, nil, - PWideChar(oleAll), Eaten, ItemID, Attr)) then - try - Result := HandleFromPIDLS(Parent, CompFolder, ItemID, - Attr, 1); - finally - ShellMalloc.Free(ItemID); - end; - end; - - end; - finally - ShellMalloc.Free(FolderID); - ShellMalloc._Release; - end; - end; - finally - Screen.Cursor := OldCursor; - end; -end; - -function InvokeListInterfaceElement(const Directory: string; Items: TStringList; - Parent: HWND; Pos: TPoint; Cmd: TInterfaceCommand; const Verb: string): boolean; -var - ShellMalloc: IMalloc; - SubFolder, ShellFolder: IShellFolder; - FolderID: PItemIDList; - Eaten, Attr: ULONG; - oleSubDir, oleFilename: widestring; - ItemPIDLs: PPIDLArray; - Count, x: Integer; -begin - Result := False; - if (Items = nil) or (Items.Count < 1) then Exit; - Count := 0; - SHGetMalloc(ShellMalloc); - if Succeeded(SHGetDesktopFolder(ShellFolder)) then - oleSubDir := Directory; - if Succeeded(ShellFolder.ParseDisplayName(Parent, nil, - PWideChar(oleSubDir), Eaten, FolderID, Attr)) and - Succeeded(ShellFolder.BindToObject(FolderID, nil, IID_IShellFolder, - pointer(SubFolder))) then - Count := 0; - GetMem(ItemPIDLs, SizeOf(PItemIDList) * Items.Count); - try - for x := 0 to Items.Count - 1 do - begin - oleFilename := Items[x]; - if Succeeded(SubFolder.ParseDisplayName(Parent, nil, PWideChar(oleFilename), Eaten, ItemPIDLs^[Count], Attr)) then - Inc(Count); - end; - Result := InvokeInterfaceElement('', SubFolder, ItemPIDLs^[0], Attr, - Cmd, Verb, Parent, Pos, Count); - finally - for x := 0 to Count - 1 do - ShellMalloc.Free(ItemPIDLs^[x]); - FreeMem(ItemPIDLs); - end; - ShellMalloc.Free(FolderID); - ShellMalloc._Release; -end; - -function NextPIDL(PIDL: PItemIDList): PItemIDList; -begin - if PIDL.mkid.cb > 0 then - Result := PItemIDList(Longint(PIDL) + PIDL.mkid.cb) - else - Result := nil; -end; - -function CopyPidl(APidl: PItemIDList; ShellMalloc: IMalloc): PItemIDList; -var - CB: UINT; -begin - Result := nil; - CB := APidl.mkid.cb + SizeOf(APidl.mkid.cb); - if NextPidl(APidl)^.mkid.cb <> 0 then - Exit; - Result := ShellMalloc.Alloc(CB); - if Result <> nil then - begin - FillChar(Result^, CB, #0); - Move(APidl^, Result^, APidl.mkid.cb); - end; -end; - -function GetPIDLAndShellFolder(Path: string; out Folder: IShellFolder; - var PIDL: PItemIDList; ShellMalloc: IMalloc; Parent: HWND): boolean; -var - DesktopFolder: IShellFolder; - WidePath: WideString; - Eaten: ULONG; - pidlNext, pidlLast, pidlFull: PItemIDList; - Attrs: ULONG; - CurFolder, NextFolder: IShellFolder; - SaveCB: UINT; -begin - Result := False; - pidlFull := nil; - if Succeeded(SHGetDesktopFolder(DesktopFolder)) then - begin - WidePath := Path; - if Succeeded(DesktopFolder.ParseDisplayName(Parent, nil, PWideChar(WidePath), Eaten, - pidlFull, Attrs)) then - begin - if Succeeded(DesktopFolder.QueryInterface(IID_IShellFolder, CurFolder)) then - begin - pidlNext := NextPidl(pidlFull); - pidlLast := pidlFull; - while pidlNext^.mkid.cb <> 0 do - begin - Result := TRUE; - SaveCB := pidlNext^.mkid.cb; - pidlNext^.mkid.cb := 0; - if not Succeeded(CurFolder.BindToObject(pidlLast, nil, IID_IShellFolder, - pointer(NextFolder))) then - begin - Result := False; - Break; - end; - pidlNext^.mkid.cb := SaveCB; - CurFolder := NextFolder; - pidlLast := pidlNext; - pidlNext := NextPidl(pidlNext); - end; - PIDL := CopyPidl(pidlLast, ShellMalloc); - Folder := CurFolder; - end; - end; - end; - if pidlFull <> nil then - ShellMalloc.Free(pidlFull); -end; - -function DisplayContextMenu(const Filename: string; Parent: Hwnd; Pos: TPoint): boolean; -var - Dummy: PItemIDList; -begin - Dummy := nil; - Result := InvokeInterfaceElement(Filename, nil, Dummy, 0, icContextMenu, '', HWND(Parent), Pos, 1); -end; - -function DisplayContextMenu(const Directory: string; Items: TStringList; - Parent: Hwnd; Pos: TPoint): boolean; overload; -begin - Result := InvokeListInterfaceElement(Directory, Items, HWND(Parent), Pos, icContextMenu, ''); -end; - -function DisplayContextMenu(AParent: IShellFolder; var APIDL: PItemIDList; - Attr: ULONG; Parent: Hwnd; Pos: TPoint; PidlCount: integer): boolean; -begin - Result := InvokeInterfaceElement('', AParent, APIDL, Attr, icContextMenu, '', - HWND(Parent), Pos, PidlCount); -end; - -function DisplayPropertiesDialog(const Filename: string; Parent: Hwnd): boolean; -var - Dummy: PItemIDList; -begin - Dummy := nil; - Result := InvokeInterfaceElement(Filename, nil, Dummy, 0, icProperties, '', - HWND(Parent), Point(0, 0), 1); -end; - -function DisplayPropertiesDialog(const Directory: string; Items: TStringList; - Parent: Hwnd): boolean; overload; -begin - Result := InvokeListInterfaceElement(Directory, Items, HWND(Parent), Point(0, 0), icProperties, ''); -end; - -function DisplayPropertiesDialog(AParent: IShellFolder; var APIDL: PItemIDList; - Attr: ULONG; Parent: Hwnd; PidlCount: integer): boolean; -begin - Result := InvokeInterfaceElement('', AParent, APIDL, Attr, icProperties, '', - HWND(Parent), Point(0, 0), PidlCount); -end; - -function PerformDefaultAction(const Filename: string; Parent: Hwnd): boolean; -var - Dummy: PItemIDList; -begin - Dummy := nil; - Result := InvokeInterfaceElement(Filename, nil, Dummy, 0, icDefaultAction, '', - HWND(Parent), Point(0, 0), 1); -end; - -function PerformDefaultAction(const Directory: string; Items: TStringList; - Parent: Hwnd): boolean; overload; -begin - Result := InvokeListInterfaceElement(Directory, Items, HWND(Parent), - Point(0, 0), icDefaultAction, ''); -end; - -function PerformDefaultAction(AParent: IShellFolder; var APIDL: PItemIDList; - Attr: ULONG; Parent: Hwnd; PidlCount: integer): boolean; -begin - Result := InvokeInterfaceElement('', AParent, APIDL, Attr, icDefaultAction, - '', HWND(Parent), Point(0, 0), PidlCount); -end; - -function PerformVerb(const Verb, Filename: string; Parent: Hwnd): boolean; -var - Dummy: PItemIDList; -begin - Dummy := nil; - Result := InvokeInterfaceElement(Filename, nil, Dummy, 0, icVerb, Verb, - HWND(Parent), Point(0, 0), 1); -end; - -function PerformVerb(const Verb, Directory: string; Items: TStringList; Parent: Hwnd): boolean; -begin - Result := InvokeListInterfaceElement(Directory, Items, HWND(Parent), - Point(0, 0), icVerb, Verb); -end; - -function PerformVerb(const Verb: string; AParent: IShellFolder; var APIDL: PItemIDList; - Attr: ULONG; Parent: Hwnd; PidlCount: integer): boolean; -begin - Result := InvokeInterfaceElement('', AParent, APIDL, Attr, icVerb, Verb, - HWND(Parent), Point(0, 0), PidlCount); -end; - -initialization - OLEInitialize(nil); -finalization - OLEUninitialize; -end. diff --git a/windows/src/ext/embeddedwb/Source/Mshtml_Ewb.pas b/windows/src/ext/embeddedwb/Source/Mshtml_Ewb.pas deleted file mode 100644 index cd232c5f24..0000000000 --- a/windows/src/ext/embeddedwb/Source/Mshtml_Ewb.pas +++ /dev/null @@ -1,31738 +0,0 @@ -//************************************************************* -// EwbBehaviorsComp * -// * -// Freeware Component * -// For Delphi 5 to XE * -// by * -// Eran Bodankin * -// Developing Team: * -// Serge Voloshenyuk (SergeV@bsalsa.com) * -// Eran Bodankin (bsalsa) -(bsalsa@gmail.com) * -// * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -//************************************************************* -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 3 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -{********************************** - *** IMPORTANT *** - ********************************** -This file has been modified from it's original because TLIBIMP did not - import the file correctly. - The command line used to import this file was as follows: - The installed version of IE for this import was IE 6.0.2600.0000 - tlibimp -Hs- -Hr- -Fe- \WINNT\SYSTEM32\mshtml.tlb - } -//$Id: Mshtml_Ewb.pas,v 1.2.2.1 2006/11/29 22:13:01 sergev Exp $ - -unit MSHTML_EWB; - -{$I EWB.inc} -{$IFDEF DELPHI6_UP} -{$WARN UNIT_PLATFORM OFF} -{$ENDIF} -// ************************************************************************ // -// WARNING -// ------- -// The types declared in this file were generated from data read from a -// Type Library. If this type library is explicitly or indirectly (via -// another type library referring to this type library) re-imported, or the -// 'Refresh' command of the Type Library Editor activated while editing the -// Type Library, the contents of this file will be regenerated and all -// manual modifications will be lost. -// ************************************************************************ // - -// PASTLWTR : 1.2 -// File generated on 8/9/2002 3:26:08 PM from Type Library described below. - -// ************************************************************************ // -// Type Lib: \WINNT\SYSTEM32\mshtml.tlb (1) -// LIBID: {3050F1C5-98B5-11CF-BB82-00AA00BDCE0B} -// LCID: 0 -// Helpfile: -// HelpString: Microsoft HTML Object Library -// DepndLst: -// (1) v2.0 stdole, (C:\WINNT\System32\stdole2.tlb) -// Errors: -// Hint: Member 'type' of 'IHTMLEventObj' changed to 'type_' -// Hint: Parameter 'String' of IHTMLElement.toString changed to 'String_' -// Hint: Parameter 'String' of IHTMLStyle.toString changed to 'String_' -// Hint: Parameter 'String' of IHTMLDOMTextNode.toString changed to 'String_' -// Hint: Enum Member 'htmlInputImage' of '_htmlInput' changed to 'htmlInputImage_' -// Hint: Parameter 'String' of IHTMLElementCollection.toString changed to 'String_' -// Hint: Member 'type' of 'IHTMLStyleSheet' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLStyleSheet' changed to 'type_' -// Hint: Member 'type' of 'IHTMLLinkElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLLinkElement' changed to 'type_' -// Hint: Parameter 'Unit' of IHTMLTxtRange.expand changed to 'Unit_' -// Hint: Parameter 'Unit' of IHTMLTxtRange.move changed to 'Unit_' -// Hint: Parameter 'Unit' of IHTMLTxtRange.moveStart changed to 'Unit_' -// Hint: Parameter 'Unit' of IHTMLTxtRange.moveEnd changed to 'Unit_' -// Hint: Parameter 'String' of IHTMLTxtRange.findText changed to 'String_' -// Hint: Member 'type' of 'IHTMLAnchorElement2' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLAnchorElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLUListElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLUListElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLOListElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLOListElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLLIElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLLIElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLSelectElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLSelectElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLSelectionObject' changed to 'type_' -// Hint: Member 'label' of 'IHTMLOptionElement3' changed to 'label_' -// Hint: Member 'label' of 'DispHTMLOptionElement' changed to 'label_' -// Hint: Member 'type' of 'IHTMLInputElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLInputButtonElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLInputHiddenElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLInputTextElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLInputFileElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLOptionButtonElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLInputImage' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLInputElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLTextAreaElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLTextAreaElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLRichtextElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLButtonElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLButtonElement' changed to 'type_' -// Hint: Parameter 'String' of IOmNavigator.toString changed to 'String_' -// Hint: Parameter 'String' of IHTMLLocation.toString changed to 'String_' -// Hint: Member 'repeat' of 'IHTMLEventObj2' changed to 'repeat_' -// Hint: Member 'type' of 'IHTMLEventObj2' changed to 'type_' -// Hint: Member 'repeat' of 'DispCEventObj' changed to 'repeat_' -// Hint: Member 'type' of 'DispCEventObj' changed to 'type_' -// Hint: Parameter 'String' of IHTMLDocument2.toString changed to 'String_' -// Hint: Parameter 'String' of IHTMLWindow2.toString changed to 'String_' -// Hint: Member 'implementation' of 'IHTMLDocument5' changed to 'implementation_' -// Hint: Member 'implementation' of 'DispHTMLDocument' changed to 'implementation_' -// Hint: Member 'type' of 'IHTMLScriptElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLScriptElement' changed to 'type_' -// Hint: Member 'object' of 'IHTMLObjectElement' changed to 'object_' -// Hint: Member 'type' of 'IHTMLObjectElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLParamElement' changed to 'type_' -// Hint: Member 'object' of 'DispHTMLObjectElement' changed to 'object_' -// Hint: Member 'type' of 'DispHTMLObjectElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLParamElement' changed to 'type_' -// Hint: Parameter 'object' of IHTMLOptionsHolder.isApartmentModel changed to 'object_' -// Hint: Member 'type' of 'IHTMLStyleElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLStyleElement' changed to 'type_' -// Hint: Parameter 'String' of IHTMLDialog.toString changed to 'String_' -// Hint: Member 'type' of 'DispIHTMLInputButtonElement' changed to 'type_' -// Hint: Member 'type' of 'DispIHTMLInputTextElement' changed to 'type_' -// Hint: Member 'type' of 'DispIHTMLInputFileElement' changed to 'type_' -// Hint: Member 'type' of 'DispIHTMLOptionButtonElement' changed to 'type_' -// Hint: Member 'type' of 'DispIHTMLInputImage' changed to 'type_' -// Hint: Member 'type' of 'IHTMLEventObj' changed to 'type_' -// Hint: Enum Member 'htmlInputImage' of '_htmlInput' changed to 'htmlInputImage_' -// Hint: Member 'type' of 'IHTMLStyleSheet' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLStyleSheet' changed to 'type_' -// Hint: Member 'type' of 'IHTMLLinkElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLLinkElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLAnchorElement2' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLAnchorElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLUListElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLUListElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLOListElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLOListElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLLIElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLLIElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLSelectElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLSelectElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLSelectionObject' changed to 'type_' -// Hint: Member 'label' of 'IHTMLOptionElement3' changed to 'label_' -// Hint: Member 'label' of 'DispHTMLOptionElement' changed to 'label_' -// Hint: Member 'type' of 'IHTMLInputElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLInputButtonElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLInputHiddenElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLInputTextElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLInputFileElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLOptionButtonElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLInputImage' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLInputElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLTextAreaElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLTextAreaElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLRichtextElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLButtonElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLButtonElement' changed to 'type_' -// Hint: Member 'repeat' of 'IHTMLEventObj2' changed to 'repeat_' -// Hint: Member 'type' of 'IHTMLEventObj2' changed to 'type_' -// Hint: Member 'repeat' of 'DispCEventObj' changed to 'repeat_' -// Hint: Member 'type' of 'DispCEventObj' changed to 'type_' -// Hint: Member 'implementation' of 'IHTMLDocument5' changed to 'implementation_' -// Hint: Member 'implementation' of 'DispHTMLDocument' changed to 'implementation_' -// Hint: Member 'type' of 'IHTMLScriptElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLScriptElement' changed to 'type_' -// Hint: Member 'object' of 'IHTMLObjectElement' changed to 'object_' -// Hint: Member 'type' of 'IHTMLObjectElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLParamElement' changed to 'type_' -// Hint: Member 'object' of 'DispHTMLObjectElement' changed to 'object_' -// Hint: Member 'type' of 'DispHTMLObjectElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLParamElement' changed to 'type_' -// Hint: Member 'type' of 'IHTMLStyleElement' changed to 'type_' -// Hint: Member 'type' of 'DispHTMLStyleElement' changed to 'type_' -// Hint: Member 'type' of 'DispIHTMLInputButtonElement' changed to 'type_' -// Hint: Member 'type' of 'DispIHTMLInputTextElement' changed to 'type_' -// Hint: Member 'type' of 'DispIHTMLInputFileElement' changed to 'type_' -// Hint: Member 'type' of 'DispIHTMLOptionButtonElement' changed to 'type_' -// Hint: Member 'type' of 'DispIHTMLInputImage' changed to 'type_' -// Error creating palette bitmap of (TScriptlet) : Error reading control bitmap -// ************************************************************************ // -{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. - -{$WRITEABLECONST ON} - -{$IFDEF DELPHI6_UP} -{$VARPROPSETTER ON} -{$WARN SYMBOL_PLATFORM OFF} -{$ENDIF} -{ $TYPEDADDRESS OFF}// Unit must be compiled without type-checked pointers. -{ $WARN UNIT_PLATFORM OFF} - -{ $VARPROPSETTER ON}// You need to download and install the second D6 patch in order for this to compile. -{ $ENDIF} -{ $TYPEDADDRESS OFF}// Unit must be compiled without type-checked pointers. -{ $WRITEABLECONST ON} - -interface - -uses Windows, ActiveX, Imm; - -// *********************************************************************// -// GUIDS declared in the TypeLibrary. Following prefixes are used: -// Type Libraries : LIBID_xxxx -// DISPInterfaces : DIID_xxxx -// Non-DISP interfaces: IID_xxxx -// *********************************************************************// -const - // TypeLibrary Major and minor versions - MSHTMLMajorVersion = 4; - MSHTMLMinorVersion = 0; - - LIBID_MSHTML: TGUID = '{3050F1C5-98B5-11CF-BB82-00AA00BDCE0B}'; - - IID_IHTMLEventObj: TGUID = '{3050F32D-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLElement: TGUID = '{3050F1FF-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyle: TGUID = '{3050F25E-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFiltersCollection: TGUID = '{3050F3EE-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorSite: TGUID = '{3050F427-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehavior: TGUID = '{3050F425-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorFactory: TGUID = '{3050F429-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorSiteOM: TGUID = '{3050F489-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorRender: TGUID = '{3050F4AA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorSiteRender: TGUID = '{3050F4A7-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyle2: TGUID = '{3050F4A2-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyle3: TGUID = '{3050F656-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyle4: TGUID = '{3050F816-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLRuleStyle: TGUID = '{3050F3CF-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLRuleStyle2: TGUID = '{3050F4AC-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLRuleStyle3: TGUID = '{3050F657-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLRuleStyle4: TGUID = '{3050F817-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLStyle: TGUID = '{3050F55A-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLStyle: TGUID = '{3050F285-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLRuleStyle: TGUID = '{3050F55C-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLRuleStyle: TGUID = '{3050F3D0-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLRenderStyle: TGUID = '{3050F6AE-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLRenderStyle: TGUID = '{3050F58B-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLRenderStyle: TGUID = '{3050F6AA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLCurrentStyle: TGUID = '{3050F3DB-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLCurrentStyle2: TGUID = '{3050F658-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLCurrentStyle3: TGUID = '{3050F818-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLCurrentStyle: TGUID = '{3050F557-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLCurrentStyle: TGUID = '{3050F3DC-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLRect: TGUID = '{3050F4A3-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLRectCollection: TGUID = '{3050F4A4-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDOMNode: TGUID = '{3050F5DA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDOMNode2: TGUID = '{3050F80B-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDOMAttribute: TGUID = '{3050F4B0-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDOMAttribute2: TGUID = '{3050F810-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDOMTextNode: TGUID = '{3050F4B1-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDOMTextNode2: TGUID = '{3050F809-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDOMImplementation: TGUID = '{3050F80D-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLDOMAttribute: TGUID = '{3050F564-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDOMAttribute: TGUID = '{3050F4B2-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLDOMTextNode: TGUID = '{3050F565-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDOMTextNode: TGUID = '{3050F4BA-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLDOMImplementation: TGUID = '{3050F58F-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDOMImplementation: TGUID = '{3050F80E-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAttributeCollection: TGUID = '{3050F4C3-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAttributeCollection2: TGUID = '{3050F80A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDOMChildrenCollection: TGUID = '{3050F5AB-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLAttributeCollection: TGUID = '{3050F56C-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLAttributeCollection: TGUID = '{3050F4CC-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispDOMChildrenCollection: TGUID = '{3050F577-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_DOMChildrenCollection: TGUID = '{3050F5AA-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLElementEvents2: TGUID = '{3050F60F-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLElementEvents: TGUID = '{3050F33C-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLElementCollection: TGUID = '{3050F21F-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLElement2: TGUID = '{3050F434-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLElement3: TGUID = '{3050F673-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLElement4: TGUID = '{3050F80F-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLElementRender: TGUID = '{3050F669-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLUniqueName: TGUID = '{3050F4D0-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDatabinding: TGUID = '{3050F3F2-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDocument: TGUID = '{626FC520-A41E-11CF-A731-00A0C9082637}'; - IID_IHTMLElementDefaults: TGUID = '{3050F6C9-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLDefaults: TGUID = '{3050F58C-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDefaults: TGUID = '{3050F6C8-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTCDefaultDispatch: TGUID = '{3050F4FD-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTCPropertyBehavior: TGUID = '{3050F5DF-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTCMethodBehavior: TGUID = '{3050F631-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTCEventBehavior: TGUID = '{3050F4FF-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTCAttachBehavior: TGUID = '{3050F5F4-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTCAttachBehavior2: TGUID = '{3050F7EB-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTCDescBehavior: TGUID = '{3050F5DC-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTCDefaultDispatch: TGUID = '{3050F573-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTCDefaultDispatch: TGUID = '{3050F4FC-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTCPropertyBehavior: TGUID = '{3050F57F-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTCPropertyBehavior: TGUID = '{3050F5DE-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTCMethodBehavior: TGUID = '{3050F587-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTCMethodBehavior: TGUID = '{3050F630-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTCEventBehavior: TGUID = '{3050F574-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTCEventBehavior: TGUID = '{3050F4FE-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTCAttachBehavior: TGUID = '{3050F583-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTCAttachBehavior: TGUID = '{3050F5F5-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTCDescBehavior: TGUID = '{3050F57E-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTCDescBehavior: TGUID = '{3050F5DD-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLUrnCollection: TGUID = '{3050F5E2-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLUrnCollection: TGUID = '{3050F580-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLGenericElement: TGUID = '{3050F4B7-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLGenericElement: TGUID = '{3050F563-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLGenericElement: TGUID = '{3050F4B8-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyleSheetRule: TGUID = '{3050F357-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyleSheetRulesCollection: TGUID = '{3050F2E5-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLStyleSheetRule: TGUID = '{3050F3CE-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLStyleSheetRulesCollection: TGUID = '{3050F3CD-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyleSheetPage: TGUID = '{3050F7EE-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyleSheetPagesCollection: TGUID = '{3050F7F0-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLStyleSheetPage: TGUID = '{3050F7EF-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLStyleSheetPagesCollection: TGUID = '{3050F7F1-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyleSheetsCollection: TGUID = '{3050F37E-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyleSheet: TGUID = '{3050F2E3-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyleSheet2: TGUID = '{3050F3D1-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLStyleSheet: TGUID = '{3050F58D-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLStyleSheet: TGUID = '{3050F2E4-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLStyleSheetsCollection: TGUID = '{3050F37F-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLLinkElementEvents2: TGUID = '{3050F61D-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLLinkElementEvents: TGUID = '{3050F3CC-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLLinkElement: TGUID = '{3050F205-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLLinkElement2: TGUID = '{3050F4E5-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLLinkElement3: TGUID = '{3050F81E-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLLinkElement: TGUID = '{3050F524-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLLinkElement: TGUID = '{3050F277-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTxtRange: TGUID = '{3050F220-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTextRangeMetrics: TGUID = '{3050F40B-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTextRangeMetrics2: TGUID = '{3050F4A6-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTxtRangeCollection: TGUID = '{3050F7ED-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLFormElementEvents2: TGUID = '{3050F614-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLFormElementEvents: TGUID = '{3050F364-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFormElement: TGUID = '{3050F1F7-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFormElement2: TGUID = '{3050F4F6-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFormElement3: TGUID = '{3050F836-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLSubmitData: TGUID = '{3050F645-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLFormElement: TGUID = '{3050F510-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLFormElement: TGUID = '{3050F251-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLControlElementEvents2: TGUID = '{3050F612-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLControlElementEvents: TGUID = '{3050F4EA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLControlElement: TGUID = '{3050F4E9-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTextElement: TGUID = '{3050F218-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLTextElement: TGUID = '{3050F537-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLTextElement: TGUID = '{3050F26A-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLTextContainerEvents2: TGUID = '{3050F624-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLTextContainerEvents: TGUID = '{1FF6AA72-5842-11CF-A707-00AA00C0098D}'; - IID_IHTMLTextContainer: TGUID = '{3050F230-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLControlRange: TGUID = '{3050F29C-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLControlRange2: TGUID = '{3050F65E-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLImgEvents2: TGUID = '{3050F616-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLImgEvents: TGUID = '{3050F25B-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLImgElement: TGUID = '{3050F240-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLImgElement2: TGUID = '{3050F826-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLImageElementFactory: TGUID = '{3050F38E-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLImg: TGUID = '{3050F51C-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLImg: TGUID = '{3050F241-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLImageElementFactory: TGUID = '{3050F38F-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLBodyElement: TGUID = '{3050F1D8-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLBodyElement2: TGUID = '{3050F5C5-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLBody: TGUID = '{3050F507-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLBody: TGUID = '{3050F24A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFontElement: TGUID = '{3050F1D9-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLFontElement: TGUID = '{3050F512-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLFontElement: TGUID = '{3050F27B-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLAnchorEvents2: TGUID = '{3050F610-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLAnchorEvents: TGUID = '{3050F29D-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAnchorElement: TGUID = '{3050F1DA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAnchorElement2: TGUID = '{3050F825-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLAnchorElement: TGUID = '{3050F502-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLAnchorElement: TGUID = '{3050F248-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLLabelEvents2: TGUID = '{3050F61C-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLLabelEvents: TGUID = '{3050F329-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLLabelElement: TGUID = '{3050F32A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLLabelElement2: TGUID = '{3050F832-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLLabelElement: TGUID = '{3050F522-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLLabelElement: TGUID = '{3050F32B-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLListElement: TGUID = '{3050F20E-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLListElement2: TGUID = '{3050F822-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLListElement: TGUID = '{3050F525-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLListElement: TGUID = '{3050F272-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLUListElement: TGUID = '{3050F1DD-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLUListElement: TGUID = '{3050F538-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLUListElement: TGUID = '{3050F269-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLOListElement: TGUID = '{3050F1DE-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLOListElement: TGUID = '{3050F52A-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLOListElement: TGUID = '{3050F270-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLLIElement: TGUID = '{3050F1E0-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLLIElement: TGUID = '{3050F523-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLLIElement: TGUID = '{3050F273-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLBlockElement: TGUID = '{3050F208-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLBlockElement2: TGUID = '{3050F823-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLBlockElement: TGUID = '{3050F506-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLBlockElement: TGUID = '{3050F281-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDivElement: TGUID = '{3050F200-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLDivElement: TGUID = '{3050F50C-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDivElement: TGUID = '{3050F27E-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDDElement: TGUID = '{3050F1F2-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLDDElement: TGUID = '{3050F50B-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDDElement: TGUID = '{3050F27F-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDTElement: TGUID = '{3050F1F3-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLDTElement: TGUID = '{3050F50D-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDTElement: TGUID = '{3050F27C-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLBRElement: TGUID = '{3050F1F0-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLBRElement: TGUID = '{3050F53A-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLBRElement: TGUID = '{3050F280-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDListElement: TGUID = '{3050F1F1-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLDListElement: TGUID = '{3050F53B-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDListElement: TGUID = '{3050F27D-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLHRElement: TGUID = '{3050F1F4-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLHRElement: TGUID = '{3050F53D-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLHRElement: TGUID = '{3050F252-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLParaElement: TGUID = '{3050F1F5-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLParaElement: TGUID = '{3050F52C-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLParaElement: TGUID = '{3050F26F-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLElementCollection2: TGUID = '{3050F5EE-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLElementCollection3: TGUID = '{3050F835-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLElementCollection: TGUID = '{3050F56B-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLElementCollection: TGUID = '{3050F4CB-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLHeaderElement: TGUID = '{3050F1F6-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLHeaderElement: TGUID = '{3050F515-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLHeaderElement: TGUID = '{3050F27A-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLSelectElementEvents2: TGUID = '{3050F622-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLSelectElementEvents: TGUID = '{3050F302-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLSelectElement: TGUID = '{3050F244-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLSelectElement2: TGUID = '{3050F5ED-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLSelectElement4: TGUID = '{3050F838-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLSelectElement: TGUID = '{3050F531-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLSelectElement: TGUID = '{3050F245-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLSelectionObject: TGUID = '{3050F25A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLSelectionObject2: TGUID = '{3050F7EC-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLOptionElement: TGUID = '{3050F211-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLOptionElement3: TGUID = '{3050F820-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLOptionElementFactory: TGUID = '{3050F38C-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLOptionElement: TGUID = '{3050F52B-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLOptionElement: TGUID = '{3050F24D-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLOptionElementFactory: TGUID = '{3050F38D-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLButtonElementEvents2: TGUID = '{3050F617-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLButtonElementEvents: TGUID = '{3050F2B3-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLInputTextElementEvents2: TGUID = '{3050F618-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLOptionButtonElementEvents2: TGUID = '{3050F619-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLInputFileElementEvents2: TGUID = '{3050F61A-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLInputImageEvents2: TGUID = '{3050F61B-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLInputTextElementEvents: TGUID = '{3050F2A7-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLOptionButtonElementEvents: TGUID = '{3050F2BD-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLInputFileElementEvents: TGUID = '{3050F2AF-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLInputImageEvents: TGUID = '{3050F2C3-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLInputElement: TGUID = '{3050F5D2-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLInputElement2: TGUID = '{3050F821-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLInputButtonElement: TGUID = '{3050F2B2-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLInputHiddenElement: TGUID = '{3050F2A4-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLInputTextElement: TGUID = '{3050F2A6-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLInputFileElement: TGUID = '{3050F2AD-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLOptionButtonElement: TGUID = '{3050F2BC-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLInputImage: TGUID = '{3050F2C2-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLInputElement: TGUID = '{3050F57D-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLInputElement: TGUID = '{3050F5D8-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTextAreaElement: TGUID = '{3050F2AA-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLTextAreaElement: TGUID = '{3050F521-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLTextAreaElement: TGUID = '{3050F2AC-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLRichtextElement: TGUID = '{3050F54D-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLRichtextElement: TGUID = '{3050F2DF-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLButtonElement: TGUID = '{3050F2BB-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLButtonElement: TGUID = '{3050F51F-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLButtonElement: TGUID = '{3050F2C6-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLMarqueeElementEvents2: TGUID = '{3050F61F-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLMarqueeElementEvents: TGUID = '{3050F2B8-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLMarqueeElement: TGUID = '{3050F2B5-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLMarqueeElement: TGUID = '{3050F527-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLMarqueeElement: TGUID = '{3050F2B9-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLHtmlElement: TGUID = '{3050F81C-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLHeadElement: TGUID = '{3050F81D-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTitleElement: TGUID = '{3050F322-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLMetaElement: TGUID = '{3050F203-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLMetaElement2: TGUID = '{3050F81F-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLBaseElement: TGUID = '{3050F204-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLIsIndexElement: TGUID = '{3050F206-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLIsIndexElement2: TGUID = '{3050F82F-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLNextIdElement: TGUID = '{3050F207-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLHtmlElement: TGUID = '{3050F560-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLHtmlElement: TGUID = '{3050F491-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLHeadElement: TGUID = '{3050F561-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLHeadElement: TGUID = '{3050F493-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLTitleElement: TGUID = '{3050F516-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLTitleElement: TGUID = '{3050F284-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLMetaElement: TGUID = '{3050F517-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLMetaElement: TGUID = '{3050F275-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLBaseElement: TGUID = '{3050F518-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLBaseElement: TGUID = '{3050F276-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLIsIndexElement: TGUID = '{3050F519-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLIsIndexElement: TGUID = '{3050F278-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLNextIdElement: TGUID = '{3050F51A-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLNextIdElement: TGUID = '{3050F279-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLBaseFontElement: TGUID = '{3050F202-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLBaseFontElement: TGUID = '{3050F504-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLBaseFontElement: TGUID = '{3050F282-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLUnknownElement: TGUID = '{3050F209-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLUnknownElement: TGUID = '{3050F539-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLUnknownElement: TGUID = '{3050F268-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IOmHistory: TGUID = '{FECEAAA2-8405-11CF-8BA1-00AA00476DA6}'; - IID_IHTMLMimeTypesCollection: TGUID = '{3050F3FC-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLPluginsCollection: TGUID = '{3050F3FD-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLOpsProfile: TGUID = '{3050F401-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IOmNavigator: TGUID = '{FECEAAA5-8405-11CF-8BA1-00AA00476DA6}'; - IID_IHTMLLocation: TGUID = '{163BB1E0-6E00-11CF-837A-48DC04C10000}'; - CLASS_HTMLHistory: TGUID = '{FECEAAA3-8405-11CF-8BA1-00AA00476DA6}'; - CLASS_CMimeTypes: TGUID = '{3050F3FE-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_CPlugins: TGUID = '{3050F3FF-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_COpsProfile: TGUID = '{3050F402-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLNavigator: TGUID = '{FECEAAA6-8405-11CF-8BA1-00AA00476DA6}'; - CLASS_HTMLLocation: TGUID = '{163BB1E1-6E00-11CF-837A-48DC04C10000}'; - IID_IHTMLBookmarkCollection: TGUID = '{3050F4CE-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDataTransfer: TGUID = '{3050F4B3-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLEventObj2: TGUID = '{3050F48B-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLEventObj3: TGUID = '{3050F680-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLEventObj4: TGUID = '{3050F814-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispCEventObj: TGUID = '{3050F558-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_CEventObj: TGUID = '{3050F48A-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLWindowEvents2: TGUID = '{3050F625-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLWindowEvents: TGUID = '{96A0A4E0-D062-11CF-94B6-00AA0060275C}'; - IID_IHTMLDocument2: TGUID = '{332C4425-26CB-11D0-B483-00C04FD90119}'; - IID_IHTMLFramesCollection2: TGUID = '{332C4426-26CB-11D0-B483-00C04FD90119}'; - IID_IHTMLWindow2: TGUID = '{332C4427-26CB-11D0-B483-00C04FD90119}'; - IID_IHTMLScreen: TGUID = '{3050F35C-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLWindow3: TGUID = '{3050F4AE-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFrameBase: TGUID = '{3050F311-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLScreen2: TGUID = '{3050F84A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLWindow4: TGUID = '{3050F6CF-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_FramesCollection: TGUID = '{3050F7F6-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLScreen: TGUID = '{3050F591-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLScreen: TGUID = '{3050F35D-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLWindow2: TGUID = '{3050F55D-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLWindow2: TGUID = '{D48A6EC6-6A4A-11CF-94A7-444553540000}'; - DIID_DispHTMLWindowProxy: TGUID = '{3050F55E-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLWindowProxy: TGUID = '{3050F391-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLDocumentEvents2: TGUID = '{3050F613-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLDocumentEvents: TGUID = '{3050F260-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDocument3: TGUID = '{3050F485-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDocument4: TGUID = '{3050F69A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDocument5: TGUID = '{3050F80C-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLDocument: TGUID = '{3050F55F-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDocument: TGUID = '{25336920-03F9-11CF-8FD0-00AA00686F13}'; - DIID_DWebBridgeEvents: TGUID = '{A6D897FF-0A95-11D1-B0BA-006008166E11}'; - IID_IWebBridge: TGUID = '{AE24FDAD-03C6-11D1-8B76-0080C744F389}'; - IID_IWBScriptControl: TGUID = '{A5170870-0CF8-11D1-8B91-0080C744F389}'; - CLASS_Scriptlet: TGUID = '{AE24FDAE-03C6-11D1-8B76-0080C744F389}'; - IID_IHTMLEmbedElement: TGUID = '{3050F25F-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLEmbed: TGUID = '{3050F52E-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLEmbed: TGUID = '{3050F25D-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLMapEvents2: TGUID = '{3050F61E-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLMapEvents: TGUID = '{3050F3BA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAreasCollection: TGUID = '{3050F383-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAreasCollection2: TGUID = '{3050F5EC-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAreasCollection3: TGUID = '{3050F837-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLMapElement: TGUID = '{3050F266-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLAreasCollection: TGUID = '{3050F56A-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLAreasCollection: TGUID = '{3050F4CA-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLMapElement: TGUID = '{3050F526-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLMapElement: TGUID = '{3050F271-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLAreaEvents2: TGUID = '{3050F611-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLAreaEvents: TGUID = '{3050F366-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAreaElement: TGUID = '{3050F265-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLAreaElement: TGUID = '{3050F503-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLAreaElement: TGUID = '{3050F283-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableCaption: TGUID = '{3050F2EB-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLTableCaption: TGUID = '{3050F508-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLTableCaption: TGUID = '{3050F2EC-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLCommentElement: TGUID = '{3050F20C-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLCommentElement2: TGUID = '{3050F813-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLCommentElement: TGUID = '{3050F50A-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLCommentElement: TGUID = '{3050F317-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLPhraseElement: TGUID = '{3050F20A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLPhraseElement2: TGUID = '{3050F824-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLSpanElement: TGUID = '{3050F3F3-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLPhraseElement: TGUID = '{3050F52D-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLPhraseElement: TGUID = '{3050F26E-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLSpanElement: TGUID = '{3050F548-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLSpanElement: TGUID = '{3050F3F5-98B4-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLTableEvents2: TGUID = '{3050F623-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLTableEvents: TGUID = '{3050F407-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableSection: TGUID = '{3050F23B-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTable: TGUID = '{3050F21E-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTable2: TGUID = '{3050F4AD-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTable3: TGUID = '{3050F829-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableCol: TGUID = '{3050F23A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableCol2: TGUID = '{3050F82A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableSection2: TGUID = '{3050F5C7-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableSection3: TGUID = '{3050F82B-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableRow: TGUID = '{3050F23C-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableRow2: TGUID = '{3050F4A1-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableRow3: TGUID = '{3050F82C-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableRowMetrics: TGUID = '{3050F413-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableCell: TGUID = '{3050F23D-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLTableCell2: TGUID = '{3050F82D-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLTable: TGUID = '{3050F532-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLTable: TGUID = '{3050F26B-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLTableCol: TGUID = '{3050F533-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLTableCol: TGUID = '{3050F26C-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLTableSection: TGUID = '{3050F534-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLTableSection: TGUID = '{3050F2E9-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLTableRow: TGUID = '{3050F535-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLTableRow: TGUID = '{3050F26D-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLTableCell: TGUID = '{3050F536-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLTableCell: TGUID = '{3050F246-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLScriptEvents2: TGUID = '{3050F621-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLScriptEvents: TGUID = '{3050F3E2-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLScriptElement: TGUID = '{3050F28B-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLScriptElement2: TGUID = '{3050F828-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLScriptElement: TGUID = '{3050F530-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLScriptElement: TGUID = '{3050F28C-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLNoShowElement: TGUID = '{3050F38A-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLNoShowElement: TGUID = '{3050F528-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLNoShowElement: TGUID = '{3050F38B-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLObjectElementEvents2: TGUID = '{3050F620-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLObjectElementEvents: TGUID = '{3050F3C4-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLObjectElement: TGUID = '{3050F24F-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLObjectElement2: TGUID = '{3050F4CD-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLObjectElement3: TGUID = '{3050F827-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLParamElement: TGUID = '{3050F83D-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLObjectElement: TGUID = '{3050F529-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLObjectElement: TGUID = '{3050F24E-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLParamElement: TGUID = '{3050F590-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLParamElement: TGUID = '{3050F83E-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLFrameSiteEvents2: TGUID = '{3050F7FF-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLFrameSiteEvents: TGUID = '{3050F800-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFrameBase2: TGUID = '{3050F6DB-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFrameBase3: TGUID = '{3050F82E-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLFrameBase: TGUID = '{3050F541-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLFrameBase: TGUID = '{3050F312-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFrameElement: TGUID = '{3050F313-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFrameElement2: TGUID = '{3050F7F5-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLFrameElement: TGUID = '{3050F513-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLFrameElement: TGUID = '{3050F314-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLIFrameElement: TGUID = '{3050F315-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLIFrameElement2: TGUID = '{3050F4E6-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLIFrame: TGUID = '{3050F51B-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLIFrame: TGUID = '{3050F316-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDivPosition: TGUID = '{3050F212-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFieldSetElement: TGUID = '{3050F3E7-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFieldSetElement2: TGUID = '{3050F833-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLLegendElement: TGUID = '{3050F3EA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLLegendElement2: TGUID = '{3050F834-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLDivPosition: TGUID = '{3050F50F-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDivPosition: TGUID = '{3050F249-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLFieldSetElement: TGUID = '{3050F545-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLFieldSetElement: TGUID = '{3050F3E8-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLLegendElement: TGUID = '{3050F546-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLLegendElement: TGUID = '{3050F3E9-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLSpanFlow: TGUID = '{3050F3E5-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLSpanFlow: TGUID = '{3050F544-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLSpanFlow: TGUID = '{3050F3E6-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFrameSetElement: TGUID = '{3050F319-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFrameSetElement2: TGUID = '{3050F5C6-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLFrameSetSite: TGUID = '{3050F514-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLFrameSetSite: TGUID = '{3050F31A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLBGsound: TGUID = '{3050F369-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLBGsound: TGUID = '{3050F53C-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLBGsound: TGUID = '{3050F370-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFontNamesCollection: TGUID = '{3050F376-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLFontSizesCollection: TGUID = '{3050F377-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLOptionsHolder: TGUID = '{3050F378-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLStyleElementEvents2: TGUID = '{3050F615-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLStyleElementEvents: TGUID = '{3050F3CB-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyleElement: TGUID = '{3050F375-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLStyleElement: TGUID = '{3050F511-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLStyleElement: TGUID = '{3050F37D-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLStyleFontFace: TGUID = '{3050F3D5-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLStyleFontFace: TGUID = '{3050F3D4-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_ICSSFilterSite: TGUID = '{3050F3ED-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IMarkupPointer: TGUID = '{3050F49F-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IMarkupContainer: TGUID = '{3050F5F9-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IMarkupContainer2: TGUID = '{3050F648-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLChangeSink: TGUID = '{3050F64A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLChangeLog: TGUID = '{3050F649-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IActiveIMMApp: TGUID = '{08C0E040-62D1-11D1-9326-0060B067B86E}'; - IID_IEnumRegisterWordA: TGUID = '{08C03412-F96B-11D0-A475-00AA006BCC59}'; - IID_IEnumRegisterWordW: TGUID = '{4955DD31-B159-11D0-8FCF-00AA006BCC59}'; - IID_IEnumInputContext: TGUID = '{09B5EAB0-F997-11D1-93D4-0060B067B86E}'; - IID_ISegmentList: TGUID = '{3050F605-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_ISegmentListIterator: TGUID = '{3050F692-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_ISegment: TGUID = '{3050F683-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLCaret: TGUID = '{3050F604-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IDisplayPointer: TGUID = '{3050F69E-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_ILineInfo: TGUID = '{3050F7E2-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementSegment: TGUID = '{3050F68F-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHighlightSegment: TGUID = '{3050F690-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHighlightRenderingServices: TGUID = '{3050F606-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IDisplayServices: TGUID = '{3050F69D-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLComputedStyle: TGUID = '{3050F6C3-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHtmlDlgSafeHelper: TGUID = '{3050F81A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IBlockFormats: TGUID = '{3050F830-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IFontNames: TGUID = '{3050F839-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_ICSSFilter: TGUID = '{3050F3EC-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_ISecureUrlHost: TGUID = '{C81984C4-74C8-11D2-BAA9-00C04FC2040E}'; - IID_IMarkupServices: TGUID = '{3050F4A0-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IMarkupServices2: TGUID = '{3050F682-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLChangePlayback: TGUID = '{3050F6E0-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IMarkupPointer2: TGUID = '{3050F675-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IMarkupTextFrags: TGUID = '{3050F5FA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IXMLGenericParse: TGUID = '{E4E23071-4D07-11D2-AE76-0080C73BC199}'; - IID_IHTMLEditHost: TGUID = '{3050F6A0-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLEditHost2: TGUID = '{3050F848-98B5-11CF-BB82-00AA00BDCE0D}'; - IID_ISequenceNumber: TGUID = '{3050F6C1-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IIMEServices: TGUID = '{3050F6CA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_ISelectionServicesListener: TGUID = '{3050F699-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_ISelectionServices: TGUID = '{3050F684-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLEditDesigner: TGUID = '{3050F662-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLEditServices: TGUID = '{3050F663-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLEditServices2: TGUID = '{3050F812-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HtmlDlgSafeHelper: TGUID = '{3050F819-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_BlockFormats: TGUID = '{3050F831-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_FontNames: TGUID = '{3050F83A-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_HTMLNamespaceEvents: TGUID = '{3050F6BD-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLNamespace: TGUID = '{3050F6BB-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLNamespaceCollection: TGUID = '{3050F6B8-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLNamespace: TGUID = '{3050F6BC-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLNamespaceCollection: TGUID = '{3050F6B9-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLPainter: TGUID = '{3050F6A6-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLPaintSite: TGUID = '{3050F6A7-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLPainterEventInfo: TGUID = '{3050F6DF-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLPainterOverlay: TGUID = '{3050F7E3-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLIPrintCollection: TGUID = '{3050F6B5-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IEnumPrivacyRecords: TGUID = '{3050F844-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDialog: TGUID = '{3050F216-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDialog2: TGUID = '{3050F5E0-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLDialog3: TGUID = '{3050F388-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLModelessInit: TGUID = '{3050F5E4-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_ThreadDialogProcParam: TGUID = '{3050F5EB-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLDialog: TGUID = '{3050F28A-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLPopup: TGUID = '{3050F666-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLPopup: TGUID = '{3050F589-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLPopup: TGUID = '{3050F667-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAppBehavior: TGUID = '{3050F5CA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAppBehavior2: TGUID = '{3050F5C9-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHTMLAppBehavior3: TGUID = '{3050F5CD-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispHTMLAppBehavior: TGUID = '{3050F57C-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLAppBehavior: TGUID = '{3050F5CB-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_OldHTMLDocument: TGUID = '{D48A6EC9-6A4A-11CF-94A7-444553540000}'; - CLASS_OldHTMLFormElement: TGUID = '{0D04D285-6BEC-11CF-8B97-00AA00476DA6}'; - DIID_DispIHTMLInputButtonElement: TGUID = '{3050F51E-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLInputButtonElement: TGUID = '{3050F2B4-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispIHTMLInputTextElement: TGUID = '{3050F520-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLInputTextElement: TGUID = '{3050F2AB-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispIHTMLInputFileElement: TGUID = '{3050F542-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLInputFileElement: TGUID = '{3050F2AE-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispIHTMLOptionButtonElement: TGUID = '{3050F509-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_HTMLOptionButtonElement: TGUID = '{3050F2BE-98B5-11CF-BB82-00AA00BDCE0B}'; - DIID_DispIHTMLInputImage: TGUID = '{3050F51D-98B5-11CF-BB82-00AA00BDCE0B}'; - CLASS_htmlInputImage: TGUID = '{3050F2C4-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementNamespace: TGUID = '{3050F671-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementNamespaceTable: TGUID = '{3050F670-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementNamespaceFactory: TGUID = '{3050F672-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementNamespaceFactory2: TGUID = '{3050F805-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementNamespaceFactoryCallback: TGUID = '{3050F7FD-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorSiteOM2: TGUID = '{3050F659-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorCategory: TGUID = '{3050F4ED-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorSiteCategory: TGUID = '{3050F4EE-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IEnumUnknown: TGUID = '{00000100-0000-0000-C000-000000000046}'; - IID_IElementBehaviorSubmit: TGUID = '{3050F646-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorFocus: TGUID = '{3050F6B6-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorLayout: TGUID = '{3050F6BA-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorLayout2: TGUID = '{3050F846-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorSiteLayout: TGUID = '{3050F6B7-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IElementBehaviorSiteLayout2: TGUID = '{3050F847-98B5-11CF-BB82-00AA00BDCE0B}'; - IID_IHostBehaviorInit: TGUID = '{3050F842-98B5-11CF-BB82-00AA00BDCE0B}'; - -// *********************************************************************// -// Declaration of Enumerations defined in Type Library -// *********************************************************************// -// Constants for enum _htmlDesignMode -type - _htmlDesignMode = TOleEnum; -const - htmlDesignModeInherit = $FFFFFFFE; - htmlDesignModeOn = $FFFFFFFF; - htmlDesignModeOff = $00000000; - htmlDesignMode_Max = $7FFFFFFF; - -// Constants for enum _htmlZOrder -type - _htmlZOrder = TOleEnum; -const - htmlZOrderFront = $00000000; - htmlZOrderBack = $00000001; - htmlZOrder_Max = $7FFFFFFF; - -// Constants for enum _htmlClear -type - _htmlClear = TOleEnum; -const - htmlClearNotSet = $00000000; - htmlClearAll = $00000001; - htmlClearLeft = $00000002; - htmlClearRight = $00000003; - htmlClearBoth = $00000004; - htmlClearNone = $00000005; - htmlClear_Max = $7FFFFFFF; - -// Constants for enum _htmlControlAlign -type - _htmlControlAlign = TOleEnum; -const - htmlControlAlignNotSet = $00000000; - htmlControlAlignLeft = $00000001; - htmlControlAlignCenter = $00000002; - htmlControlAlignRight = $00000003; - htmlControlAlignTextTop = $00000004; - htmlControlAlignAbsMiddle = $00000005; - htmlControlAlignBaseline = $00000006; - htmlControlAlignAbsBottom = $00000007; - htmlControlAlignBottom = $00000008; - htmlControlAlignMiddle = $00000009; - htmlControlAlignTop = $0000000A; - htmlControlAlign_Max = $7FFFFFFF; - -// Constants for enum _htmlBlockAlign -type - _htmlBlockAlign = TOleEnum; -const - htmlBlockAlignNotSet = $00000000; - htmlBlockAlignLeft = $00000001; - htmlBlockAlignCenter = $00000002; - htmlBlockAlignRight = $00000003; - htmlBlockAlignJustify = $00000004; - htmlBlockAlign_Max = $7FFFFFFF; - -// Constants for enum _htmlReadyState -type - _htmlReadyState = TOleEnum; -const - htmlReadyStateuninitialized = $00000000; - htmlReadyStateloading = $00000001; - htmlReadyStateloaded = $00000002; - htmlReadyStateinteractive = $00000003; - htmlReadyStatecomplete = $00000004; - htmlReadyState_Max = $7FFFFFFF; - -// Constants for enum _htmlLoop -type - _htmlLoop = TOleEnum; -const - htmlLoopLoopInfinite = $FFFFFFFF; - htmlLoop_Max = $7FFFFFFF; - -// Constants for enum _mediaType -type - _mediaType = TOleEnum; -const - mediaTypeNotSet = $00000000; - mediaTypeAll = $000001FF; - mediaTypeAural = $00000001; - mediaTypeBraille = $00000002; - mediaTypeEmbossed = $00000004; - mediaTypeHandheld = $00000008; - mediaTypePrint = $00000010; - mediaTypeProjection = $00000020; - mediaTypeScreen = $00000040; - mediaTypeTty = $00000080; - mediaTypeTv = $00000100; - mediaType_Max = $7FFFFFFF; - -// Constants for enum _styleTextTransform -type - _styleTextTransform = TOleEnum; -const - styleTextTransformNotSet = $00000000; - styleTextTransformCapitalize = $00000001; - styleTextTransformLowercase = $00000002; - styleTextTransformUppercase = $00000003; - styleTextTransformNone = $00000004; - styleTextTransform_Max = $7FFFFFFF; - -// Constants for enum _styleDataRepeat -type - _styleDataRepeat = TOleEnum; -const - styleDataRepeatNone = $00000000; - styleDataRepeatInner = $00000001; - styleDataRepeat_Max = $7FFFFFFF; - -// Constants for enum _styleOverflow -type - _styleOverflow = TOleEnum; -const - styleOverflowNotSet = $00000000; - styleOverflowAuto = $00000001; - styleOverflowHidden = $00000002; - styleOverflowVisible = $00000003; - styleOverflowScroll = $00000004; - styleOverflow_Max = $7FFFFFFF; - -// Constants for enum _styleTableLayout -type - _styleTableLayout = TOleEnum; -const - styleTableLayoutNotSet = $00000000; - styleTableLayoutAuto = $00000001; - styleTableLayoutFixed = $00000002; - styleTableLayout_Max = $7FFFFFFF; - -// Constants for enum _styleBorderCollapse -type - _styleBorderCollapse = TOleEnum; -const - styleBorderCollapseNotSet = $00000000; - styleBorderCollapseSeparate = $00000001; - styleBorderCollapseCollapse = $00000002; - styleBorderCollapse_Max = $7FFFFFFF; - -// Constants for enum _styleFontStyle -type - _styleFontStyle = TOleEnum; -const - styleFontStyleNotSet = $00000000; - styleFontStyleItalic = $00000001; - styleFontStyleOblique = $00000002; - styleFontStyleNormal = $00000003; - styleFontStyle_Max = $7FFFFFFF; - -// Constants for enum _styleFontVariant -type - _styleFontVariant = TOleEnum; -const - styleFontVariantNotSet = $00000000; - styleFontVariantSmallCaps = $00000001; - styleFontVariantNormal = $00000002; - styleFontVariant_Max = $7FFFFFFF; - -// Constants for enum _styleBackgroundRepeat -type - _styleBackgroundRepeat = TOleEnum; -const - styleBackgroundRepeatRepeat = $00000000; - styleBackgroundRepeatRepeatX = $00000001; - styleBackgroundRepeatRepeatY = $00000002; - styleBackgroundRepeatNoRepeat = $00000003; - styleBackgroundRepeatNotSet = $00000004; - styleBackgroundRepeat_Max = $7FFFFFFF; - -// Constants for enum _styleBackgroundAttachment -type - _styleBackgroundAttachment = TOleEnum; -const - styleBackgroundAttachmentFixed = $00000000; - styleBackgroundAttachmentScroll = $00000001; - styleBackgroundAttachmentNotSet = $00000002; - styleBackgroundAttachment_Max = $7FFFFFFF; - -// Constants for enum _styleVerticalAlign -type - _styleVerticalAlign = TOleEnum; -const - styleVerticalAlignAuto = $00000000; - styleVerticalAlignBaseline = $00000001; - styleVerticalAlignSub = $00000002; - styleVerticalAlignSuper = $00000003; - styleVerticalAlignTop = $00000004; - styleVerticalAlignTextTop = $00000005; - styleVerticalAlignMiddle = $00000006; - styleVerticalAlignBottom = $00000007; - styleVerticalAlignTextBottom = $00000008; - styleVerticalAlignInherit = $00000009; - styleVerticalAlignNotSet = $0000000A; - styleVerticalAlign_Max = $7FFFFFFF; - -// Constants for enum _styleFontWeight -type - _styleFontWeight = TOleEnum; -const - styleFontWeightNotSet = $00000000; - styleFontWeight100 = $00000001; - styleFontWeight200 = $00000002; - styleFontWeight300 = $00000003; - styleFontWeight400 = $00000004; - styleFontWeight500 = $00000005; - styleFontWeight600 = $00000006; - styleFontWeight700 = $00000007; - styleFontWeight800 = $00000008; - styleFontWeight900 = $00000009; - styleFontWeightNormal = $0000000A; - styleFontWeightBold = $0000000B; - styleFontWeightBolder = $0000000C; - styleFontWeightLighter = $0000000D; - styleFontWeight_Max = $7FFFFFFF; - -// Constants for enum _styleBackgroundPositionX -type - _styleBackgroundPositionX = TOleEnum; -const - styleBackgroundPositionXNotSet = $00000000; - styleBackgroundPositionXLeft = $00000001; - styleBackgroundPositionXCenter = $00000002; - styleBackgroundPositionXRight = $00000003; - styleBackgroundPositionX_Max = $7FFFFFFF; - -// Constants for enum _styleBackgroundPositionY -type - _styleBackgroundPositionY = TOleEnum; -const - styleBackgroundPositionYNotSet = $00000000; - styleBackgroundPositionYTop = $00000001; - styleBackgroundPositionYCenter = $00000002; - styleBackgroundPositionYBottom = $00000003; - styleBackgroundPositionY_Max = $7FFFFFFF; - -// Constants for enum _styleFontSize -type - _styleFontSize = TOleEnum; -const - styleFontSizeXXSmall = $00000000; - styleFontSizeXSmall = $00000001; - styleFontSizeSmall = $00000002; - styleFontSizeMedium = $00000003; - styleFontSizeLarge = $00000004; - styleFontSizeXLarge = $00000005; - styleFontSizeXXLarge = $00000006; - styleFontSizeSmaller = $00000007; - styleFontSizeLarger = $00000008; - styleFontSize_Max = $7FFFFFFF; - -// Constants for enum _styleAuto -type - _styleAuto = TOleEnum; -const - styleAutoAuto = $00000000; - styleAuto_Max = $7FFFFFFF; - -// Constants for enum _styleNormal -type - _styleNormal = TOleEnum; -const - styleNormalNormal = $00000000; - styleNormal_Max = $7FFFFFFF; - -// Constants for enum _styleBorderWidth -type - _styleBorderWidth = TOleEnum; -const - styleBorderWidthThin = $00000000; - styleBorderWidthMedium = $00000001; - styleBorderWidthThick = $00000002; - styleBorderWidth_Max = $7FFFFFFF; - -// Constants for enum _stylePosition -type - _stylePosition = TOleEnum; -const - stylePositionNotSet = $00000000; - stylePositionstatic = $00000001; - stylePositionrelative = $00000002; - stylePositionabsolute = $00000003; - stylePositionfixed = $00000004; - stylePosition_Max = $7FFFFFFF; - -// Constants for enum _styleBorderStyle -type - _styleBorderStyle = TOleEnum; -const - styleBorderStyleNotSet = $00000000; - styleBorderStyleDotted = $00000001; - styleBorderStyleDashed = $00000002; - styleBorderStyleSolid = $00000003; - styleBorderStyleDouble = $00000004; - styleBorderStyleGroove = $00000005; - styleBorderStyleRidge = $00000006; - styleBorderStyleInset = $00000007; - styleBorderStyleOutset = $00000008; - styleBorderStyleWindowInset = $00000009; - styleBorderStyleNone = $0000000A; - styleBorderStyle_Max = $7FFFFFFF; - -// Constants for enum _styleStyleFloat -type - _styleStyleFloat = TOleEnum; -const - styleStyleFloatNotSet = $00000000; - styleStyleFloatLeft = $00000001; - styleStyleFloatRight = $00000002; - styleStyleFloatNone = $00000003; - styleStyleFloat_Max = $7FFFFFFF; - -// Constants for enum _styleDisplay -type - _styleDisplay = TOleEnum; -const - styleDisplayNotSet = $00000000; - styleDisplayBlock = $00000001; - styleDisplayInline = $00000002; - styleDisplayListItem = $00000003; - styleDisplayNone = $00000004; - styleDisplayTableHeaderGroup = $00000005; - styleDisplayTableFooterGroup = $00000006; - styleDisplayInlineBlock = $00000007; - styleDisplay_Max = $7FFFFFFF; - -// Constants for enum _styleVisibility -type - _styleVisibility = TOleEnum; -const - styleVisibilityNotSet = $00000000; - styleVisibilityInherit = $00000001; - styleVisibilityVisible = $00000002; - styleVisibilityHidden = $00000003; - styleVisibility_Max = $7FFFFFFF; - -// Constants for enum _styleListStyleType -type - _styleListStyleType = TOleEnum; -const - styleListStyleTypeNotSet = $00000000; - styleListStyleTypeDisc = $00000001; - styleListStyleTypeCircle = $00000002; - styleListStyleTypeSquare = $00000003; - styleListStyleTypeDecimal = $00000004; - styleListStyleTypeLowerRoman = $00000005; - styleListStyleTypeUpperRoman = $00000006; - styleListStyleTypeLowerAlpha = $00000007; - styleListStyleTypeUpperAlpha = $00000008; - styleListStyleTypeNone = $00000009; - styleListStyleType_Max = $7FFFFFFF; - -// Constants for enum _styleListStylePosition -type - _styleListStylePosition = TOleEnum; -const - styleListStylePositionNotSet = $00000000; - styleListStylePositionInside = $00000001; - styleListStylePositionOutSide = $00000002; - styleListStylePosition_Max = $7FFFFFFF; - -// Constants for enum _styleWhiteSpace -type - _styleWhiteSpace = TOleEnum; -const - styleWhiteSpaceNotSet = $00000000; - styleWhiteSpaceNormal = $00000001; - styleWhiteSpacePre = $00000002; - styleWhiteSpaceNowrap = $00000003; - styleWhiteSpace_Max = $7FFFFFFF; - -// Constants for enum _stylePageBreak -type - _stylePageBreak = TOleEnum; -const - stylePageBreakNotSet = $00000000; - stylePageBreakAuto = $00000001; - stylePageBreakAlways = $00000002; - stylePageBreakLeft = $00000003; - stylePageBreakRight = $00000004; - stylePageBreak_Max = $7FFFFFFF; - -// Constants for enum _styleCursor -type - _styleCursor = TOleEnum; -const - styleCursorAuto = $00000000; - styleCursorCrosshair = $00000001; - styleCursorDefault = $00000002; - styleCursorHand = $00000003; - styleCursorMove = $00000004; - styleCursorE_resize = $00000005; - styleCursorNe_resize = $00000006; - styleCursorNw_resize = $00000007; - styleCursorN_resize = $00000008; - styleCursorSe_resize = $00000009; - styleCursorSw_resize = $0000000A; - styleCursorS_resize = $0000000B; - styleCursorW_resize = $0000000C; - styleCursorText = $0000000D; - styleCursorWait = $0000000E; - styleCursorHelp = $0000000F; - styleCursorPointer = $00000010; - styleCursorProgress = $00000011; - styleCursorNot_allowed = $00000012; - styleCursorNo_drop = $00000013; - styleCursorVertical_text = $00000014; - styleCursorall_scroll = $00000015; - styleCursorcol_resize = $00000016; - styleCursorrow_resize = $00000017; - styleCursorcustom = $00000018; - styleCursorNotSet = $00000019; - styleCursor_Max = $7FFFFFFF; - -// Constants for enum _styleDir -type - _styleDir = TOleEnum; -const - styleDirNotSet = $00000000; - styleDirLeftToRight = $00000001; - styleDirRightToLeft = $00000002; - styleDirInherit = $00000003; - styleDir_Max = $7FFFFFFF; - -// Constants for enum _styleBidi -type - _styleBidi = TOleEnum; -const - styleBidiNotSet = $00000000; - styleBidiNormal = $00000001; - styleBidiEmbed = $00000002; - styleBidiOverride = $00000003; - styleBidiInherit = $00000004; - styleBidi_Max = $7FFFFFFF; - -// Constants for enum _styleImeMode -type - _styleImeMode = TOleEnum; -const - styleImeModeAuto = $00000000; - styleImeModeActive = $00000001; - styleImeModeInactive = $00000002; - styleImeModeDisabled = $00000003; - styleImeModeNotSet = $00000004; - styleImeMode_Max = $7FFFFFFF; - -// Constants for enum _styleRubyAlign -type - _styleRubyAlign = TOleEnum; -const - styleRubyAlignNotSet = $00000000; - styleRubyAlignAuto = $00000001; - styleRubyAlignLeft = $00000002; - styleRubyAlignCenter = $00000003; - styleRubyAlignRight = $00000004; - styleRubyAlignDistributeLetter = $00000005; - styleRubyAlignDistributeSpace = $00000006; - styleRubyAlignLineEdge = $00000007; - styleRubyAlign_Max = $7FFFFFFF; - -// Constants for enum _styleRubyPosition -type - _styleRubyPosition = TOleEnum; -const - styleRubyPositionNotSet = $00000000; - styleRubyPositionAbove = $00000001; - styleRubyPositionInline = $00000002; - styleRubyPosition_Max = $7FFFFFFF; - -// Constants for enum _styleRubyOverhang -type - _styleRubyOverhang = TOleEnum; -const - styleRubyOverhangNotSet = $00000000; - styleRubyOverhangAuto = $00000001; - styleRubyOverhangWhitespace = $00000002; - styleRubyOverhangNone = $00000003; - styleRubyOverhang_Max = $7FFFFFFF; - -// Constants for enum _styleLayoutGridChar -type - _styleLayoutGridChar = TOleEnum; -const - styleLayoutGridCharNotSet = $00000000; - styleLayoutGridCharAuto = $00000001; - styleLayoutGridCharNone = $00000002; - styleLayoutGridChar_Max = $7FFFFFFF; - -// Constants for enum _styleLayoutGridLine -type - _styleLayoutGridLine = TOleEnum; -const - styleLayoutGridLineNotSet = $00000000; - styleLayoutGridLineAuto = $00000001; - styleLayoutGridLineNone = $00000002; - styleLayoutGridLine_Max = $7FFFFFFF; - -// Constants for enum _styleLayoutGridMode -type - _styleLayoutGridMode = TOleEnum; -const - styleLayoutGridModeNotSet = $00000000; - styleLayoutGridModeChar = $00000001; - styleLayoutGridModeLine = $00000002; - styleLayoutGridModeBoth = $00000003; - styleLayoutGridModeNone = $00000004; - styleLayoutGridMode_Max = $7FFFFFFF; - -// Constants for enum _styleLayoutGridType -type - _styleLayoutGridType = TOleEnum; -const - styleLayoutGridTypeNotSet = $00000000; - styleLayoutGridTypeLoose = $00000001; - styleLayoutGridTypeStrict = $00000002; - styleLayoutGridTypeFixed = $00000003; - styleLayoutGridType_Max = $7FFFFFFF; - -// Constants for enum _styleLineBreak -type - _styleLineBreak = TOleEnum; -const - styleLineBreakNotSet = $00000000; - styleLineBreakNormal = $00000001; - styleLineBreakStrict = $00000002; - styleLineBreak_Max = $7FFFFFFF; - -// Constants for enum _styleWordBreak -type - _styleWordBreak = TOleEnum; -const - styleWordBreakNotSet = $00000000; - styleWordBreakNormal = $00000001; - styleWordBreakBreakAll = $00000002; - styleWordBreakKeepAll = $00000003; - styleWordBreak_Max = $7FFFFFFF; - -// Constants for enum _styleWordWrap -type - _styleWordWrap = TOleEnum; -const - styleWordWrapNotSet = $00000000; - styleWordWrapOff = $00000001; - styleWordWrapOn = $00000002; - styleWordWrap_Max = $7FFFFFFF; - -// Constants for enum _styleTextJustify -type - _styleTextJustify = TOleEnum; -const - styleTextJustifyNotSet = $00000000; - styleTextJustifyInterWord = $00000001; - styleTextJustifyNewspaper = $00000002; - styleTextJustifyDistribute = $00000003; - styleTextJustifyDistributeAllLines = $00000004; - styleTextJustifyInterIdeograph = $00000005; - styleTextJustifyInterCluster = $00000006; - styleTextJustifyKashida = $00000007; - styleTextJustifyAuto = $00000008; - styleTextJustify_Max = $7FFFFFFF; - -// Constants for enum _styleTextAlignLast -type - _styleTextAlignLast = TOleEnum; -const - styleTextAlignLastNotSet = $00000000; - styleTextAlignLastLeft = $00000001; - styleTextAlignLastCenter = $00000002; - styleTextAlignLastRight = $00000003; - styleTextAlignLastJustify = $00000004; - styleTextAlignLastAuto = $00000005; - styleTextAlignLast_Max = $7FFFFFFF; - -// Constants for enum _styleTextJustifyTrim -type - _styleTextJustifyTrim = TOleEnum; -const - styleTextJustifyTrimNotSet = $00000000; - styleTextJustifyTrimNone = $00000001; - styleTextJustifyTrimPunctuation = $00000002; - styleTextJustifyTrimPunctAndKana = $00000003; - styleTextJustifyTrim_Max = $7FFFFFFF; - -// Constants for enum _styleAccelerator -type - _styleAccelerator = TOleEnum; -const - styleAcceleratorFalse = $00000000; - styleAcceleratorTrue = $00000001; - styleAccelerator_Max = $7FFFFFFF; - -// Constants for enum _styleLayoutFlow -type - _styleLayoutFlow = TOleEnum; -const - styleLayoutFlowHorizontal = $00000000; - styleLayoutFlowVerticalIdeographic = $00000001; - styleLayoutFlowNotSet = $00000002; - styleLayoutFlow_Max = $7FFFFFFF; - -// Constants for enum _styleWritingMode -type - _styleWritingMode = TOleEnum; -const - styleWritingModeLrtb = $00000000; - styleWritingModeTbrl = $00000001; - styleWritingModeNotSet = $00000002; - styleWritingMode_Max = $7FFFFFFF; - -// Constants for enum _styleBool -type - _styleBool = TOleEnum; -const - styleBoolFalse = $00000000; - styleBoolTrue = $00000001; - styleBool_Max = $7FFFFFFF; - -// Constants for enum _styleTextUnderlinePosition -type - _styleTextUnderlinePosition = TOleEnum; -const - styleTextUnderlinePositionBelow = $00000000; - styleTextUnderlinePositionAbove = $00000001; - styleTextUnderlinePositionAuto = $00000002; - styleTextUnderlinePositionNotSet = $00000003; - styleTextUnderlinePosition_Max = $7FFFFFFF; - -// Constants for enum _styleTextOverflow -type - _styleTextOverflow = TOleEnum; -const - styleTextOverflowClip = $00000000; - styleTextOverflowEllipsis = $00000001; - styleTextOverflowNotSet = $00000002; - styleTextOverflow_Max = $7FFFFFFF; - -// Constants for enum _styleTextLineThroughStyle -type - _styleTextLineThroughStyle = TOleEnum; -const - styleTextLineThroughStyleUndefined = $00000000; - styleTextLineThroughStyleSingle = $00000001; - styleTextLineThroughStyleDouble = $00000002; - styleTextLineThroughStyle_Max = $7FFFFFFF; - -// Constants for enum _styleTextUnderlineStyle -type - _styleTextUnderlineStyle = TOleEnum; -const - styleTextUnderlineStyleUndefined = $00000000; - styleTextUnderlineStyleSingle = $00000001; - styleTextUnderlineStyleDouble = $00000002; - styleTextUnderlineStyleWords = $00000003; - styleTextUnderlineStyleDotted = $00000004; - styleTextUnderlineStyleThick = $00000005; - styleTextUnderlineStyleDash = $00000006; - styleTextUnderlineStyleDotDash = $00000007; - styleTextUnderlineStyleDotDotDash = $00000008; - styleTextUnderlineStyleWave = $00000009; - styleTextUnderlineStyleSingleAccounting = $0000000A; - styleTextUnderlineStyleDoubleAccounting = $0000000B; - styleTextUnderlineStyleThickDash = $0000000C; - styleTextUnderlineStyle_Max = $7FFFFFFF; - -// Constants for enum _styleTextEffect -type - _styleTextEffect = TOleEnum; -const - styleTextEffectNone = $00000000; - styleTextEffectEmboss = $00000001; - styleTextEffectEngrave = $00000002; - styleTextEffectOutline = $00000003; - styleTextEffect_Max = $7FFFFFFF; - -// Constants for enum _styleDefaultTextSelection -type - _styleDefaultTextSelection = TOleEnum; -const - styleDefaultTextSelectionFalse = $00000000; - styleDefaultTextSelectionTrue = $00000001; - styleDefaultTextSelection_Max = $7FFFFFFF; - -// Constants for enum _styleTextDecoration -type - _styleTextDecoration = TOleEnum; -const - styleTextDecorationNone = $00000000; - styleTextDecorationUnderline = $00000001; - styleTextDecorationOverline = $00000002; - styleTextDecorationLineThrough = $00000003; - styleTextDecorationBlink = $00000004; - styleTextDecoration_Max = $7FFFFFFF; - -// Constants for enum _textDecoration -type - _textDecoration = TOleEnum; -const - textDecorationNone = $00000000; - textDecorationUnderline = $00000001; - textDecorationOverline = $00000002; - textDecorationLineThrough = $00000003; - textDecorationBlink = $00000004; - textDecoration_Max = $7FFFFFFF; - -// Constants for enum _htmlListType -type - _htmlListType = TOleEnum; -const - htmlListTypeNotSet = $00000000; - htmlListTypeLargeAlpha = $00000001; - htmlListTypeSmallAlpha = $00000002; - htmlListTypeLargeRoman = $00000003; - htmlListTypeSmallRoman = $00000004; - htmlListTypeNumbers = $00000005; - htmlListTypeDisc = $00000006; - htmlListTypeCircle = $00000007; - htmlListTypeSquare = $00000008; - htmlListType_Max = $7FFFFFFF; - -// Constants for enum _htmlMethod -type - _htmlMethod = TOleEnum; -const - htmlMethodNotSet = $00000000; - htmlMethodGet = $00000001; - htmlMethodPost = $00000002; - htmlMethod_Max = $7FFFFFFF; - -// Constants for enum _htmlWrap -type - _htmlWrap = TOleEnum; -const - htmlWrapOff = $00000001; - htmlWrapSoft = $00000002; - htmlWrapHard = $00000003; - htmlWrap_Max = $7FFFFFFF; - -// Constants for enum _htmlDir -type - _htmlDir = TOleEnum; -const - htmlDirNotSet = $00000000; - htmlDirLeftToRight = $00000001; - htmlDirRightToLeft = $00000002; - htmlDir_Max = $7FFFFFFF; - -// Constants for enum _htmlEditable -type - _htmlEditable = TOleEnum; -const - htmlEditableInherit = $00000000; - htmlEditableTrue = $00000001; - htmlEditableFalse = $00000002; - htmlEditable_Max = $7FFFFFFF; - -// Constants for enum _htmlInput -type - _htmlInput = TOleEnum; -const - htmlInputNotSet = $00000000; - htmlInputButton = $00000001; - htmlInputCheckbox = $00000002; - htmlInputFile = $00000003; - htmlInputHidden = $00000004; - htmlInputImage_ = $00000005; - htmlInputPassword = $00000006; - htmlInputRadio = $00000007; - htmlInputReset = $00000008; - htmlInputSelectOne = $00000009; - htmlInputSelectMultiple = $0000000A; - htmlInputSubmit = $0000000B; - htmlInputText = $0000000C; - htmlInputTextarea = $0000000D; - htmlInputRichtext = $0000000E; - htmlInput_Max = $7FFFFFFF; - -// Constants for enum _htmlEncoding -type - _htmlEncoding = TOleEnum; -const - htmlEncodingURL = $00000000; - htmlEncodingMultipart = $00000001; - htmlEncodingText = $00000002; - htmlEncoding_Max = $7FFFFFFF; - -// Constants for enum _htmlAdjacency -type - _htmlAdjacency = TOleEnum; -const - htmlAdjacencyBeforeBegin = $00000001; - htmlAdjacencyAfterBegin = $00000002; - htmlAdjacencyBeforeEnd = $00000003; - htmlAdjacencyAfterEnd = $00000004; - htmlAdjacency_Max = $7FFFFFFF; - -// Constants for enum _htmlTabIndex -type - _htmlTabIndex = TOleEnum; -const - htmlTabIndexNotSet = $FFFF8000; - htmlTabIndex_Max = $7FFFFFFF; - -// Constants for enum _htmlComponent -type - _htmlComponent = TOleEnum; -const - htmlComponentClient = $00000000; - htmlComponentSbLeft = $00000001; - htmlComponentSbPageLeft = $00000002; - htmlComponentSbHThumb = $00000003; - htmlComponentSbPageRight = $00000004; - htmlComponentSbRight = $00000005; - htmlComponentSbUp = $00000006; - htmlComponentSbPageUp = $00000007; - htmlComponentSbVThumb = $00000008; - htmlComponentSbPageDown = $00000009; - htmlComponentSbDown = $0000000A; - htmlComponentSbLeft2 = $0000000B; - htmlComponentSbPageLeft2 = $0000000C; - htmlComponentSbRight2 = $0000000D; - htmlComponentSbPageRight2 = $0000000E; - htmlComponentSbUp2 = $0000000F; - htmlComponentSbPageUp2 = $00000010; - htmlComponentSbDown2 = $00000011; - htmlComponentSbPageDown2 = $00000012; - htmlComponentSbTop = $00000013; - htmlComponentSbBottom = $00000014; - htmlComponentOutside = $00000015; - htmlComponentGHTopLeft = $00000016; - htmlComponentGHLeft = $00000017; - htmlComponentGHTop = $00000018; - htmlComponentGHBottomLeft = $00000019; - htmlComponentGHTopRight = $0000001A; - htmlComponentGHBottom = $0000001B; - htmlComponentGHRight = $0000001C; - htmlComponentGHBottomRight = $0000001D; - htmlComponent_Max = $7FFFFFFF; - -// Constants for enum _htmlApplyLocation -type - _htmlApplyLocation = TOleEnum; -const - htmlApplyLocationInside = $00000000; - htmlApplyLocationOutside = $00000001; - htmlApplyLocation_Max = $7FFFFFFF; - -// Constants for enum _htmlGlyphMode -type - _htmlGlyphMode = TOleEnum; -const - htmlGlyphModeNone = $00000000; - htmlGlyphModeBegin = $00000001; - htmlGlyphModeEnd = $00000002; - htmlGlyphModeBoth = $00000003; - htmlGlyphMode_Max = $7FFFFFFF; - -// Constants for enum _htmlUnit -type - _htmlUnit = TOleEnum; -const - htmlUnitCharacter = $00000001; - htmlUnitWord = $00000002; - htmlUnitSentence = $00000003; - htmlUnitTextEdit = $00000006; - htmlUnit_Max = $7FFFFFFF; - -// Constants for enum _htmlEndPoints -type - _htmlEndPoints = TOleEnum; -const - htmlEndPointsStartToStart = $00000001; - htmlEndPointsStartToEnd = $00000002; - htmlEndPointsEndToStart = $00000003; - htmlEndPointsEndToEnd = $00000004; - htmlEndPoints_Max = $7FFFFFFF; - -// Constants for enum _htmlDirection -type - _htmlDirection = TOleEnum; -const - htmlDirectionForward = $0001869F; - htmlDirectionBackward = $FFFE7961; - htmlDirection_Max = $7FFFFFFF; - -// Constants for enum _htmlStart -type - _htmlStart = TOleEnum; -const - htmlStartfileopen = $00000000; - htmlStartmouseover = $00000001; - htmlStart_Max = $7FFFFFFF; - -// Constants for enum _bodyScroll -type - _bodyScroll = TOleEnum; -const - bodyScrollyes = $00000001; - bodyScrollno = $00000002; - bodyScrollauto = $00000004; - bodyScrolldefault = $00000003; - bodyScroll_Max = $7FFFFFFF; - -// Constants for enum _htmlSelectType -type - _htmlSelectType = TOleEnum; -const - htmlSelectTypeSelectOne = $00000001; - htmlSelectTypeSelectMultiple = $00000002; - htmlSelectType_Max = $7FFFFFFF; - -// Constants for enum _htmlSelection -type - _htmlSelection = TOleEnum; -const - htmlSelectionNone = $00000000; - htmlSelectionText = $00000001; - htmlSelectionControl = $00000002; - htmlSelectionTable = $00000003; - htmlSelection_Max = $7FFFFFFF; - -// Constants for enum _htmlMarqueeBehavior -type - _htmlMarqueeBehavior = TOleEnum; -const - htmlMarqueeBehaviorscroll = $00000001; - htmlMarqueeBehaviorslide = $00000002; - htmlMarqueeBehavioralternate = $00000003; - htmlMarqueeBehavior_Max = $7FFFFFFF; - -// Constants for enum _htmlMarqueeDirection -type - _htmlMarqueeDirection = TOleEnum; -const - htmlMarqueeDirectionleft = $00000001; - htmlMarqueeDirectionright = $00000003; - htmlMarqueeDirectionup = $00000005; - htmlMarqueeDirectiondown = $00000007; - htmlMarqueeDirection_Max = $7FFFFFFF; - -// Constants for enum _htmlPersistState -type - _htmlPersistState = TOleEnum; -const - htmlPersistStateNormal = $00000000; - htmlPersistStateFavorite = $00000001; - htmlPersistStateHistory = $00000002; - htmlPersistStateSnapshot = $00000003; - htmlPersistStateUserData = $00000004; - htmlPersistState_Max = $7FFFFFFF; - -// Constants for enum _htmlDropEffect -type - _htmlDropEffect = TOleEnum; -const - htmlDropEffectCopy = $00000000; - htmlDropEffectLink = $00000001; - htmlDropEffectMove = $00000002; - htmlDropEffectNone = $00000003; - htmlDropEffect_Max = $7FFFFFFF; - -// Constants for enum _htmlEffectAllowed -type - _htmlEffectAllowed = TOleEnum; -const - htmlEffectAllowedCopy = $00000000; - htmlEffectAllowedLink = $00000001; - htmlEffectAllowedMove = $00000002; - htmlEffectAllowedCopyLink = $00000003; - htmlEffectAllowedCopyMove = $00000004; - htmlEffectAllowedLinkMove = $00000005; - htmlEffectAllowedAll = $00000006; - htmlEffectAllowedNone = $00000007; - htmlEffectAllowedUninitialized = $00000008; - htmlEffectAllowed_Max = $7FFFFFFF; - -// Constants for enum _htmlCompatMode -type - _htmlCompatMode = TOleEnum; -const - htmlCompatModeBackCompat = $00000000; - htmlCompatModeCSS1Compat = $00000001; - htmlCompatMode_Max = $7FFFFFFF; - -// Constants for enum _BoolValue -type - _BoolValue = TOleEnum; -const -// True = $00000001; -// False = $00000000; - BoolValue_Max = $7FFFFFFF; - -// Constants for enum _htmlCaptionAlign -type - _htmlCaptionAlign = TOleEnum; -const - htmlCaptionAlignNotSet = $00000000; - htmlCaptionAlignLeft = $00000001; - htmlCaptionAlignCenter = $00000002; - htmlCaptionAlignRight = $00000003; - htmlCaptionAlignJustify = $00000004; - htmlCaptionAlignTop = $00000005; - htmlCaptionAlignBottom = $00000006; - htmlCaptionAlign_Max = $7FFFFFFF; - -// Constants for enum _htmlCaptionVAlign -type - _htmlCaptionVAlign = TOleEnum; -const - htmlCaptionVAlignNotSet = $00000000; - htmlCaptionVAlignTop = $00000001; - htmlCaptionVAlignBottom = $00000002; - htmlCaptionVAlign_Max = $7FFFFFFF; - -// Constants for enum _htmlFrame -type - _htmlFrame = TOleEnum; -const - htmlFrameNotSet = $00000000; - htmlFramevoid = $00000001; - htmlFrameabove = $00000002; - htmlFramebelow = $00000003; - htmlFramehsides = $00000004; - htmlFramelhs = $00000005; - htmlFramerhs = $00000006; - htmlFramevsides = $00000007; - htmlFramebox = $00000008; - htmlFrameborder = $00000009; - htmlFrame_Max = $7FFFFFFF; - -// Constants for enum _htmlRules -type - _htmlRules = TOleEnum; -const - htmlRulesNotSet = $00000000; - htmlRulesnone = $00000001; - htmlRulesgroups = $00000002; - htmlRulesrows = $00000003; - htmlRulescols = $00000004; - htmlRulesall = $00000005; - htmlRules_Max = $7FFFFFFF; - -// Constants for enum _htmlCellAlign -type - _htmlCellAlign = TOleEnum; -const - htmlCellAlignNotSet = $00000000; - htmlCellAlignLeft = $00000001; - htmlCellAlignCenter = $00000002; - htmlCellAlignRight = $00000003; - htmlCellAlignMiddle = $00000002; - htmlCellAlign_Max = $7FFFFFFF; - -// Constants for enum _htmlCellVAlign -type - _htmlCellVAlign = TOleEnum; -const - htmlCellVAlignNotSet = $00000000; - htmlCellVAlignTop = $00000001; - htmlCellVAlignMiddle = $00000002; - htmlCellVAlignBottom = $00000003; - htmlCellVAlignBaseline = $00000004; - htmlCellVAlignCenter = $00000002; - htmlCellVAlign_Max = $7FFFFFFF; - -// Constants for enum _frameScrolling -type - _frameScrolling = TOleEnum; -const - frameScrollingyes = $00000001; - frameScrollingno = $00000002; - frameScrollingauto = $00000004; - frameScrolling_Max = $7FFFFFFF; - -// Constants for enum _ELEMENT_CORNER -type - _ELEMENT_CORNER = TOleEnum; -const - ELEMENT_CORNER_NONE = $00000000; - ELEMENT_CORNER_TOP = $00000001; - ELEMENT_CORNER_LEFT = $00000002; - ELEMENT_CORNER_BOTTOM = $00000003; - ELEMENT_CORNER_RIGHT = $00000004; - ELEMENT_CORNER_TOPLEFT = $00000005; - ELEMENT_CORNER_TOPRIGHT = $00000006; - ELEMENT_CORNER_BOTTOMLEFT = $00000007; - ELEMENT_CORNER_BOTTOMRIGHT = $00000008; - ELEMENT_CORNER_Max = $7FFFFFFF; - -// Constants for enum _SECUREURLHOSTVALIDATE_FLAGS -type - _SECUREURLHOSTVALIDATE_FLAGS = TOleEnum; -const - SUHV_PROMPTBEFORENO = $00000001; - SUHV_SILENTYES = $00000002; - SUHV_UNSECURESOURCE = $00000004; - SECUREURLHOSTVALIDATE_FLAGS_Max = $7FFFFFFF; - -// Constants for enum _POINTER_GRAVITY -type - _POINTER_GRAVITY = TOleEnum; -const - POINTER_GRAVITY_Left = $00000000; - POINTER_GRAVITY_Right = $00000001; - POINTER_GRAVITY_Max = $7FFFFFFF; - -// Constants for enum _ELEMENT_ADJACENCY -type - _ELEMENT_ADJACENCY = TOleEnum; -const - ELEM_ADJ_BeforeBegin = $00000000; - ELEM_ADJ_AfterBegin = $00000001; - ELEM_ADJ_BeforeEnd = $00000002; - ELEM_ADJ_AfterEnd = $00000003; - ELEMENT_ADJACENCY_Max = $7FFFFFFF; - -// Constants for enum _MARKUP_CONTEXT_TYPE -type - _MARKUP_CONTEXT_TYPE = TOleEnum; -const - CONTEXT_TYPE_None = $00000000; - CONTEXT_TYPE_Text = $00000001; - CONTEXT_TYPE_EnterScope = $00000002; - CONTEXT_TYPE_ExitScope = $00000003; - CONTEXT_TYPE_NoScope = $00000004; - MARKUP_CONTEXT_TYPE_Max = $7FFFFFFF; - -// Constants for enum _FINDTEXT_FLAGS -type - _FINDTEXT_FLAGS = TOleEnum; -const - FINDTEXT_BACKWARDS = $00000001; - FINDTEXT_WHOLEWORD = $00000002; - FINDTEXT_MATCHCASE = $00000004; - FINDTEXT_RAW = $00020000; - FINDTEXT_MATCHDIAC = $20000000; - FINDTEXT_MATCHKASHIDA = $40000000; - FINDTEXT_MATCHALEFHAMZA = $80000000; - FINDTEXT_FLAGS_Max = $7FFFFFFF; - -// Constants for enum _MOVEUNIT_ACTION -type - _MOVEUNIT_ACTION = TOleEnum; -const - MOVEUNIT_PREVCHAR = $00000000; - MOVEUNIT_NEXTCHAR = $00000001; - MOVEUNIT_PREVCLUSTERBEGIN = $00000002; - MOVEUNIT_NEXTCLUSTERBEGIN = $00000003; - MOVEUNIT_PREVCLUSTEREND = $00000004; - MOVEUNIT_NEXTCLUSTEREND = $00000005; - MOVEUNIT_PREVWORDBEGIN = $00000006; - MOVEUNIT_NEXTWORDBEGIN = $00000007; - MOVEUNIT_PREVWORDEND = $00000008; - MOVEUNIT_NEXTWORDEND = $00000009; - MOVEUNIT_PREVPROOFWORD = $0000000A; - MOVEUNIT_NEXTPROOFWORD = $0000000B; - MOVEUNIT_NEXTURLBEGIN = $0000000C; - MOVEUNIT_PREVURLBEGIN = $0000000D; - MOVEUNIT_NEXTURLEND = $0000000E; - MOVEUNIT_PREVURLEND = $0000000F; - MOVEUNIT_PREVSENTENCE = $00000010; - MOVEUNIT_NEXTSENTENCE = $00000011; - MOVEUNIT_PREVBLOCK = $00000012; - MOVEUNIT_NEXTBLOCK = $00000013; - MOVEUNIT_ACTION_Max = $7FFFFFFF; - -// Constants for enum _PARSE_FLAGS -type - _PARSE_FLAGS = TOleEnum; -const - PARSE_ABSOLUTIFYIE40URLS = $00000001; - PARSE_FLAGS_Max = $7FFFFFFF; - -// Constants for enum _ELEMENT_TAG_ID -type - _ELEMENT_TAG_ID = TOleEnum; -const - TAGID_NULL = $00000000; - TAGID_UNKNOWN = $00000001; - TAGID_A = $00000002; - TAGID_ACRONYM = $00000003; - TAGID_ADDRESS = $00000004; - TAGID_APPLET = $00000005; - TAGID_AREA = $00000006; - TAGID_B = $00000007; - TAGID_BASE = $00000008; - TAGID_BASEFONT = $00000009; - TAGID_BDO = $0000000A; - TAGID_BGSOUND = $0000000B; - TAGID_BIG = $0000000C; - TAGID_BLINK = $0000000D; - TAGID_BLOCKQUOTE = $0000000E; - TAGID_BODY = $0000000F; - TAGID_BR = $00000010; - TAGID_BUTTON = $00000011; - TAGID_CAPTION = $00000012; - TAGID_CENTER = $00000013; - TAGID_CITE = $00000014; - TAGID_CODE = $00000015; - TAGID_COL = $00000016; - TAGID_COLGROUP = $00000017; - TAGID_COMMENT = $00000018; - TAGID_COMMENT_RAW = $00000019; - TAGID_DD = $0000001A; - TAGID_DEL = $0000001B; - TAGID_DFN = $0000001C; - TAGID_DIR = $0000001D; - TAGID_DIV = $0000001E; - TAGID_DL = $0000001F; - TAGID_DT = $00000020; - TAGID_EM = $00000021; - TAGID_EMBED = $00000022; - TAGID_FIELDSET = $00000023; - TAGID_FONT = $00000024; - TAGID_FORM = $00000025; - TAGID_FRAME = $00000026; - TAGID_FRAMESET = $00000027; - TAGID_GENERIC = $00000028; - TAGID_H1 = $00000029; - TAGID_H2 = $0000002A; - TAGID_H3 = $0000002B; - TAGID_H4 = $0000002C; - TAGID_H5 = $0000002D; - TAGID_H6 = $0000002E; - TAGID_HEAD = $0000002F; - TAGID_HR = $00000030; - TAGID_HTML = $00000031; - TAGID_I = $00000032; - TAGID_IFRAME = $00000033; - TAGID_IMG = $00000034; - TAGID_INPUT = $00000035; - TAGID_INS = $00000036; - TAGID_KBD = $00000037; - TAGID_LABEL = $00000038; - TAGID_LEGEND = $00000039; - TAGID_LI = $0000003A; - TAGID_LINK = $0000003B; - TAGID_LISTING = $0000003C; - TAGID_MAP = $0000003D; - TAGID_MARQUEE = $0000003E; - TAGID_MENU = $0000003F; - TAGID_META = $00000040; - TAGID_NEXTID = $00000041; - TAGID_NOBR = $00000042; - TAGID_NOEMBED = $00000043; - TAGID_NOFRAMES = $00000044; - TAGID_NOSCRIPT = $00000045; - TAGID_OBJECT = $00000046; - TAGID_OL = $00000047; - TAGID_OPTION = $00000048; - TAGID_P = $00000049; - TAGID_PARAM = $0000004A; - TAGID_PLAINTEXT = $0000004B; - TAGID_PRE = $0000004C; - TAGID_Q = $0000004D; - TAGID_RP = $0000004E; - TAGID_RT = $0000004F; - TAGID_RUBY = $00000050; - TAGID_S = $00000051; - TAGID_SAMP = $00000052; - TAGID_SCRIPT = $00000053; - TAGID_SELECT = $00000054; - TAGID_SMALL = $00000055; - TAGID_SPAN = $00000056; - TAGID_STRIKE = $00000057; - TAGID_STRONG = $00000058; - TAGID_STYLE = $00000059; - TAGID_SUB = $0000005A; - TAGID_SUP = $0000005B; - TAGID_TABLE = $0000005C; - TAGID_TBODY = $0000005D; - TAGID_TC = $0000005E; - TAGID_TD = $0000005F; - TAGID_TEXTAREA = $00000060; - TAGID_TFOOT = $00000061; - TAGID_TH = $00000062; - TAGID_THEAD = $00000063; - TAGID_TITLE = $00000064; - TAGID_TR = $00000065; - TAGID_TT = $00000066; - TAGID_U = $00000067; - TAGID_UL = $00000068; - TAGID_VAR = $00000069; - TAGID_WBR = $0000006A; - TAGID_XMP = $0000006B; - TAGID_ROOT = $0000006C; - TAGID_OPTGROUP = $0000006D; - TAGID_COUNT = $0000006E; - TAGID_LAST_PREDEFINED = $00002710; - ELEMENT_TAG_ID_Max = $7FFFFFFF; - -// Constants for enum _SELECTION_TYPE -type - _SELECTION_TYPE = TOleEnum; -const - SELECTION_TYPE_None = $00000000; - SELECTION_TYPE_Caret = $00000001; - SELECTION_TYPE_Text = $00000002; - SELECTION_TYPE_Control = $00000003; - SELECTION_TYPE_Max = $7FFFFFFF; - -// Constants for enum _SAVE_SEGMENTS_FLAGS -type - _SAVE_SEGMENTS_FLAGS = TOleEnum; -const - SAVE_SEGMENTS_NoIE4SelectionCompat = $00000001; - SAVE_SEGMENTS_FLAGS_Max = $7FFFFFFF; - -// Constants for enum _CARET_DIRECTION -type - _CARET_DIRECTION = TOleEnum; -const - CARET_DIRECTION_INDETERMINATE = $00000000; - CARET_DIRECTION_SAME = $00000001; - CARET_DIRECTION_BACKWARD = $00000002; - CARET_DIRECTION_FORWARD = $00000003; - CARET_DIRECTION_Max = $7FFFFFFF; - -// Constants for enum _LINE_DIRECTION -type - _LINE_DIRECTION = TOleEnum; -const - LINE_DIRECTION_RightToLeft = $00000001; - LINE_DIRECTION_LeftToRight = $00000002; - LINE_DIRECTION_Max = $7FFFFFFF; - -// Constants for enum _HT_OPTIONS -type - _HT_OPTIONS = TOleEnum; -const - HT_OPT_AllowAfterEOL = $00000001; - HT_OPTIONS_Max = $7FFFFFFF; - -// Constants for enum _HT_RESULTS -type - _HT_RESULTS = TOleEnum; -const - HT_RESULTS_Glyph = $00000001; - HT_RESULTS_Max = $7FFFFFFF; - -// Constants for enum _DISPLAY_MOVEUNIT -type - _DISPLAY_MOVEUNIT = TOleEnum; -const - DISPLAY_MOVEUNIT_PreviousLine = $00000001; - DISPLAY_MOVEUNIT_NextLine = $00000002; - DISPLAY_MOVEUNIT_CurrentLineStart = $00000003; - DISPLAY_MOVEUNIT_CurrentLineEnd = $00000004; - DISPLAY_MOVEUNIT_TopOfWindow = $00000005; - DISPLAY_MOVEUNIT_BottomOfWindow = $00000006; - DISPLAY_MOVEUNIT_Max = $7FFFFFFF; - -// Constants for enum _DISPLAY_GRAVITY -type - _DISPLAY_GRAVITY = TOleEnum; -const - DISPLAY_GRAVITY_PreviousLine = $00000001; - DISPLAY_GRAVITY_NextLine = $00000002; - DISPLAY_GRAVITY_Max = $7FFFFFFF; - -// Constants for enum _DISPLAY_BREAK -type - _DISPLAY_BREAK = TOleEnum; -const - DISPLAY_BREAK_None = $00000000; - DISPLAY_BREAK_Block = $00000001; - DISPLAY_BREAK_Break = $00000002; - DISPLAY_BREAK_Max = $7FFFFFFF; - -// Constants for enum _COORD_SYSTEM -type - _COORD_SYSTEM = TOleEnum; -const - COORD_SYSTEM_GLOBAL = $00000000; - COORD_SYSTEM_PARENT = $00000001; - COORD_SYSTEM_CONTAINER = $00000002; - COORD_SYSTEM_CONTENT = $00000003; - COORD_SYSTEM_FRAME = $00000004; - COORD_SYSTEM_Max = $7FFFFFFF; - -// Constants for enum _HTML_PAINTER -type - _HTML_PAINTER = TOleEnum; -const - HTMLPAINTER_OPAQUE = $00000001; - HTMLPAINTER_TRANSPARENT = $00000002; - HTMLPAINTER_ALPHA = $00000004; - HTMLPAINTER_COMPLEX = $00000008; - HTMLPAINTER_OVERLAY = $00000010; - HTMLPAINTER_HITTEST = $00000020; - HTMLPAINTER_SURFACE = $00000100; - HTMLPAINTER_3DSURFACE = $00000200; - HTMLPAINTER_NOBAND = $00000400; - HTMLPAINTER_NODC = $00001000; - HTMLPAINTER_NOPHYSICALCLIP = $00002000; - HTMLPAINTER_NOSAVEDC = $00004000; - HTMLPAINTER_SUPPORTS_XFORM = $00008000; - HTMLPAINTER_EXPAND = $00010000; - HTMLPAINTER_NOSCROLLBITS = $00020000; - HTML_PAINTER_Max = $7FFFFFFF; - -// Constants for enum _HTML_PAINT_ZORDER -type - _HTML_PAINT_ZORDER = TOleEnum; -const - HTMLPAINT_ZORDER_NONE = $00000000; - HTMLPAINT_ZORDER_REPLACE_ALL = $00000001; - HTMLPAINT_ZORDER_REPLACE_CONTENT = $00000002; - HTMLPAINT_ZORDER_REPLACE_BACKGROUND = $00000003; - HTMLPAINT_ZORDER_BELOW_CONTENT = $00000004; - HTMLPAINT_ZORDER_BELOW_FLOW = $00000005; - HTMLPAINT_ZORDER_ABOVE_FLOW = $00000006; - HTMLPAINT_ZORDER_ABOVE_CONTENT = $00000007; - HTMLPAINT_ZORDER_WINDOW_TOP = $00000008; - HTML_PAINT_ZORDER_Max = $7FFFFFFF; - -// Constants for enum _HTML_PAINT_DRAW_FLAGS -type - _HTML_PAINT_DRAW_FLAGS = TOleEnum; -const - HTMLPAINT_DRAW_UPDATEREGION = $00000001; - HTMLPAINT_DRAW_USE_XFORM = $00000002; - HTML_PAINT_DRAW_FLAGS_Max = $7FFFFFFF; - -// Constants for enum _HTML_PAINT_EVENT_FLAGS -type - _HTML_PAINT_EVENT_FLAGS = TOleEnum; -const - HTMLPAINT_EVENT_TARGET = $00000001; - HTMLPAINT_EVENT_SETCURSOR = $00000002; - HTML_PAINT_EVENT_FLAGS_Max = $7FFFFFFF; - -// Constants for enum _HTML_PAINT_DRAW_INFO_FLAGS -type - _HTML_PAINT_DRAW_INFO_FLAGS = TOleEnum; -const - HTMLPAINT_DRAWINFO_VIEWPORT = $00000001; - HTMLPAINT_DRAWINFO_UPDATEREGION = $00000002; - HTMLPAINT_DRAWINFO_XFORM = $00000004; - HTML_PAINT_DRAW_INFO_FLAGS_Max = $7FFFFFFF; - -// Constants for enum _HTMLDlgFlag -type - _HTMLDlgFlag = TOleEnum; -const - HTMLDlgFlagNo = $00000000; - HTMLDlgFlagOff = $00000000; - HTMLDlgFlag0 = $00000000; - HTMLDlgFlagYes = $00000001; - HTMLDlgFlagOn = $00000001; - HTMLDlgFlag1 = $00000001; - HTMLDlgFlagNotSet = $FFFFFFFF; - HTMLDlgFlag_Max = $7FFFFFFF; - -// Constants for enum _HTMLDlgBorder -type - _HTMLDlgBorder = TOleEnum; -const - HTMLDlgBorderThin = $00000000; - HTMLDlgBorderThick = $00040000; - HTMLDlgBorder_Max = $7FFFFFFF; - -// Constants for enum _HTMLDlgEdge -type - _HTMLDlgEdge = TOleEnum; -const - HTMLDlgEdgeSunken = $00000000; - HTMLDlgEdgeRaised = $00000010; - HTMLDlgEdge_Max = $7FFFFFFF; - -// Constants for enum _HTMLDlgCenter -type - _HTMLDlgCenter = TOleEnum; -const - HTMLDlgCenterNo = $00000000; - HTMLDlgCenterOff = $00000000; - HTMLDlgCenter0 = $00000000; - HTMLDlgCenterYes = $00000001; - HTMLDlgCenterOn = $00000001; - HTMLDlgCenter1 = $00000001; - HTMLDlgCenterParent = $00000001; - HTMLDlgCenterDesktop = $00000002; - HTMLDlgCenter_Max = $7FFFFFFF; - -// Constants for enum _HTMLAppFlag -type - _HTMLAppFlag = TOleEnum; -const - HTMLAppFlagNo = $00000000; - HTMLAppFlagOff = $00000000; - HTMLAppFlag0 = $00000000; - HTMLAppFlagYes = $00000001; - HTMLAppFlagOn = $00000001; - HTMLAppFlag1 = $00000001; - HTMLAppFlag_Max = $7FFFFFFF; - -// Constants for enum _HTMLMinimizeFlag -type - _HTMLMinimizeFlag = TOleEnum; -const - HTMLMinimizeFlagNo = $00000000; - HTMLMinimizeFlagYes = $00020000; - HTMLMinimizeFlag_Max = $7FFFFFFF; - -// Constants for enum _HTMLMaximizeFlag -type - _HTMLMaximizeFlag = TOleEnum; -const - HTMLMaximizeFlagNo = $00000000; - HTMLMaximizeFlagYes = $00010000; - HTMLMaximizeFlag_Max = $7FFFFFFF; - -// Constants for enum _HTMLCaptionFlag -type - _HTMLCaptionFlag = TOleEnum; -const - HTMLCaptionFlagNo = $00000000; - HTMLCaptionFlagYes = $00C00000; - HTMLCaptionFlag_Max = $7FFFFFFF; - -// Constants for enum _HTMLSysMenuFlag -type - _HTMLSysMenuFlag = TOleEnum; -const - HTMLSysMenuFlagNo = $00000000; - HTMLSysMenuFlagYes = $00080000; - HTMLSysMenuFlag_Max = $7FFFFFFF; - -// Constants for enum _HTMLBorder -type - _HTMLBorder = TOleEnum; -const - HTMLBorderNone = $00000000; - HTMLBorderThick = $00040000; - HTMLBorderDialog = $00400000; - HTMLBorderThin = $00800000; - HTMLBorder_Max = $7FFFFFFF; - -// Constants for enum _HTMLBorderStyle -type - _HTMLBorderStyle = TOleEnum; -const - HTMLBorderStyleNormal = $00000000; - HTMLBorderStyleRaised = $00000100; - HTMLBorderStyleSunken = $00000200; - HTMLBorderStylecombined = $00000300; - HTMLBorderStyleStatic = $00020000; - HTMLBorderStyle_Max = $7FFFFFFF; - -// Constants for enum _HTMLWindowState -type - _HTMLWindowState = TOleEnum; -const - HTMLWindowStateNormal = $00000001; - HTMLWindowStateMaximize = $00000003; - HTMLWindowStateMinimize = $00000006; - HTMLWindowState_Max = $7FFFFFFF; - -// Constants for enum _BEHAVIOR_EVENT -type - _BEHAVIOR_EVENT = TOleEnum; -const - BEHAVIOREVENT_FIRST = $00000000; - BEHAVIOREVENT_CONTENTREADY = $00000000; - BEHAVIOREVENT_DOCUMENTREADY = $00000001; - BEHAVIOREVENT_APPLYSTYLE = $00000002; - BEHAVIOREVENT_DOCUMENTCONTEXTCHANGE = $00000003; - BEHAVIOREVENT_CONTENTSAVE = $00000004; - BEHAVIOREVENT_LAST = $00000004; - BEHAVIOR_EVENT_Max = $7FFFFFFF; - -// Constants for enum _BEHAVIOR_EVENT_FLAGS -type - _BEHAVIOR_EVENT_FLAGS = TOleEnum; -const - BEHAVIOREVENTFLAGS_BUBBLE = $00000001; - BEHAVIOREVENTFLAGS_STANDARDADDITIVE = $00000002; - BEHAVIOR_EVENT_FLAGS_Max = $7FFFFFFF; - -// Constants for enum _BEHAVIOR_RENDER_INFO -type - _BEHAVIOR_RENDER_INFO = TOleEnum; -const - BEHAVIORRENDERINFO_BEFOREBACKGROUND = $00000001; - BEHAVIORRENDERINFO_AFTERBACKGROUND = $00000002; - BEHAVIORRENDERINFO_BEFORECONTENT = $00000004; - BEHAVIORRENDERINFO_AFTERCONTENT = $00000008; - BEHAVIORRENDERINFO_AFTERFOREGROUND = $00000020; - BEHAVIORRENDERINFO_ABOVECONTENT = $00000028; - BEHAVIORRENDERINFO_ALLLAYERS = $000000FF; - BEHAVIORRENDERINFO_DISABLEBACKGROUND = $00000100; - BEHAVIORRENDERINFO_DISABLENEGATIVEZ = $00000200; - BEHAVIORRENDERINFO_DISABLECONTENT = $00000400; - BEHAVIORRENDERINFO_DISABLEPOSITIVEZ = $00000800; - BEHAVIORRENDERINFO_DISABLEALLLAYERS = $00000F00; - BEHAVIORRENDERINFO_HITTESTING = $00001000; - BEHAVIORRENDERINFO_SURFACE = $00100000; - BEHAVIORRENDERINFO_3DSURFACE = $00200000; - BEHAVIOR_RENDER_INFO_Max = $7FFFFFFF; - -// Constants for enum _BEHAVIOR_RELATION -type - _BEHAVIOR_RELATION = TOleEnum; -const - BEHAVIOR_FIRSTRELATION = $00000000; - BEHAVIOR_SAMEELEMENT = $00000000; - BEHAVIOR_PARENT = $00000001; - BEHAVIOR_CHILD = $00000002; - BEHAVIOR_SIBLING = $00000003; - BEHAVIOR_LASTRELATION = $00000003; - BEHAVIOR_RELATION_Max = $7FFFFFFF; - -// Constants for enum _BEHAVIOR_LAYOUT_INFO -type - _BEHAVIOR_LAYOUT_INFO = TOleEnum; -const - BEHAVIORLAYOUTINFO_FULLDELEGATION = $00000001; - BEHAVIORLAYOUTINFO_MODIFYNATURAL = $00000002; - BEHAVIORLAYOUTINFO_MAPSIZE = $00000004; - BEHAVIOR_LAYOUT_INFO_Max = $7FFFFFFF; - -// Constants for enum _BEHAVIOR_LAYOUT_MODE -type - _BEHAVIOR_LAYOUT_MODE = TOleEnum; -const - BEHAVIORLAYOUTMODE_NATURAL = $00000001; - BEHAVIORLAYOUTMODE_MINWIDTH = $00000002; - BEHAVIORLAYOUTMODE_MAXWIDTH = $00000004; - BEHAVIORLAYOUTMODE_MEDIA_RESOLUTION = $00004000; - BEHAVIORLAYOUTMODE_FINAL_PERCENT = $00008000; - BEHAVIOR_LAYOUT_MODE_Max = $7FFFFFFF; - -// Constants for enum _ELEMENTDESCRIPTOR_FLAGS -type - _ELEMENTDESCRIPTOR_FLAGS = TOleEnum; -const - ELEMENTDESCRIPTORFLAGS_LITERAL = $00000001; - ELEMENTDESCRIPTORFLAGS_NESTED_LITERAL = $00000002; - ELEMENTDESCRIPTOR_FLAGS_Max = $7FFFFFFF; - -// Constants for enum _ELEMENTNAMESPACE_FLAGS -type - _ELEMENTNAMESPACE_FLAGS = TOleEnum; -const - ELEMENTNAMESPACEFLAGS_ALLOWANYTAG = $00000001; - ELEMENTNAMESPACEFLAGS_QUERYFORUNKNOWNTAGS = $00000002; - ELEMENTNAMESPACE_FLAGS_Max = $7FFFFFFF; - -type -// *********************************************************************// -// Forward declaration of types defined in TypeLibrary -// *********************************************************************// - IHTMLEventObj = interface; - IHTMLEventObjDisp = dispinterface; - IHTMLElement = interface; - IHTMLElementDisp = dispinterface; - IHTMLStyle = interface; - IHTMLStyleDisp = dispinterface; - IHTMLFiltersCollection = interface; - IHTMLFiltersCollectionDisp = dispinterface; - IElementBehaviorSite = interface; - IElementBehavior = interface; - IElementBehaviorFactory = interface; - IElementBehaviorSiteOM = interface; - IElementBehaviorRender = interface; - IElementBehaviorSiteRender = interface; - IHTMLStyle2 = interface; - IHTMLStyle2Disp = dispinterface; - IHTMLStyle3 = interface; - IHTMLStyle3Disp = dispinterface; - IHTMLStyle4 = interface; - IHTMLStyle4Disp = dispinterface; - IHTMLRuleStyle = interface; - IHTMLRuleStyleDisp = dispinterface; - IHTMLRuleStyle2 = interface; - IHTMLRuleStyle2Disp = dispinterface; - IHTMLRuleStyle3 = interface; - IHTMLRuleStyle3Disp = dispinterface; - IHTMLRuleStyle4 = interface; - IHTMLRuleStyle4Disp = dispinterface; - DispHTMLStyle = dispinterface; - DispHTMLRuleStyle = dispinterface; - IHTMLRenderStyle = interface; - IHTMLRenderStyleDisp = dispinterface; - DispHTMLRenderStyle = dispinterface; - IHTMLCurrentStyle = interface; - IHTMLCurrentStyleDisp = dispinterface; - IHTMLCurrentStyle2 = interface; - IHTMLCurrentStyle2Disp = dispinterface; - IHTMLCurrentStyle3 = interface; - IHTMLCurrentStyle3Disp = dispinterface; - DispHTMLCurrentStyle = dispinterface; - IHTMLRect = interface; - IHTMLRectDisp = dispinterface; - IHTMLRectCollection = interface; - IHTMLRectCollectionDisp = dispinterface; - IHTMLDOMNode = interface; - IHTMLDOMNodeDisp = dispinterface; - IHTMLDOMNode2 = interface; - IHTMLDOMNode2Disp = dispinterface; - IHTMLDOMAttribute = interface; - IHTMLDOMAttributeDisp = dispinterface; - IHTMLDOMAttribute2 = interface; - IHTMLDOMAttribute2Disp = dispinterface; - IHTMLDOMTextNode = interface; - IHTMLDOMTextNodeDisp = dispinterface; - IHTMLDOMTextNode2 = interface; - IHTMLDOMTextNode2Disp = dispinterface; - IHTMLDOMImplementation = interface; - IHTMLDOMImplementationDisp = dispinterface; - DispHTMLDOMAttribute = dispinterface; - DispHTMLDOMTextNode = dispinterface; - DispHTMLDOMImplementation = dispinterface; - IHTMLAttributeCollection = interface; - IHTMLAttributeCollectionDisp = dispinterface; - IHTMLAttributeCollection2 = interface; - IHTMLAttributeCollection2Disp = dispinterface; - IHTMLDOMChildrenCollection = interface; - IHTMLDOMChildrenCollectionDisp = dispinterface; - DispHTMLAttributeCollection = dispinterface; - DispDOMChildrenCollection = dispinterface; - HTMLElementEvents2 = dispinterface; - HTMLElementEvents = dispinterface; - IHTMLElementCollection = interface; - IHTMLElementCollectionDisp = dispinterface; - IHTMLElement2 = interface; - IHTMLElement2Disp = dispinterface; - IHTMLElement3 = interface; - IHTMLElement3Disp = dispinterface; - IHTMLElement4 = interface; - IHTMLElement4Disp = dispinterface; - IHTMLElementRender = interface; - IHTMLUniqueName = interface; - IHTMLUniqueNameDisp = dispinterface; - IHTMLDatabinding = interface; - IHTMLDatabindingDisp = dispinterface; - IHTMLDocument = interface; - IHTMLDocumentDisp = dispinterface; - IHTMLElementDefaults = interface; - IHTMLElementDefaultsDisp = dispinterface; - DispHTMLDefaults = dispinterface; - IHTCDefaultDispatch = interface; - IHTCDefaultDispatchDisp = dispinterface; - IHTCPropertyBehavior = interface; - IHTCPropertyBehaviorDisp = dispinterface; - IHTCMethodBehavior = interface; - IHTCMethodBehaviorDisp = dispinterface; - IHTCEventBehavior = interface; - IHTCEventBehaviorDisp = dispinterface; - IHTCAttachBehavior = interface; - IHTCAttachBehaviorDisp = dispinterface; - IHTCAttachBehavior2 = interface; - IHTCAttachBehavior2Disp = dispinterface; - IHTCDescBehavior = interface; - IHTCDescBehaviorDisp = dispinterface; - DispHTCDefaultDispatch = dispinterface; - DispHTCPropertyBehavior = dispinterface; - DispHTCMethodBehavior = dispinterface; - DispHTCEventBehavior = dispinterface; - DispHTCAttachBehavior = dispinterface; - DispHTCDescBehavior = dispinterface; - IHTMLUrnCollection = interface; - IHTMLUrnCollectionDisp = dispinterface; - IHTMLGenericElement = interface; - IHTMLGenericElementDisp = dispinterface; - DispHTMLGenericElement = dispinterface; - IHTMLStyleSheetRule = interface; - IHTMLStyleSheetRuleDisp = dispinterface; - IHTMLStyleSheetRulesCollection = interface; - IHTMLStyleSheetRulesCollectionDisp = dispinterface; - IHTMLStyleSheetPage = interface; - IHTMLStyleSheetPageDisp = dispinterface; - IHTMLStyleSheetPagesCollection = interface; - IHTMLStyleSheetPagesCollectionDisp = dispinterface; - IHTMLStyleSheetsCollection = interface; - IHTMLStyleSheetsCollectionDisp = dispinterface; - IHTMLStyleSheet = interface; - IHTMLStyleSheetDisp = dispinterface; - IHTMLStyleSheet2 = interface; - IHTMLStyleSheet2Disp = dispinterface; - DispHTMLStyleSheet = dispinterface; - HTMLLinkElementEvents2 = dispinterface; - HTMLLinkElementEvents = dispinterface; - IHTMLLinkElement = interface; - IHTMLLinkElementDisp = dispinterface; - IHTMLLinkElement2 = interface; - IHTMLLinkElement2Disp = dispinterface; - IHTMLLinkElement3 = interface; - IHTMLLinkElement3Disp = dispinterface; - DispHTMLLinkElement = dispinterface; - IHTMLTxtRange = interface; - IHTMLTxtRangeDisp = dispinterface; - IHTMLTextRangeMetrics = interface; - IHTMLTextRangeMetricsDisp = dispinterface; - IHTMLTextRangeMetrics2 = interface; - IHTMLTextRangeMetrics2Disp = dispinterface; - IHTMLTxtRangeCollection = interface; - IHTMLTxtRangeCollectionDisp = dispinterface; - HTMLFormElementEvents2 = dispinterface; - HTMLFormElementEvents = dispinterface; - IHTMLFormElement = interface; - IHTMLFormElementDisp = dispinterface; - IHTMLFormElement2 = interface; - IHTMLFormElement2Disp = dispinterface; - IHTMLFormElement3 = interface; - IHTMLFormElement3Disp = dispinterface; - IHTMLSubmitData = interface; - IHTMLSubmitDataDisp = dispinterface; - DispHTMLFormElement = dispinterface; - HTMLControlElementEvents2 = dispinterface; - HTMLControlElementEvents = dispinterface; - IHTMLControlElement = interface; - IHTMLControlElementDisp = dispinterface; - IHTMLTextElement = interface; - IHTMLTextElementDisp = dispinterface; - DispHTMLTextElement = dispinterface; - HTMLTextContainerEvents2 = dispinterface; - HTMLTextContainerEvents = dispinterface; - IHTMLTextContainer = interface; - IHTMLTextContainerDisp = dispinterface; - IHTMLControlRange = interface; - IHTMLControlRangeDisp = dispinterface; - IHTMLControlRange2 = interface; - IHTMLControlRange2Disp = dispinterface; - HTMLImgEvents2 = dispinterface; - HTMLImgEvents = dispinterface; - IHTMLImgElement = interface; - IHTMLImgElementDisp = dispinterface; - IHTMLImgElement2 = interface; - IHTMLImgElement2Disp = dispinterface; - IHTMLImageElementFactory = interface; - IHTMLImageElementFactoryDisp = dispinterface; - DispHTMLImg = dispinterface; - IHTMLBodyElement = interface; - IHTMLBodyElementDisp = dispinterface; - IHTMLBodyElement2 = interface; - IHTMLBodyElement2Disp = dispinterface; - DispHTMLBody = dispinterface; - IHTMLFontElement = interface; - IHTMLFontElementDisp = dispinterface; - DispHTMLFontElement = dispinterface; - HTMLAnchorEvents2 = dispinterface; - HTMLAnchorEvents = dispinterface; - IHTMLAnchorElement = interface; - IHTMLAnchorElementDisp = dispinterface; - IHTMLAnchorElement2 = interface; - IHTMLAnchorElement2Disp = dispinterface; - DispHTMLAnchorElement = dispinterface; - HTMLLabelEvents2 = dispinterface; - HTMLLabelEvents = dispinterface; - IHTMLLabelElement = interface; - IHTMLLabelElementDisp = dispinterface; - IHTMLLabelElement2 = interface; - IHTMLLabelElement2Disp = dispinterface; - DispHTMLLabelElement = dispinterface; - IHTMLListElement = interface; - IHTMLListElementDisp = dispinterface; - IHTMLListElement2 = interface; - IHTMLListElement2Disp = dispinterface; - DispHTMLListElement = dispinterface; - IHTMLUListElement = interface; - IHTMLUListElementDisp = dispinterface; - DispHTMLUListElement = dispinterface; - IHTMLOListElement = interface; - IHTMLOListElementDisp = dispinterface; - DispHTMLOListElement = dispinterface; - IHTMLLIElement = interface; - IHTMLLIElementDisp = dispinterface; - DispHTMLLIElement = dispinterface; - IHTMLBlockElement = interface; - IHTMLBlockElementDisp = dispinterface; - IHTMLBlockElement2 = interface; - IHTMLBlockElement2Disp = dispinterface; - DispHTMLBlockElement = dispinterface; - IHTMLDivElement = interface; - IHTMLDivElementDisp = dispinterface; - DispHTMLDivElement = dispinterface; - IHTMLDDElement = interface; - IHTMLDDElementDisp = dispinterface; - DispHTMLDDElement = dispinterface; - IHTMLDTElement = interface; - IHTMLDTElementDisp = dispinterface; - DispHTMLDTElement = dispinterface; - IHTMLBRElement = interface; - IHTMLBRElementDisp = dispinterface; - DispHTMLBRElement = dispinterface; - IHTMLDListElement = interface; - IHTMLDListElementDisp = dispinterface; - DispHTMLDListElement = dispinterface; - IHTMLHRElement = interface; - IHTMLHRElementDisp = dispinterface; - DispHTMLHRElement = dispinterface; - IHTMLParaElement = interface; - IHTMLParaElementDisp = dispinterface; - DispHTMLParaElement = dispinterface; - IHTMLElementCollection2 = interface; - IHTMLElementCollection2Disp = dispinterface; - IHTMLElementCollection3 = interface; - IHTMLElementCollection3Disp = dispinterface; - DispHTMLElementCollection = dispinterface; - IHTMLHeaderElement = interface; - IHTMLHeaderElementDisp = dispinterface; - DispHTMLHeaderElement = dispinterface; - HTMLSelectElementEvents2 = dispinterface; - HTMLSelectElementEvents = dispinterface; - IHTMLSelectElement = interface; - IHTMLSelectElementDisp = dispinterface; - IHTMLSelectElement2 = interface; - IHTMLSelectElement2Disp = dispinterface; - IHTMLSelectElement4 = interface; - IHTMLSelectElement4Disp = dispinterface; - DispHTMLSelectElement = dispinterface; - IHTMLSelectionObject = interface; - IHTMLSelectionObjectDisp = dispinterface; - IHTMLSelectionObject2 = interface; - IHTMLSelectionObject2Disp = dispinterface; - IHTMLOptionElement = interface; - IHTMLOptionElementDisp = dispinterface; - IHTMLOptionElement3 = interface; - IHTMLOptionElement3Disp = dispinterface; - IHTMLOptionElementFactory = interface; - IHTMLOptionElementFactoryDisp = dispinterface; - DispHTMLOptionElement = dispinterface; - HTMLButtonElementEvents2 = dispinterface; - HTMLButtonElementEvents = dispinterface; - HTMLInputTextElementEvents2 = dispinterface; - HTMLOptionButtonElementEvents2 = dispinterface; - HTMLInputFileElementEvents2 = dispinterface; - HTMLInputImageEvents2 = dispinterface; - HTMLInputTextElementEvents = dispinterface; - HTMLOptionButtonElementEvents = dispinterface; - HTMLInputFileElementEvents = dispinterface; - HTMLInputImageEvents = dispinterface; - IHTMLInputElement = interface; - IHTMLInputElementDisp = dispinterface; - IHTMLInputElement2 = interface; - IHTMLInputElement2Disp = dispinterface; - IHTMLInputButtonElement = interface; - IHTMLInputButtonElementDisp = dispinterface; - IHTMLInputHiddenElement = interface; - IHTMLInputHiddenElementDisp = dispinterface; - IHTMLInputTextElement = interface; - IHTMLInputTextElementDisp = dispinterface; - IHTMLInputFileElement = interface; - IHTMLInputFileElementDisp = dispinterface; - IHTMLOptionButtonElement = interface; - IHTMLOptionButtonElementDisp = dispinterface; - IHTMLInputImage = interface; - IHTMLInputImageDisp = dispinterface; - DispHTMLInputElement = dispinterface; - IHTMLTextAreaElement = interface; - IHTMLTextAreaElementDisp = dispinterface; - DispHTMLTextAreaElement = dispinterface; - DispHTMLRichtextElement = dispinterface; - IHTMLButtonElement = interface; - IHTMLButtonElementDisp = dispinterface; - DispHTMLButtonElement = dispinterface; - HTMLMarqueeElementEvents2 = dispinterface; - HTMLMarqueeElementEvents = dispinterface; - IHTMLMarqueeElement = interface; - IHTMLMarqueeElementDisp = dispinterface; - DispHTMLMarqueeElement = dispinterface; - IHTMLHtmlElement = interface; - IHTMLHtmlElementDisp = dispinterface; - IHTMLHeadElement = interface; - IHTMLHeadElementDisp = dispinterface; - IHTMLTitleElement = interface; - IHTMLTitleElementDisp = dispinterface; - IHTMLMetaElement = interface; - IHTMLMetaElementDisp = dispinterface; - IHTMLMetaElement2 = interface; - IHTMLMetaElement2Disp = dispinterface; - IHTMLBaseElement = interface; - IHTMLBaseElementDisp = dispinterface; - IHTMLIsIndexElement = interface; - IHTMLIsIndexElementDisp = dispinterface; - IHTMLIsIndexElement2 = interface; - IHTMLIsIndexElement2Disp = dispinterface; - IHTMLNextIdElement = interface; - IHTMLNextIdElementDisp = dispinterface; - DispHTMLHtmlElement = dispinterface; - DispHTMLHeadElement = dispinterface; - DispHTMLTitleElement = dispinterface; - DispHTMLMetaElement = dispinterface; - DispHTMLBaseElement = dispinterface; - DispHTMLIsIndexElement = dispinterface; - DispHTMLNextIdElement = dispinterface; - IHTMLBaseFontElement = interface; - IHTMLBaseFontElementDisp = dispinterface; - DispHTMLBaseFontElement = dispinterface; - IHTMLUnknownElement = interface; - IHTMLUnknownElementDisp = dispinterface; - DispHTMLUnknownElement = dispinterface; - IOmHistory = interface; - IOmHistoryDisp = dispinterface; - IHTMLMimeTypesCollection = interface; - IHTMLMimeTypesCollectionDisp = dispinterface; - IHTMLPluginsCollection = interface; - IHTMLPluginsCollectionDisp = dispinterface; - IHTMLOpsProfile = interface; - IHTMLOpsProfileDisp = dispinterface; - IOmNavigator = interface; - IOmNavigatorDisp = dispinterface; - IHTMLLocation = interface; - IHTMLLocationDisp = dispinterface; - IHTMLBookmarkCollection = interface; - IHTMLBookmarkCollectionDisp = dispinterface; - IHTMLDataTransfer = interface; - IHTMLDataTransferDisp = dispinterface; - IHTMLEventObj2 = interface; - IHTMLEventObj2Disp = dispinterface; - IHTMLEventObj3 = interface; - IHTMLEventObj3Disp = dispinterface; - IHTMLEventObj4 = interface; - IHTMLEventObj4Disp = dispinterface; - DispCEventObj = dispinterface; - HTMLWindowEvents2 = dispinterface; - HTMLWindowEvents = dispinterface; - IHTMLDocument2 = interface; - IHTMLDocument2Disp = dispinterface; - IHTMLFramesCollection2 = interface; - IHTMLFramesCollection2Disp = dispinterface; - IHTMLWindow2 = interface; - IHTMLWindow2Disp = dispinterface; - IHTMLScreen = interface; - IHTMLScreenDisp = dispinterface; - IHTMLWindow3 = interface; - IHTMLWindow3Disp = dispinterface; - IHTMLFrameBase = interface; - IHTMLFrameBaseDisp = dispinterface; - IHTMLScreen2 = interface; - IHTMLScreen2Disp = dispinterface; - IHTMLWindow4 = interface; - IHTMLWindow4Disp = dispinterface; - DispHTMLScreen = dispinterface; - DispHTMLWindow2 = dispinterface; - DispHTMLWindowProxy = dispinterface; - HTMLDocumentEvents2 = dispinterface; - HTMLDocumentEvents = dispinterface; - IHTMLDocument3 = interface; - IHTMLDocument3Disp = dispinterface; - IHTMLDocument4 = interface; - IHTMLDocument4Disp = dispinterface; - IHTMLDocument5 = interface; - IHTMLDocument5Disp = dispinterface; - DispHTMLDocument = dispinterface; - DWebBridgeEvents = dispinterface; - IWebBridge = interface; - IWebBridgeDisp = dispinterface; - IWBScriptControl = interface; - IWBScriptControlDisp = dispinterface; - IHTMLEmbedElement = interface; - IHTMLEmbedElementDisp = dispinterface; - DispHTMLEmbed = dispinterface; - HTMLMapEvents2 = dispinterface; - HTMLMapEvents = dispinterface; - IHTMLAreasCollection = interface; - IHTMLAreasCollectionDisp = dispinterface; - IHTMLAreasCollection2 = interface; - IHTMLAreasCollection2Disp = dispinterface; - IHTMLAreasCollection3 = interface; - IHTMLAreasCollection3Disp = dispinterface; - IHTMLMapElement = interface; - IHTMLMapElementDisp = dispinterface; - DispHTMLAreasCollection = dispinterface; - DispHTMLMapElement = dispinterface; - HTMLAreaEvents2 = dispinterface; - HTMLAreaEvents = dispinterface; - IHTMLAreaElement = interface; - IHTMLAreaElementDisp = dispinterface; - DispHTMLAreaElement = dispinterface; - IHTMLTableCaption = interface; - IHTMLTableCaptionDisp = dispinterface; - DispHTMLTableCaption = dispinterface; - IHTMLCommentElement = interface; - IHTMLCommentElementDisp = dispinterface; - IHTMLCommentElement2 = interface; - IHTMLCommentElement2Disp = dispinterface; - DispHTMLCommentElement = dispinterface; - IHTMLPhraseElement = interface; - IHTMLPhraseElementDisp = dispinterface; - IHTMLPhraseElement2 = interface; - IHTMLPhraseElement2Disp = dispinterface; - IHTMLSpanElement = interface; - IHTMLSpanElementDisp = dispinterface; - DispHTMLPhraseElement = dispinterface; - DispHTMLSpanElement = dispinterface; - HTMLTableEvents2 = dispinterface; - HTMLTableEvents = dispinterface; - IHTMLTableSection = interface; - IHTMLTableSectionDisp = dispinterface; - IHTMLTable = interface; - IHTMLTableDisp = dispinterface; - IHTMLTable2 = interface; - IHTMLTable2Disp = dispinterface; - IHTMLTable3 = interface; - IHTMLTable3Disp = dispinterface; - IHTMLTableCol = interface; - IHTMLTableColDisp = dispinterface; - IHTMLTableCol2 = interface; - IHTMLTableCol2Disp = dispinterface; - IHTMLTableSection2 = interface; - IHTMLTableSection2Disp = dispinterface; - IHTMLTableSection3 = interface; - IHTMLTableSection3Disp = dispinterface; - IHTMLTableRow = interface; - IHTMLTableRowDisp = dispinterface; - IHTMLTableRow2 = interface; - IHTMLTableRow2Disp = dispinterface; - IHTMLTableRow3 = interface; - IHTMLTableRow3Disp = dispinterface; - IHTMLTableRowMetrics = interface; - IHTMLTableRowMetricsDisp = dispinterface; - IHTMLTableCell = interface; - IHTMLTableCellDisp = dispinterface; - IHTMLTableCell2 = interface; - IHTMLTableCell2Disp = dispinterface; - DispHTMLTable = dispinterface; - DispHTMLTableCol = dispinterface; - DispHTMLTableSection = dispinterface; - DispHTMLTableRow = dispinterface; - DispHTMLTableCell = dispinterface; - HTMLScriptEvents2 = dispinterface; - HTMLScriptEvents = dispinterface; - IHTMLScriptElement = interface; - IHTMLScriptElementDisp = dispinterface; - IHTMLScriptElement2 = interface; - IHTMLScriptElement2Disp = dispinterface; - DispHTMLScriptElement = dispinterface; - IHTMLNoShowElement = interface; - IHTMLNoShowElementDisp = dispinterface; - DispHTMLNoShowElement = dispinterface; - HTMLObjectElementEvents2 = dispinterface; - HTMLObjectElementEvents = dispinterface; - IHTMLObjectElement = interface; - IHTMLObjectElementDisp = dispinterface; - IHTMLObjectElement2 = interface; - IHTMLObjectElement2Disp = dispinterface; - IHTMLObjectElement3 = interface; - IHTMLObjectElement3Disp = dispinterface; - IHTMLParamElement = interface; - IHTMLParamElementDisp = dispinterface; - DispHTMLObjectElement = dispinterface; - DispHTMLParamElement = dispinterface; - HTMLFrameSiteEvents2 = dispinterface; - HTMLFrameSiteEvents = dispinterface; - IHTMLFrameBase2 = interface; - IHTMLFrameBase2Disp = dispinterface; - IHTMLFrameBase3 = interface; - IHTMLFrameBase3Disp = dispinterface; - DispHTMLFrameBase = dispinterface; - IHTMLFrameElement = interface; - IHTMLFrameElementDisp = dispinterface; - IHTMLFrameElement2 = interface; - IHTMLFrameElement2Disp = dispinterface; - DispHTMLFrameElement = dispinterface; - IHTMLIFrameElement = interface; - IHTMLIFrameElementDisp = dispinterface; - IHTMLIFrameElement2 = interface; - IHTMLIFrameElement2Disp = dispinterface; - DispHTMLIFrame = dispinterface; - IHTMLDivPosition = interface; - IHTMLDivPositionDisp = dispinterface; - IHTMLFieldSetElement = interface; - IHTMLFieldSetElementDisp = dispinterface; - IHTMLFieldSetElement2 = interface; - IHTMLFieldSetElement2Disp = dispinterface; - IHTMLLegendElement = interface; - IHTMLLegendElementDisp = dispinterface; - IHTMLLegendElement2 = interface; - IHTMLLegendElement2Disp = dispinterface; - DispHTMLDivPosition = dispinterface; - DispHTMLFieldSetElement = dispinterface; - DispHTMLLegendElement = dispinterface; - IHTMLSpanFlow = interface; - IHTMLSpanFlowDisp = dispinterface; - DispHTMLSpanFlow = dispinterface; - IHTMLFrameSetElement = interface; - IHTMLFrameSetElementDisp = dispinterface; - IHTMLFrameSetElement2 = interface; - IHTMLFrameSetElement2Disp = dispinterface; - DispHTMLFrameSetSite = dispinterface; - IHTMLBGsound = interface; - IHTMLBGsoundDisp = dispinterface; - DispHTMLBGsound = dispinterface; - IHTMLFontNamesCollection = interface; - IHTMLFontNamesCollectionDisp = dispinterface; - IHTMLFontSizesCollection = interface; - IHTMLFontSizesCollectionDisp = dispinterface; - IHTMLOptionsHolder = interface; - IHTMLOptionsHolderDisp = dispinterface; - HTMLStyleElementEvents2 = dispinterface; - HTMLStyleElementEvents = dispinterface; - IHTMLStyleElement = interface; - IHTMLStyleElementDisp = dispinterface; - DispHTMLStyleElement = dispinterface; - IHTMLStyleFontFace = interface; - IHTMLStyleFontFaceDisp = dispinterface; - ICSSFilterSite = interface; - IMarkupPointer = interface; - IMarkupContainer = interface; - IMarkupContainer2 = interface; - IHTMLChangeSink = interface; - IHTMLChangeLog = interface; - IActiveIMMApp = interface; - IEnumRegisterWordA = interface; - IEnumRegisterWordW = interface; - IEnumInputContext = interface; - ISegmentList = interface; - ISegmentListIterator = interface; - ISegment = interface; - IHTMLCaret = interface; - IDisplayPointer = interface; - ILineInfo = interface; - IElementSegment = interface; - IHighlightSegment = interface; - IHighlightRenderingServices = interface; - IDisplayServices = interface; - IHTMLComputedStyle = interface; - IHtmlDlgSafeHelper = interface; - IBlockFormats = interface; - IFontNames = interface; - ICSSFilter = interface; - ISecureUrlHost = interface; - IMarkupServices = interface; - IMarkupServices2 = interface; - IHTMLChangePlayback = interface; - IMarkupPointer2 = interface; - IMarkupTextFrags = interface; - IXMLGenericParse = interface; - IHTMLEditHost = interface; - IHTMLEditHost2 = interface; - ISequenceNumber = interface; - IIMEServices = interface; - ISelectionServicesListener = interface; - ISelectionServices = interface; - IHTMLEditDesigner = interface; - IHTMLEditServices = interface; - IHTMLEditServices2 = interface; - HTMLNamespaceEvents = dispinterface; - IHTMLNamespace = interface; - IHTMLNamespaceDisp = dispinterface; - IHTMLNamespaceCollection = interface; - IHTMLNamespaceCollectionDisp = dispinterface; - IHTMLPainter = interface; - IHTMLPaintSite = interface; - IHTMLPainterEventInfo = interface; - IHTMLPainterOverlay = interface; - IHTMLIPrintCollection = interface; - IHTMLIPrintCollectionDisp = dispinterface; - IEnumPrivacyRecords = interface; - IHTMLDialog = interface; - IHTMLDialogDisp = dispinterface; - IHTMLDialog2 = interface; - IHTMLDialog2Disp = dispinterface; - IHTMLDialog3 = interface; - IHTMLDialog3Disp = dispinterface; - IHTMLModelessInit = interface; - IHTMLModelessInitDisp = dispinterface; - IHTMLPopup = interface; - IHTMLPopupDisp = dispinterface; - DispHTMLPopup = dispinterface; - IHTMLAppBehavior = interface; - IHTMLAppBehaviorDisp = dispinterface; - IHTMLAppBehavior2 = interface; - IHTMLAppBehavior2Disp = dispinterface; - IHTMLAppBehavior3 = interface; - IHTMLAppBehavior3Disp = dispinterface; - DispHTMLAppBehavior = dispinterface; - DispIHTMLInputButtonElement = dispinterface; - DispIHTMLInputTextElement = dispinterface; - DispIHTMLInputFileElement = dispinterface; - DispIHTMLOptionButtonElement = dispinterface; - DispIHTMLInputImage = dispinterface; - IElementNamespace = interface; - IElementNamespaceTable = interface; - IElementNamespaceFactory = interface; - IElementNamespaceFactory2 = interface; - IElementNamespaceFactoryCallback = interface; - IElementBehaviorSiteOM2 = interface; - IElementBehaviorCategory = interface; - IElementBehaviorSiteCategory = interface; - IEnumUnknown = interface; - IElementBehaviorSubmit = interface; - IElementBehaviorFocus = interface; - IElementBehaviorLayout = interface; - IElementBehaviorLayout2 = interface; - IElementBehaviorSiteLayout = interface; - IElementBehaviorSiteLayout2 = interface; - IHostBehaviorInit = interface; - -// *********************************************************************// -// Declaration of CoClasses defined in Type Library -// (NOTE: Here we map each CoClass to its Default Interface) -// *********************************************************************// - HTMLStyle = DispHTMLStyle; - HTMLRuleStyle = DispHTMLRuleStyle; - HTMLCurrentStyle = DispHTMLCurrentStyle; - HTMLFiltersCollection = IHTMLFiltersCollection; - HTMLDOMAttribute = DispHTMLDOMAttribute; - HTMLDOMTextNode = DispHTMLDOMTextNode; - HTMLAttributeCollection = DispHTMLAttributeCollection; - DOMChildrenCollection = DispDOMChildrenCollection; - HTCDefaultDispatch = DispHTCDefaultDispatch; - HTCPropertyBehavior = DispHTCPropertyBehavior; - HTCMethodBehavior = DispHTCMethodBehavior; - HTCEventBehavior = DispHTCEventBehavior; - HTCAttachBehavior = DispHTCAttachBehavior; - HTCDescBehavior = DispHTCDescBehavior; - HTMLUrnCollection = IHTMLUrnCollection; - HTMLGenericElement = DispHTMLGenericElement; - HTMLStyleSheetRule = IHTMLStyleSheetRule; - HTMLStyleSheetRulesCollection = IHTMLStyleSheetRulesCollection; - HTMLStyleSheet = IHTMLStyleSheet; - HTMLStyleSheetsCollection = IHTMLStyleSheetsCollection; - HTMLLinkElement = DispHTMLLinkElement; - HTMLFormElement = DispHTMLFormElement; - HTMLTextElement = DispHTMLTextElement; - HTMLImg = DispHTMLImg; - HTMLImageElementFactory = IHTMLImageElementFactory; - HTMLBody = DispHTMLBody; - HTMLFontElement = DispHTMLFontElement; - HTMLAnchorElement = DispHTMLAnchorElement; - HTMLLabelElement = DispHTMLLabelElement; - HTMLListElement = DispHTMLListElement; - HTMLUListElement = DispHTMLUListElement; - HTMLOListElement = DispHTMLOListElement; - HTMLLIElement = DispHTMLLIElement; - HTMLBlockElement = DispHTMLBlockElement; - HTMLDivElement = DispHTMLDivElement; - HTMLDDElement = DispHTMLDDElement; - HTMLDTElement = DispHTMLDTElement; - HTMLBRElement = DispHTMLBRElement; - HTMLDListElement = DispHTMLDListElement; - HTMLHRElement = DispHTMLHRElement; - HTMLParaElement = DispHTMLParaElement; - HTMLElementCollection = DispHTMLElementCollection; - HTMLHeaderElement = DispHTMLHeaderElement; - HTMLSelectElement = DispHTMLSelectElement; - HTMLOptionElement = DispHTMLOptionElement; - HTMLOptionElementFactory = IHTMLOptionElementFactory; - HTMLInputElement = DispHTMLInputElement; - HTMLTextAreaElement = DispHTMLTextAreaElement; - HTMLRichtextElement = DispHTMLRichtextElement; - HTMLButtonElement = DispHTMLButtonElement; - HTMLMarqueeElement = DispHTMLMarqueeElement; - HTMLHtmlElement = DispHTMLHtmlElement; - HTMLHeadElement = DispHTMLHeadElement; - HTMLTitleElement = DispHTMLTitleElement; - HTMLMetaElement = DispHTMLMetaElement; - HTMLBaseElement = DispHTMLBaseElement; - HTMLIsIndexElement = DispHTMLIsIndexElement; - HTMLNextIdElement = DispHTMLNextIdElement; - HTMLBaseFontElement = DispHTMLBaseFontElement; - HTMLUnknownElement = DispHTMLUnknownElement; - HTMLHistory = IOmHistory; - CMimeTypes = IHTMLMimeTypesCollection; - CPlugins = IHTMLPluginsCollection; - COpsProfile = IHTMLOpsProfile; - HTMLNavigator = IOmNavigator; - HTMLLocation = IHTMLLocation; - CEventObj = DispCEventObj; - HTMLScreen = IHTMLScreen; - HTMLWindow2 = DispHTMLWindow2; - HTMLWindowProxy = DispHTMLWindowProxy; - HTMLDocument = DispHTMLDocument; - Scriptlet = IWebBridge; - HTMLEmbed = DispHTMLEmbed; - HTMLAreasCollection = DispHTMLAreasCollection; - HTMLMapElement = DispHTMLMapElement; - HTMLAreaElement = DispHTMLAreaElement; - HTMLTableCaption = DispHTMLTableCaption; - HTMLCommentElement = DispHTMLCommentElement; - HTMLPhraseElement = DispHTMLPhraseElement; - HTMLSpanElement = DispHTMLSpanElement; - HTMLTable = DispHTMLTable; - HTMLTableCol = DispHTMLTableCol; - HTMLTableSection = DispHTMLTableSection; - HTMLTableRow = DispHTMLTableRow; - HTMLTableCell = DispHTMLTableCell; - HTMLScriptElement = DispHTMLScriptElement; - HTMLNoShowElement = DispHTMLNoShowElement; - HTMLObjectElement = DispHTMLObjectElement; - HTMLFrameBase = DispHTMLFrameBase; - HTMLFrameElement = DispHTMLFrameElement; - HTMLIFrame = DispHTMLIFrame; - HTMLDivPosition = DispHTMLDivPosition; - HTMLFieldSetElement = DispHTMLFieldSetElement; - HTMLLegendElement = DispHTMLLegendElement; - HTMLSpanFlow = DispHTMLSpanFlow; - HTMLFrameSetSite = DispHTMLFrameSetSite; - HTMLBGsound = DispHTMLBGsound; - HTMLStyleElement = DispHTMLStyleElement; - HTMLStyleFontFace = IHTMLStyleFontFace; - ThreadDialogProcParam = IHTMLModelessInit; - HTMLDialog = IHTMLDialog; - HTMLAppBehavior = DispHTMLAppBehavior; - OldHTMLDocument = DispHTMLDocument; - OldHTMLFormElement = DispHTMLFormElement; - HTMLInputButtonElement = DispIHTMLInputButtonElement; - HTMLInputTextElement = DispIHTMLInputTextElement; - HTMLInputFileElement = DispIHTMLInputFileElement; - HTMLOptionButtonElement = DispIHTMLOptionButtonElement; - htmlInputImage = DispIHTMLInputImage; - -// *********************************************************************// -// Declaration of structures, unions and aliases. -// *********************************************************************// - - LONG_PTR = LPARAM; - - REGISTERWORDA = packed record - lpReading: PAnsiChar; - lpWord: PAnsiChar; - end; - - REGISTERWORDW = packed record - lpReading: PWideChar; - lpWord: PWideChar; - end; - - CANDIDATELIST = packed record - dwSize: LongWord; - dwStyle: LongWord; - dwCount: LongWord; - dwSelection: LongWord; - dwPageStart: LongWord; - dwPageSize: LongWord; - dwOffset: array[0..0] of LongWord; - end; - - CANDIDATEFORM = packed record - dwIndex: LongWord; - dwStyle: LongWord; - ptCurrentPos: TPoint; - rcArea: TRect; - end; - - COMPOSITIONFORM = packed record - dwStyle: LongWord; - ptCurrentPos: TPoint; - rcArea: TRect; - end; - - STYLEBUFA = packed record - dwStyle: LongWord; - szDescription: array[0..31] of Byte; - end; - - STYLEBUFW = packed record - dwStyle: LongWord; - szDescription: array[0..31] of Word; - end; - - UINT_PTR = LongWord; - - IMEMENUITEMINFOA = packed record - cbSize: SYSUINT; - fType: SYSUINT; - fState: SYSUINT; - wID: SYSUINT; - hbmpChecked: HBITMAP; - hbmpUnchecked: HBITMAP; - dwItemData: LongWord; - szString: array[0..79] of Byte; - hbmpItem: HBITMAP; - end; - - IMEMENUITEMINFOW = packed record - cbSize: SYSUINT; - fType: SYSUINT; - fState: SYSUINT; - wID: SYSUINT; - hbmpChecked: HBITMAP; - hbmpUnchecked: HBITMAP; - dwItemData: LongWord; - szString: array[0..79] of Word; - hbmpItem: HBITMAP; - end; - - P_HTML_PAINTER_INFO = ^_HTML_PAINTER_INFO; - _HTML_PAINTER_INFO = packed record - lFlags: Integer; - lZOrder: Integer; - iidDrawObject: TGUID; - rcExpand: TRect; - end; - - _HTML_PAINT_XFORM = packed record - eM11: Single; - eM12: Single; - eM21: Single; - eM22: Single; - eDx: Single; - eDy: Single; - end; - - P_HTML_PAINT_DRAW_INFO = ^_HTML_PAINT_DRAW_INFO; - _HTML_PAINT_DRAW_INFO = packed record - rcViewport: TRect; - hrgnUpdate: Pointer; - xform: _HTML_PAINT_XFORM; - end; - -// *********************************************************************// -// Interface: IHTMLEventObj -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F32D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEventObj = interface(IDispatch) - ['{3050F32D-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_srcElement: IHTMLElement; safecall; - function Get_altKey: WordBool; safecall; - function Get_ctrlKey: WordBool; safecall; - function Get_shiftKey: WordBool; safecall; - procedure Set_returnValue(p: OleVariant); safecall; - function Get_returnValue: OleVariant; safecall; - procedure Set_cancelBubble(p: WordBool); safecall; - function Get_cancelBubble: WordBool; safecall; - function Get_fromElement: IHTMLElement; safecall; - function Get_toElement: IHTMLElement; safecall; - procedure Set_keyCode(p: Integer); safecall; - function Get_keyCode: Integer; safecall; - function Get_button: Integer; safecall; - function Get_type_: WideString; safecall; - function Get_qualifier: WideString; safecall; - function Get_reason: Integer; safecall; - function Get_x: Integer; safecall; - function Get_y: Integer; safecall; - function Get_clientX: Integer; safecall; - function Get_clientY: Integer; safecall; - function Get_offsetX: Integer; safecall; - function Get_offsetY: Integer; safecall; - function Get_screenX: Integer; safecall; - function Get_screenY: Integer; safecall; - function Get_srcFilter: IDispatch; safecall; - property srcElement: IHTMLElement read Get_srcElement; - property altKey: WordBool read Get_altKey; - property ctrlKey: WordBool read Get_ctrlKey; - property shiftKey: WordBool read Get_shiftKey; - property returnValue: OleVariant read Get_returnValue write Set_returnValue; - property cancelBubble: WordBool read Get_cancelBubble write Set_cancelBubble; - property fromElement: IHTMLElement read Get_fromElement; - property toElement: IHTMLElement read Get_toElement; - property keyCode: Integer read Get_keyCode write Set_keyCode; - property button: Integer read Get_button; - property type_: WideString read Get_type_; - property qualifier: WideString read Get_qualifier; - property reason: Integer read Get_reason; - property x: Integer read Get_x; - property y: Integer read Get_y; - property clientX: Integer read Get_clientX; - property clientY: Integer read Get_clientY; - property offsetX: Integer read Get_offsetX; - property offsetY: Integer read Get_offsetY; - property screenX: Integer read Get_screenX; - property screenY: Integer read Get_screenY; - property srcFilter: IDispatch read Get_srcFilter; - end; - -// *********************************************************************// -// DispIntf: IHTMLEventObjDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F32D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEventObjDisp = dispinterface - ['{3050F32D-98B5-11CF-BB82-00AA00BDCE0B}'] - property srcElement: IHTMLElement readonly dispid 1001; - property altKey: WordBool readonly dispid 1002; - property ctrlKey: WordBool readonly dispid 1003; - property shiftKey: WordBool readonly dispid 1004; - property returnValue: OleVariant dispid 1007; - property cancelBubble: WordBool dispid 1008; - property fromElement: IHTMLElement readonly dispid 1009; - property toElement: IHTMLElement readonly dispid 1010; - property keyCode: Integer dispid 1011; - property button: Integer readonly dispid 1012; - property type_: WideString readonly dispid 1013; - property qualifier: WideString readonly dispid 1014; - property reason: Integer readonly dispid 1015; - property x: Integer readonly dispid 1005; - property y: Integer readonly dispid 1006; - property clientX: Integer readonly dispid 1020; - property clientY: Integer readonly dispid 1021; - property offsetX: Integer readonly dispid 1022; - property offsetY: Integer readonly dispid 1023; - property screenX: Integer readonly dispid 1024; - property screenY: Integer readonly dispid 1025; - property srcFilter: IDispatch readonly dispid 1026; - end; - -// *********************************************************************// -// Interface: IHTMLElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1FF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElement = interface(IDispatch) - ['{3050F1FF-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); safecall; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; safecall; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; safecall; - procedure Set_className(const p: WideString); safecall; - function Get_className: WideString; safecall; - procedure Set_id(const p: WideString); safecall; - function Get_id: WideString; safecall; - function Get_tagName: WideString; safecall; - function Get_parentElement: IHTMLElement; safecall; - function Get_style: IHTMLStyle; safecall; - procedure Set_onhelp(p: OleVariant); safecall; - function Get_onhelp: OleVariant; safecall; - procedure Set_onclick(p: OleVariant); safecall; - function Get_onclick: OleVariant; safecall; - procedure Set_ondblclick(p: OleVariant); safecall; - function Get_ondblclick: OleVariant; safecall; - procedure Set_onkeydown(p: OleVariant); safecall; - function Get_onkeydown: OleVariant; safecall; - procedure Set_onkeyup(p: OleVariant); safecall; - function Get_onkeyup: OleVariant; safecall; - procedure Set_onkeypress(p: OleVariant); safecall; - function Get_onkeypress: OleVariant; safecall; - procedure Set_onmouseout(p: OleVariant); safecall; - function Get_onmouseout: OleVariant; safecall; - procedure Set_onmouseover(p: OleVariant); safecall; - function Get_onmouseover: OleVariant; safecall; - procedure Set_onmousemove(p: OleVariant); safecall; - function Get_onmousemove: OleVariant; safecall; - procedure Set_onmousedown(p: OleVariant); safecall; - function Get_onmousedown: OleVariant; safecall; - procedure Set_onmouseup(p: OleVariant); safecall; - function Get_onmouseup: OleVariant; safecall; - function Get_document: IDispatch; safecall; - procedure Set_title(const p: WideString); safecall; - function Get_title: WideString; safecall; - procedure Set_language(const p: WideString); safecall; - function Get_language: WideString; safecall; - procedure Set_onselectstart(p: OleVariant); safecall; - function Get_onselectstart: OleVariant; safecall; - procedure scrollIntoView(varargStart: OleVariant); safecall; - function contains(const pChild: IHTMLElement): WordBool; safecall; - function Get_sourceIndex: Integer; safecall; - function Get_recordNumber: OleVariant; safecall; - procedure Set_lang(const p: WideString); safecall; - function Get_lang: WideString; safecall; - function Get_offsetLeft: Integer; safecall; - function Get_offsetTop: Integer; safecall; - function Get_offsetWidth: Integer; safecall; - function Get_offsetHeight: Integer; safecall; - function Get_offsetParent: IHTMLElement; safecall; - procedure Set_innerHTML(const p: WideString); safecall; - function Get_innerHTML: WideString; safecall; - procedure Set_innerText(const p: WideString); safecall; - function Get_innerText: WideString; safecall; - procedure Set_outerHTML(const p: WideString); safecall; - function Get_outerHTML: WideString; safecall; - procedure Set_outerText(const p: WideString); safecall; - function Get_outerText: WideString; safecall; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); safecall; - procedure insertAdjacentText(const where: WideString; const text: WideString); safecall; - function Get_parentTextEdit: IHTMLElement; safecall; - function Get_isTextEdit: WordBool; safecall; - procedure click; safecall; - function Get_filters: IHTMLFiltersCollection; safecall; - procedure Set_ondragstart(p: OleVariant); safecall; - function Get_ondragstart: OleVariant; safecall; - function toString: WideString; safecall; - procedure Set_onbeforeupdate(p: OleVariant); safecall; - function Get_onbeforeupdate: OleVariant; safecall; - procedure Set_onafterupdate(p: OleVariant); safecall; - function Get_onafterupdate: OleVariant; safecall; - procedure Set_onerrorupdate(p: OleVariant); safecall; - function Get_onerrorupdate: OleVariant; safecall; - procedure Set_onrowexit(p: OleVariant); safecall; - function Get_onrowexit: OleVariant; safecall; - procedure Set_onrowenter(p: OleVariant); safecall; - function Get_onrowenter: OleVariant; safecall; - procedure Set_ondatasetchanged(p: OleVariant); safecall; - function Get_ondatasetchanged: OleVariant; safecall; - procedure Set_ondataavailable(p: OleVariant); safecall; - function Get_ondataavailable: OleVariant; safecall; - procedure Set_ondatasetcomplete(p: OleVariant); safecall; - function Get_ondatasetcomplete: OleVariant; safecall; - procedure Set_onfilterchange(p: OleVariant); safecall; - function Get_onfilterchange: OleVariant; safecall; - function Get_children: IDispatch; safecall; - function Get_all: IDispatch; safecall; - property className: WideString read Get_className write Set_className; - property id: WideString read Get_id write Set_id; - property tagName: WideString read Get_tagName; - property parentElement: IHTMLElement read Get_parentElement; - property style: IHTMLStyle read Get_style; - property onhelp: OleVariant read Get_onhelp write Set_onhelp; - property onclick: OleVariant read Get_onclick write Set_onclick; - property ondblclick: OleVariant read Get_ondblclick write Set_ondblclick; - property onkeydown: OleVariant read Get_onkeydown write Set_onkeydown; - property onkeyup: OleVariant read Get_onkeyup write Set_onkeyup; - property onkeypress: OleVariant read Get_onkeypress write Set_onkeypress; - property onmouseout: OleVariant read Get_onmouseout write Set_onmouseout; - property onmouseover: OleVariant read Get_onmouseover write Set_onmouseover; - property onmousemove: OleVariant read Get_onmousemove write Set_onmousemove; - property onmousedown: OleVariant read Get_onmousedown write Set_onmousedown; - property onmouseup: OleVariant read Get_onmouseup write Set_onmouseup; - property document: IDispatch read Get_document; - property title: WideString read Get_title write Set_title; - property language: WideString read Get_language write Set_language; - property onselectstart: OleVariant read Get_onselectstart write Set_onselectstart; - property sourceIndex: Integer read Get_sourceIndex; - property recordNumber: OleVariant read Get_recordNumber; - property lang: WideString read Get_lang write Set_lang; - property offsetLeft: Integer read Get_offsetLeft; - property offsetTop: Integer read Get_offsetTop; - property offsetWidth: Integer read Get_offsetWidth; - property offsetHeight: Integer read Get_offsetHeight; - property offsetParent: IHTMLElement read Get_offsetParent; - property innerHTML: WideString read Get_innerHTML write Set_innerHTML; - property innerText: WideString read Get_innerText write Set_innerText; - property outerHTML: WideString read Get_outerHTML write Set_outerHTML; - property outerText: WideString read Get_outerText write Set_outerText; - property parentTextEdit: IHTMLElement read Get_parentTextEdit; - property isTextEdit: WordBool read Get_isTextEdit; - property filters: IHTMLFiltersCollection read Get_filters; - property ondragstart: OleVariant read Get_ondragstart write Set_ondragstart; - property onbeforeupdate: OleVariant read Get_onbeforeupdate write Set_onbeforeupdate; - property onafterupdate: OleVariant read Get_onafterupdate write Set_onafterupdate; - property onerrorupdate: OleVariant read Get_onerrorupdate write Set_onerrorupdate; - property onrowexit: OleVariant read Get_onrowexit write Set_onrowexit; - property onrowenter: OleVariant read Get_onrowenter write Set_onrowenter; - property ondatasetchanged: OleVariant read Get_ondatasetchanged write Set_ondatasetchanged; - property ondataavailable: OleVariant read Get_ondataavailable write Set_ondataavailable; - property ondatasetcomplete: OleVariant read Get_ondatasetcomplete write Set_ondatasetcomplete; - property onfilterchange: OleVariant read Get_onfilterchange write Set_onfilterchange; - property children: IDispatch read Get_children; - property all: IDispatch read Get_all; - end; - -// *********************************************************************// -// DispIntf: IHTMLElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1FF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElementDisp = dispinterface - ['{3050F1FF-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - end; - -// *********************************************************************// -// Interface: IHTMLStyle -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F25E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyle = interface(IDispatch) - ['{3050F25E-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_fontFamily(const p: WideString); safecall; - function Get_fontFamily: WideString; safecall; - procedure Set_fontStyle(const p: WideString); safecall; - function Get_fontStyle: WideString; safecall; - procedure Set_fontVariant(const p: WideString); safecall; - function Get_fontVariant: WideString; safecall; - procedure Set_fontWeight(const p: WideString); safecall; - function Get_fontWeight: WideString; safecall; - procedure Set_fontSize(p: OleVariant); safecall; - function Get_fontSize: OleVariant; safecall; - procedure Set_font(const p: WideString); safecall; - function Get_font: WideString; safecall; - procedure Set_color(p: OleVariant); safecall; - function Get_color: OleVariant; safecall; - procedure Set_background(const p: WideString); safecall; - function Get_background: WideString; safecall; - procedure Set_backgroundColor(p: OleVariant); safecall; - function Get_backgroundColor: OleVariant; safecall; - procedure Set_backgroundImage(const p: WideString); safecall; - function Get_backgroundImage: WideString; safecall; - procedure Set_backgroundRepeat(const p: WideString); safecall; - function Get_backgroundRepeat: WideString; safecall; - procedure Set_backgroundAttachment(const p: WideString); safecall; - function Get_backgroundAttachment: WideString; safecall; - procedure Set_backgroundPosition(const p: WideString); safecall; - function Get_backgroundPosition: WideString; safecall; - procedure Set_backgroundPositionX(p: OleVariant); safecall; - function Get_backgroundPositionX: OleVariant; safecall; - procedure Set_backgroundPositionY(p: OleVariant); safecall; - function Get_backgroundPositionY: OleVariant; safecall; - procedure Set_wordSpacing(p: OleVariant); safecall; - function Get_wordSpacing: OleVariant; safecall; - procedure Set_letterSpacing(p: OleVariant); safecall; - function Get_letterSpacing: OleVariant; safecall; - procedure Set_textDecoration(const p: WideString); safecall; - function Get_textDecoration: WideString; safecall; - procedure Set_textDecorationNone(p: WordBool); safecall; - function Get_textDecorationNone: WordBool; safecall; - procedure Set_textDecorationUnderline(p: WordBool); safecall; - function Get_textDecorationUnderline: WordBool; safecall; - procedure Set_textDecorationOverline(p: WordBool); safecall; - function Get_textDecorationOverline: WordBool; safecall; - procedure Set_textDecorationLineThrough(p: WordBool); safecall; - function Get_textDecorationLineThrough: WordBool; safecall; - procedure Set_textDecorationBlink(p: WordBool); safecall; - function Get_textDecorationBlink: WordBool; safecall; - procedure Set_verticalAlign(p: OleVariant); safecall; - function Get_verticalAlign: OleVariant; safecall; - procedure Set_textTransform(const p: WideString); safecall; - function Get_textTransform: WideString; safecall; - procedure Set_textAlign(const p: WideString); safecall; - function Get_textAlign: WideString; safecall; - procedure Set_textIndent(p: OleVariant); safecall; - function Get_textIndent: OleVariant; safecall; - procedure Set_lineHeight(p: OleVariant); safecall; - function Get_lineHeight: OleVariant; safecall; - procedure Set_marginTop(p: OleVariant); safecall; - function Get_marginTop: OleVariant; safecall; - procedure Set_marginRight(p: OleVariant); safecall; - function Get_marginRight: OleVariant; safecall; - procedure Set_marginBottom(p: OleVariant); safecall; - function Get_marginBottom: OleVariant; safecall; - procedure Set_marginLeft(p: OleVariant); safecall; - function Get_marginLeft: OleVariant; safecall; - procedure Set_margin(const p: WideString); safecall; - function Get_margin: WideString; safecall; - procedure Set_paddingTop(p: OleVariant); safecall; - function Get_paddingTop: OleVariant; safecall; - procedure Set_paddingRight(p: OleVariant); safecall; - function Get_paddingRight: OleVariant; safecall; - procedure Set_paddingBottom(p: OleVariant); safecall; - function Get_paddingBottom: OleVariant; safecall; - procedure Set_paddingLeft(p: OleVariant); safecall; - function Get_paddingLeft: OleVariant; safecall; - procedure Set_padding(const p: WideString); safecall; - function Get_padding: WideString; safecall; - procedure Set_border(const p: WideString); safecall; - function Get_border: WideString; safecall; - procedure Set_borderTop(const p: WideString); safecall; - function Get_borderTop: WideString; safecall; - procedure Set_borderRight(const p: WideString); safecall; - function Get_borderRight: WideString; safecall; - procedure Set_borderBottom(const p: WideString); safecall; - function Get_borderBottom: WideString; safecall; - procedure Set_borderLeft(const p: WideString); safecall; - function Get_borderLeft: WideString; safecall; - procedure Set_borderColor(const p: WideString); safecall; - function Get_borderColor: WideString; safecall; - procedure Set_borderTopColor(p: OleVariant); safecall; - function Get_borderTopColor: OleVariant; safecall; - procedure Set_borderRightColor(p: OleVariant); safecall; - function Get_borderRightColor: OleVariant; safecall; - procedure Set_borderBottomColor(p: OleVariant); safecall; - function Get_borderBottomColor: OleVariant; safecall; - procedure Set_borderLeftColor(p: OleVariant); safecall; - function Get_borderLeftColor: OleVariant; safecall; - procedure Set_borderWidth(const p: WideString); safecall; - function Get_borderWidth: WideString; safecall; - procedure Set_borderTopWidth(p: OleVariant); safecall; - function Get_borderTopWidth: OleVariant; safecall; - procedure Set_borderRightWidth(p: OleVariant); safecall; - function Get_borderRightWidth: OleVariant; safecall; - procedure Set_borderBottomWidth(p: OleVariant); safecall; - function Get_borderBottomWidth: OleVariant; safecall; - procedure Set_borderLeftWidth(p: OleVariant); safecall; - function Get_borderLeftWidth: OleVariant; safecall; - procedure Set_borderStyle(const p: WideString); safecall; - function Get_borderStyle: WideString; safecall; - procedure Set_borderTopStyle(const p: WideString); safecall; - function Get_borderTopStyle: WideString; safecall; - procedure Set_borderRightStyle(const p: WideString); safecall; - function Get_borderRightStyle: WideString; safecall; - procedure Set_borderBottomStyle(const p: WideString); safecall; - function Get_borderBottomStyle: WideString; safecall; - procedure Set_borderLeftStyle(const p: WideString); safecall; - function Get_borderLeftStyle: WideString; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - procedure Set_height(p: OleVariant); safecall; - function Get_height: OleVariant; safecall; - procedure Set_styleFloat(const p: WideString); safecall; - function Get_styleFloat: WideString; safecall; - procedure Set_clear(const p: WideString); safecall; - function Get_clear: WideString; safecall; - procedure Set_display(const p: WideString); safecall; - function Get_display: WideString; safecall; - procedure Set_visibility(const p: WideString); safecall; - function Get_visibility: WideString; safecall; - procedure Set_listStyleType(const p: WideString); safecall; - function Get_listStyleType: WideString; safecall; - procedure Set_listStylePosition(const p: WideString); safecall; - function Get_listStylePosition: WideString; safecall; - procedure Set_listStyleImage(const p: WideString); safecall; - function Get_listStyleImage: WideString; safecall; - procedure Set_listStyle(const p: WideString); safecall; - function Get_listStyle: WideString; safecall; - procedure Set_whiteSpace(const p: WideString); safecall; - function Get_whiteSpace: WideString; safecall; - procedure Set_top(p: OleVariant); safecall; - function Get_top: OleVariant; safecall; - procedure Set_left(p: OleVariant); safecall; - function Get_left: OleVariant; safecall; - function Get_position: WideString; safecall; - procedure Set_zIndex(p: OleVariant); safecall; - function Get_zIndex: OleVariant; safecall; - procedure Set_overflow(const p: WideString); safecall; - function Get_overflow: WideString; safecall; - procedure Set_pageBreakBefore(const p: WideString); safecall; - function Get_pageBreakBefore: WideString; safecall; - procedure Set_pageBreakAfter(const p: WideString); safecall; - function Get_pageBreakAfter: WideString; safecall; - procedure Set_cssText(const p: WideString); safecall; - function Get_cssText: WideString; safecall; - procedure Set_pixelTop(p: Integer); safecall; - function Get_pixelTop: Integer; safecall; - procedure Set_pixelLeft(p: Integer); safecall; - function Get_pixelLeft: Integer; safecall; - procedure Set_pixelWidth(p: Integer); safecall; - function Get_pixelWidth: Integer; safecall; - procedure Set_pixelHeight(p: Integer); safecall; - function Get_pixelHeight: Integer; safecall; - procedure Set_posTop(p: Single); safecall; - function Get_posTop: Single; safecall; - procedure Set_posLeft(p: Single); safecall; - function Get_posLeft: Single; safecall; - procedure Set_posWidth(p: Single); safecall; - function Get_posWidth: Single; safecall; - procedure Set_posHeight(p: Single); safecall; - function Get_posHeight: Single; safecall; - procedure Set_cursor(const p: WideString); safecall; - function Get_cursor: WideString; safecall; - procedure Set_clip(const p: WideString); safecall; - function Get_clip: WideString; safecall; - procedure Set_filter(const p: WideString); safecall; - function Get_filter: WideString; safecall; - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); safecall; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; safecall; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; safecall; - function toString: WideString; safecall; - property fontFamily: WideString read Get_fontFamily write Set_fontFamily; - property fontStyle: WideString read Get_fontStyle write Set_fontStyle; - property fontVariant: WideString read Get_fontVariant write Set_fontVariant; - property fontWeight: WideString read Get_fontWeight write Set_fontWeight; - property fontSize: OleVariant read Get_fontSize write Set_fontSize; - property font: WideString read Get_font write Set_font; - property color: OleVariant read Get_color write Set_color; - property background: WideString read Get_background write Set_background; - property backgroundColor: OleVariant read Get_backgroundColor write Set_backgroundColor; - property backgroundImage: WideString read Get_backgroundImage write Set_backgroundImage; - property backgroundRepeat: WideString read Get_backgroundRepeat write Set_backgroundRepeat; - property backgroundAttachment: WideString read Get_backgroundAttachment write Set_backgroundAttachment; - property backgroundPosition: WideString read Get_backgroundPosition write Set_backgroundPosition; - property backgroundPositionX: OleVariant read Get_backgroundPositionX write Set_backgroundPositionX; - property backgroundPositionY: OleVariant read Get_backgroundPositionY write Set_backgroundPositionY; - property wordSpacing: OleVariant read Get_wordSpacing write Set_wordSpacing; - property letterSpacing: OleVariant read Get_letterSpacing write Set_letterSpacing; - property textDecoration: WideString read Get_textDecoration write Set_textDecoration; - property textDecorationNone: WordBool read Get_textDecorationNone write Set_textDecorationNone; - property textDecorationUnderline: WordBool read Get_textDecorationUnderline write Set_textDecorationUnderline; - property textDecorationOverline: WordBool read Get_textDecorationOverline write Set_textDecorationOverline; - property textDecorationLineThrough: WordBool read Get_textDecorationLineThrough write Set_textDecorationLineThrough; - property textDecorationBlink: WordBool read Get_textDecorationBlink write Set_textDecorationBlink; - property verticalAlign: OleVariant read Get_verticalAlign write Set_verticalAlign; - property textTransform: WideString read Get_textTransform write Set_textTransform; - property textAlign: WideString read Get_textAlign write Set_textAlign; - property textIndent: OleVariant read Get_textIndent write Set_textIndent; - property lineHeight: OleVariant read Get_lineHeight write Set_lineHeight; - property marginTop: OleVariant read Get_marginTop write Set_marginTop; - property marginRight: OleVariant read Get_marginRight write Set_marginRight; - property marginBottom: OleVariant read Get_marginBottom write Set_marginBottom; - property marginLeft: OleVariant read Get_marginLeft write Set_marginLeft; - property margin: WideString read Get_margin write Set_margin; - property paddingTop: OleVariant read Get_paddingTop write Set_paddingTop; - property paddingRight: OleVariant read Get_paddingRight write Set_paddingRight; - property paddingBottom: OleVariant read Get_paddingBottom write Set_paddingBottom; - property paddingLeft: OleVariant read Get_paddingLeft write Set_paddingLeft; - property padding: WideString read Get_padding write Set_padding; - property border: WideString read Get_border write Set_border; - property borderTop: WideString read Get_borderTop write Set_borderTop; - property borderRight: WideString read Get_borderRight write Set_borderRight; - property borderBottom: WideString read Get_borderBottom write Set_borderBottom; - property borderLeft: WideString read Get_borderLeft write Set_borderLeft; - property borderColor: WideString read Get_borderColor write Set_borderColor; - property borderTopColor: OleVariant read Get_borderTopColor write Set_borderTopColor; - property borderRightColor: OleVariant read Get_borderRightColor write Set_borderRightColor; - property borderBottomColor: OleVariant read Get_borderBottomColor write Set_borderBottomColor; - property borderLeftColor: OleVariant read Get_borderLeftColor write Set_borderLeftColor; - property borderWidth: WideString read Get_borderWidth write Set_borderWidth; - property borderTopWidth: OleVariant read Get_borderTopWidth write Set_borderTopWidth; - property borderRightWidth: OleVariant read Get_borderRightWidth write Set_borderRightWidth; - property borderBottomWidth: OleVariant read Get_borderBottomWidth write Set_borderBottomWidth; - property borderLeftWidth: OleVariant read Get_borderLeftWidth write Set_borderLeftWidth; - property borderStyle: WideString read Get_borderStyle write Set_borderStyle; - property borderTopStyle: WideString read Get_borderTopStyle write Set_borderTopStyle; - property borderRightStyle: WideString read Get_borderRightStyle write Set_borderRightStyle; - property borderBottomStyle: WideString read Get_borderBottomStyle write Set_borderBottomStyle; - property borderLeftStyle: WideString read Get_borderLeftStyle write Set_borderLeftStyle; - property width: OleVariant read Get_width write Set_width; - property height: OleVariant read Get_height write Set_height; - property styleFloat: WideString read Get_styleFloat write Set_styleFloat; - property clear: WideString read Get_clear write Set_clear; - property display: WideString read Get_display write Set_display; - property visibility: WideString read Get_visibility write Set_visibility; - property listStyleType: WideString read Get_listStyleType write Set_listStyleType; - property listStylePosition: WideString read Get_listStylePosition write Set_listStylePosition; - property listStyleImage: WideString read Get_listStyleImage write Set_listStyleImage; - property listStyle: WideString read Get_listStyle write Set_listStyle; - property whiteSpace: WideString read Get_whiteSpace write Set_whiteSpace; - property top: OleVariant read Get_top write Set_top; - property left: OleVariant read Get_left write Set_left; - property position: WideString read Get_position; - property zIndex: OleVariant read Get_zIndex write Set_zIndex; - property overflow: WideString read Get_overflow write Set_overflow; - property pageBreakBefore: WideString read Get_pageBreakBefore write Set_pageBreakBefore; - property pageBreakAfter: WideString read Get_pageBreakAfter write Set_pageBreakAfter; - property cssText: WideString read Get_cssText write Set_cssText; - property pixelTop: Integer read Get_pixelTop write Set_pixelTop; - property pixelLeft: Integer read Get_pixelLeft write Set_pixelLeft; - property pixelWidth: Integer read Get_pixelWidth write Set_pixelWidth; - property pixelHeight: Integer read Get_pixelHeight write Set_pixelHeight; - property posTop: Single read Get_posTop write Set_posTop; - property posLeft: Single read Get_posLeft write Set_posLeft; - property posWidth: Single read Get_posWidth write Set_posWidth; - property posHeight: Single read Get_posHeight write Set_posHeight; - property cursor: WideString read Get_cursor write Set_cursor; - property clip: WideString read Get_clip write Set_clip; - property filter: WideString read Get_filter write Set_filter; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyleDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F25E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleDisp = dispinterface - ['{3050F25E-98B5-11CF-BB82-00AA00BDCE0B}'] - property fontFamily: WideString dispid - 2147413094; - property fontStyle: WideString dispid - 2147413088; - property fontVariant: WideString dispid - 2147413087; - property fontWeight: WideString dispid - 2147413085; - property fontSize: OleVariant dispid - 2147413093; - property font: WideString dispid - 2147413071; - property color: OleVariant dispid - 2147413110; - property background: WideString dispid - 2147413080; - property backgroundColor: OleVariant dispid - 501; - property backgroundImage: WideString dispid - 2147413111; - property backgroundRepeat: WideString dispid - 2147413068; - property backgroundAttachment: WideString dispid - 2147413067; - property backgroundPosition: WideString dispid - 2147413066; - property backgroundPositionX: OleVariant dispid - 2147413079; - property backgroundPositionY: OleVariant dispid - 2147413078; - property wordSpacing: OleVariant dispid - 2147413065; - property letterSpacing: OleVariant dispid - 2147413104; - property textDecoration: WideString dispid - 2147413077; - property textDecorationNone: WordBool dispid - 2147413089; - property textDecorationUnderline: WordBool dispid - 2147413091; - property textDecorationOverline: WordBool dispid - 2147413043; - property textDecorationLineThrough: WordBool dispid - 2147413092; - property textDecorationBlink: WordBool dispid - 2147413090; - property verticalAlign: OleVariant dispid - 2147413064; - property textTransform: WideString dispid - 2147413108; - property textAlign: WideString dispid - 2147418040; - property textIndent: OleVariant dispid - 2147413105; - property lineHeight: OleVariant dispid - 2147413106; - property marginTop: OleVariant dispid - 2147413075; - property marginRight: OleVariant dispid - 2147413074; - property marginBottom: OleVariant dispid - 2147413073; - property marginLeft: OleVariant dispid - 2147413072; - property margin: WideString dispid - 2147413076; - property paddingTop: OleVariant dispid - 2147413100; - property paddingRight: OleVariant dispid - 2147413099; - property paddingBottom: OleVariant dispid - 2147413098; - property paddingLeft: OleVariant dispid - 2147413097; - property padding: WideString dispid - 2147413101; - property border: WideString dispid - 2147413063; - property borderTop: WideString dispid - 2147413062; - property borderRight: WideString dispid - 2147413061; - property borderBottom: WideString dispid - 2147413060; - property borderLeft: WideString dispid - 2147413059; - property borderColor: WideString dispid - 2147413058; - property borderTopColor: OleVariant dispid - 2147413057; - property borderRightColor: OleVariant dispid - 2147413056; - property borderBottomColor: OleVariant dispid - 2147413055; - property borderLeftColor: OleVariant dispid - 2147413054; - property borderWidth: WideString dispid - 2147413053; - property borderTopWidth: OleVariant dispid - 2147413052; - property borderRightWidth: OleVariant dispid - 2147413051; - property borderBottomWidth: OleVariant dispid - 2147413050; - property borderLeftWidth: OleVariant dispid - 2147413049; - property borderStyle: WideString dispid - 2147413048; - property borderTopStyle: WideString dispid - 2147413047; - property borderRightStyle: WideString dispid - 2147413046; - property borderBottomStyle: WideString dispid - 2147413045; - property borderLeftStyle: WideString dispid - 2147413044; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property styleFloat: WideString dispid - 2147413042; - property clear: WideString dispid - 2147413096; - property display: WideString dispid - 2147413041; - property visibility: WideString dispid - 2147413032; - property listStyleType: WideString dispid - 2147413040; - property listStylePosition: WideString dispid - 2147413039; - property listStyleImage: WideString dispid - 2147413038; - property listStyle: WideString dispid - 2147413037; - property whiteSpace: WideString dispid - 2147413036; - property top: OleVariant dispid - 2147418108; - property left: OleVariant dispid - 2147418109; - property position: WideString readonly dispid - 2147413022; - property zIndex: OleVariant dispid - 2147413021; - property overflow: WideString dispid - 2147413102; - property pageBreakBefore: WideString dispid - 2147413035; - property pageBreakAfter: WideString dispid - 2147413034; - property cssText: WideString dispid - 2147413013; - property pixelTop: Integer dispid - 2147414112; - property pixelLeft: Integer dispid - 2147414111; - property pixelWidth: Integer dispid - 2147414110; - property pixelHeight: Integer dispid - 2147414109; - property posTop: Single dispid - 2147414108; - property posLeft: Single dispid - 2147414107; - property posWidth: Single dispid - 2147414106; - property posHeight: Single dispid - 2147414105; - property cursor: WideString dispid - 2147413010; - property clip: WideString dispid - 2147413020; - property filter: WideString dispid - 2147413030; - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - function toString: WideString; dispid - 2147414104; - end; - -// *********************************************************************// -// Interface: IHTMLFiltersCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3EE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFiltersCollection = interface(IDispatch) - ['{3050F3EE-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; safecall; - property length: Integer read Get_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLFiltersCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3EE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFiltersCollectionDisp = dispinterface - ['{3050F3EE-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1001; - property _newEnum: IUnknown readonly dispid - 4; - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; dispid 0; - end; - -// *********************************************************************// -// Interface: IElementBehaviorSite -// Flags: (0) -// GUID: {3050F427-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorSite = interface(IUnknown) - ['{3050F427-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetElement(out ppElement: IHTMLElement): HRESULT; stdcall; - function RegisterNotification(lEvent: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehavior -// Flags: (0) -// GUID: {3050F425-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehavior = interface(IUnknown) - ['{3050F425-98B5-11CF-BB82-00AA00BDCE0B}'] - function Init(pBehaviorSite: IElementBehaviorSite): HRESULT; stdcall; - function Notify(lEvent: Integer; var pVar: OleVariant): HRESULT; stdcall; - function Detach: HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorFactory -// Flags: (0) -// GUID: {3050F429-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorFactory = interface(IUnknown) - ['{3050F429-98B5-11CF-BB82-00AA00BDCE0B}'] - function FindBehavior(const bstrBehavior: WideString; const bstrBehaviorUrl: WideString; - const pSite: IElementBehaviorSite; out ppBehavior: IElementBehavior): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorSiteOM -// Flags: (0) -// GUID: {3050F489-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorSiteOM = interface(IUnknown) - ['{3050F489-98B5-11CF-BB82-00AA00BDCE0B}'] - function RegisterEvent(pchEvent: PWideChar; lFlags: Integer; out plCookie: Integer): HRESULT; stdcall; - function GetEventCookie(pchEvent: PWideChar; out plCookie: Integer): HRESULT; stdcall; - function FireEvent(lCookie: Integer; const pEventObject: IHTMLEventObj): HRESULT; stdcall; - function CreateEventObject(out ppEventObject: IHTMLEventObj): HRESULT; stdcall; - function RegisterName(pchName: PWideChar): HRESULT; stdcall; - function RegisterUrn(pchUrn: PWideChar): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorRender -// Flags: (0) -// GUID: {3050F4AA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorRender = interface(IUnknown) - ['{3050F4AA-98B5-11CF-BB82-00AA00BDCE0B}'] - // !! API fix decl - function Draw(hdc: HDC; lLayer: Integer; var pRect: TRect; - const pReserved: IUnknown): HRESULT; stdcall; - function GetRenderInfo(out plRenderInfo: Integer): HRESULT; stdcall; - function HitTestPoint(var pPoint: TPoint; const pReserved: IUnknown; out pbHit: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorSiteRender -// Flags: (0) -// GUID: {3050F4A7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorSiteRender = interface(IUnknown) - ['{3050F4A7-98B5-11CF-BB82-00AA00BDCE0B}'] - function Invalidate(var pRect: TRect): HRESULT; stdcall; - function InvalidateRenderInfo: HRESULT; stdcall; - function InvalidateStyle: HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLStyle2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4A2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyle2 = interface(IDispatch) - ['{3050F4A2-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_tableLayout(const p: WideString); safecall; - function Get_tableLayout: WideString; safecall; - procedure Set_borderCollapse(const p: WideString); safecall; - function Get_borderCollapse: WideString; safecall; - procedure Set_direction(const p: WideString); safecall; - function Get_direction: WideString; safecall; - procedure Set_behavior(const p: WideString); safecall; - function Get_behavior: WideString; safecall; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); safecall; - function getExpression(const propname: WideString): OleVariant; safecall; - function removeExpression(const propname: WideString): WordBool; safecall; - procedure Set_position(const p: WideString); safecall; - function Get_position: WideString; safecall; - procedure Set_unicodeBidi(const p: WideString); safecall; - function Get_unicodeBidi: WideString; safecall; - procedure Set_bottom(p: OleVariant); safecall; - function Get_bottom: OleVariant; safecall; - procedure Set_right(p: OleVariant); safecall; - function Get_right: OleVariant; safecall; - procedure Set_pixelBottom(p: Integer); safecall; - function Get_pixelBottom: Integer; safecall; - procedure Set_pixelRight(p: Integer); safecall; - function Get_pixelRight: Integer; safecall; - procedure Set_posBottom(p: Single); safecall; - function Get_posBottom: Single; safecall; - procedure Set_posRight(p: Single); safecall; - function Get_posRight: Single; safecall; - procedure Set_imeMode(const p: WideString); safecall; - function Get_imeMode: WideString; safecall; - procedure Set_rubyAlign(const p: WideString); safecall; - function Get_rubyAlign: WideString; safecall; - procedure Set_rubyPosition(const p: WideString); safecall; - function Get_rubyPosition: WideString; safecall; - procedure Set_rubyOverhang(const p: WideString); safecall; - function Get_rubyOverhang: WideString; safecall; - procedure Set_layoutGridChar(p: OleVariant); safecall; - function Get_layoutGridChar: OleVariant; safecall; - procedure Set_layoutGridLine(p: OleVariant); safecall; - function Get_layoutGridLine: OleVariant; safecall; - procedure Set_layoutGridMode(const p: WideString); safecall; - function Get_layoutGridMode: WideString; safecall; - procedure Set_layoutGridType(const p: WideString); safecall; - function Get_layoutGridType: WideString; safecall; - procedure Set_layoutGrid(const p: WideString); safecall; - function Get_layoutGrid: WideString; safecall; - procedure Set_wordBreak(const p: WideString); safecall; - function Get_wordBreak: WideString; safecall; - procedure Set_lineBreak(const p: WideString); safecall; - function Get_lineBreak: WideString; safecall; - procedure Set_textJustify(const p: WideString); safecall; - function Get_textJustify: WideString; safecall; - procedure Set_textJustifyTrim(const p: WideString); safecall; - function Get_textJustifyTrim: WideString; safecall; - procedure Set_textKashida(p: OleVariant); safecall; - function Get_textKashida: OleVariant; safecall; - procedure Set_textAutospace(const p: WideString); safecall; - function Get_textAutospace: WideString; safecall; - procedure Set_overflowX(const p: WideString); safecall; - function Get_overflowX: WideString; safecall; - procedure Set_overflowY(const p: WideString); safecall; - function Get_overflowY: WideString; safecall; - procedure Set_accelerator(const p: WideString); safecall; - function Get_accelerator: WideString; safecall; - property tableLayout: WideString read Get_tableLayout write Set_tableLayout; - property borderCollapse: WideString read Get_borderCollapse write Set_borderCollapse; - property direction: WideString read Get_direction write Set_direction; - property behavior: WideString read Get_behavior write Set_behavior; - property position: WideString read Get_position write Set_position; - property unicodeBidi: WideString read Get_unicodeBidi write Set_unicodeBidi; - property bottom: OleVariant read Get_bottom write Set_bottom; - property right: OleVariant read Get_right write Set_right; - property pixelBottom: Integer read Get_pixelBottom write Set_pixelBottom; - property pixelRight: Integer read Get_pixelRight write Set_pixelRight; - property posBottom: Single read Get_posBottom write Set_posBottom; - property posRight: Single read Get_posRight write Set_posRight; - property imeMode: WideString read Get_imeMode write Set_imeMode; - property rubyAlign: WideString read Get_rubyAlign write Set_rubyAlign; - property rubyPosition: WideString read Get_rubyPosition write Set_rubyPosition; - property rubyOverhang: WideString read Get_rubyOverhang write Set_rubyOverhang; - property layoutGridChar: OleVariant read Get_layoutGridChar write Set_layoutGridChar; - property layoutGridLine: OleVariant read Get_layoutGridLine write Set_layoutGridLine; - property layoutGridMode: WideString read Get_layoutGridMode write Set_layoutGridMode; - property layoutGridType: WideString read Get_layoutGridType write Set_layoutGridType; - property layoutGrid: WideString read Get_layoutGrid write Set_layoutGrid; - property wordBreak: WideString read Get_wordBreak write Set_wordBreak; - property lineBreak: WideString read Get_lineBreak write Set_lineBreak; - property textJustify: WideString read Get_textJustify write Set_textJustify; - property textJustifyTrim: WideString read Get_textJustifyTrim write Set_textJustifyTrim; - property textKashida: OleVariant read Get_textKashida write Set_textKashida; - property textAutospace: WideString read Get_textAutospace write Set_textAutospace; - property overflowX: WideString read Get_overflowX write Set_overflowX; - property overflowY: WideString read Get_overflowY write Set_overflowY; - property accelerator: WideString read Get_accelerator write Set_accelerator; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyle2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4A2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyle2Disp = dispinterface - ['{3050F4A2-98B5-11CF-BB82-00AA00BDCE0B}'] - property tableLayout: WideString dispid - 2147413014; - property borderCollapse: WideString dispid - 2147413028; - property direction: WideString dispid - 2147412993; - property behavior: WideString dispid - 2147412997; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property position: WideString dispid - 2147413022; - property unicodeBidi: WideString dispid - 2147412994; - property bottom: OleVariant dispid - 2147418034; - property right: OleVariant dispid - 2147418035; - property pixelBottom: Integer dispid - 2147414103; - property pixelRight: Integer dispid - 2147414102; - property posBottom: Single dispid - 2147414101; - property posRight: Single dispid - 2147414100; - property imeMode: WideString dispid - 2147412992; - property rubyAlign: WideString dispid - 2147412991; - property rubyPosition: WideString dispid - 2147412990; - property rubyOverhang: WideString dispid - 2147412989; - property layoutGridChar: OleVariant dispid - 2147412985; - property layoutGridLine: OleVariant dispid - 2147412984; - property layoutGridMode: WideString dispid - 2147412983; - property layoutGridType: WideString dispid - 2147412982; - property layoutGrid: WideString dispid - 2147412981; - property wordBreak: WideString dispid - 2147412978; - property lineBreak: WideString dispid - 2147412979; - property textJustify: WideString dispid - 2147412977; - property textJustifyTrim: WideString dispid - 2147412976; - property textKashida: OleVariant dispid - 2147412975; - property textAutospace: WideString dispid - 2147412980; - property overflowX: WideString dispid - 2147412973; - property overflowY: WideString dispid - 2147412972; - property accelerator: WideString dispid - 2147412965; - end; - -// *********************************************************************// -// Interface: IHTMLStyle3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F656-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyle3 = interface(IDispatch) - ['{3050F656-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_layoutFlow(const p: WideString); safecall; - function Get_layoutFlow: WideString; safecall; - procedure Set_zoom(p: OleVariant); safecall; - function Get_zoom: OleVariant; safecall; - procedure Set_wordWrap(const p: WideString); safecall; - function Get_wordWrap: WideString; safecall; - procedure Set_textUnderlinePosition(const p: WideString); safecall; - function Get_textUnderlinePosition: WideString; safecall; - procedure Set_scrollbarBaseColor(p: OleVariant); safecall; - function Get_scrollbarBaseColor: OleVariant; safecall; - procedure Set_scrollbarFaceColor(p: OleVariant); safecall; - function Get_scrollbarFaceColor: OleVariant; safecall; - procedure Set_scrollbar3dLightColor(p: OleVariant); safecall; - function Get_scrollbar3dLightColor: OleVariant; safecall; - procedure Set_scrollbarShadowColor(p: OleVariant); safecall; - function Get_scrollbarShadowColor: OleVariant; safecall; - procedure Set_scrollbarHighlightColor(p: OleVariant); safecall; - function Get_scrollbarHighlightColor: OleVariant; safecall; - procedure Set_scrollbarDarkShadowColor(p: OleVariant); safecall; - function Get_scrollbarDarkShadowColor: OleVariant; safecall; - procedure Set_scrollbarArrowColor(p: OleVariant); safecall; - function Get_scrollbarArrowColor: OleVariant; safecall; - procedure Set_scrollbarTrackColor(p: OleVariant); safecall; - function Get_scrollbarTrackColor: OleVariant; safecall; - procedure Set_writingMode(const p: WideString); safecall; - function Get_writingMode: WideString; safecall; - procedure Set_textAlignLast(const p: WideString); safecall; - function Get_textAlignLast: WideString; safecall; - procedure Set_textKashidaSpace(p: OleVariant); safecall; - function Get_textKashidaSpace: OleVariant; safecall; - property layoutFlow: WideString read Get_layoutFlow write Set_layoutFlow; - property zoom: OleVariant read Get_zoom write Set_zoom; - property wordWrap: WideString read Get_wordWrap write Set_wordWrap; - property textUnderlinePosition: WideString read Get_textUnderlinePosition write Set_textUnderlinePosition; - property scrollbarBaseColor: OleVariant read Get_scrollbarBaseColor write Set_scrollbarBaseColor; - property scrollbarFaceColor: OleVariant read Get_scrollbarFaceColor write Set_scrollbarFaceColor; - property scrollbar3dLightColor: OleVariant read Get_scrollbar3dLightColor write Set_scrollbar3dLightColor; - property scrollbarShadowColor: OleVariant read Get_scrollbarShadowColor write Set_scrollbarShadowColor; - property scrollbarHighlightColor: OleVariant read Get_scrollbarHighlightColor write Set_scrollbarHighlightColor; - property scrollbarDarkShadowColor: OleVariant read Get_scrollbarDarkShadowColor write Set_scrollbarDarkShadowColor; - property scrollbarArrowColor: OleVariant read Get_scrollbarArrowColor write Set_scrollbarArrowColor; - property scrollbarTrackColor: OleVariant read Get_scrollbarTrackColor write Set_scrollbarTrackColor; - property writingMode: WideString read Get_writingMode write Set_writingMode; - property textAlignLast: WideString read Get_textAlignLast write Set_textAlignLast; - property textKashidaSpace: OleVariant read Get_textKashidaSpace write Set_textKashidaSpace; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyle3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F656-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyle3Disp = dispinterface - ['{3050F656-98B5-11CF-BB82-00AA00BDCE0B}'] - property layoutFlow: WideString dispid - 2147412957; - property zoom: OleVariant dispid - 2147412959; - property wordWrap: WideString dispid - 2147412954; - property textUnderlinePosition: WideString dispid - 2147412953; - property scrollbarBaseColor: OleVariant dispid - 2147412932; - property scrollbarFaceColor: OleVariant dispid - 2147412931; - property scrollbar3dLightColor: OleVariant dispid - 2147412930; - property scrollbarShadowColor: OleVariant dispid - 2147412929; - property scrollbarHighlightColor: OleVariant dispid - 2147412928; - property scrollbarDarkShadowColor: OleVariant dispid - 2147412927; - property scrollbarArrowColor: OleVariant dispid - 2147412926; - property scrollbarTrackColor: OleVariant dispid - 2147412916; - property writingMode: WideString dispid - 2147412920; - property textAlignLast: WideString dispid - 2147412909; - property textKashidaSpace: OleVariant dispid - 2147412908; - end; - -// *********************************************************************// -// Interface: IHTMLStyle4 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F816-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyle4 = interface(IDispatch) - ['{3050F816-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_textOverflow(const p: WideString); safecall; - function Get_textOverflow: WideString; safecall; - procedure Set_minHeight(p: OleVariant); safecall; - function Get_minHeight: OleVariant; safecall; - property textOverflow: WideString read Get_textOverflow write Set_textOverflow; - property minHeight: OleVariant read Get_minHeight write Set_minHeight; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyle4Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F816-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyle4Disp = dispinterface - ['{3050F816-98B5-11CF-BB82-00AA00BDCE0B}'] - property textOverflow: WideString dispid - 2147412903; - property minHeight: OleVariant dispid - 2147412901; - end; - -// *********************************************************************// -// Interface: IHTMLRuleStyle -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3CF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRuleStyle = interface(IDispatch) - ['{3050F3CF-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_fontFamily(const p: WideString); safecall; - function Get_fontFamily: WideString; safecall; - procedure Set_fontStyle(const p: WideString); safecall; - function Get_fontStyle: WideString; safecall; - procedure Set_fontVariant(const p: WideString); safecall; - function Get_fontVariant: WideString; safecall; - procedure Set_fontWeight(const p: WideString); safecall; - function Get_fontWeight: WideString; safecall; - procedure Set_fontSize(p: OleVariant); safecall; - function Get_fontSize: OleVariant; safecall; - procedure Set_font(const p: WideString); safecall; - function Get_font: WideString; safecall; - procedure Set_color(p: OleVariant); safecall; - function Get_color: OleVariant; safecall; - procedure Set_background(const p: WideString); safecall; - function Get_background: WideString; safecall; - procedure Set_backgroundColor(p: OleVariant); safecall; - function Get_backgroundColor: OleVariant; safecall; - procedure Set_backgroundImage(const p: WideString); safecall; - function Get_backgroundImage: WideString; safecall; - procedure Set_backgroundRepeat(const p: WideString); safecall; - function Get_backgroundRepeat: WideString; safecall; - procedure Set_backgroundAttachment(const p: WideString); safecall; - function Get_backgroundAttachment: WideString; safecall; - procedure Set_backgroundPosition(const p: WideString); safecall; - function Get_backgroundPosition: WideString; safecall; - procedure Set_backgroundPositionX(p: OleVariant); safecall; - function Get_backgroundPositionX: OleVariant; safecall; - procedure Set_backgroundPositionY(p: OleVariant); safecall; - function Get_backgroundPositionY: OleVariant; safecall; - procedure Set_wordSpacing(p: OleVariant); safecall; - function Get_wordSpacing: OleVariant; safecall; - procedure Set_letterSpacing(p: OleVariant); safecall; - function Get_letterSpacing: OleVariant; safecall; - procedure Set_textDecoration(const p: WideString); safecall; - function Get_textDecoration: WideString; safecall; - procedure Set_textDecorationNone(p: WordBool); safecall; - function Get_textDecorationNone: WordBool; safecall; - procedure Set_textDecorationUnderline(p: WordBool); safecall; - function Get_textDecorationUnderline: WordBool; safecall; - procedure Set_textDecorationOverline(p: WordBool); safecall; - function Get_textDecorationOverline: WordBool; safecall; - procedure Set_textDecorationLineThrough(p: WordBool); safecall; - function Get_textDecorationLineThrough: WordBool; safecall; - procedure Set_textDecorationBlink(p: WordBool); safecall; - function Get_textDecorationBlink: WordBool; safecall; - procedure Set_verticalAlign(p: OleVariant); safecall; - function Get_verticalAlign: OleVariant; safecall; - procedure Set_textTransform(const p: WideString); safecall; - function Get_textTransform: WideString; safecall; - procedure Set_textAlign(const p: WideString); safecall; - function Get_textAlign: WideString; safecall; - procedure Set_textIndent(p: OleVariant); safecall; - function Get_textIndent: OleVariant; safecall; - procedure Set_lineHeight(p: OleVariant); safecall; - function Get_lineHeight: OleVariant; safecall; - procedure Set_marginTop(p: OleVariant); safecall; - function Get_marginTop: OleVariant; safecall; - procedure Set_marginRight(p: OleVariant); safecall; - function Get_marginRight: OleVariant; safecall; - procedure Set_marginBottom(p: OleVariant); safecall; - function Get_marginBottom: OleVariant; safecall; - procedure Set_marginLeft(p: OleVariant); safecall; - function Get_marginLeft: OleVariant; safecall; - procedure Set_margin(const p: WideString); safecall; - function Get_margin: WideString; safecall; - procedure Set_paddingTop(p: OleVariant); safecall; - function Get_paddingTop: OleVariant; safecall; - procedure Set_paddingRight(p: OleVariant); safecall; - function Get_paddingRight: OleVariant; safecall; - procedure Set_paddingBottom(p: OleVariant); safecall; - function Get_paddingBottom: OleVariant; safecall; - procedure Set_paddingLeft(p: OleVariant); safecall; - function Get_paddingLeft: OleVariant; safecall; - procedure Set_padding(const p: WideString); safecall; - function Get_padding: WideString; safecall; - procedure Set_border(const p: WideString); safecall; - function Get_border: WideString; safecall; - procedure Set_borderTop(const p: WideString); safecall; - function Get_borderTop: WideString; safecall; - procedure Set_borderRight(const p: WideString); safecall; - function Get_borderRight: WideString; safecall; - procedure Set_borderBottom(const p: WideString); safecall; - function Get_borderBottom: WideString; safecall; - procedure Set_borderLeft(const p: WideString); safecall; - function Get_borderLeft: WideString; safecall; - procedure Set_borderColor(const p: WideString); safecall; - function Get_borderColor: WideString; safecall; - procedure Set_borderTopColor(p: OleVariant); safecall; - function Get_borderTopColor: OleVariant; safecall; - procedure Set_borderRightColor(p: OleVariant); safecall; - function Get_borderRightColor: OleVariant; safecall; - procedure Set_borderBottomColor(p: OleVariant); safecall; - function Get_borderBottomColor: OleVariant; safecall; - procedure Set_borderLeftColor(p: OleVariant); safecall; - function Get_borderLeftColor: OleVariant; safecall; - procedure Set_borderWidth(const p: WideString); safecall; - function Get_borderWidth: WideString; safecall; - procedure Set_borderTopWidth(p: OleVariant); safecall; - function Get_borderTopWidth: OleVariant; safecall; - procedure Set_borderRightWidth(p: OleVariant); safecall; - function Get_borderRightWidth: OleVariant; safecall; - procedure Set_borderBottomWidth(p: OleVariant); safecall; - function Get_borderBottomWidth: OleVariant; safecall; - procedure Set_borderLeftWidth(p: OleVariant); safecall; - function Get_borderLeftWidth: OleVariant; safecall; - procedure Set_borderStyle(const p: WideString); safecall; - function Get_borderStyle: WideString; safecall; - procedure Set_borderTopStyle(const p: WideString); safecall; - function Get_borderTopStyle: WideString; safecall; - procedure Set_borderRightStyle(const p: WideString); safecall; - function Get_borderRightStyle: WideString; safecall; - procedure Set_borderBottomStyle(const p: WideString); safecall; - function Get_borderBottomStyle: WideString; safecall; - procedure Set_borderLeftStyle(const p: WideString); safecall; - function Get_borderLeftStyle: WideString; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - procedure Set_height(p: OleVariant); safecall; - function Get_height: OleVariant; safecall; - procedure Set_styleFloat(const p: WideString); safecall; - function Get_styleFloat: WideString; safecall; - procedure Set_clear(const p: WideString); safecall; - function Get_clear: WideString; safecall; - procedure Set_display(const p: WideString); safecall; - function Get_display: WideString; safecall; - procedure Set_visibility(const p: WideString); safecall; - function Get_visibility: WideString; safecall; - procedure Set_listStyleType(const p: WideString); safecall; - function Get_listStyleType: WideString; safecall; - procedure Set_listStylePosition(const p: WideString); safecall; - function Get_listStylePosition: WideString; safecall; - procedure Set_listStyleImage(const p: WideString); safecall; - function Get_listStyleImage: WideString; safecall; - procedure Set_listStyle(const p: WideString); safecall; - function Get_listStyle: WideString; safecall; - procedure Set_whiteSpace(const p: WideString); safecall; - function Get_whiteSpace: WideString; safecall; - procedure Set_top(p: OleVariant); safecall; - function Get_top: OleVariant; safecall; - procedure Set_left(p: OleVariant); safecall; - function Get_left: OleVariant; safecall; - function Get_position: WideString; safecall; - procedure Set_zIndex(p: OleVariant); safecall; - function Get_zIndex: OleVariant; safecall; - procedure Set_overflow(const p: WideString); safecall; - function Get_overflow: WideString; safecall; - procedure Set_pageBreakBefore(const p: WideString); safecall; - function Get_pageBreakBefore: WideString; safecall; - procedure Set_pageBreakAfter(const p: WideString); safecall; - function Get_pageBreakAfter: WideString; safecall; - procedure Set_cssText(const p: WideString); safecall; - function Get_cssText: WideString; safecall; - procedure Set_cursor(const p: WideString); safecall; - function Get_cursor: WideString; safecall; - procedure Set_clip(const p: WideString); safecall; - function Get_clip: WideString; safecall; - procedure Set_filter(const p: WideString); safecall; - function Get_filter: WideString; safecall; - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); safecall; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; safecall; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; safecall; - property fontFamily: WideString read Get_fontFamily write Set_fontFamily; - property fontStyle: WideString read Get_fontStyle write Set_fontStyle; - property fontVariant: WideString read Get_fontVariant write Set_fontVariant; - property fontWeight: WideString read Get_fontWeight write Set_fontWeight; - property fontSize: OleVariant read Get_fontSize write Set_fontSize; - property font: WideString read Get_font write Set_font; - property color: OleVariant read Get_color write Set_color; - property background: WideString read Get_background write Set_background; - property backgroundColor: OleVariant read Get_backgroundColor write Set_backgroundColor; - property backgroundImage: WideString read Get_backgroundImage write Set_backgroundImage; - property backgroundRepeat: WideString read Get_backgroundRepeat write Set_backgroundRepeat; - property backgroundAttachment: WideString read Get_backgroundAttachment write Set_backgroundAttachment; - property backgroundPosition: WideString read Get_backgroundPosition write Set_backgroundPosition; - property backgroundPositionX: OleVariant read Get_backgroundPositionX write Set_backgroundPositionX; - property backgroundPositionY: OleVariant read Get_backgroundPositionY write Set_backgroundPositionY; - property wordSpacing: OleVariant read Get_wordSpacing write Set_wordSpacing; - property letterSpacing: OleVariant read Get_letterSpacing write Set_letterSpacing; - property textDecoration: WideString read Get_textDecoration write Set_textDecoration; - property textDecorationNone: WordBool read Get_textDecorationNone write Set_textDecorationNone; - property textDecorationUnderline: WordBool read Get_textDecorationUnderline write Set_textDecorationUnderline; - property textDecorationOverline: WordBool read Get_textDecorationOverline write Set_textDecorationOverline; - property textDecorationLineThrough: WordBool read Get_textDecorationLineThrough write Set_textDecorationLineThrough; - property textDecorationBlink: WordBool read Get_textDecorationBlink write Set_textDecorationBlink; - property verticalAlign: OleVariant read Get_verticalAlign write Set_verticalAlign; - property textTransform: WideString read Get_textTransform write Set_textTransform; - property textAlign: WideString read Get_textAlign write Set_textAlign; - property textIndent: OleVariant read Get_textIndent write Set_textIndent; - property lineHeight: OleVariant read Get_lineHeight write Set_lineHeight; - property marginTop: OleVariant read Get_marginTop write Set_marginTop; - property marginRight: OleVariant read Get_marginRight write Set_marginRight; - property marginBottom: OleVariant read Get_marginBottom write Set_marginBottom; - property marginLeft: OleVariant read Get_marginLeft write Set_marginLeft; - property margin: WideString read Get_margin write Set_margin; - property paddingTop: OleVariant read Get_paddingTop write Set_paddingTop; - property paddingRight: OleVariant read Get_paddingRight write Set_paddingRight; - property paddingBottom: OleVariant read Get_paddingBottom write Set_paddingBottom; - property paddingLeft: OleVariant read Get_paddingLeft write Set_paddingLeft; - property padding: WideString read Get_padding write Set_padding; - property border: WideString read Get_border write Set_border; - property borderTop: WideString read Get_borderTop write Set_borderTop; - property borderRight: WideString read Get_borderRight write Set_borderRight; - property borderBottom: WideString read Get_borderBottom write Set_borderBottom; - property borderLeft: WideString read Get_borderLeft write Set_borderLeft; - property borderColor: WideString read Get_borderColor write Set_borderColor; - property borderTopColor: OleVariant read Get_borderTopColor write Set_borderTopColor; - property borderRightColor: OleVariant read Get_borderRightColor write Set_borderRightColor; - property borderBottomColor: OleVariant read Get_borderBottomColor write Set_borderBottomColor; - property borderLeftColor: OleVariant read Get_borderLeftColor write Set_borderLeftColor; - property borderWidth: WideString read Get_borderWidth write Set_borderWidth; - property borderTopWidth: OleVariant read Get_borderTopWidth write Set_borderTopWidth; - property borderRightWidth: OleVariant read Get_borderRightWidth write Set_borderRightWidth; - property borderBottomWidth: OleVariant read Get_borderBottomWidth write Set_borderBottomWidth; - property borderLeftWidth: OleVariant read Get_borderLeftWidth write Set_borderLeftWidth; - property borderStyle: WideString read Get_borderStyle write Set_borderStyle; - property borderTopStyle: WideString read Get_borderTopStyle write Set_borderTopStyle; - property borderRightStyle: WideString read Get_borderRightStyle write Set_borderRightStyle; - property borderBottomStyle: WideString read Get_borderBottomStyle write Set_borderBottomStyle; - property borderLeftStyle: WideString read Get_borderLeftStyle write Set_borderLeftStyle; - property width: OleVariant read Get_width write Set_width; - property height: OleVariant read Get_height write Set_height; - property styleFloat: WideString read Get_styleFloat write Set_styleFloat; - property clear: WideString read Get_clear write Set_clear; - property display: WideString read Get_display write Set_display; - property visibility: WideString read Get_visibility write Set_visibility; - property listStyleType: WideString read Get_listStyleType write Set_listStyleType; - property listStylePosition: WideString read Get_listStylePosition write Set_listStylePosition; - property listStyleImage: WideString read Get_listStyleImage write Set_listStyleImage; - property listStyle: WideString read Get_listStyle write Set_listStyle; - property whiteSpace: WideString read Get_whiteSpace write Set_whiteSpace; - property top: OleVariant read Get_top write Set_top; - property left: OleVariant read Get_left write Set_left; - property position: WideString read Get_position; - property zIndex: OleVariant read Get_zIndex write Set_zIndex; - property overflow: WideString read Get_overflow write Set_overflow; - property pageBreakBefore: WideString read Get_pageBreakBefore write Set_pageBreakBefore; - property pageBreakAfter: WideString read Get_pageBreakAfter write Set_pageBreakAfter; - property cssText: WideString read Get_cssText write Set_cssText; - property cursor: WideString read Get_cursor write Set_cursor; - property clip: WideString read Get_clip write Set_clip; - property filter: WideString read Get_filter write Set_filter; - end; - -// *********************************************************************// -// DispIntf: IHTMLRuleStyleDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3CF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRuleStyleDisp = dispinterface - ['{3050F3CF-98B5-11CF-BB82-00AA00BDCE0B}'] - property fontFamily: WideString dispid - 2147413094; - property fontStyle: WideString dispid - 2147413088; - property fontVariant: WideString dispid - 2147413087; - property fontWeight: WideString dispid - 2147413085; - property fontSize: OleVariant dispid - 2147413093; - property font: WideString dispid - 2147413071; - property color: OleVariant dispid - 2147413110; - property background: WideString dispid - 2147413080; - property backgroundColor: OleVariant dispid - 501; - property backgroundImage: WideString dispid - 2147413111; - property backgroundRepeat: WideString dispid - 2147413068; - property backgroundAttachment: WideString dispid - 2147413067; - property backgroundPosition: WideString dispid - 2147413066; - property backgroundPositionX: OleVariant dispid - 2147413079; - property backgroundPositionY: OleVariant dispid - 2147413078; - property wordSpacing: OleVariant dispid - 2147413065; - property letterSpacing: OleVariant dispid - 2147413104; - property textDecoration: WideString dispid - 2147413077; - property textDecorationNone: WordBool dispid - 2147413089; - property textDecorationUnderline: WordBool dispid - 2147413091; - property textDecorationOverline: WordBool dispid - 2147413043; - property textDecorationLineThrough: WordBool dispid - 2147413092; - property textDecorationBlink: WordBool dispid - 2147413090; - property verticalAlign: OleVariant dispid - 2147413064; - property textTransform: WideString dispid - 2147413108; - property textAlign: WideString dispid - 2147418040; - property textIndent: OleVariant dispid - 2147413105; - property lineHeight: OleVariant dispid - 2147413106; - property marginTop: OleVariant dispid - 2147413075; - property marginRight: OleVariant dispid - 2147413074; - property marginBottom: OleVariant dispid - 2147413073; - property marginLeft: OleVariant dispid - 2147413072; - property margin: WideString dispid - 2147413076; - property paddingTop: OleVariant dispid - 2147413100; - property paddingRight: OleVariant dispid - 2147413099; - property paddingBottom: OleVariant dispid - 2147413098; - property paddingLeft: OleVariant dispid - 2147413097; - property padding: WideString dispid - 2147413101; - property border: WideString dispid - 2147413063; - property borderTop: WideString dispid - 2147413062; - property borderRight: WideString dispid - 2147413061; - property borderBottom: WideString dispid - 2147413060; - property borderLeft: WideString dispid - 2147413059; - property borderColor: WideString dispid - 2147413058; - property borderTopColor: OleVariant dispid - 2147413057; - property borderRightColor: OleVariant dispid - 2147413056; - property borderBottomColor: OleVariant dispid - 2147413055; - property borderLeftColor: OleVariant dispid - 2147413054; - property borderWidth: WideString dispid - 2147413053; - property borderTopWidth: OleVariant dispid - 2147413052; - property borderRightWidth: OleVariant dispid - 2147413051; - property borderBottomWidth: OleVariant dispid - 2147413050; - property borderLeftWidth: OleVariant dispid - 2147413049; - property borderStyle: WideString dispid - 2147413048; - property borderTopStyle: WideString dispid - 2147413047; - property borderRightStyle: WideString dispid - 2147413046; - property borderBottomStyle: WideString dispid - 2147413045; - property borderLeftStyle: WideString dispid - 2147413044; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property styleFloat: WideString dispid - 2147413042; - property clear: WideString dispid - 2147413096; - property display: WideString dispid - 2147413041; - property visibility: WideString dispid - 2147413032; - property listStyleType: WideString dispid - 2147413040; - property listStylePosition: WideString dispid - 2147413039; - property listStyleImage: WideString dispid - 2147413038; - property listStyle: WideString dispid - 2147413037; - property whiteSpace: WideString dispid - 2147413036; - property top: OleVariant dispid - 2147418108; - property left: OleVariant dispid - 2147418109; - property position: WideString readonly dispid - 2147413022; - property zIndex: OleVariant dispid - 2147413021; - property overflow: WideString dispid - 2147413102; - property pageBreakBefore: WideString dispid - 2147413035; - property pageBreakAfter: WideString dispid - 2147413034; - property cssText: WideString dispid - 2147413013; - property cursor: WideString dispid - 2147413010; - property clip: WideString dispid - 2147413020; - property filter: WideString dispid - 2147413030; - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - end; - -// *********************************************************************// -// Interface: IHTMLRuleStyle2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4AC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRuleStyle2 = interface(IDispatch) - ['{3050F4AC-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_tableLayout(const p: WideString); safecall; - function Get_tableLayout: WideString; safecall; - procedure Set_borderCollapse(const p: WideString); safecall; - function Get_borderCollapse: WideString; safecall; - procedure Set_direction(const p: WideString); safecall; - function Get_direction: WideString; safecall; - procedure Set_behavior(const p: WideString); safecall; - function Get_behavior: WideString; safecall; - procedure Set_position(const p: WideString); safecall; - function Get_position: WideString; safecall; - procedure Set_unicodeBidi(const p: WideString); safecall; - function Get_unicodeBidi: WideString; safecall; - procedure Set_bottom(p: OleVariant); safecall; - function Get_bottom: OleVariant; safecall; - procedure Set_right(p: OleVariant); safecall; - function Get_right: OleVariant; safecall; - procedure Set_pixelBottom(p: Integer); safecall; - function Get_pixelBottom: Integer; safecall; - procedure Set_pixelRight(p: Integer); safecall; - function Get_pixelRight: Integer; safecall; - procedure Set_posBottom(p: Single); safecall; - function Get_posBottom: Single; safecall; - procedure Set_posRight(p: Single); safecall; - function Get_posRight: Single; safecall; - procedure Set_imeMode(const p: WideString); safecall; - function Get_imeMode: WideString; safecall; - procedure Set_rubyAlign(const p: WideString); safecall; - function Get_rubyAlign: WideString; safecall; - procedure Set_rubyPosition(const p: WideString); safecall; - function Get_rubyPosition: WideString; safecall; - procedure Set_rubyOverhang(const p: WideString); safecall; - function Get_rubyOverhang: WideString; safecall; - procedure Set_layoutGridChar(p: OleVariant); safecall; - function Get_layoutGridChar: OleVariant; safecall; - procedure Set_layoutGridLine(p: OleVariant); safecall; - function Get_layoutGridLine: OleVariant; safecall; - procedure Set_layoutGridMode(const p: WideString); safecall; - function Get_layoutGridMode: WideString; safecall; - procedure Set_layoutGridType(const p: WideString); safecall; - function Get_layoutGridType: WideString; safecall; - procedure Set_layoutGrid(const p: WideString); safecall; - function Get_layoutGrid: WideString; safecall; - procedure Set_textAutospace(const p: WideString); safecall; - function Get_textAutospace: WideString; safecall; - procedure Set_wordBreak(const p: WideString); safecall; - function Get_wordBreak: WideString; safecall; - procedure Set_lineBreak(const p: WideString); safecall; - function Get_lineBreak: WideString; safecall; - procedure Set_textJustify(const p: WideString); safecall; - function Get_textJustify: WideString; safecall; - procedure Set_textJustifyTrim(const p: WideString); safecall; - function Get_textJustifyTrim: WideString; safecall; - procedure Set_textKashida(p: OleVariant); safecall; - function Get_textKashida: OleVariant; safecall; - procedure Set_overflowX(const p: WideString); safecall; - function Get_overflowX: WideString; safecall; - procedure Set_overflowY(const p: WideString); safecall; - function Get_overflowY: WideString; safecall; - procedure Set_accelerator(const p: WideString); safecall; - function Get_accelerator: WideString; safecall; - property tableLayout: WideString read Get_tableLayout write Set_tableLayout; - property borderCollapse: WideString read Get_borderCollapse write Set_borderCollapse; - property direction: WideString read Get_direction write Set_direction; - property behavior: WideString read Get_behavior write Set_behavior; - property position: WideString read Get_position write Set_position; - property unicodeBidi: WideString read Get_unicodeBidi write Set_unicodeBidi; - property bottom: OleVariant read Get_bottom write Set_bottom; - property right: OleVariant read Get_right write Set_right; - property pixelBottom: Integer read Get_pixelBottom write Set_pixelBottom; - property pixelRight: Integer read Get_pixelRight write Set_pixelRight; - property posBottom: Single read Get_posBottom write Set_posBottom; - property posRight: Single read Get_posRight write Set_posRight; - property imeMode: WideString read Get_imeMode write Set_imeMode; - property rubyAlign: WideString read Get_rubyAlign write Set_rubyAlign; - property rubyPosition: WideString read Get_rubyPosition write Set_rubyPosition; - property rubyOverhang: WideString read Get_rubyOverhang write Set_rubyOverhang; - property layoutGridChar: OleVariant read Get_layoutGridChar write Set_layoutGridChar; - property layoutGridLine: OleVariant read Get_layoutGridLine write Set_layoutGridLine; - property layoutGridMode: WideString read Get_layoutGridMode write Set_layoutGridMode; - property layoutGridType: WideString read Get_layoutGridType write Set_layoutGridType; - property layoutGrid: WideString read Get_layoutGrid write Set_layoutGrid; - property textAutospace: WideString read Get_textAutospace write Set_textAutospace; - property wordBreak: WideString read Get_wordBreak write Set_wordBreak; - property lineBreak: WideString read Get_lineBreak write Set_lineBreak; - property textJustify: WideString read Get_textJustify write Set_textJustify; - property textJustifyTrim: WideString read Get_textJustifyTrim write Set_textJustifyTrim; - property textKashida: OleVariant read Get_textKashida write Set_textKashida; - property overflowX: WideString read Get_overflowX write Set_overflowX; - property overflowY: WideString read Get_overflowY write Set_overflowY; - property accelerator: WideString read Get_accelerator write Set_accelerator; - end; - -// *********************************************************************// -// DispIntf: IHTMLRuleStyle2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4AC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRuleStyle2Disp = dispinterface - ['{3050F4AC-98B5-11CF-BB82-00AA00BDCE0B}'] - property tableLayout: WideString dispid - 2147413014; - property borderCollapse: WideString dispid - 2147413028; - property direction: WideString dispid - 2147412993; - property behavior: WideString dispid - 2147412997; - property position: WideString dispid - 2147413022; - property unicodeBidi: WideString dispid - 2147412994; - property bottom: OleVariant dispid - 2147418034; - property right: OleVariant dispid - 2147418035; - property pixelBottom: Integer dispid - 2147414103; - property pixelRight: Integer dispid - 2147414102; - property posBottom: Single dispid - 2147414101; - property posRight: Single dispid - 2147414100; - property imeMode: WideString dispid - 2147412992; - property rubyAlign: WideString dispid - 2147412991; - property rubyPosition: WideString dispid - 2147412990; - property rubyOverhang: WideString dispid - 2147412989; - property layoutGridChar: OleVariant dispid - 2147412985; - property layoutGridLine: OleVariant dispid - 2147412984; - property layoutGridMode: WideString dispid - 2147412983; - property layoutGridType: WideString dispid - 2147412982; - property layoutGrid: WideString dispid - 2147412981; - property textAutospace: WideString dispid - 2147412980; - property wordBreak: WideString dispid - 2147412978; - property lineBreak: WideString dispid - 2147412979; - property textJustify: WideString dispid - 2147412977; - property textJustifyTrim: WideString dispid - 2147412976; - property textKashida: OleVariant dispid - 2147412975; - property overflowX: WideString dispid - 2147412973; - property overflowY: WideString dispid - 2147412972; - property accelerator: WideString dispid - 2147412965; - end; - -// *********************************************************************// -// Interface: IHTMLRuleStyle3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F657-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRuleStyle3 = interface(IDispatch) - ['{3050F657-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_layoutFlow(const p: WideString); safecall; - function Get_layoutFlow: WideString; safecall; - procedure Set_zoom(p: OleVariant); safecall; - function Get_zoom: OleVariant; safecall; - procedure Set_wordWrap(const p: WideString); safecall; - function Get_wordWrap: WideString; safecall; - procedure Set_textUnderlinePosition(const p: WideString); safecall; - function Get_textUnderlinePosition: WideString; safecall; - procedure Set_scrollbarBaseColor(p: OleVariant); safecall; - function Get_scrollbarBaseColor: OleVariant; safecall; - procedure Set_scrollbarFaceColor(p: OleVariant); safecall; - function Get_scrollbarFaceColor: OleVariant; safecall; - procedure Set_scrollbar3dLightColor(p: OleVariant); safecall; - function Get_scrollbar3dLightColor: OleVariant; safecall; - procedure Set_scrollbarShadowColor(p: OleVariant); safecall; - function Get_scrollbarShadowColor: OleVariant; safecall; - procedure Set_scrollbarHighlightColor(p: OleVariant); safecall; - function Get_scrollbarHighlightColor: OleVariant; safecall; - procedure Set_scrollbarDarkShadowColor(p: OleVariant); safecall; - function Get_scrollbarDarkShadowColor: OleVariant; safecall; - procedure Set_scrollbarArrowColor(p: OleVariant); safecall; - function Get_scrollbarArrowColor: OleVariant; safecall; - procedure Set_scrollbarTrackColor(p: OleVariant); safecall; - function Get_scrollbarTrackColor: OleVariant; safecall; - procedure Set_writingMode(const p: WideString); safecall; - function Get_writingMode: WideString; safecall; - procedure Set_textAlignLast(const p: WideString); safecall; - function Get_textAlignLast: WideString; safecall; - procedure Set_textKashidaSpace(p: OleVariant); safecall; - function Get_textKashidaSpace: OleVariant; safecall; - property layoutFlow: WideString read Get_layoutFlow write Set_layoutFlow; - property zoom: OleVariant read Get_zoom write Set_zoom; - property wordWrap: WideString read Get_wordWrap write Set_wordWrap; - property textUnderlinePosition: WideString read Get_textUnderlinePosition write Set_textUnderlinePosition; - property scrollbarBaseColor: OleVariant read Get_scrollbarBaseColor write Set_scrollbarBaseColor; - property scrollbarFaceColor: OleVariant read Get_scrollbarFaceColor write Set_scrollbarFaceColor; - property scrollbar3dLightColor: OleVariant read Get_scrollbar3dLightColor write Set_scrollbar3dLightColor; - property scrollbarShadowColor: OleVariant read Get_scrollbarShadowColor write Set_scrollbarShadowColor; - property scrollbarHighlightColor: OleVariant read Get_scrollbarHighlightColor write Set_scrollbarHighlightColor; - property scrollbarDarkShadowColor: OleVariant read Get_scrollbarDarkShadowColor write Set_scrollbarDarkShadowColor; - property scrollbarArrowColor: OleVariant read Get_scrollbarArrowColor write Set_scrollbarArrowColor; - property scrollbarTrackColor: OleVariant read Get_scrollbarTrackColor write Set_scrollbarTrackColor; - property writingMode: WideString read Get_writingMode write Set_writingMode; - property textAlignLast: WideString read Get_textAlignLast write Set_textAlignLast; - property textKashidaSpace: OleVariant read Get_textKashidaSpace write Set_textKashidaSpace; - end; - -// *********************************************************************// -// DispIntf: IHTMLRuleStyle3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F657-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRuleStyle3Disp = dispinterface - ['{3050F657-98B5-11CF-BB82-00AA00BDCE0B}'] - property layoutFlow: WideString dispid - 2147412957; - property zoom: OleVariant dispid - 2147412959; - property wordWrap: WideString dispid - 2147412954; - property textUnderlinePosition: WideString dispid - 2147412953; - property scrollbarBaseColor: OleVariant dispid - 2147412932; - property scrollbarFaceColor: OleVariant dispid - 2147412931; - property scrollbar3dLightColor: OleVariant dispid - 2147412930; - property scrollbarShadowColor: OleVariant dispid - 2147412929; - property scrollbarHighlightColor: OleVariant dispid - 2147412928; - property scrollbarDarkShadowColor: OleVariant dispid - 2147412927; - property scrollbarArrowColor: OleVariant dispid - 2147412926; - property scrollbarTrackColor: OleVariant dispid - 2147412916; - property writingMode: WideString dispid - 2147412920; - property textAlignLast: WideString dispid - 2147412909; - property textKashidaSpace: OleVariant dispid - 2147412908; - end; - -// *********************************************************************// -// Interface: IHTMLRuleStyle4 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F817-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRuleStyle4 = interface(IDispatch) - ['{3050F817-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_textOverflow(const p: WideString); safecall; - function Get_textOverflow: WideString; safecall; - procedure Set_minHeight(p: OleVariant); safecall; - function Get_minHeight: OleVariant; safecall; - property textOverflow: WideString read Get_textOverflow write Set_textOverflow; - property minHeight: OleVariant read Get_minHeight write Set_minHeight; - end; - -// *********************************************************************// -// DispIntf: IHTMLRuleStyle4Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F817-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRuleStyle4Disp = dispinterface - ['{3050F817-98B5-11CF-BB82-00AA00BDCE0B}'] - property textOverflow: WideString dispid - 2147412903; - property minHeight: OleVariant dispid - 2147412901; - end; - -// *********************************************************************// -// DispIntf: DispHTMLStyle -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F55A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLStyle = dispinterface - ['{3050F55A-98B5-11CF-BB82-00AA00BDCE0B}'] - property fontFamily: WideString dispid - 2147413094; - property fontStyle: WideString dispid - 2147413088; - property fontVariant: WideString dispid - 2147413087; - property fontWeight: WideString dispid - 2147413085; - property fontSize: OleVariant dispid - 2147413093; - property font: WideString dispid - 2147413071; - property color: OleVariant dispid - 2147413110; - property background: WideString dispid - 2147413080; - property backgroundColor: OleVariant dispid - 501; - property backgroundImage: WideString dispid - 2147413111; - property backgroundRepeat: WideString dispid - 2147413068; - property backgroundAttachment: WideString dispid - 2147413067; - property backgroundPosition: WideString dispid - 2147413066; - property backgroundPositionX: OleVariant dispid - 2147413079; - property backgroundPositionY: OleVariant dispid - 2147413078; - property wordSpacing: OleVariant dispid - 2147413065; - property letterSpacing: OleVariant dispid - 2147413104; - property textDecoration: WideString dispid - 2147413077; - property textDecorationNone: WordBool dispid - 2147413089; - property textDecorationUnderline: WordBool dispid - 2147413091; - property textDecorationOverline: WordBool dispid - 2147413043; - property textDecorationLineThrough: WordBool dispid - 2147413092; - property textDecorationBlink: WordBool dispid - 2147413090; - property verticalAlign: OleVariant dispid - 2147413064; - property textTransform: WideString dispid - 2147413108; - property textAlign: WideString dispid - 2147418040; - property textIndent: OleVariant dispid - 2147413105; - property lineHeight: OleVariant dispid - 2147413106; - property marginTop: OleVariant dispid - 2147413075; - property marginRight: OleVariant dispid - 2147413074; - property marginBottom: OleVariant dispid - 2147413073; - property marginLeft: OleVariant dispid - 2147413072; - property margin: WideString dispid - 2147413076; - property paddingTop: OleVariant dispid - 2147413100; - property paddingRight: OleVariant dispid - 2147413099; - property paddingBottom: OleVariant dispid - 2147413098; - property paddingLeft: OleVariant dispid - 2147413097; - property padding: WideString dispid - 2147413101; - property border: WideString dispid - 2147413063; - property borderTop: WideString dispid - 2147413062; - property borderRight: WideString dispid - 2147413061; - property borderBottom: WideString dispid - 2147413060; - property borderLeft: WideString dispid - 2147413059; - property borderColor: WideString dispid - 2147413058; - property borderTopColor: OleVariant dispid - 2147413057; - property borderRightColor: OleVariant dispid - 2147413056; - property borderBottomColor: OleVariant dispid - 2147413055; - property borderLeftColor: OleVariant dispid - 2147413054; - property borderWidth: WideString dispid - 2147413053; - property borderTopWidth: OleVariant dispid - 2147413052; - property borderRightWidth: OleVariant dispid - 2147413051; - property borderBottomWidth: OleVariant dispid - 2147413050; - property borderLeftWidth: OleVariant dispid - 2147413049; - property borderStyle: WideString dispid - 2147413048; - property borderTopStyle: WideString dispid - 2147413047; - property borderRightStyle: WideString dispid - 2147413046; - property borderBottomStyle: WideString dispid - 2147413045; - property borderLeftStyle: WideString dispid - 2147413044; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property styleFloat: WideString dispid - 2147413042; - property clear: WideString dispid - 2147413096; - property display: WideString dispid - 2147413041; - property visibility: WideString dispid - 2147413032; - property listStyleType: WideString dispid - 2147413040; - property listStylePosition: WideString dispid - 2147413039; - property listStyleImage: WideString dispid - 2147413038; - property listStyle: WideString dispid - 2147413037; - property whiteSpace: WideString dispid - 2147413036; - property top: OleVariant dispid - 2147418108; - property left: OleVariant dispid - 2147418109; - property zIndex: OleVariant dispid - 2147413021; - property overflow: WideString dispid - 2147413102; - property pageBreakBefore: WideString dispid - 2147413035; - property pageBreakAfter: WideString dispid - 2147413034; - property cssText: WideString dispid - 2147413013; - property pixelTop: Integer dispid - 2147414112; - property pixelLeft: Integer dispid - 2147414111; - property pixelWidth: Integer dispid - 2147414110; - property pixelHeight: Integer dispid - 2147414109; - property posTop: Single dispid - 2147414108; - property posLeft: Single dispid - 2147414107; - property posWidth: Single dispid - 2147414106; - property posHeight: Single dispid - 2147414105; - property cursor: WideString dispid - 2147413010; - property clip: WideString dispid - 2147413020; - property filter: WideString dispid - 2147413030; - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - function toString: WideString; dispid - 2147414104; - property tableLayout: WideString dispid - 2147413014; - property borderCollapse: WideString dispid - 2147413028; - property direction: WideString dispid - 2147412993; - property behavior: WideString dispid - 2147412997; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property position: WideString dispid - 2147413022; - property unicodeBidi: WideString dispid - 2147412994; - property bottom: OleVariant dispid - 2147418034; - property right: OleVariant dispid - 2147418035; - property pixelBottom: Integer dispid - 2147414103; - property pixelRight: Integer dispid - 2147414102; - property posBottom: Single dispid - 2147414101; - property posRight: Single dispid - 2147414100; - property imeMode: WideString dispid - 2147412992; - property rubyAlign: WideString dispid - 2147412991; - property rubyPosition: WideString dispid - 2147412990; - property rubyOverhang: WideString dispid - 2147412989; - property layoutGridChar: OleVariant dispid - 2147412985; - property layoutGridLine: OleVariant dispid - 2147412984; - property layoutGridMode: WideString dispid - 2147412983; - property layoutGridType: WideString dispid - 2147412982; - property layoutGrid: WideString dispid - 2147412981; - property wordBreak: WideString dispid - 2147412978; - property lineBreak: WideString dispid - 2147412979; - property textJustify: WideString dispid - 2147412977; - property textJustifyTrim: WideString dispid - 2147412976; - property textKashida: OleVariant dispid - 2147412975; - property textAutospace: WideString dispid - 2147412980; - property overflowX: WideString dispid - 2147412973; - property overflowY: WideString dispid - 2147412972; - property accelerator: WideString dispid - 2147412965; - property layoutFlow: WideString dispid - 2147412957; - property zoom: OleVariant dispid - 2147412959; - property wordWrap: WideString dispid - 2147412954; - property textUnderlinePosition: WideString dispid - 2147412953; - property scrollbarBaseColor: OleVariant dispid - 2147412932; - property scrollbarFaceColor: OleVariant dispid - 2147412931; - property scrollbar3dLightColor: OleVariant dispid - 2147412930; - property scrollbarShadowColor: OleVariant dispid - 2147412929; - property scrollbarHighlightColor: OleVariant dispid - 2147412928; - property scrollbarDarkShadowColor: OleVariant dispid - 2147412927; - property scrollbarArrowColor: OleVariant dispid - 2147412926; - property scrollbarTrackColor: OleVariant dispid - 2147412916; - property writingMode: WideString dispid - 2147412920; - property textAlignLast: WideString dispid - 2147412909; - property textKashidaSpace: OleVariant dispid - 2147412908; - property textOverflow: WideString dispid - 2147412903; - property minHeight: OleVariant dispid - 2147412901; - end; - -// *********************************************************************// -// DispIntf: DispHTMLRuleStyle -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F55C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLRuleStyle = dispinterface - ['{3050F55C-98B5-11CF-BB82-00AA00BDCE0B}'] - property fontFamily: WideString dispid - 2147413094; - property fontStyle: WideString dispid - 2147413088; - property fontVariant: WideString dispid - 2147413087; - property fontWeight: WideString dispid - 2147413085; - property fontSize: OleVariant dispid - 2147413093; - property font: WideString dispid - 2147413071; - property color: OleVariant dispid - 2147413110; - property background: WideString dispid - 2147413080; - property backgroundColor: OleVariant dispid - 501; - property backgroundImage: WideString dispid - 2147413111; - property backgroundRepeat: WideString dispid - 2147413068; - property backgroundAttachment: WideString dispid - 2147413067; - property backgroundPosition: WideString dispid - 2147413066; - property backgroundPositionX: OleVariant dispid - 2147413079; - property backgroundPositionY: OleVariant dispid - 2147413078; - property wordSpacing: OleVariant dispid - 2147413065; - property letterSpacing: OleVariant dispid - 2147413104; - property textDecoration: WideString dispid - 2147413077; - property textDecorationNone: WordBool dispid - 2147413089; - property textDecorationUnderline: WordBool dispid - 2147413091; - property textDecorationOverline: WordBool dispid - 2147413043; - property textDecorationLineThrough: WordBool dispid - 2147413092; - property textDecorationBlink: WordBool dispid - 2147413090; - property verticalAlign: OleVariant dispid - 2147413064; - property textTransform: WideString dispid - 2147413108; - property textAlign: WideString dispid - 2147418040; - property textIndent: OleVariant dispid - 2147413105; - property lineHeight: OleVariant dispid - 2147413106; - property marginTop: OleVariant dispid - 2147413075; - property marginRight: OleVariant dispid - 2147413074; - property marginBottom: OleVariant dispid - 2147413073; - property marginLeft: OleVariant dispid - 2147413072; - property margin: WideString dispid - 2147413076; - property paddingTop: OleVariant dispid - 2147413100; - property paddingRight: OleVariant dispid - 2147413099; - property paddingBottom: OleVariant dispid - 2147413098; - property paddingLeft: OleVariant dispid - 2147413097; - property padding: WideString dispid - 2147413101; - property border: WideString dispid - 2147413063; - property borderTop: WideString dispid - 2147413062; - property borderRight: WideString dispid - 2147413061; - property borderBottom: WideString dispid - 2147413060; - property borderLeft: WideString dispid - 2147413059; - property borderColor: WideString dispid - 2147413058; - property borderTopColor: OleVariant dispid - 2147413057; - property borderRightColor: OleVariant dispid - 2147413056; - property borderBottomColor: OleVariant dispid - 2147413055; - property borderLeftColor: OleVariant dispid - 2147413054; - property borderWidth: WideString dispid - 2147413053; - property borderTopWidth: OleVariant dispid - 2147413052; - property borderRightWidth: OleVariant dispid - 2147413051; - property borderBottomWidth: OleVariant dispid - 2147413050; - property borderLeftWidth: OleVariant dispid - 2147413049; - property borderStyle: WideString dispid - 2147413048; - property borderTopStyle: WideString dispid - 2147413047; - property borderRightStyle: WideString dispid - 2147413046; - property borderBottomStyle: WideString dispid - 2147413045; - property borderLeftStyle: WideString dispid - 2147413044; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property styleFloat: WideString dispid - 2147413042; - property clear: WideString dispid - 2147413096; - property display: WideString dispid - 2147413041; - property visibility: WideString dispid - 2147413032; - property listStyleType: WideString dispid - 2147413040; - property listStylePosition: WideString dispid - 2147413039; - property listStyleImage: WideString dispid - 2147413038; - property listStyle: WideString dispid - 2147413037; - property whiteSpace: WideString dispid - 2147413036; - property top: OleVariant dispid - 2147418108; - property left: OleVariant dispid - 2147418109; - property zIndex: OleVariant dispid - 2147413021; - property overflow: WideString dispid - 2147413102; - property pageBreakBefore: WideString dispid - 2147413035; - property pageBreakAfter: WideString dispid - 2147413034; - property cssText: WideString dispid - 2147413013; - property cursor: WideString dispid - 2147413010; - property clip: WideString dispid - 2147413020; - property filter: WideString dispid - 2147413030; - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property tableLayout: WideString dispid - 2147413014; - property borderCollapse: WideString dispid - 2147413028; - property direction: WideString dispid - 2147412993; - property behavior: WideString dispid - 2147412997; - property position: WideString dispid - 2147413022; - property unicodeBidi: WideString dispid - 2147412994; - property bottom: OleVariant dispid - 2147418034; - property right: OleVariant dispid - 2147418035; - property pixelBottom: Integer dispid - 2147414103; - property pixelRight: Integer dispid - 2147414102; - property posBottom: Single dispid - 2147414101; - property posRight: Single dispid - 2147414100; - property imeMode: WideString dispid - 2147412992; - property rubyAlign: WideString dispid - 2147412991; - property rubyPosition: WideString dispid - 2147412990; - property rubyOverhang: WideString dispid - 2147412989; - property layoutGridChar: OleVariant dispid - 2147412985; - property layoutGridLine: OleVariant dispid - 2147412984; - property layoutGridMode: WideString dispid - 2147412983; - property layoutGridType: WideString dispid - 2147412982; - property layoutGrid: WideString dispid - 2147412981; - property textAutospace: WideString dispid - 2147412980; - property wordBreak: WideString dispid - 2147412978; - property lineBreak: WideString dispid - 2147412979; - property textJustify: WideString dispid - 2147412977; - property textJustifyTrim: WideString dispid - 2147412976; - property textKashida: OleVariant dispid - 2147412975; - property overflowX: WideString dispid - 2147412973; - property overflowY: WideString dispid - 2147412972; - property accelerator: WideString dispid - 2147412965; - property layoutFlow: WideString dispid - 2147412957; - property zoom: OleVariant dispid - 2147412959; - property wordWrap: WideString dispid - 2147412954; - property textUnderlinePosition: WideString dispid - 2147412953; - property scrollbarBaseColor: OleVariant dispid - 2147412932; - property scrollbarFaceColor: OleVariant dispid - 2147412931; - property scrollbar3dLightColor: OleVariant dispid - 2147412930; - property scrollbarShadowColor: OleVariant dispid - 2147412929; - property scrollbarHighlightColor: OleVariant dispid - 2147412928; - property scrollbarDarkShadowColor: OleVariant dispid - 2147412927; - property scrollbarArrowColor: OleVariant dispid - 2147412926; - property scrollbarTrackColor: OleVariant dispid - 2147412916; - property writingMode: WideString dispid - 2147412920; - property textAlignLast: WideString dispid - 2147412909; - property textKashidaSpace: OleVariant dispid - 2147412908; - property textOverflow: WideString dispid - 2147412903; - property minHeight: OleVariant dispid - 2147412901; - end; - -// *********************************************************************// -// Interface: IHTMLRenderStyle -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6AE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRenderStyle = interface(IDispatch) - ['{3050F6AE-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_textLineThroughStyle(const p: WideString); safecall; - function Get_textLineThroughStyle: WideString; safecall; - procedure Set_textUnderlineStyle(const p: WideString); safecall; - function Get_textUnderlineStyle: WideString; safecall; - procedure Set_textEffect(const p: WideString); safecall; - function Get_textEffect: WideString; safecall; - procedure Set_textColor(p: OleVariant); safecall; - function Get_textColor: OleVariant; safecall; - procedure Set_textBackgroundColor(p: OleVariant); safecall; - function Get_textBackgroundColor: OleVariant; safecall; - procedure Set_textDecorationColor(p: OleVariant); safecall; - function Get_textDecorationColor: OleVariant; safecall; - procedure Set_renderingPriority(p: Integer); safecall; - function Get_renderingPriority: Integer; safecall; - procedure Set_defaultTextSelection(const p: WideString); safecall; - function Get_defaultTextSelection: WideString; safecall; - procedure Set_textDecoration(const p: WideString); safecall; - function Get_textDecoration: WideString; safecall; - property textLineThroughStyle: WideString read Get_textLineThroughStyle write Set_textLineThroughStyle; - property textUnderlineStyle: WideString read Get_textUnderlineStyle write Set_textUnderlineStyle; - property textEffect: WideString read Get_textEffect write Set_textEffect; - property textColor: OleVariant read Get_textColor write Set_textColor; - property textBackgroundColor: OleVariant read Get_textBackgroundColor write Set_textBackgroundColor; - property textDecorationColor: OleVariant read Get_textDecorationColor write Set_textDecorationColor; - property renderingPriority: Integer read Get_renderingPriority write Set_renderingPriority; - property defaultTextSelection: WideString read Get_defaultTextSelection write Set_defaultTextSelection; - property textDecoration: WideString read Get_textDecoration write Set_textDecoration; - end; - -// *********************************************************************// -// DispIntf: IHTMLRenderStyleDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6AE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRenderStyleDisp = dispinterface - ['{3050F6AE-98B5-11CF-BB82-00AA00BDCE0B}'] - property textLineThroughStyle: WideString dispid - 2147412946; - property textUnderlineStyle: WideString dispid - 2147412945; - property textEffect: WideString dispid - 2147412944; - property textColor: OleVariant dispid - 2147412922; - property textBackgroundColor: OleVariant dispid - 2147412943; - property textDecorationColor: OleVariant dispid - 2147412923; - property renderingPriority: Integer dispid - 2147412942; - property defaultTextSelection: WideString dispid - 2147412924; - property textDecoration: WideString dispid - 2147412921; - end; - -// *********************************************************************// -// DispIntf: DispHTMLRenderStyle -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F58B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLRenderStyle = dispinterface - ['{3050F58B-98B5-11CF-BB82-00AA00BDCE0B}'] - property textLineThroughStyle: WideString dispid - 2147412946; - property textUnderlineStyle: WideString dispid - 2147412945; - property textEffect: WideString dispid - 2147412944; - property textColor: OleVariant dispid - 2147412922; - property textBackgroundColor: OleVariant dispid - 2147412943; - property textDecorationColor: OleVariant dispid - 2147412923; - property renderingPriority: Integer dispid - 2147412942; - property defaultTextSelection: WideString dispid - 2147412924; - property textDecoration: WideString dispid - 2147412921; - end; - -// *********************************************************************// -// Interface: IHTMLCurrentStyle -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3DB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCurrentStyle = interface(IDispatch) - ['{3050F3DB-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_position: WideString; safecall; - function Get_styleFloat: WideString; safecall; - function Get_color: OleVariant; safecall; - function Get_backgroundColor: OleVariant; safecall; - function Get_fontFamily: WideString; safecall; - function Get_fontStyle: WideString; safecall; - function Get_fontVariant: WideString; safecall; - function Get_fontWeight: OleVariant; safecall; - function Get_fontSize: OleVariant; safecall; - function Get_backgroundImage: WideString; safecall; - function Get_backgroundPositionX: OleVariant; safecall; - function Get_backgroundPositionY: OleVariant; safecall; - function Get_backgroundRepeat: WideString; safecall; - function Get_borderLeftColor: OleVariant; safecall; - function Get_borderTopColor: OleVariant; safecall; - function Get_borderRightColor: OleVariant; safecall; - function Get_borderBottomColor: OleVariant; safecall; - function Get_borderTopStyle: WideString; safecall; - function Get_borderRightStyle: WideString; safecall; - function Get_borderBottomStyle: WideString; safecall; - function Get_borderLeftStyle: WideString; safecall; - function Get_borderTopWidth: OleVariant; safecall; - function Get_borderRightWidth: OleVariant; safecall; - function Get_borderBottomWidth: OleVariant; safecall; - function Get_borderLeftWidth: OleVariant; safecall; - function Get_left: OleVariant; safecall; - function Get_top: OleVariant; safecall; - function Get_width: OleVariant; safecall; - function Get_height: OleVariant; safecall; - function Get_paddingLeft: OleVariant; safecall; - function Get_paddingTop: OleVariant; safecall; - function Get_paddingRight: OleVariant; safecall; - function Get_paddingBottom: OleVariant; safecall; - function Get_textAlign: WideString; safecall; - function Get_textDecoration: WideString; safecall; - function Get_display: WideString; safecall; - function Get_visibility: WideString; safecall; - function Get_zIndex: OleVariant; safecall; - function Get_letterSpacing: OleVariant; safecall; - function Get_lineHeight: OleVariant; safecall; - function Get_textIndent: OleVariant; safecall; - function Get_verticalAlign: OleVariant; safecall; - function Get_backgroundAttachment: WideString; safecall; - function Get_marginTop: OleVariant; safecall; - function Get_marginRight: OleVariant; safecall; - function Get_marginBottom: OleVariant; safecall; - function Get_marginLeft: OleVariant; safecall; - function Get_clear: WideString; safecall; - function Get_listStyleType: WideString; safecall; - function Get_listStylePosition: WideString; safecall; - function Get_listStyleImage: WideString; safecall; - function Get_clipTop: OleVariant; safecall; - function Get_clipRight: OleVariant; safecall; - function Get_clipBottom: OleVariant; safecall; - function Get_clipLeft: OleVariant; safecall; - function Get_overflow: WideString; safecall; - function Get_pageBreakBefore: WideString; safecall; - function Get_pageBreakAfter: WideString; safecall; - function Get_cursor: WideString; safecall; - function Get_tableLayout: WideString; safecall; - function Get_borderCollapse: WideString; safecall; - function Get_direction: WideString; safecall; - function Get_behavior: WideString; safecall; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; safecall; - function Get_unicodeBidi: WideString; safecall; - function Get_right: OleVariant; safecall; - function Get_bottom: OleVariant; safecall; - function Get_imeMode: WideString; safecall; - function Get_rubyAlign: WideString; safecall; - function Get_rubyPosition: WideString; safecall; - function Get_rubyOverhang: WideString; safecall; - function Get_textAutospace: WideString; safecall; - function Get_lineBreak: WideString; safecall; - function Get_wordBreak: WideString; safecall; - function Get_textJustify: WideString; safecall; - function Get_textJustifyTrim: WideString; safecall; - function Get_textKashida: OleVariant; safecall; - function Get_blockDirection: WideString; safecall; - function Get_layoutGridChar: OleVariant; safecall; - function Get_layoutGridLine: OleVariant; safecall; - function Get_layoutGridMode: WideString; safecall; - function Get_layoutGridType: WideString; safecall; - function Get_borderStyle: WideString; safecall; - function Get_borderColor: WideString; safecall; - function Get_borderWidth: WideString; safecall; - function Get_padding: WideString; safecall; - function Get_margin: WideString; safecall; - function Get_accelerator: WideString; safecall; - function Get_overflowX: WideString; safecall; - function Get_overflowY: WideString; safecall; - function Get_textTransform: WideString; safecall; - property position: WideString read Get_position; - property styleFloat: WideString read Get_styleFloat; - property color: OleVariant read Get_color; - property backgroundColor: OleVariant read Get_backgroundColor; - property fontFamily: WideString read Get_fontFamily; - property fontStyle: WideString read Get_fontStyle; - property fontVariant: WideString read Get_fontVariant; - property fontWeight: OleVariant read Get_fontWeight; - property fontSize: OleVariant read Get_fontSize; - property backgroundImage: WideString read Get_backgroundImage; - property backgroundPositionX: OleVariant read Get_backgroundPositionX; - property backgroundPositionY: OleVariant read Get_backgroundPositionY; - property backgroundRepeat: WideString read Get_backgroundRepeat; - property borderLeftColor: OleVariant read Get_borderLeftColor; - property borderTopColor: OleVariant read Get_borderTopColor; - property borderRightColor: OleVariant read Get_borderRightColor; - property borderBottomColor: OleVariant read Get_borderBottomColor; - property borderTopStyle: WideString read Get_borderTopStyle; - property borderRightStyle: WideString read Get_borderRightStyle; - property borderBottomStyle: WideString read Get_borderBottomStyle; - property borderLeftStyle: WideString read Get_borderLeftStyle; - property borderTopWidth: OleVariant read Get_borderTopWidth; - property borderRightWidth: OleVariant read Get_borderRightWidth; - property borderBottomWidth: OleVariant read Get_borderBottomWidth; - property borderLeftWidth: OleVariant read Get_borderLeftWidth; - property left: OleVariant read Get_left; - property top: OleVariant read Get_top; - property width: OleVariant read Get_width; - property height: OleVariant read Get_height; - property paddingLeft: OleVariant read Get_paddingLeft; - property paddingTop: OleVariant read Get_paddingTop; - property paddingRight: OleVariant read Get_paddingRight; - property paddingBottom: OleVariant read Get_paddingBottom; - property textAlign: WideString read Get_textAlign; - property textDecoration: WideString read Get_textDecoration; - property display: WideString read Get_display; - property visibility: WideString read Get_visibility; - property zIndex: OleVariant read Get_zIndex; - property letterSpacing: OleVariant read Get_letterSpacing; - property lineHeight: OleVariant read Get_lineHeight; - property textIndent: OleVariant read Get_textIndent; - property verticalAlign: OleVariant read Get_verticalAlign; - property backgroundAttachment: WideString read Get_backgroundAttachment; - property marginTop: OleVariant read Get_marginTop; - property marginRight: OleVariant read Get_marginRight; - property marginBottom: OleVariant read Get_marginBottom; - property marginLeft: OleVariant read Get_marginLeft; - property clear: WideString read Get_clear; - property listStyleType: WideString read Get_listStyleType; - property listStylePosition: WideString read Get_listStylePosition; - property listStyleImage: WideString read Get_listStyleImage; - property clipTop: OleVariant read Get_clipTop; - property clipRight: OleVariant read Get_clipRight; - property clipBottom: OleVariant read Get_clipBottom; - property clipLeft: OleVariant read Get_clipLeft; - property overflow: WideString read Get_overflow; - property pageBreakBefore: WideString read Get_pageBreakBefore; - property pageBreakAfter: WideString read Get_pageBreakAfter; - property cursor: WideString read Get_cursor; - property tableLayout: WideString read Get_tableLayout; - property borderCollapse: WideString read Get_borderCollapse; - property direction: WideString read Get_direction; - property behavior: WideString read Get_behavior; - property unicodeBidi: WideString read Get_unicodeBidi; - property right: OleVariant read Get_right; - property bottom: OleVariant read Get_bottom; - property imeMode: WideString read Get_imeMode; - property rubyAlign: WideString read Get_rubyAlign; - property rubyPosition: WideString read Get_rubyPosition; - property rubyOverhang: WideString read Get_rubyOverhang; - property textAutospace: WideString read Get_textAutospace; - property lineBreak: WideString read Get_lineBreak; - property wordBreak: WideString read Get_wordBreak; - property textJustify: WideString read Get_textJustify; - property textJustifyTrim: WideString read Get_textJustifyTrim; - property textKashida: OleVariant read Get_textKashida; - property blockDirection: WideString read Get_blockDirection; - property layoutGridChar: OleVariant read Get_layoutGridChar; - property layoutGridLine: OleVariant read Get_layoutGridLine; - property layoutGridMode: WideString read Get_layoutGridMode; - property layoutGridType: WideString read Get_layoutGridType; - property borderStyle: WideString read Get_borderStyle; - property borderColor: WideString read Get_borderColor; - property borderWidth: WideString read Get_borderWidth; - property padding: WideString read Get_padding; - property margin: WideString read Get_margin; - property accelerator: WideString read Get_accelerator; - property overflowX: WideString read Get_overflowX; - property overflowY: WideString read Get_overflowY; - property textTransform: WideString read Get_textTransform; - end; - -// *********************************************************************// -// DispIntf: IHTMLCurrentStyleDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3DB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCurrentStyleDisp = dispinterface - ['{3050F3DB-98B5-11CF-BB82-00AA00BDCE0B}'] - property position: WideString readonly dispid - 2147413022; - property styleFloat: WideString readonly dispid - 2147413042; - property color: OleVariant readonly dispid - 2147413110; - property backgroundColor: OleVariant readonly dispid - 501; - property fontFamily: WideString readonly dispid - 2147413094; - property fontStyle: WideString readonly dispid - 2147413088; - property fontVariant: WideString readonly dispid - 2147413087; - property fontWeight: OleVariant readonly dispid - 2147413085; - property fontSize: OleVariant readonly dispid - 2147413093; - property backgroundImage: WideString readonly dispid - 2147413111; - property backgroundPositionX: OleVariant readonly dispid - 2147413079; - property backgroundPositionY: OleVariant readonly dispid - 2147413078; - property backgroundRepeat: WideString readonly dispid - 2147413068; - property borderLeftColor: OleVariant readonly dispid - 2147413054; - property borderTopColor: OleVariant readonly dispid - 2147413057; - property borderRightColor: OleVariant readonly dispid - 2147413056; - property borderBottomColor: OleVariant readonly dispid - 2147413055; - property borderTopStyle: WideString readonly dispid - 2147413047; - property borderRightStyle: WideString readonly dispid - 2147413046; - property borderBottomStyle: WideString readonly dispid - 2147413045; - property borderLeftStyle: WideString readonly dispid - 2147413044; - property borderTopWidth: OleVariant readonly dispid - 2147413052; - property borderRightWidth: OleVariant readonly dispid - 2147413051; - property borderBottomWidth: OleVariant readonly dispid - 2147413050; - property borderLeftWidth: OleVariant readonly dispid - 2147413049; - property left: OleVariant readonly dispid - 2147418109; - property top: OleVariant readonly dispid - 2147418108; - property width: OleVariant readonly dispid - 2147418107; - property height: OleVariant readonly dispid - 2147418106; - property paddingLeft: OleVariant readonly dispid - 2147413097; - property paddingTop: OleVariant readonly dispid - 2147413100; - property paddingRight: OleVariant readonly dispid - 2147413099; - property paddingBottom: OleVariant readonly dispid - 2147413098; - property textAlign: WideString readonly dispid - 2147418040; - property textDecoration: WideString readonly dispid - 2147413077; - property display: WideString readonly dispid - 2147413041; - property visibility: WideString readonly dispid - 2147413032; - property zIndex: OleVariant readonly dispid - 2147413021; - property letterSpacing: OleVariant readonly dispid - 2147413104; - property lineHeight: OleVariant readonly dispid - 2147413106; - property textIndent: OleVariant readonly dispid - 2147413105; - property verticalAlign: OleVariant readonly dispid - 2147413064; - property backgroundAttachment: WideString readonly dispid - 2147413067; - property marginTop: OleVariant readonly dispid - 2147413075; - property marginRight: OleVariant readonly dispid - 2147413074; - property marginBottom: OleVariant readonly dispid - 2147413073; - property marginLeft: OleVariant readonly dispid - 2147413072; - property clear: WideString readonly dispid - 2147413096; - property listStyleType: WideString readonly dispid - 2147413040; - property listStylePosition: WideString readonly dispid - 2147413039; - property listStyleImage: WideString readonly dispid - 2147413038; - property clipTop: OleVariant readonly dispid - 2147413019; - property clipRight: OleVariant readonly dispid - 2147413018; - property clipBottom: OleVariant readonly dispid - 2147413017; - property clipLeft: OleVariant readonly dispid - 2147413016; - property overflow: WideString readonly dispid - 2147413102; - property pageBreakBefore: WideString readonly dispid - 2147413035; - property pageBreakAfter: WideString readonly dispid - 2147413034; - property cursor: WideString readonly dispid - 2147413010; - property tableLayout: WideString readonly dispid - 2147413014; - property borderCollapse: WideString readonly dispid - 2147413028; - property direction: WideString readonly dispid - 2147412993; - property behavior: WideString readonly dispid - 2147412997; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - property unicodeBidi: WideString readonly dispid - 2147412994; - property right: OleVariant readonly dispid - 2147418035; - property bottom: OleVariant readonly dispid - 2147418034; - property imeMode: WideString readonly dispid - 2147412992; - property rubyAlign: WideString readonly dispid - 2147412991; - property rubyPosition: WideString readonly dispid - 2147412990; - property rubyOverhang: WideString readonly dispid - 2147412989; - property textAutospace: WideString readonly dispid - 2147412980; - property lineBreak: WideString readonly dispid - 2147412979; - property wordBreak: WideString readonly dispid - 2147412978; - property textJustify: WideString readonly dispid - 2147412977; - property textJustifyTrim: WideString readonly dispid - 2147412976; - property textKashida: OleVariant readonly dispid - 2147412975; - property blockDirection: WideString readonly dispid - 2147412995; - property layoutGridChar: OleVariant readonly dispid - 2147412985; - property layoutGridLine: OleVariant readonly dispid - 2147412984; - property layoutGridMode: WideString readonly dispid - 2147412983; - property layoutGridType: WideString readonly dispid - 2147412982; - property borderStyle: WideString readonly dispid - 2147413048; - property borderColor: WideString readonly dispid - 2147413058; - property borderWidth: WideString readonly dispid - 2147413053; - property padding: WideString readonly dispid - 2147413101; - property margin: WideString readonly dispid - 2147413076; - property accelerator: WideString readonly dispid - 2147412965; - property overflowX: WideString readonly dispid - 2147412973; - property overflowY: WideString readonly dispid - 2147412972; - property textTransform: WideString readonly dispid - 2147413108; - end; - -// *********************************************************************// -// Interface: IHTMLCurrentStyle2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F658-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCurrentStyle2 = interface(IDispatch) - ['{3050F658-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_layoutFlow: WideString; safecall; - function Get_wordWrap: WideString; safecall; - function Get_textUnderlinePosition: WideString; safecall; - function Get_hasLayout: WordBool; safecall; - function Get_scrollbarBaseColor: OleVariant; safecall; - function Get_scrollbarFaceColor: OleVariant; safecall; - function Get_scrollbar3dLightColor: OleVariant; safecall; - function Get_scrollbarShadowColor: OleVariant; safecall; - function Get_scrollbarHighlightColor: OleVariant; safecall; - function Get_scrollbarDarkShadowColor: OleVariant; safecall; - function Get_scrollbarArrowColor: OleVariant; safecall; - function Get_scrollbarTrackColor: OleVariant; safecall; - function Get_writingMode: WideString; safecall; - function Get_zoom: OleVariant; safecall; - function Get_filter: WideString; safecall; - function Get_textAlignLast: WideString; safecall; - function Get_textKashidaSpace: OleVariant; safecall; - function Get_isBlock: WordBool; safecall; - property layoutFlow: WideString read Get_layoutFlow; - property wordWrap: WideString read Get_wordWrap; - property textUnderlinePosition: WideString read Get_textUnderlinePosition; - property hasLayout: WordBool read Get_hasLayout; - property scrollbarBaseColor: OleVariant read Get_scrollbarBaseColor; - property scrollbarFaceColor: OleVariant read Get_scrollbarFaceColor; - property scrollbar3dLightColor: OleVariant read Get_scrollbar3dLightColor; - property scrollbarShadowColor: OleVariant read Get_scrollbarShadowColor; - property scrollbarHighlightColor: OleVariant read Get_scrollbarHighlightColor; - property scrollbarDarkShadowColor: OleVariant read Get_scrollbarDarkShadowColor; - property scrollbarArrowColor: OleVariant read Get_scrollbarArrowColor; - property scrollbarTrackColor: OleVariant read Get_scrollbarTrackColor; - property writingMode: WideString read Get_writingMode; - property zoom: OleVariant read Get_zoom; - property filter: WideString read Get_filter; - property textAlignLast: WideString read Get_textAlignLast; - property textKashidaSpace: OleVariant read Get_textKashidaSpace; - property isBlock: WordBool read Get_isBlock; - end; - -// *********************************************************************// -// DispIntf: IHTMLCurrentStyle2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F658-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCurrentStyle2Disp = dispinterface - ['{3050F658-98B5-11CF-BB82-00AA00BDCE0B}'] - property layoutFlow: WideString readonly dispid - 2147412957; - property wordWrap: WideString readonly dispid - 2147412954; - property textUnderlinePosition: WideString readonly dispid - 2147412953; - property hasLayout: WordBool readonly dispid - 2147412952; - property scrollbarBaseColor: OleVariant readonly dispid - 2147412932; - property scrollbarFaceColor: OleVariant readonly dispid - 2147412931; - property scrollbar3dLightColor: OleVariant readonly dispid - 2147412930; - property scrollbarShadowColor: OleVariant readonly dispid - 2147412929; - property scrollbarHighlightColor: OleVariant readonly dispid - 2147412928; - property scrollbarDarkShadowColor: OleVariant readonly dispid - 2147412927; - property scrollbarArrowColor: OleVariant readonly dispid - 2147412926; - property scrollbarTrackColor: OleVariant readonly dispid - 2147412916; - property writingMode: WideString readonly dispid - 2147412920; - property zoom: OleVariant readonly dispid - 2147412959; - property filter: WideString readonly dispid - 2147413030; - property textAlignLast: WideString readonly dispid - 2147412909; - property textKashidaSpace: OleVariant readonly dispid - 2147412908; - property isBlock: WordBool readonly dispid - 2147412904; - end; - -// *********************************************************************// -// Interface: IHTMLCurrentStyle3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F818-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCurrentStyle3 = interface(IDispatch) - ['{3050F818-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_textOverflow: WideString; safecall; - function Get_minHeight: OleVariant; safecall; - function Get_wordSpacing: OleVariant; safecall; - function Get_whiteSpace: WideString; safecall; - property textOverflow: WideString read Get_textOverflow; - property minHeight: OleVariant read Get_minHeight; - property wordSpacing: OleVariant read Get_wordSpacing; - property whiteSpace: WideString read Get_whiteSpace; - end; - -// *********************************************************************// -// DispIntf: IHTMLCurrentStyle3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F818-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCurrentStyle3Disp = dispinterface - ['{3050F818-98B5-11CF-BB82-00AA00BDCE0B}'] - property textOverflow: WideString readonly dispid - 2147412903; - property minHeight: OleVariant readonly dispid - 2147412901; - property wordSpacing: OleVariant readonly dispid - 2147413065; - property whiteSpace: WideString readonly dispid - 2147413036; - end; - -// *********************************************************************// -// DispIntf: DispHTMLCurrentStyle -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F557-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLCurrentStyle = dispinterface - ['{3050F557-98B5-11CF-BB82-00AA00BDCE0B}'] - property position: WideString readonly dispid - 2147413022; - property styleFloat: WideString readonly dispid - 2147413042; - property color: OleVariant readonly dispid - 2147413110; - property backgroundColor: OleVariant readonly dispid - 501; - property fontFamily: WideString readonly dispid - 2147413094; - property fontStyle: WideString readonly dispid - 2147413088; - property fontVariant: WideString readonly dispid - 2147413087; - property fontWeight: OleVariant readonly dispid - 2147413085; - property fontSize: OleVariant readonly dispid - 2147413093; - property backgroundImage: WideString readonly dispid - 2147413111; - property backgroundPositionX: OleVariant readonly dispid - 2147413079; - property backgroundPositionY: OleVariant readonly dispid - 2147413078; - property backgroundRepeat: WideString readonly dispid - 2147413068; - property borderLeftColor: OleVariant readonly dispid - 2147413054; - property borderTopColor: OleVariant readonly dispid - 2147413057; - property borderRightColor: OleVariant readonly dispid - 2147413056; - property borderBottomColor: OleVariant readonly dispid - 2147413055; - property borderTopStyle: WideString readonly dispid - 2147413047; - property borderRightStyle: WideString readonly dispid - 2147413046; - property borderBottomStyle: WideString readonly dispid - 2147413045; - property borderLeftStyle: WideString readonly dispid - 2147413044; - property borderTopWidth: OleVariant readonly dispid - 2147413052; - property borderRightWidth: OleVariant readonly dispid - 2147413051; - property borderBottomWidth: OleVariant readonly dispid - 2147413050; - property borderLeftWidth: OleVariant readonly dispid - 2147413049; - property left: OleVariant readonly dispid - 2147418109; - property top: OleVariant readonly dispid - 2147418108; - property width: OleVariant readonly dispid - 2147418107; - property height: OleVariant readonly dispid - 2147418106; - property paddingLeft: OleVariant readonly dispid - 2147413097; - property paddingTop: OleVariant readonly dispid - 2147413100; - property paddingRight: OleVariant readonly dispid - 2147413099; - property paddingBottom: OleVariant readonly dispid - 2147413098; - property textAlign: WideString readonly dispid - 2147418040; - property textDecoration: WideString readonly dispid - 2147413077; - property display: WideString readonly dispid - 2147413041; - property visibility: WideString readonly dispid - 2147413032; - property zIndex: OleVariant readonly dispid - 2147413021; - property letterSpacing: OleVariant readonly dispid - 2147413104; - property lineHeight: OleVariant readonly dispid - 2147413106; - property textIndent: OleVariant readonly dispid - 2147413105; - property verticalAlign: OleVariant readonly dispid - 2147413064; - property backgroundAttachment: WideString readonly dispid - 2147413067; - property marginTop: OleVariant readonly dispid - 2147413075; - property marginRight: OleVariant readonly dispid - 2147413074; - property marginBottom: OleVariant readonly dispid - 2147413073; - property marginLeft: OleVariant readonly dispid - 2147413072; - property clear: WideString readonly dispid - 2147413096; - property listStyleType: WideString readonly dispid - 2147413040; - property listStylePosition: WideString readonly dispid - 2147413039; - property listStyleImage: WideString readonly dispid - 2147413038; - property clipTop: OleVariant readonly dispid - 2147413019; - property clipRight: OleVariant readonly dispid - 2147413018; - property clipBottom: OleVariant readonly dispid - 2147413017; - property clipLeft: OleVariant readonly dispid - 2147413016; - property overflow: WideString readonly dispid - 2147413102; - property pageBreakBefore: WideString readonly dispid - 2147413035; - property pageBreakAfter: WideString readonly dispid - 2147413034; - property cursor: WideString readonly dispid - 2147413010; - property tableLayout: WideString readonly dispid - 2147413014; - property borderCollapse: WideString readonly dispid - 2147413028; - property direction: WideString readonly dispid - 2147412993; - property behavior: WideString readonly dispid - 2147412997; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - property unicodeBidi: WideString readonly dispid - 2147412994; - property right: OleVariant readonly dispid - 2147418035; - property bottom: OleVariant readonly dispid - 2147418034; - property imeMode: WideString readonly dispid - 2147412992; - property rubyAlign: WideString readonly dispid - 2147412991; - property rubyPosition: WideString readonly dispid - 2147412990; - property rubyOverhang: WideString readonly dispid - 2147412989; - property textAutospace: WideString readonly dispid - 2147412980; - property lineBreak: WideString readonly dispid - 2147412979; - property wordBreak: WideString readonly dispid - 2147412978; - property textJustify: WideString readonly dispid - 2147412977; - property textJustifyTrim: WideString readonly dispid - 2147412976; - property textKashida: OleVariant readonly dispid - 2147412975; - property blockDirection: WideString readonly dispid - 2147412995; - property layoutGridChar: OleVariant readonly dispid - 2147412985; - property layoutGridLine: OleVariant readonly dispid - 2147412984; - property layoutGridMode: WideString readonly dispid - 2147412983; - property layoutGridType: WideString readonly dispid - 2147412982; - property borderStyle: WideString readonly dispid - 2147413048; - property borderColor: WideString readonly dispid - 2147413058; - property borderWidth: WideString readonly dispid - 2147413053; - property padding: WideString readonly dispid - 2147413101; - property margin: WideString readonly dispid - 2147413076; - property accelerator: WideString readonly dispid - 2147412965; - property overflowX: WideString readonly dispid - 2147412973; - property overflowY: WideString readonly dispid - 2147412972; - property textTransform: WideString readonly dispid - 2147413108; - property layoutFlow: WideString readonly dispid - 2147412957; - property wordWrap: WideString readonly dispid - 2147412954; - property textUnderlinePosition: WideString readonly dispid - 2147412953; - property hasLayout: WordBool readonly dispid - 2147412952; - property scrollbarBaseColor: OleVariant readonly dispid - 2147412932; - property scrollbarFaceColor: OleVariant readonly dispid - 2147412931; - property scrollbar3dLightColor: OleVariant readonly dispid - 2147412930; - property scrollbarShadowColor: OleVariant readonly dispid - 2147412929; - property scrollbarHighlightColor: OleVariant readonly dispid - 2147412928; - property scrollbarDarkShadowColor: OleVariant readonly dispid - 2147412927; - property scrollbarArrowColor: OleVariant readonly dispid - 2147412926; - property scrollbarTrackColor: OleVariant readonly dispid - 2147412916; - property writingMode: WideString readonly dispid - 2147412920; - property zoom: OleVariant readonly dispid - 2147412959; - property filter: WideString readonly dispid - 2147413030; - property textAlignLast: WideString readonly dispid - 2147412909; - property textKashidaSpace: OleVariant readonly dispid - 2147412908; - property isBlock: WordBool readonly dispid - 2147412904; - property textOverflow: WideString readonly dispid - 2147412903; - property minHeight: OleVariant readonly dispid - 2147412901; - property wordSpacing: OleVariant readonly dispid - 2147413065; - property whiteSpace: WideString readonly dispid - 2147413036; - end; - -// *********************************************************************// -// Interface: IHTMLRect -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4A3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRect = interface(IDispatch) - ['{3050F4A3-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_left(p: Integer); safecall; - function Get_left: Integer; safecall; - procedure Set_top(p: Integer); safecall; - function Get_top: Integer; safecall; - procedure Set_right(p: Integer); safecall; - function Get_right: Integer; safecall; - procedure Set_bottom(p: Integer); safecall; - function Get_bottom: Integer; safecall; - property left: Integer read Get_left write Set_left; - property top: Integer read Get_top write Set_top; - property right: Integer read Get_right write Set_right; - property bottom: Integer read Get_bottom write Set_bottom; - end; - -// *********************************************************************// -// DispIntf: IHTMLRectDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4A3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRectDisp = dispinterface - ['{3050F4A3-98B5-11CF-BB82-00AA00BDCE0B}'] - property left: Integer dispid 1001; - property top: Integer dispid 1002; - property right: Integer dispid 1003; - property bottom: Integer dispid 1004; - end; - -// *********************************************************************// -// Interface: IHTMLRectCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4A4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRectCollection = interface(IDispatch) - ['{3050F4A4-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; safecall; - property length: Integer read Get_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLRectCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4A4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLRectCollectionDisp = dispinterface - ['{3050F4A4-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; dispid 0; - end; - -// *********************************************************************// -// Interface: IHTMLDOMNode -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5DA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMNode = interface(IDispatch) - ['{3050F5DA-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_nodeType: Integer; safecall; - function Get_parentNode: IHTMLDOMNode; safecall; - function hasChildNodes: WordBool; safecall; - function Get_childNodes: IDispatch; safecall; - function Get_attributes: IDispatch; safecall; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; safecall; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; safecall; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; safecall; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; safecall; - function removeNode(fDeep: WordBool): IHTMLDOMNode; safecall; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; safecall; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; safecall; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; safecall; - function Get_nodeName: WideString; safecall; - procedure Set_nodeValue(p: OleVariant); safecall; - function Get_nodeValue: OleVariant; safecall; - function Get_firstChild: IHTMLDOMNode; safecall; - function Get_lastChild: IHTMLDOMNode; safecall; - function Get_previousSibling: IHTMLDOMNode; safecall; - function Get_nextSibling: IHTMLDOMNode; safecall; - property nodeType: Integer read Get_nodeType; - property parentNode: IHTMLDOMNode read Get_parentNode; - property childNodes: IDispatch read Get_childNodes; - property attributes: IDispatch read Get_attributes; - property nodeName: WideString read Get_nodeName; - property nodeValue: OleVariant read Get_nodeValue write Set_nodeValue; - property firstChild: IHTMLDOMNode read Get_firstChild; - property lastChild: IHTMLDOMNode read Get_lastChild; - property previousSibling: IHTMLDOMNode read Get_previousSibling; - property nextSibling: IHTMLDOMNode read Get_nextSibling; - end; - -// *********************************************************************// -// DispIntf: IHTMLDOMNodeDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5DA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMNodeDisp = dispinterface - ['{3050F5DA-98B5-11CF-BB82-00AA00BDCE0B}'] - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - end; - -// *********************************************************************// -// Interface: IHTMLDOMNode2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F80B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMNode2 = interface(IDispatch) - ['{3050F80B-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_ownerDocument: IDispatch; safecall; - property ownerDocument: IDispatch read Get_ownerDocument; - end; - -// *********************************************************************// -// DispIntf: IHTMLDOMNode2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F80B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMNode2Disp = dispinterface - ['{3050F80B-98B5-11CF-BB82-00AA00BDCE0B}'] - property ownerDocument: IDispatch readonly dispid - 2147416999; - end; - -// *********************************************************************// -// Interface: IHTMLDOMAttribute -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4B0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMAttribute = interface(IDispatch) - ['{3050F4B0-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_nodeName: WideString; safecall; - procedure Set_nodeValue(p: OleVariant); safecall; - function Get_nodeValue: OleVariant; safecall; - function Get_specified: WordBool; safecall; - property nodeName: WideString read Get_nodeName; - property nodeValue: OleVariant read Get_nodeValue write Set_nodeValue; - property specified: WordBool read Get_specified; - end; - -// *********************************************************************// -// DispIntf: IHTMLDOMAttributeDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4B0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMAttributeDisp = dispinterface - ['{3050F4B0-98B5-11CF-BB82-00AA00BDCE0B}'] - property nodeName: WideString readonly dispid 1000; - property nodeValue: OleVariant dispid 1002; - property specified: WordBool readonly dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLDOMAttribute2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F810-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMAttribute2 = interface(IDispatch) - ['{3050F810-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_name: WideString; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - function Get_expando: WordBool; safecall; - function Get_nodeType: Integer; safecall; - function Get_parentNode: IHTMLDOMNode; safecall; - function Get_childNodes: IDispatch; safecall; - function Get_firstChild: IHTMLDOMNode; safecall; - function Get_lastChild: IHTMLDOMNode; safecall; - function Get_previousSibling: IHTMLDOMNode; safecall; - function Get_nextSibling: IHTMLDOMNode; safecall; - function Get_attributes: IDispatch; safecall; - function Get_ownerDocument: IDispatch; safecall; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; safecall; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; safecall; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; safecall; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; safecall; - function hasChildNodes: WordBool; safecall; - function cloneNode(fDeep: WordBool): IHTMLDOMAttribute; safecall; - property name: WideString read Get_name; - property value: WideString read Get_value write Set_value; - property expando: WordBool read Get_expando; - property nodeType: Integer read Get_nodeType; - property parentNode: IHTMLDOMNode read Get_parentNode; - property childNodes: IDispatch read Get_childNodes; - property firstChild: IHTMLDOMNode read Get_firstChild; - property lastChild: IHTMLDOMNode read Get_lastChild; - property previousSibling: IHTMLDOMNode read Get_previousSibling; - property nextSibling: IHTMLDOMNode read Get_nextSibling; - property attributes: IDispatch read Get_attributes; - property ownerDocument: IDispatch read Get_ownerDocument; - end; - -// *********************************************************************// -// DispIntf: IHTMLDOMAttribute2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F810-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMAttribute2Disp = dispinterface - ['{3050F810-98B5-11CF-BB82-00AA00BDCE0B}'] - property name: WideString readonly dispid 1003; - property value: WideString dispid 1004; - property expando: WordBool readonly dispid 1005; - property nodeType: Integer readonly dispid 1006; - property parentNode: IHTMLDOMNode readonly dispid 1007; - property childNodes: IDispatch readonly dispid 1008; - property firstChild: IHTMLDOMNode readonly dispid 1009; - property lastChild: IHTMLDOMNode readonly dispid 1010; - property previousSibling: IHTMLDOMNode readonly dispid 1011; - property nextSibling: IHTMLDOMNode readonly dispid 1012; - property attributes: IDispatch readonly dispid 1013; - property ownerDocument: IDispatch readonly dispid 1014; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid 1015; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid 1016; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid 1017; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid 1018; - function hasChildNodes: WordBool; dispid 1019; - function cloneNode(fDeep: WordBool): IHTMLDOMAttribute; dispid 1020; - end; - -// *********************************************************************// -// Interface: IHTMLDOMTextNode -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4B1-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMTextNode = interface(IDispatch) - ['{3050F4B1-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_data(const p: WideString); safecall; - function Get_data: WideString; safecall; - function toString: WideString; safecall; - function Get_length: Integer; safecall; - function splitText(offset: Integer): IHTMLDOMNode; safecall; - property data: WideString read Get_data write Set_data; - property length: Integer read Get_length; - end; - -// *********************************************************************// -// DispIntf: IHTMLDOMTextNodeDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4B1-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMTextNodeDisp = dispinterface - ['{3050F4B1-98B5-11CF-BB82-00AA00BDCE0B}'] - property data: WideString dispid 1000; - function toString: WideString; dispid 1001; - property length: Integer readonly dispid 1002; - function splitText(offset: Integer): IHTMLDOMNode; dispid 1003; - end; - -// *********************************************************************// -// Interface: IHTMLDOMTextNode2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F809-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMTextNode2 = interface(IDispatch) - ['{3050F809-98B5-11CF-BB82-00AA00BDCE0B}'] - function substringData(offset: Integer; Count: Integer): WideString; safecall; - procedure appendData(const bstrstring: WideString); safecall; - procedure insertData(offset: Integer; const bstrstring: WideString); safecall; - procedure deleteData(offset: Integer; Count: Integer); safecall; - procedure replaceData(offset: Integer; Count: Integer; const bstrstring: WideString); safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLDOMTextNode2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F809-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMTextNode2Disp = dispinterface - ['{3050F809-98B5-11CF-BB82-00AA00BDCE0B}'] - function substringData(offset: Integer; Count: Integer): WideString; dispid 1004; - procedure appendData(const bstrstring: WideString); dispid 1005; - procedure insertData(offset: Integer; const bstrstring: WideString); dispid 1006; - procedure deleteData(offset: Integer; Count: Integer); dispid 1007; - procedure replaceData(offset: Integer; Count: Integer; const bstrstring: WideString); dispid 1008; - end; - -// *********************************************************************// -// Interface: IHTMLDOMImplementation -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F80D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMImplementation = interface(IDispatch) - ['{3050F80D-98B5-11CF-BB82-00AA00BDCE0B}'] - function hasFeature(const bstrfeature: WideString; version: OleVariant): WordBool; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLDOMImplementationDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F80D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMImplementationDisp = dispinterface - ['{3050F80D-98B5-11CF-BB82-00AA00BDCE0B}'] - function hasFeature(const bstrfeature: WideString; version: OleVariant): WordBool; dispid 1000; - end; - -// *********************************************************************// -// DispIntf: DispHTMLDOMAttribute -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F564-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLDOMAttribute = dispinterface - ['{3050F564-98B5-11CF-BB82-00AA00BDCE0B}'] - property nodeName: WideString readonly dispid 1000; - property nodeValue: OleVariant dispid 1002; - property specified: WordBool readonly dispid 1001; - property name: WideString readonly dispid 1003; - property value: WideString dispid 1004; - property expando: WordBool readonly dispid 1005; - property nodeType: Integer readonly dispid 1006; - property parentNode: IHTMLDOMNode readonly dispid 1007; - property childNodes: IDispatch readonly dispid 1008; - property firstChild: IHTMLDOMNode readonly dispid 1009; - property lastChild: IHTMLDOMNode readonly dispid 1010; - property previousSibling: IHTMLDOMNode readonly dispid 1011; - property nextSibling: IHTMLDOMNode readonly dispid 1012; - property attributes: IDispatch readonly dispid 1013; - property ownerDocument: IDispatch readonly dispid 1014; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid 1015; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid 1016; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid 1017; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid 1018; - function hasChildNodes: WordBool; dispid 1019; - function cloneNode(fDeep: WordBool): IHTMLDOMAttribute; dispid 1020; - end; - -// *********************************************************************// -// DispIntf: DispHTMLDOMTextNode -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F565-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLDOMTextNode = dispinterface - ['{3050F565-98B5-11CF-BB82-00AA00BDCE0B}'] - property data: WideString dispid 1000; - function toString: WideString; dispid 1001; - property length: Integer readonly dispid 1002; - function splitText(offset: Integer): IHTMLDOMNode; dispid 1003; - function substringData(offset: Integer; Count: Integer): WideString; dispid 1004; - procedure appendData(const bstrstring: WideString); dispid 1005; - procedure insertData(offset: Integer; const bstrstring: WideString); dispid 1006; - procedure deleteData(offset: Integer; Count: Integer); dispid 1007; - procedure replaceData(offset: Integer; Count: Integer; const bstrstring: WideString); dispid 1008; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - end; - -// *********************************************************************// -// DispIntf: DispHTMLDOMImplementation -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F58F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLDOMImplementation = dispinterface - ['{3050F58F-98B5-11CF-BB82-00AA00BDCE0B}'] - function hasFeature(const bstrfeature: WideString; version: OleVariant): WordBool; dispid 1000; - end; - -// *********************************************************************// -// Interface: IHTMLAttributeCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4C3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAttributeCollection = interface(IDispatch) - ['{3050F4C3-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - // !! API fix decl - function item(const name: OleVariant): IDispatch; safecall; - property length: Integer read Get_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLAttributeCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4C3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAttributeCollectionDisp = dispinterface - ['{3050F4C3-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - // !! API fix decl - function item(const name: OleVariant): IDispatch; dispid 0; - end; - -// *********************************************************************// -// Interface: IHTMLAttributeCollection2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F80A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAttributeCollection2 = interface(IDispatch) - ['{3050F80A-98B5-11CF-BB82-00AA00BDCE0B}'] - function getNamedItem(const bstrName: WideString): IHTMLDOMAttribute; safecall; - function setNamedItem(const ppNode: IHTMLDOMAttribute): IHTMLDOMAttribute; safecall; - function removeNamedItem(const bstrName: WideString): IHTMLDOMAttribute; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLAttributeCollection2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F80A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAttributeCollection2Disp = dispinterface - ['{3050F80A-98B5-11CF-BB82-00AA00BDCE0B}'] - function getNamedItem(const bstrName: WideString): IHTMLDOMAttribute; dispid 1501; - function setNamedItem(const ppNode: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid 1502; - function removeNamedItem(const bstrName: WideString): IHTMLDOMAttribute; dispid 1503; - end; - -// *********************************************************************// -// Interface: IHTMLDOMChildrenCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5AB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMChildrenCollection = interface(IDispatch) - ['{3050F5AB-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - function item(index: Integer): IDispatch; safecall; - property length: Integer read Get_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLDOMChildrenCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5AB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDOMChildrenCollectionDisp = dispinterface - ['{3050F5AB-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(index: Integer): IDispatch; dispid 0; - end; - -// *********************************************************************// -// DispIntf: DispHTMLAttributeCollection -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F56C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLAttributeCollection = dispinterface - ['{3050F56C-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(var name: OleVariant): IDispatch; dispid 0; - function getNamedItem(const bstrName: WideString): IHTMLDOMAttribute; dispid 1501; - function setNamedItem(const ppNode: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid 1502; - function removeNamedItem(const bstrName: WideString): IHTMLDOMAttribute; dispid 1503; - end; - -// *********************************************************************// -// DispIntf: DispDOMChildrenCollection -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F577-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispDOMChildrenCollection = dispinterface - ['{3050F577-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(index: Integer): IDispatch; dispid 0; - end; - -// *********************************************************************// -// DispIntf: HTMLElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F60F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLElementEvents2 = dispinterface - ['{3050F60F-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - end; - -// *********************************************************************// -// DispIntf: HTMLElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F33C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLElementEvents = dispinterface - ['{3050F33C-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - end; - -// *********************************************************************// -// Interface: IHTMLElementCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F21F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElementCollection = interface(IDispatch) - ['{3050F21F-98B5-11CF-BB82-00AA00BDCE0B}'] - function toString: WideString; safecall; - procedure Set_length(p: Integer); safecall; - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - function item(name: OleVariant; index: OleVariant): IDispatch; safecall; - function tags(tagName: OleVariant): IDispatch; safecall; - property length: Integer read Get_length write Set_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLElementCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F21F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElementCollectionDisp = dispinterface - ['{3050F21F-98B5-11CF-BB82-00AA00BDCE0B}'] - function toString: WideString; dispid 1501; - property length: Integer dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(name: OleVariant; index: OleVariant): IDispatch; dispid 0; - function tags(tagName: OleVariant): IDispatch; dispid 1502; - end; - -// *********************************************************************// -// Interface: IHTMLElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F434-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElement2 = interface(IDispatch) - ['{3050F434-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_scopeName: WideString; safecall; - procedure setCapture(containerCapture: WordBool); safecall; - procedure releaseCapture; safecall; - procedure Set_onlosecapture(p: OleVariant); safecall; - function Get_onlosecapture: OleVariant; safecall; - function componentFromPoint(x: Integer; y: Integer): WideString; safecall; - procedure doScroll(component: OleVariant); safecall; - procedure Set_onscroll(p: OleVariant); safecall; - function Get_onscroll: OleVariant; safecall; - procedure Set_ondrag(p: OleVariant); safecall; - function Get_ondrag: OleVariant; safecall; - procedure Set_ondragend(p: OleVariant); safecall; - function Get_ondragend: OleVariant; safecall; - procedure Set_ondragenter(p: OleVariant); safecall; - function Get_ondragenter: OleVariant; safecall; - procedure Set_ondragover(p: OleVariant); safecall; - function Get_ondragover: OleVariant; safecall; - procedure Set_ondragleave(p: OleVariant); safecall; - function Get_ondragleave: OleVariant; safecall; - procedure Set_ondrop(p: OleVariant); safecall; - function Get_ondrop: OleVariant; safecall; - procedure Set_onbeforecut(p: OleVariant); safecall; - function Get_onbeforecut: OleVariant; safecall; - procedure Set_oncut(p: OleVariant); safecall; - function Get_oncut: OleVariant; safecall; - procedure Set_onbeforecopy(p: OleVariant); safecall; - function Get_onbeforecopy: OleVariant; safecall; - procedure Set_oncopy(p: OleVariant); safecall; - function Get_oncopy: OleVariant; safecall; - procedure Set_onbeforepaste(p: OleVariant); safecall; - function Get_onbeforepaste: OleVariant; safecall; - procedure Set_onpaste(p: OleVariant); safecall; - function Get_onpaste: OleVariant; safecall; - function Get_currentStyle: IHTMLCurrentStyle; safecall; - procedure Set_onpropertychange(p: OleVariant); safecall; - function Get_onpropertychange: OleVariant; safecall; - function getClientRects: IHTMLRectCollection; safecall; - function getBoundingClientRect: IHTMLRect; safecall; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); safecall; - function getExpression(const propname: WideString): OleVariant; safecall; - function removeExpression(const propname: WideString): WordBool; safecall; - procedure Set_tabIndex(p: Smallint); safecall; - function Get_tabIndex: Smallint; safecall; - procedure focus; safecall; - procedure Set_accessKey(const p: WideString); safecall; - function Get_accessKey: WideString; safecall; - procedure Set_onblur(p: OleVariant); safecall; - function Get_onblur: OleVariant; safecall; - procedure Set_onfocus(p: OleVariant); safecall; - function Get_onfocus: OleVariant; safecall; - procedure Set_onresize(p: OleVariant); safecall; - function Get_onresize: OleVariant; safecall; - procedure blur; safecall; - procedure addFilter(const pUnk: IUnknown); safecall; - procedure removeFilter(const pUnk: IUnknown); safecall; - function Get_clientHeight: Integer; safecall; - function Get_clientWidth: Integer; safecall; - function Get_clientTop: Integer; safecall; - function Get_clientLeft: Integer; safecall; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; safecall; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); safecall; - function Get_readyState: OleVariant; safecall; - procedure Set_onreadystatechange(p: OleVariant); safecall; - function Get_onreadystatechange: OleVariant; safecall; - procedure Set_onrowsdelete(p: OleVariant); safecall; - function Get_onrowsdelete: OleVariant; safecall; - procedure Set_onrowsinserted(p: OleVariant); safecall; - function Get_onrowsinserted: OleVariant; safecall; - procedure Set_oncellchange(p: OleVariant); safecall; - function Get_oncellchange: OleVariant; safecall; - procedure Set_dir(const p: WideString); safecall; - function Get_dir: WideString; safecall; - function createControlRange: IDispatch; safecall; - function Get_scrollHeight: Integer; safecall; - function Get_scrollWidth: Integer; safecall; - procedure Set_scrollTop(p: Integer); safecall; - function Get_scrollTop: Integer; safecall; - procedure Set_scrollLeft(p: Integer); safecall; - function Get_scrollLeft: Integer; safecall; - procedure clearAttributes; safecall; - procedure mergeAttributes(const mergeThis: IHTMLElement); safecall; - procedure Set_oncontextmenu(p: OleVariant); safecall; - function Get_oncontextmenu: OleVariant; safecall; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; safecall; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; safecall; - function getAdjacentText(const where: WideString): WideString; safecall; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; safecall; - function Get_canHaveChildren: WordBool; safecall; - function addBehavior(const bstrUrl: WideString; const pvarFactory: OleVariant): Integer; safecall; - function removeBehavior(cookie: Integer): WordBool; safecall; - function Get_runtimeStyle: IHTMLStyle; safecall; - function Get_behaviorUrns: IDispatch; safecall; - procedure Set_tagUrn(const p: WideString); safecall; - function Get_tagUrn: WideString; safecall; - procedure Set_onbeforeeditfocus(p: OleVariant); safecall; - function Get_onbeforeeditfocus: OleVariant; safecall; - function Get_readyStateValue: Integer; safecall; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; safecall; - property scopeName: WideString read Get_scopeName; - property onlosecapture: OleVariant read Get_onlosecapture write Set_onlosecapture; - property onscroll: OleVariant read Get_onscroll write Set_onscroll; - property ondrag: OleVariant read Get_ondrag write Set_ondrag; - property ondragend: OleVariant read Get_ondragend write Set_ondragend; - property ondragenter: OleVariant read Get_ondragenter write Set_ondragenter; - property ondragover: OleVariant read Get_ondragover write Set_ondragover; - property ondragleave: OleVariant read Get_ondragleave write Set_ondragleave; - property ondrop: OleVariant read Get_ondrop write Set_ondrop; - property onbeforecut: OleVariant read Get_onbeforecut write Set_onbeforecut; - property oncut: OleVariant read Get_oncut write Set_oncut; - property onbeforecopy: OleVariant read Get_onbeforecopy write Set_onbeforecopy; - property oncopy: OleVariant read Get_oncopy write Set_oncopy; - property onbeforepaste: OleVariant read Get_onbeforepaste write Set_onbeforepaste; - property onpaste: OleVariant read Get_onpaste write Set_onpaste; - property currentStyle: IHTMLCurrentStyle read Get_currentStyle; - property onpropertychange: OleVariant read Get_onpropertychange write Set_onpropertychange; - property tabIndex: Smallint read Get_tabIndex write Set_tabIndex; - property accessKey: WideString read Get_accessKey write Set_accessKey; - property onblur: OleVariant read Get_onblur write Set_onblur; - property onfocus: OleVariant read Get_onfocus write Set_onfocus; - property onresize: OleVariant read Get_onresize write Set_onresize; - property clientHeight: Integer read Get_clientHeight; - property clientWidth: Integer read Get_clientWidth; - property clientTop: Integer read Get_clientTop; - property clientLeft: Integer read Get_clientLeft; - property readyState: OleVariant read Get_readyState; - property onreadystatechange: OleVariant read Get_onreadystatechange write Set_onreadystatechange; - property onrowsdelete: OleVariant read Get_onrowsdelete write Set_onrowsdelete; - property onrowsinserted: OleVariant read Get_onrowsinserted write Set_onrowsinserted; - property oncellchange: OleVariant read Get_oncellchange write Set_oncellchange; - property dir: WideString read Get_dir write Set_dir; - property scrollHeight: Integer read Get_scrollHeight; - property scrollWidth: Integer read Get_scrollWidth; - property scrollTop: Integer read Get_scrollTop write Set_scrollTop; - property scrollLeft: Integer read Get_scrollLeft write Set_scrollLeft; - property oncontextmenu: OleVariant read Get_oncontextmenu write Set_oncontextmenu; - property canHaveChildren: WordBool read Get_canHaveChildren; - property runtimeStyle: IHTMLStyle read Get_runtimeStyle; - property behaviorUrns: IDispatch read Get_behaviorUrns; - property tagUrn: WideString read Get_tagUrn write Set_tagUrn; - property onbeforeeditfocus: OleVariant read Get_onbeforeeditfocus write Set_onbeforeeditfocus; - property readyStateValue: Integer read Get_readyStateValue; - end; - -// *********************************************************************// -// DispIntf: IHTMLElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F434-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElement2Disp = dispinterface - ['{3050F434-98B5-11CF-BB82-00AA00BDCE0B}'] - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - procedure mergeAttributes(const mergeThis: IHTMLElement); dispid - 2147417049; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - end; - -// *********************************************************************// -// Interface: IHTMLElement3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F673-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElement3 = interface(IDispatch) - ['{3050F673-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); safecall; - function Get_isMultiLine: WordBool; safecall; - function Get_canHaveHTML: WordBool; safecall; - procedure Set_onlayoutcomplete(p: OleVariant); safecall; - function Get_onlayoutcomplete: OleVariant; safecall; - procedure Set_onpage(p: OleVariant); safecall; - function Get_onpage: OleVariant; safecall; - procedure Set_inflateBlock(p: WordBool); safecall; - function Get_inflateBlock: WordBool; safecall; - procedure Set_onbeforedeactivate(p: OleVariant); safecall; - function Get_onbeforedeactivate: OleVariant; safecall; - procedure setActive; safecall; - procedure Set_contentEditable(const p: WideString); safecall; - function Get_contentEditable: WideString; safecall; - function Get_isContentEditable: WordBool; safecall; - procedure Set_hideFocus(p: WordBool); safecall; - function Get_hideFocus: WordBool; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - function Get_isDisabled: WordBool; safecall; - procedure Set_onmove(p: OleVariant); safecall; - function Get_onmove: OleVariant; safecall; - procedure Set_oncontrolselect(p: OleVariant); safecall; - function Get_oncontrolselect: OleVariant; safecall; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; safecall; - procedure Set_onresizestart(p: OleVariant); safecall; - function Get_onresizestart: OleVariant; safecall; - procedure Set_onresizeend(p: OleVariant); safecall; - function Get_onresizeend: OleVariant; safecall; - procedure Set_onmovestart(p: OleVariant); safecall; - function Get_onmovestart: OleVariant; safecall; - procedure Set_onmoveend(p: OleVariant); safecall; - function Get_onmoveend: OleVariant; safecall; - procedure Set_onmouseenter(p: OleVariant); safecall; - function Get_onmouseenter: OleVariant; safecall; - procedure Set_onmouseleave(p: OleVariant); safecall; - function Get_onmouseleave: OleVariant; safecall; - procedure Set_onactivate(p: OleVariant); safecall; - function Get_onactivate: OleVariant; safecall; - procedure Set_ondeactivate(p: OleVariant); safecall; - function Get_ondeactivate: OleVariant; safecall; - function dragDrop: WordBool; safecall; - function Get_glyphMode: Integer; safecall; - property isMultiLine: WordBool read Get_isMultiLine; - property canHaveHTML: WordBool read Get_canHaveHTML; - property onlayoutcomplete: OleVariant read Get_onlayoutcomplete write Set_onlayoutcomplete; - property onpage: OleVariant read Get_onpage write Set_onpage; - property inflateBlock: WordBool read Get_inflateBlock write Set_inflateBlock; - property onbeforedeactivate: OleVariant read Get_onbeforedeactivate write Set_onbeforedeactivate; - property contentEditable: WideString read Get_contentEditable write Set_contentEditable; - property isContentEditable: WordBool read Get_isContentEditable; - property hideFocus: WordBool read Get_hideFocus write Set_hideFocus; - property disabled: WordBool read Get_disabled write Set_disabled; - property isDisabled: WordBool read Get_isDisabled; - property onmove: OleVariant read Get_onmove write Set_onmove; - property oncontrolselect: OleVariant read Get_oncontrolselect write Set_oncontrolselect; - property onresizestart: OleVariant read Get_onresizestart write Set_onresizestart; - property onresizeend: OleVariant read Get_onresizeend write Set_onresizeend; - property onmovestart: OleVariant read Get_onmovestart write Set_onmovestart; - property onmoveend: OleVariant read Get_onmoveend write Set_onmoveend; - property onmouseenter: OleVariant read Get_onmouseenter write Set_onmouseenter; - property onmouseleave: OleVariant read Get_onmouseleave write Set_onmouseleave; - property onactivate: OleVariant read Get_onactivate write Set_onactivate; - property ondeactivate: OleVariant read Get_ondeactivate write Set_ondeactivate; - property glyphMode: Integer read Get_glyphMode; - end; - -// *********************************************************************// -// DispIntf: IHTMLElement3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F673-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElement3Disp = dispinterface - ['{3050F673-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - end; - -// *********************************************************************// -// Interface: IHTMLElement4 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F80F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElement4 = interface(IDispatch) - ['{3050F80F-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_onmousewheel(p: OleVariant); safecall; - function Get_onmousewheel: OleVariant; safecall; - procedure normalize; safecall; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; safecall; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; safecall; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; safecall; - procedure Set_onbeforeactivate(p: OleVariant); safecall; - function Get_onbeforeactivate: OleVariant; safecall; - procedure Set_onfocusin(p: OleVariant); safecall; - function Get_onfocusin: OleVariant; safecall; - procedure Set_onfocusout(p: OleVariant); safecall; - function Get_onfocusout: OleVariant; safecall; - property onmousewheel: OleVariant read Get_onmousewheel write Set_onmousewheel; - property onbeforeactivate: OleVariant read Get_onbeforeactivate write Set_onbeforeactivate; - property onfocusin: OleVariant read Get_onfocusin write Set_onfocusin; - property onfocusout: OleVariant read Get_onfocusout write Set_onfocusout; - end; - -// *********************************************************************// -// DispIntf: IHTMLElement4Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F80F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElement4Disp = dispinterface - ['{3050F80F-98B5-11CF-BB82-00AA00BDCE0B}'] - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - end; - -// *********************************************************************// -// Interface: IHTMLElementRender -// Flags: (0) -// GUID: {3050F669-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElementRender = interface(IUnknown) - ['{3050F669-98B5-11CF-BB82-00AA00BDCE0B}'] - // !! API fix decl - function DrawToDC(hdc: HDC): HRESULT; stdcall; - // !! API fix decl - function SetDocumentPrinter(const bstrPrinterName: WideString; hdc: HDC): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLUniqueName -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4D0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLUniqueName = interface(IDispatch) - ['{3050F4D0-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_uniqueNumber: Integer; safecall; - function Get_uniqueID: WideString; safecall; - property uniqueNumber: Integer read Get_uniqueNumber; - property uniqueID: WideString read Get_uniqueID; - end; - -// *********************************************************************// -// DispIntf: IHTMLUniqueNameDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4D0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLUniqueNameDisp = dispinterface - ['{3050F4D0-98B5-11CF-BB82-00AA00BDCE0B}'] - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - end; - -// *********************************************************************// -// Interface: IHTMLDatabinding -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3F2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDatabinding = interface(IDispatch) - ['{3050F3F2-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_dataFld(const p: WideString); safecall; - function Get_dataFld: WideString; safecall; - procedure Set_dataSrc(const p: WideString); safecall; - function Get_dataSrc: WideString; safecall; - procedure Set_dataFormatAs(const p: WideString); safecall; - function Get_dataFormatAs: WideString; safecall; - property dataFld: WideString read Get_dataFld write Set_dataFld; - property dataSrc: WideString read Get_dataSrc write Set_dataSrc; - property dataFormatAs: WideString read Get_dataFormatAs write Set_dataFormatAs; - end; - -// *********************************************************************// -// DispIntf: IHTMLDatabindingDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3F2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDatabindingDisp = dispinterface - ['{3050F3F2-98B5-11CF-BB82-00AA00BDCE0B}'] - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - end; - -// *********************************************************************// -// Interface: IHTMLDocument -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {626FC520-A41E-11CF-A731-00A0C9082637} -// *********************************************************************// - IHTMLDocument = interface(IDispatch) - ['{626FC520-A41E-11CF-A731-00A0C9082637}'] - function Get_Script: IDispatch; safecall; - property Script: IDispatch read Get_Script; - end; - -// *********************************************************************// -// DispIntf: IHTMLDocumentDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {626FC520-A41E-11CF-A731-00A0C9082637} -// *********************************************************************// - IHTMLDocumentDisp = dispinterface - ['{626FC520-A41E-11CF-A731-00A0C9082637}'] - property Script: IDispatch readonly dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLElementDefaults -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6C9-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElementDefaults = interface(IDispatch) - ['{3050F6C9-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_style: IHTMLStyle; safecall; - procedure Set_tabStop(p: WordBool); safecall; - function Get_tabStop: WordBool; safecall; - procedure Set_viewInheritStyle(p: WordBool); safecall; - function Get_viewInheritStyle: WordBool; safecall; - procedure Set_viewMasterTab(p: WordBool); safecall; - function Get_viewMasterTab: WordBool; safecall; - procedure Set_scrollSegmentX(p: Integer); safecall; - function Get_scrollSegmentX: Integer; safecall; - procedure Set_scrollSegmentY(p: Integer); safecall; - function Get_scrollSegmentY: Integer; safecall; - procedure Set_isMultiLine(p: WordBool); safecall; - function Get_isMultiLine: WordBool; safecall; - procedure Set_contentEditable(const p: WideString); safecall; - function Get_contentEditable: WideString; safecall; - procedure Set_canHaveHTML(p: WordBool); safecall; - function Get_canHaveHTML: WordBool; safecall; - procedure _Set_viewLink(const p: IHTMLDocument); safecall; - function Get_viewLink: IHTMLDocument; safecall; - procedure Set_frozen(p: WordBool); safecall; - function Get_frozen: WordBool; safecall; - property style: IHTMLStyle read Get_style; - property tabStop: WordBool read Get_tabStop write Set_tabStop; - property viewInheritStyle: WordBool read Get_viewInheritStyle write Set_viewInheritStyle; - property viewMasterTab: WordBool read Get_viewMasterTab write Set_viewMasterTab; - property scrollSegmentX: Integer read Get_scrollSegmentX write Set_scrollSegmentX; - property scrollSegmentY: Integer read Get_scrollSegmentY write Set_scrollSegmentY; - property isMultiLine: WordBool read Get_isMultiLine write Set_isMultiLine; - property contentEditable: WideString read Get_contentEditable write Set_contentEditable; - property canHaveHTML: WordBool read Get_canHaveHTML write Set_canHaveHTML; - property viewLink: IHTMLDocument read Get_viewLink write _Set_viewLink; - property frozen: WordBool read Get_frozen write Set_frozen; - end; - -// *********************************************************************// -// DispIntf: IHTMLElementDefaultsDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6C9-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElementDefaultsDisp = dispinterface - ['{3050F6C9-98B5-11CF-BB82-00AA00BDCE0B}'] - property style: IHTMLStyle readonly dispid 1001; - property tabStop: WordBool dispid 1002; - property viewInheritStyle: WordBool dispid - 2147412913; - property viewMasterTab: WordBool dispid 1006; - property scrollSegmentX: Integer dispid 1003; - property scrollSegmentY: Integer dispid 1004; - property isMultiLine: WordBool dispid 1008; - property contentEditable: WideString dispid - 2147412950; - property canHaveHTML: WordBool dispid 1009; - property viewLink: IHTMLDocument dispid 1011; - property frozen: WordBool dispid - 2147412914; - end; - -// *********************************************************************// -// DispIntf: DispHTMLDefaults -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F58C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLDefaults = dispinterface - ['{3050F58C-98B5-11CF-BB82-00AA00BDCE0B}'] - property style: IHTMLStyle readonly dispid 1001; - property tabStop: WordBool dispid 1002; - property viewInheritStyle: WordBool dispid - 2147412913; - property viewMasterTab: WordBool dispid 1006; - property scrollSegmentX: Integer dispid 1003; - property scrollSegmentY: Integer dispid 1004; - property isMultiLine: WordBool dispid 1008; - property contentEditable: WideString dispid - 2147412950; - property canHaveHTML: WordBool dispid 1009; - property viewLink: IHTMLDocument dispid 1011; - property frozen: WordBool dispid - 2147412914; - end; - -// *********************************************************************// -// Interface: IHTCDefaultDispatch -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4FD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCDefaultDispatch = interface(IDispatch) - ['{3050F4FD-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_element: IHTMLElement; safecall; - function CreateEventObject: IHTMLEventObj; safecall; - function Get_defaults: IDispatch; safecall; - function Get_document: IDispatch; safecall; - property element: IHTMLElement read Get_element; - property defaults: IDispatch read Get_defaults; - property document: IDispatch read Get_document; - end; - -// *********************************************************************// -// DispIntf: IHTCDefaultDispatchDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4FD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCDefaultDispatchDisp = dispinterface - ['{3050F4FD-98B5-11CF-BB82-00AA00BDCE0B}'] - property element: IHTMLElement readonly dispid - 2147412969; - function CreateEventObject: IHTMLEventObj; dispid - 2147412968; - property defaults: IDispatch readonly dispid - 2147412947; - property document: IDispatch readonly dispid - 2147412970; - end; - -// *********************************************************************// -// Interface: IHTCPropertyBehavior -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5DF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCPropertyBehavior = interface(IDispatch) - ['{3050F5DF-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure fireChange; safecall; - procedure Set_value(p: OleVariant); safecall; - function Get_value: OleVariant; safecall; - property value: OleVariant read Get_value write Set_value; - end; - -// *********************************************************************// -// DispIntf: IHTCPropertyBehaviorDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5DF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCPropertyBehaviorDisp = dispinterface - ['{3050F5DF-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure fireChange; dispid - 2147417612; - property value: OleVariant dispid - 2147412971; - end; - -// *********************************************************************// -// Interface: IHTCMethodBehavior -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F631-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCMethodBehavior = interface(IDispatch) - ['{3050F631-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: IHTCMethodBehaviorDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F631-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCMethodBehaviorDisp = dispinterface - ['{3050F631-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// Interface: IHTCEventBehavior -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4FF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCEventBehavior = interface(IDispatch) - ['{3050F4FF-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure fire(const pVar: IHTMLEventObj); safecall; - end; - -// *********************************************************************// -// DispIntf: IHTCEventBehaviorDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4FF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCEventBehaviorDisp = dispinterface - ['{3050F4FF-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure fire(const pVar: IHTMLEventObj); dispid - 2147417612; - end; - -// *********************************************************************// -// Interface: IHTCAttachBehavior -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5F4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCAttachBehavior = interface(IDispatch) - ['{3050F5F4-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure FireEvent(const evt: IDispatch); safecall; - procedure detachEvent; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTCAttachBehaviorDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5F4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCAttachBehaviorDisp = dispinterface - ['{3050F5F4-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure FireEvent(const evt: IDispatch); dispid 0; - procedure detachEvent; dispid - 2147417612; - end; - -// *********************************************************************// -// Interface: IHTCAttachBehavior2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7EB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCAttachBehavior2 = interface(IDispatch) - ['{3050F7EB-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure FireEvent(evt: OleVariant); safecall; - end; - -// *********************************************************************// -// DispIntf: IHTCAttachBehavior2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7EB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCAttachBehavior2Disp = dispinterface - ['{3050F7EB-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure FireEvent(evt: OleVariant); dispid 0; - end; - -// *********************************************************************// -// Interface: IHTCDescBehavior -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5DC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCDescBehavior = interface(IDispatch) - ['{3050F5DC-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_urn: WideString; safecall; - function Get_name: WideString; safecall; - property urn: WideString read Get_urn; - property name: WideString read Get_name; - end; - -// *********************************************************************// -// DispIntf: IHTCDescBehaviorDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5DC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTCDescBehaviorDisp = dispinterface - ['{3050F5DC-98B5-11CF-BB82-00AA00BDCE0B}'] - property urn: WideString readonly dispid - 2147417612; - property name: WideString readonly dispid - 2147417611; - end; - -// *********************************************************************// -// DispIntf: DispHTCDefaultDispatch -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F573-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTCDefaultDispatch = dispinterface - ['{3050F573-98B5-11CF-BB82-00AA00BDCE0B}'] - property element: IHTMLElement readonly dispid - 2147412969; - function CreateEventObject: IHTMLEventObj; dispid - 2147412968; - property defaults: IDispatch readonly dispid - 2147412947; - property document: IDispatch readonly dispid - 2147412970; - end; - -// *********************************************************************// -// DispIntf: DispHTCPropertyBehavior -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F57F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTCPropertyBehavior = dispinterface - ['{3050F57F-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure fireChange; dispid - 2147417612; - property value: OleVariant dispid - 2147412971; - end; - -// *********************************************************************// -// DispIntf: DispHTCMethodBehavior -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F587-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTCMethodBehavior = dispinterface - ['{3050F587-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: DispHTCEventBehavior -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F574-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTCEventBehavior = dispinterface - ['{3050F574-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure fire(const pVar: IHTMLEventObj); dispid - 2147417612; - end; - -// *********************************************************************// -// DispIntf: DispHTCAttachBehavior -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F583-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTCAttachBehavior = dispinterface - ['{3050F583-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure FireEvent(evt: OleVariant); dispid 0; - procedure detachEvent; dispid - 2147417612; - end; - -// *********************************************************************// -// DispIntf: DispHTCDescBehavior -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F57E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTCDescBehavior = dispinterface - ['{3050F57E-98B5-11CF-BB82-00AA00BDCE0B}'] - property urn: WideString readonly dispid - 2147417612; - property name: WideString readonly dispid - 2147417611; - end; - -// *********************************************************************// -// Interface: IHTMLUrnCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5E2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLUrnCollection = interface(IDispatch) - ['{3050F5E2-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function item(index: Integer): WideString; safecall; - property length: Integer read Get_length; - end; - -// *********************************************************************// -// DispIntf: IHTMLUrnCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5E2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLUrnCollectionDisp = dispinterface - ['{3050F5E2-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1001; - function item(index: Integer): WideString; dispid 0; - end; - -// *********************************************************************// -// Interface: IHTMLGenericElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4B7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLGenericElement = interface(IDispatch) - ['{3050F4B7-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_recordset: IDispatch; safecall; - function namedRecordset(const dataMember: WideString; var hierarchy: OleVariant): IDispatch; safecall; - property recordset: IDispatch read Get_recordset; - end; - -// *********************************************************************// -// DispIntf: IHTMLGenericElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4B7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLGenericElementDisp = dispinterface - ['{3050F4B7-98B5-11CF-BB82-00AA00BDCE0B}'] - property recordset: IDispatch readonly dispid 1001; - function namedRecordset(const dataMember: WideString; var hierarchy: OleVariant): IDispatch; dispid 1002; - end; - -// *********************************************************************// -// DispIntf: DispHTMLGenericElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F563-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLGenericElement = dispinterface - ['{3050F563-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property recordset: IDispatch readonly dispid 1001; - function namedRecordset(const dataMember: WideString; var hierarchy: OleVariant): IDispatch; dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLStyleSheetRule -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F357-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetRule = interface(IDispatch) - ['{3050F357-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_selectorText(const p: WideString); safecall; - function Get_selectorText: WideString; safecall; - function Get_style: IHTMLRuleStyle; safecall; - function Get_readOnly: WordBool; safecall; - property selectorText: WideString read Get_selectorText write Set_selectorText; - property style: IHTMLRuleStyle read Get_style; - property readOnly: WordBool read Get_readOnly; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyleSheetRuleDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F357-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetRuleDisp = dispinterface - ['{3050F357-98B5-11CF-BB82-00AA00BDCE0B}'] - property selectorText: WideString dispid 1001; - property style: IHTMLRuleStyle readonly dispid - 2147418038; - property readOnly: WordBool readonly dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLStyleSheetRulesCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2E5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetRulesCollection = interface(IDispatch) - ['{3050F2E5-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function item(index: Integer): IHTMLStyleSheetRule; safecall; - property length: Integer read Get_length; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyleSheetRulesCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2E5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetRulesCollectionDisp = dispinterface - ['{3050F2E5-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1001; - function item(index: Integer): IHTMLStyleSheetRule; dispid 0; - end; - -// *********************************************************************// -// Interface: IHTMLStyleSheetPage -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7EE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetPage = interface(IDispatch) - ['{3050F7EE-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_selector: WideString; safecall; - function Get_pseudoClass: WideString; safecall; - property selector: WideString read Get_selector; - property pseudoClass: WideString read Get_pseudoClass; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyleSheetPageDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7EE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetPageDisp = dispinterface - ['{3050F7EE-98B5-11CF-BB82-00AA00BDCE0B}'] - property selector: WideString readonly dispid 1001; - property pseudoClass: WideString readonly dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLStyleSheetPagesCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7F0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetPagesCollection = interface(IDispatch) - ['{3050F7F0-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function item(index: Integer): IHTMLStyleSheetPage; safecall; - property length: Integer read Get_length; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyleSheetPagesCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7F0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetPagesCollectionDisp = dispinterface - ['{3050F7F0-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1001; - function item(index: Integer): IHTMLStyleSheetPage; dispid 0; - end; - -// *********************************************************************// -// Interface: IHTMLStyleSheetsCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F37E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetsCollection = interface(IDispatch) - ['{3050F37E-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; safecall; - property length: Integer read Get_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyleSheetsCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F37E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetsCollectionDisp = dispinterface - ['{3050F37E-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1001; - property _newEnum: IUnknown readonly dispid - 4; - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; dispid 0; - end; - -// *********************************************************************// -// Interface: IHTMLStyleSheet -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2E3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheet = interface(IDispatch) - ['{3050F2E3-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_title(const p: WideString); safecall; - function Get_title: WideString; safecall; - function Get_parentStyleSheet: IHTMLStyleSheet; safecall; - function Get_owningElement: IHTMLElement; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - function Get_readOnly: WordBool; safecall; - function Get_imports: IHTMLStyleSheetsCollection; safecall; - procedure Set_href(const p: WideString); safecall; - function Get_href: WideString; safecall; - function Get_type_: WideString; safecall; - function Get_id: WideString; safecall; - function addImport(const bstrUrl: WideString; lIndex: Integer): Integer; safecall; - function addRule(const bstrSelector: WideString; const bstrStyle: WideString; lIndex: Integer): Integer; safecall; - procedure removeImport(lIndex: Integer); safecall; - procedure removeRule(lIndex: Integer); safecall; - procedure Set_media(const p: WideString); safecall; - function Get_media: WideString; safecall; - procedure Set_cssText(const p: WideString); safecall; - function Get_cssText: WideString; safecall; - function Get_rules: IHTMLStyleSheetRulesCollection; safecall; - property title: WideString read Get_title write Set_title; - property parentStyleSheet: IHTMLStyleSheet read Get_parentStyleSheet; - property owningElement: IHTMLElement read Get_owningElement; - property disabled: WordBool read Get_disabled write Set_disabled; - property readOnly: WordBool read Get_readOnly; - property imports: IHTMLStyleSheetsCollection read Get_imports; - property href: WideString read Get_href write Set_href; - property type_: WideString read Get_type_; - property id: WideString read Get_id; - property media: WideString read Get_media write Set_media; - property cssText: WideString read Get_cssText write Set_cssText; - property rules: IHTMLStyleSheetRulesCollection read Get_rules; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyleSheetDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2E3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheetDisp = dispinterface - ['{3050F2E3-98B5-11CF-BB82-00AA00BDCE0B}'] - property title: WideString dispid 1001; - property parentStyleSheet: IHTMLStyleSheet readonly dispid 1002; - property owningElement: IHTMLElement readonly dispid 1003; - property disabled: WordBool dispid - 2147418036; - property readOnly: WordBool readonly dispid 1004; - property imports: IHTMLStyleSheetsCollection readonly dispid 1005; - property href: WideString dispid 1006; - property type_: WideString readonly dispid 1007; - property id: WideString readonly dispid 1008; - function addImport(const bstrUrl: WideString; lIndex: Integer): Integer; dispid 1009; - function addRule(const bstrSelector: WideString; const bstrStyle: WideString; lIndex: Integer): Integer; dispid 1010; - procedure removeImport(lIndex: Integer); dispid 1011; - procedure removeRule(lIndex: Integer); dispid 1012; - property media: WideString dispid 1013; - property cssText: WideString dispid 1014; - property rules: IHTMLStyleSheetRulesCollection readonly dispid 1015; - end; - -// *********************************************************************// -// Interface: IHTMLStyleSheet2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3D1-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheet2 = interface(IDispatch) - ['{3050F3D1-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_pages: IHTMLStyleSheetPagesCollection; safecall; - function addPageRule(const bstrSelector: WideString; const bstrStyle: WideString; - lIndex: Integer): Integer; safecall; - property pages: IHTMLStyleSheetPagesCollection read Get_pages; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyleSheet2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3D1-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleSheet2Disp = dispinterface - ['{3050F3D1-98B5-11CF-BB82-00AA00BDCE0B}'] - property pages: IHTMLStyleSheetPagesCollection readonly dispid 1016; - function addPageRule(const bstrSelector: WideString; const bstrStyle: WideString; - lIndex: Integer): Integer; dispid 1017; - end; - -// *********************************************************************// -// DispIntf: DispHTMLStyleSheet -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F58D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLStyleSheet = dispinterface - ['{3050F58D-98B5-11CF-BB82-00AA00BDCE0B}'] - property title: WideString dispid 1001; - property parentStyleSheet: IHTMLStyleSheet readonly dispid 1002; - property owningElement: IHTMLElement readonly dispid 1003; - property disabled: WordBool dispid - 2147418036; - property readOnly: WordBool readonly dispid 1004; - property imports: IHTMLStyleSheetsCollection readonly dispid 1005; - property href: WideString dispid 1006; - property type_: WideString readonly dispid 1007; - property id: WideString readonly dispid 1008; - function addImport(const bstrUrl: WideString; lIndex: Integer): Integer; dispid 1009; - function addRule(const bstrSelector: WideString; const bstrStyle: WideString; lIndex: Integer): Integer; dispid 1010; - procedure removeImport(lIndex: Integer); dispid 1011; - procedure removeRule(lIndex: Integer); dispid 1012; - property media: WideString dispid 1013; - property cssText: WideString dispid 1014; - property rules: IHTMLStyleSheetRulesCollection readonly dispid 1015; - property pages: IHTMLStyleSheetPagesCollection readonly dispid 1016; - function addPageRule(const bstrSelector: WideString; const bstrStyle: WideString; - lIndex: Integer): Integer; dispid 1017; - end; - -// *********************************************************************// -// DispIntf: HTMLLinkElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F61D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLLinkElementEvents2 = dispinterface - ['{3050F61D-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - procedure onload(const pEvtObj: IHTMLEventObj); dispid 1003; - procedure onerror(const pEvtObj: IHTMLEventObj); dispid 1002; - end; - -// *********************************************************************// -// DispIntf: HTMLLinkElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F3CC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLLinkElementEvents = dispinterface - ['{3050F3CC-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - procedure onload; dispid 1003; - procedure onerror; dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLLinkElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F205-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLinkElement = interface(IDispatch) - ['{3050F205-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_href(const p: WideString); safecall; - function Get_href: WideString; safecall; - procedure Set_rel(const p: WideString); safecall; - function Get_rel: WideString; safecall; - procedure Set_rev(const p: WideString); safecall; - function Get_rev: WideString; safecall; - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - function Get_readyState: WideString; safecall; - procedure Set_onreadystatechange(p: OleVariant); safecall; - function Get_onreadystatechange: OleVariant; safecall; - procedure Set_onload(p: OleVariant); safecall; - function Get_onload: OleVariant; safecall; - procedure Set_onerror(p: OleVariant); safecall; - function Get_onerror: OleVariant; safecall; - function Get_styleSheet: IHTMLStyleSheet; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - procedure Set_media(const p: WideString); safecall; - function Get_media: WideString; safecall; - property href: WideString read Get_href write Set_href; - property rel: WideString read Get_rel write Set_rel; - property rev: WideString read Get_rev write Set_rev; - property type_: WideString read Get_type_ write Set_type_; - property readyState: WideString read Get_readyState; - property onreadystatechange: OleVariant read Get_onreadystatechange write Set_onreadystatechange; - property onload: OleVariant read Get_onload write Set_onload; - property onerror: OleVariant read Get_onerror write Set_onerror; - property styleSheet: IHTMLStyleSheet read Get_styleSheet; - property disabled: WordBool read Get_disabled write Set_disabled; - property media: WideString read Get_media write Set_media; - end; - -// *********************************************************************// -// DispIntf: IHTMLLinkElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F205-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLinkElementDisp = dispinterface - ['{3050F205-98B5-11CF-BB82-00AA00BDCE0B}'] - property href: WideString dispid 1005; - property rel: WideString dispid 1006; - property rev: WideString dispid 1007; - property type_: WideString dispid 1008; - property readyState: WideString readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onload: OleVariant dispid - 2147412080; - property onerror: OleVariant dispid - 2147412083; - property styleSheet: IHTMLStyleSheet readonly dispid 1014; - property disabled: WordBool dispid - 2147418036; - property media: WideString dispid 1016; - end; - -// *********************************************************************// -// Interface: IHTMLLinkElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4E5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLinkElement2 = interface(IDispatch) - ['{3050F4E5-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_target(const p: WideString); safecall; - function Get_target: WideString; safecall; - property target: WideString read Get_target write Set_target; - end; - -// *********************************************************************// -// DispIntf: IHTMLLinkElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4E5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLinkElement2Disp = dispinterface - ['{3050F4E5-98B5-11CF-BB82-00AA00BDCE0B}'] - property target: WideString dispid 1017; - end; - -// *********************************************************************// -// Interface: IHTMLLinkElement3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F81E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLinkElement3 = interface(IDispatch) - ['{3050F81E-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_charset(const p: WideString); safecall; - function Get_charset: WideString; safecall; - procedure Set_hreflang(const p: WideString); safecall; - function Get_hreflang: WideString; safecall; - property charset: WideString read Get_charset write Set_charset; - property hreflang: WideString read Get_hreflang write Set_hreflang; - end; - -// *********************************************************************// -// DispIntf: IHTMLLinkElement3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F81E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLinkElement3Disp = dispinterface - ['{3050F81E-98B5-11CF-BB82-00AA00BDCE0B}'] - property charset: WideString dispid 1018; - property hreflang: WideString dispid 1019; - end; - -// *********************************************************************// -// DispIntf: DispHTMLLinkElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F524-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLLinkElement = dispinterface - ['{3050F524-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property href: WideString dispid 1005; - property rel: WideString dispid 1006; - property rev: WideString dispid 1007; - property type_: WideString dispid 1008; - property onload: OleVariant dispid - 2147412080; - property onerror: OleVariant dispid - 2147412083; - property styleSheet: IHTMLStyleSheet readonly dispid 1014; - property media: WideString dispid 1016; - property target: WideString dispid 1017; - property charset: WideString dispid 1018; - property hreflang: WideString dispid 1019; - end; - -// *********************************************************************// -// Interface: IHTMLTxtRange -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F220-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTxtRange = interface(IDispatch) - ['{3050F220-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_htmlText: WideString; safecall; - procedure Set_text(const p: WideString); safecall; - function Get_text: WideString; safecall; - function parentElement: IHTMLElement; safecall; - function duplicate: IHTMLTxtRange; safecall; - function inRange(const range: IHTMLTxtRange): WordBool; safecall; - function isEqual(const range: IHTMLTxtRange): WordBool; safecall; - procedure scrollIntoView(fStart: WordBool); safecall; - procedure collapse(Start: WordBool); safecall; - function expand(const Unit_: WideString): WordBool; safecall; - function move(const Unit_: WideString; Count: Integer): Integer; safecall; - function moveStart(const Unit_: WideString; Count: Integer): Integer; safecall; - function moveEnd(const Unit_: WideString; Count: Integer): Integer; safecall; - procedure select; safecall; - procedure pasteHTML(const html: WideString); safecall; - procedure moveToElementText(const element: IHTMLElement); safecall; - procedure setEndPoint(const how: WideString; const SourceRange: IHTMLTxtRange); safecall; - function compareEndPoints(const how: WideString; const SourceRange: IHTMLTxtRange): Integer; safecall; - function findText(const String_: WideString; Count: Integer; Flags: Integer): WordBool; safecall; - procedure moveToPoint(x: Integer; y: Integer); safecall; - function getBookmark: WideString; safecall; - function moveToBookmark(const Bookmark: WideString): WordBool; safecall; - function queryCommandSupported(const cmdID: WideString): WordBool; safecall; - function queryCommandEnabled(const cmdID: WideString): WordBool; safecall; - function queryCommandState(const cmdID: WideString): WordBool; safecall; - function queryCommandIndeterm(const cmdID: WideString): WordBool; safecall; - function queryCommandText(const cmdID: WideString): WideString; safecall; - function queryCommandValue(const cmdID: WideString): OleVariant; safecall; - function execCommand(const cmdID: WideString; showUI: WordBool; value: OleVariant): WordBool; safecall; - function execCommandShowHelp(const cmdID: WideString): WordBool; safecall; - property htmlText: WideString read Get_htmlText; - property text: WideString read Get_text write Set_text; - end; - -// *********************************************************************// -// DispIntf: IHTMLTxtRangeDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F220-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTxtRangeDisp = dispinterface - ['{3050F220-98B5-11CF-BB82-00AA00BDCE0B}'] - property htmlText: WideString readonly dispid 1003; - property text: WideString dispid 1004; - function parentElement: IHTMLElement; dispid 1006; - function duplicate: IHTMLTxtRange; dispid 1008; - function inRange(const range: IHTMLTxtRange): WordBool; dispid 1010; - function isEqual(const range: IHTMLTxtRange): WordBool; dispid 1011; - procedure scrollIntoView(fStart: WordBool); dispid 1012; - procedure collapse(Start: WordBool); dispid 1013; - function expand(const Unit_: WideString): WordBool; dispid 1014; - function move(const Unit_: WideString; Count: Integer): Integer; dispid 1015; - function moveStart(const Unit_: WideString; Count: Integer): Integer; dispid 1016; - function moveEnd(const Unit_: WideString; Count: Integer): Integer; dispid 1017; - procedure select; dispid 1024; - procedure pasteHTML(const html: WideString); dispid 1026; - procedure moveToElementText(const element: IHTMLElement); dispid 1001; - procedure setEndPoint(const how: WideString; const SourceRange: IHTMLTxtRange); dispid 1025; - function compareEndPoints(const how: WideString; const SourceRange: IHTMLTxtRange): Integer; dispid 1018; - function findText(const String_: WideString; Count: Integer; Flags: Integer): WordBool; dispid 1019; - procedure moveToPoint(x: Integer; y: Integer); dispid 1020; - function getBookmark: WideString; dispid 1021; - function moveToBookmark(const Bookmark: WideString): WordBool; dispid 1009; - function queryCommandSupported(const cmdID: WideString): WordBool; dispid 1027; - function queryCommandEnabled(const cmdID: WideString): WordBool; dispid 1028; - function queryCommandState(const cmdID: WideString): WordBool; dispid 1029; - function queryCommandIndeterm(const cmdID: WideString): WordBool; dispid 1030; - function queryCommandText(const cmdID: WideString): WideString; dispid 1031; - function queryCommandValue(const cmdID: WideString): OleVariant; dispid 1032; - function execCommand(const cmdID: WideString; showUI: WordBool; value: OleVariant): WordBool; dispid 1033; - function execCommandShowHelp(const cmdID: WideString): WordBool; dispid 1034; - end; - -// *********************************************************************// -// Interface: IHTMLTextRangeMetrics -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F40B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTextRangeMetrics = interface(IDispatch) - ['{3050F40B-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_offsetTop: Integer; safecall; - function Get_offsetLeft: Integer; safecall; - function Get_boundingTop: Integer; safecall; - function Get_boundingLeft: Integer; safecall; - function Get_boundingWidth: Integer; safecall; - function Get_boundingHeight: Integer; safecall; - property offsetTop: Integer read Get_offsetTop; - property offsetLeft: Integer read Get_offsetLeft; - property boundingTop: Integer read Get_boundingTop; - property boundingLeft: Integer read Get_boundingLeft; - property boundingWidth: Integer read Get_boundingWidth; - property boundingHeight: Integer read Get_boundingHeight; - end; - -// *********************************************************************// -// DispIntf: IHTMLTextRangeMetricsDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F40B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTextRangeMetricsDisp = dispinterface - ['{3050F40B-98B5-11CF-BB82-00AA00BDCE0B}'] - property offsetTop: Integer readonly dispid 1035; - property offsetLeft: Integer readonly dispid 1036; - property boundingTop: Integer readonly dispid 1037; - property boundingLeft: Integer readonly dispid 1038; - property boundingWidth: Integer readonly dispid 1039; - property boundingHeight: Integer readonly dispid 1040; - end; - -// *********************************************************************// -// Interface: IHTMLTextRangeMetrics2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4A6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTextRangeMetrics2 = interface(IDispatch) - ['{3050F4A6-98B5-11CF-BB82-00AA00BDCE0B}'] - function getClientRects: IHTMLRectCollection; safecall; - function getBoundingClientRect: IHTMLRect; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLTextRangeMetrics2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4A6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTextRangeMetrics2Disp = dispinterface - ['{3050F4A6-98B5-11CF-BB82-00AA00BDCE0B}'] - function getClientRects: IHTMLRectCollection; dispid 1041; - function getBoundingClientRect: IHTMLRect; dispid 1042; - end; - -// *********************************************************************// -// Interface: IHTMLTxtRangeCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7ED-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTxtRangeCollection = interface(IDispatch) - ['{3050F7ED-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; safecall; - property length: Integer read Get_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLTxtRangeCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7ED-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTxtRangeCollectionDisp = dispinterface - ['{3050F7ED-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; dispid 0; - end; - -// *********************************************************************// -// DispIntf: HTMLFormElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F614-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLFormElementEvents2 = dispinterface - ['{3050F614-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - function onsubmit(const pEvtObj: IHTMLEventObj): WordBool; dispid 1007; - function onreset(const pEvtObj: IHTMLEventObj): WordBool; dispid 1015; - end; - -// *********************************************************************// -// DispIntf: HTMLFormElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F364-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLFormElementEvents = dispinterface - ['{3050F364-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - function onsubmit: WordBool; dispid 1007; - function onreset: WordBool; dispid 1015; - end; - -// *********************************************************************// -// Interface: IHTMLFormElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFormElement = interface(IDispatch) - ['{3050F1F7-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_action(const p: WideString); safecall; - function Get_action: WideString; safecall; - procedure Set_dir(const p: WideString); safecall; - function Get_dir: WideString; safecall; - procedure Set_encoding(const p: WideString); safecall; - function Get_encoding: WideString; safecall; - procedure Set_method(const p: WideString); safecall; - function Get_method: WideString; safecall; - function Get_elements: IDispatch; safecall; - procedure Set_target(const p: WideString); safecall; - function Get_target: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_onsubmit(p: OleVariant); safecall; - function Get_onsubmit: OleVariant; safecall; - procedure Set_onreset(p: OleVariant); safecall; - function Get_onreset: OleVariant; safecall; - procedure submit; safecall; - procedure reset; safecall; - procedure Set_length(p: Integer); safecall; - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - function item(name: OleVariant; index: OleVariant): IDispatch; safecall; - function tags(tagName: OleVariant): IDispatch; safecall; - property action: WideString read Get_action write Set_action; - property dir: WideString read Get_dir write Set_dir; - property encoding: WideString read Get_encoding write Set_encoding; - property method: WideString read Get_method write Set_method; - property elements: IDispatch read Get_elements; - property target: WideString read Get_target write Set_target; - property name: WideString read Get_name write Set_name; - property onsubmit: OleVariant read Get_onsubmit write Set_onsubmit; - property onreset: OleVariant read Get_onreset write Set_onreset; - property length: Integer read Get_length write Set_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLFormElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFormElementDisp = dispinterface - ['{3050F1F7-98B5-11CF-BB82-00AA00BDCE0B}'] - property action: WideString dispid 1001; - property dir: WideString dispid - 2147412995; - property encoding: WideString dispid 1003; - property method: WideString dispid 1004; - property elements: IDispatch readonly dispid 1005; - property target: WideString dispid 1006; - property name: WideString dispid - 2147418112; - property onsubmit: OleVariant dispid - 2147412101; - property onreset: OleVariant dispid - 2147412100; - procedure submit; dispid 1009; - procedure reset; dispid 1010; - property length: Integer dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(name: OleVariant; index: OleVariant): IDispatch; dispid 0; - function tags(tagName: OleVariant): IDispatch; dispid 1502; - end; - -// *********************************************************************// -// Interface: IHTMLFormElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4F6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFormElement2 = interface(IDispatch) - ['{3050F4F6-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_acceptCharset(const p: WideString); safecall; - function Get_acceptCharset: WideString; safecall; - function urns(urn: OleVariant): IDispatch; safecall; - property acceptCharset: WideString read Get_acceptCharset write Set_acceptCharset; - end; - -// *********************************************************************// -// DispIntf: IHTMLFormElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4F6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFormElement2Disp = dispinterface - ['{3050F4F6-98B5-11CF-BB82-00AA00BDCE0B}'] - property acceptCharset: WideString dispid 1011; - function urns(urn: OleVariant): IDispatch; dispid 1505; - end; - -// *********************************************************************// -// Interface: IHTMLFormElement3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F836-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFormElement3 = interface(IDispatch) - ['{3050F836-98B5-11CF-BB82-00AA00BDCE0B}'] - function namedItem(const name: WideString): IDispatch; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLFormElement3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F836-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFormElement3Disp = dispinterface - ['{3050F836-98B5-11CF-BB82-00AA00BDCE0B}'] - function namedItem(const name: WideString): IDispatch; dispid 1506; - end; - -// *********************************************************************// -// Interface: IHTMLSubmitData -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F645-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSubmitData = interface(IDispatch) - ['{3050F645-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure appendNameValuePair(const name: WideString; const value: WideString); safecall; - procedure appendNameFilePair(const name: WideString; const filename: WideString); safecall; - procedure appendItemSeparator; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLSubmitDataDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F645-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSubmitDataDisp = dispinterface - ['{3050F645-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure appendNameValuePair(const name: WideString; const value: WideString); dispid 1012; - procedure appendNameFilePair(const name: WideString; const filename: WideString); dispid 1013; - procedure appendItemSeparator; dispid 1014; - end; - -// *********************************************************************// -// DispIntf: DispHTMLFormElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F510-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLFormElement = dispinterface - ['{3050F510-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property action: WideString dispid 1001; - property encoding: WideString dispid 1003; - property method: WideString dispid 1004; - property elements: IDispatch readonly dispid 1005; - property target: WideString dispid 1006; - property name: WideString dispid - 2147418112; - property onsubmit: OleVariant dispid - 2147412101; - property onreset: OleVariant dispid - 2147412100; - procedure submit; dispid 1009; - procedure reset; dispid 1010; - property length: Integer dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(name: OleVariant; index: OleVariant): IDispatch; dispid 0; - function tags(tagName: OleVariant): IDispatch; dispid 1502; - property acceptCharset: WideString dispid 1011; - function urns(urn: OleVariant): IDispatch; dispid 1505; - function namedItem(const name: WideString): IDispatch; dispid 1506; - procedure appendNameValuePair(const name: WideString; const value: WideString); dispid 1012; - procedure appendNameFilePair(const name: WideString; const filename: WideString); dispid 1013; - procedure appendItemSeparator; dispid 1014; - end; - -// *********************************************************************// -// DispIntf: HTMLControlElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F612-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLControlElementEvents2 = dispinterface - ['{3050F612-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - end; - -// *********************************************************************// -// DispIntf: HTMLControlElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F4EA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLControlElementEvents = dispinterface - ['{3050F4EA-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - end; - -// *********************************************************************// -// Interface: IHTMLControlElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4E9-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLControlElement = interface(IDispatch) - ['{3050F4E9-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_tabIndex(p: Smallint); safecall; - function Get_tabIndex: Smallint; safecall; - procedure focus; safecall; - procedure Set_accessKey(const p: WideString); safecall; - function Get_accessKey: WideString; safecall; - procedure Set_onblur(p: OleVariant); safecall; - function Get_onblur: OleVariant; safecall; - procedure Set_onfocus(p: OleVariant); safecall; - function Get_onfocus: OleVariant; safecall; - procedure Set_onresize(p: OleVariant); safecall; - function Get_onresize: OleVariant; safecall; - procedure blur; safecall; - procedure addFilter(const pUnk: IUnknown); safecall; - procedure removeFilter(const pUnk: IUnknown); safecall; - function Get_clientHeight: Integer; safecall; - function Get_clientWidth: Integer; safecall; - function Get_clientTop: Integer; safecall; - function Get_clientLeft: Integer; safecall; - property tabIndex: Smallint read Get_tabIndex write Set_tabIndex; - property accessKey: WideString read Get_accessKey write Set_accessKey; - property onblur: OleVariant read Get_onblur write Set_onblur; - property onfocus: OleVariant read Get_onfocus write Set_onfocus; - property onresize: OleVariant read Get_onresize write Set_onresize; - property clientHeight: Integer read Get_clientHeight; - property clientWidth: Integer read Get_clientWidth; - property clientTop: Integer read Get_clientTop; - property clientLeft: Integer read Get_clientLeft; - end; - -// *********************************************************************// -// DispIntf: IHTMLControlElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4E9-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLControlElementDisp = dispinterface - ['{3050F4E9-98B5-11CF-BB82-00AA00BDCE0B}'] - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - end; - -// *********************************************************************// -// Interface: IHTMLTextElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F218-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTextElement = interface(IDispatch) - ['{3050F218-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: IHTMLTextElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F218-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTextElementDisp = dispinterface - ['{3050F218-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: DispHTMLTextElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F537-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLTextElement = dispinterface - ['{3050F537-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - end; - -// *********************************************************************// -// DispIntf: HTMLTextContainerEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F624-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLTextContainerEvents2 = dispinterface - ['{3050F624-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - procedure onchange(const pEvtObj: IHTMLEventObj); dispid 1001; - procedure onselect(const pEvtObj: IHTMLEventObj); dispid 1006; - end; - -// *********************************************************************// -// DispIntf: HTMLTextContainerEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {1FF6AA72-5842-11CF-A707-00AA00C0098D} -// *********************************************************************// - HTMLTextContainerEvents = dispinterface - ['{1FF6AA72-5842-11CF-A707-00AA00C0098D}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - procedure onchange; dispid 1001; - procedure onselect; dispid 1006; - end; - -// *********************************************************************// -// Interface: IHTMLTextContainer -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F230-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTextContainer = interface(IDispatch) - ['{3050F230-98B5-11CF-BB82-00AA00BDCE0B}'] - function createControlRange: IDispatch; safecall; - function Get_scrollHeight: Integer; safecall; - function Get_scrollWidth: Integer; safecall; - procedure Set_scrollTop(p: Integer); safecall; - function Get_scrollTop: Integer; safecall; - procedure Set_scrollLeft(p: Integer); safecall; - function Get_scrollLeft: Integer; safecall; - procedure Set_onscroll(p: OleVariant); safecall; - function Get_onscroll: OleVariant; safecall; - property scrollHeight: Integer read Get_scrollHeight; - property scrollWidth: Integer read Get_scrollWidth; - property scrollTop: Integer read Get_scrollTop write Set_scrollTop; - property scrollLeft: Integer read Get_scrollLeft write Set_scrollLeft; - property onscroll: OleVariant read Get_onscroll write Set_onscroll; - end; - -// *********************************************************************// -// DispIntf: IHTMLTextContainerDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F230-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTextContainerDisp = dispinterface - ['{3050F230-98B5-11CF-BB82-00AA00BDCE0B}'] - function createControlRange: IDispatch; dispid 1001; - property scrollHeight: Integer readonly dispid 1002; - property scrollWidth: Integer readonly dispid 1003; - property scrollTop: Integer dispid 1004; - property scrollLeft: Integer dispid 1005; - property onscroll: OleVariant dispid - 2147412081; - end; - -// *********************************************************************// -// Interface: IHTMLControlRange -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F29C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLControlRange = interface(IDispatch) - ['{3050F29C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure select; safecall; - procedure add(const item: IHTMLControlElement); safecall; - procedure remove(index: Integer); safecall; - function item(index: Integer): IHTMLElement; safecall; - procedure scrollIntoView(varargStart: OleVariant); safecall; - function queryCommandSupported(const cmdID: WideString): WordBool; safecall; - function queryCommandEnabled(const cmdID: WideString): WordBool; safecall; - function queryCommandState(const cmdID: WideString): WordBool; safecall; - function queryCommandIndeterm(const cmdID: WideString): WordBool; safecall; - function queryCommandText(const cmdID: WideString): WideString; safecall; - function queryCommandValue(const cmdID: WideString): OleVariant; safecall; - function execCommand(const cmdID: WideString; showUI: WordBool; value: OleVariant): WordBool; safecall; - function execCommandShowHelp(const cmdID: WideString): WordBool; safecall; - function commonParentElement: IHTMLElement; safecall; - function Get_length: Integer; safecall; - property length: Integer read Get_length; - end; - -// *********************************************************************// -// DispIntf: IHTMLControlRangeDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F29C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLControlRangeDisp = dispinterface - ['{3050F29C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure select; dispid 1002; - procedure add(const item: IHTMLControlElement); dispid 1003; - procedure remove(index: Integer); dispid 1004; - function item(index: Integer): IHTMLElement; dispid 0; - procedure scrollIntoView(varargStart: OleVariant); dispid 1006; - function queryCommandSupported(const cmdID: WideString): WordBool; dispid 1007; - function queryCommandEnabled(const cmdID: WideString): WordBool; dispid 1008; - function queryCommandState(const cmdID: WideString): WordBool; dispid 1009; - function queryCommandIndeterm(const cmdID: WideString): WordBool; dispid 1010; - function queryCommandText(const cmdID: WideString): WideString; dispid 1011; - function queryCommandValue(const cmdID: WideString): OleVariant; dispid 1012; - function execCommand(const cmdID: WideString; showUI: WordBool; value: OleVariant): WordBool; dispid 1013; - function execCommandShowHelp(const cmdID: WideString): WordBool; dispid 1014; - function commonParentElement: IHTMLElement; dispid 1015; - property length: Integer readonly dispid 1005; - end; - -// *********************************************************************// -// Interface: IHTMLControlRange2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F65E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLControlRange2 = interface(IDispatch) - ['{3050F65E-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure addElement(const item: IHTMLElement); safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLControlRange2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F65E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLControlRange2Disp = dispinterface - ['{3050F65E-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure addElement(const item: IHTMLElement); dispid 1016; - end; - -// *********************************************************************// -// DispIntf: HTMLImgEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F616-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLImgEvents2 = dispinterface - ['{3050F616-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - procedure onload(const pEvtObj: IHTMLEventObj); dispid 1003; - procedure onerror(const pEvtObj: IHTMLEventObj); dispid 1002; - procedure onabort(const pEvtObj: IHTMLEventObj); dispid 1000; - end; - -// *********************************************************************// -// DispIntf: HTMLImgEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F25B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLImgEvents = dispinterface - ['{3050F25B-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - procedure onload; dispid 1003; - procedure onerror; dispid 1002; - procedure onabort; dispid 1000; - end; - -// *********************************************************************// -// Interface: IHTMLImgElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F240-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLImgElement = interface(IDispatch) - ['{3050F240-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_isMap(p: WordBool); safecall; - function Get_isMap: WordBool; safecall; - procedure Set_useMap(const p: WideString); safecall; - function Get_useMap: WideString; safecall; - function Get_mimeType: WideString; safecall; - function Get_fileSize: WideString; safecall; - function Get_fileCreatedDate: WideString; safecall; - function Get_fileModifiedDate: WideString; safecall; - function Get_fileUpdatedDate: WideString; safecall; - function Get_protocol: WideString; safecall; - function Get_href: WideString; safecall; - function Get_nameProp: WideString; safecall; - procedure Set_border(p: OleVariant); safecall; - function Get_border: OleVariant; safecall; - procedure Set_vspace(p: Integer); safecall; - function Get_vspace: Integer; safecall; - procedure Set_hspace(p: Integer); safecall; - function Get_hspace: Integer; safecall; - procedure Set_alt(const p: WideString); safecall; - function Get_alt: WideString; safecall; - procedure Set_src(const p: WideString); safecall; - function Get_src: WideString; safecall; - procedure Set_lowsrc(const p: WideString); safecall; - function Get_lowsrc: WideString; safecall; - procedure Set_vrml(const p: WideString); safecall; - function Get_vrml: WideString; safecall; - procedure Set_dynsrc(const p: WideString); safecall; - function Get_dynsrc: WideString; safecall; - function Get_readyState: WideString; safecall; - function Get_complete: WordBool; safecall; - procedure Set_loop(p: OleVariant); safecall; - function Get_loop: OleVariant; safecall; - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_onload(p: OleVariant); safecall; - function Get_onload: OleVariant; safecall; - procedure Set_onerror(p: OleVariant); safecall; - function Get_onerror: OleVariant; safecall; - procedure Set_onabort(p: OleVariant); safecall; - function Get_onabort: OleVariant; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_width(p: Integer); safecall; - function Get_width: Integer; safecall; - procedure Set_height(p: Integer); safecall; - function Get_height: Integer; safecall; - procedure Set_Start(const p: WideString); safecall; - function Get_Start: WideString; safecall; - property isMap: WordBool read Get_isMap write Set_isMap; - property useMap: WideString read Get_useMap write Set_useMap; - property mimeType: WideString read Get_mimeType; - property fileSize: WideString read Get_fileSize; - property fileCreatedDate: WideString read Get_fileCreatedDate; - property fileModifiedDate: WideString read Get_fileModifiedDate; - property fileUpdatedDate: WideString read Get_fileUpdatedDate; - property protocol: WideString read Get_protocol; - property href: WideString read Get_href; - property nameProp: WideString read Get_nameProp; - property border: OleVariant read Get_border write Set_border; - property vspace: Integer read Get_vspace write Set_vspace; - property hspace: Integer read Get_hspace write Set_hspace; - property alt: WideString read Get_alt write Set_alt; - property src: WideString read Get_src write Set_src; - property lowsrc: WideString read Get_lowsrc write Set_lowsrc; - property vrml: WideString read Get_vrml write Set_vrml; - property dynsrc: WideString read Get_dynsrc write Set_dynsrc; - property readyState: WideString read Get_readyState; - property complete: WordBool read Get_complete; - property loop: OleVariant read Get_loop write Set_loop; - property align: WideString read Get_align write Set_align; - property onload: OleVariant read Get_onload write Set_onload; - property onerror: OleVariant read Get_onerror write Set_onerror; - property onabort: OleVariant read Get_onabort write Set_onabort; - property name: WideString read Get_name write Set_name; - property width: Integer read Get_width write Set_width; - property height: Integer read Get_height write Set_height; - property Start: WideString read Get_Start write Set_Start; - end; - -// *********************************************************************// -// DispIntf: IHTMLImgElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F240-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLImgElementDisp = dispinterface - ['{3050F240-98B5-11CF-BB82-00AA00BDCE0B}'] - property isMap: WordBool dispid 2002; - property useMap: WideString dispid 2008; - property mimeType: WideString readonly dispid 2010; - property fileSize: WideString readonly dispid 2011; - property fileCreatedDate: WideString readonly dispid 2012; - property fileModifiedDate: WideString readonly dispid 2013; - property fileUpdatedDate: WideString readonly dispid 2014; - property protocol: WideString readonly dispid 2015; - property href: WideString readonly dispid 2016; - property nameProp: WideString readonly dispid 2017; - property border: OleVariant dispid 1004; - property vspace: Integer dispid 1005; - property hspace: Integer dispid 1006; - property alt: WideString dispid 1002; - property src: WideString dispid 1003; - property lowsrc: WideString dispid 1007; - property vrml: WideString dispid 1008; - property dynsrc: WideString dispid 1009; - property readyState: WideString readonly dispid - 2147412996; - property complete: WordBool readonly dispid 1010; - property loop: OleVariant dispid 1011; - property align: WideString dispid - 2147418039; - property onload: OleVariant dispid - 2147412080; - property onerror: OleVariant dispid - 2147412083; - property onabort: OleVariant dispid - 2147412084; - property name: WideString dispid - 2147418112; - property width: Integer dispid - 2147418107; - property height: Integer dispid - 2147418106; - property Start: WideString dispid 1013; - end; - -// *********************************************************************// -// Interface: IHTMLImgElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F826-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLImgElement2 = interface(IDispatch) - ['{3050F826-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_longDesc(const p: WideString); safecall; - function Get_longDesc: WideString; safecall; - property longDesc: WideString read Get_longDesc write Set_longDesc; - end; - -// *********************************************************************// -// DispIntf: IHTMLImgElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F826-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLImgElement2Disp = dispinterface - ['{3050F826-98B5-11CF-BB82-00AA00BDCE0B}'] - property longDesc: WideString dispid 2019; - end; - -// *********************************************************************// -// Interface: IHTMLImageElementFactory -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F38E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLImageElementFactory = interface(IDispatch) - ['{3050F38E-98B5-11CF-BB82-00AA00BDCE0B}'] - function create(width: OleVariant; height: OleVariant): IHTMLImgElement; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLImageElementFactoryDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F38E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLImageElementFactoryDisp = dispinterface - ['{3050F38E-98B5-11CF-BB82-00AA00BDCE0B}'] - function create(width: OleVariant; height: OleVariant): IHTMLImgElement; dispid 0; - end; - -// *********************************************************************// -// DispIntf: DispHTMLImg -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F51C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLImg = dispinterface - ['{3050F51C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property isMap: WordBool dispid 2002; - property useMap: WideString dispid 2008; - property mimeType: WideString readonly dispid 2010; - property fileSize: WideString readonly dispid 2011; - property fileCreatedDate: WideString readonly dispid 2012; - property fileModifiedDate: WideString readonly dispid 2013; - property fileUpdatedDate: WideString readonly dispid 2014; - property protocol: WideString readonly dispid 2015; - property href: WideString readonly dispid 2016; - property nameProp: WideString readonly dispid 2017; - property border: OleVariant dispid 1004; - property vspace: Integer dispid 1005; - property hspace: Integer dispid 1006; - property alt: WideString dispid 1002; - property src: WideString dispid 1003; - property lowsrc: WideString dispid 1007; - property vrml: WideString dispid 1008; - property dynsrc: WideString dispid 1009; - property complete: WordBool readonly dispid 1010; - property loop: OleVariant dispid 1011; - property align: WideString dispid - 2147418039; - property onload: OleVariant dispid - 2147412080; - property onerror: OleVariant dispid - 2147412083; - property onabort: OleVariant dispid - 2147412084; - property name: WideString dispid - 2147418112; - property width: Integer dispid - 2147418107; - property height: Integer dispid - 2147418106; - property Start: WideString dispid 1013; - property longDesc: WideString dispid 2019; - end; - -// *********************************************************************// -// Interface: IHTMLBodyElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1D8-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBodyElement = interface(IDispatch) - ['{3050F1D8-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_background(const p: WideString); safecall; - function Get_background: WideString; safecall; - procedure Set_bgProperties(const p: WideString); safecall; - function Get_bgProperties: WideString; safecall; - procedure Set_leftMargin(p: OleVariant); safecall; - function Get_leftMargin: OleVariant; safecall; - procedure Set_topMargin(p: OleVariant); safecall; - function Get_topMargin: OleVariant; safecall; - procedure Set_rightMargin(p: OleVariant); safecall; - function Get_rightMargin: OleVariant; safecall; - procedure Set_bottomMargin(p: OleVariant); safecall; - function Get_bottomMargin: OleVariant; safecall; - procedure Set_noWrap(p: WordBool); safecall; - function Get_noWrap: WordBool; safecall; - procedure Set_bgColor(p: OleVariant); safecall; - function Get_bgColor: OleVariant; safecall; - procedure Set_text(p: OleVariant); safecall; - function Get_text: OleVariant; safecall; - procedure Set_link(p: OleVariant); safecall; - function Get_link: OleVariant; safecall; - procedure Set_vLink(p: OleVariant); safecall; - function Get_vLink: OleVariant; safecall; - procedure Set_aLink(p: OleVariant); safecall; - function Get_aLink: OleVariant; safecall; - procedure Set_onload(p: OleVariant); safecall; - function Get_onload: OleVariant; safecall; - procedure Set_onunload(p: OleVariant); safecall; - function Get_onunload: OleVariant; safecall; - procedure Set_scroll(const p: WideString); safecall; - function Get_scroll: WideString; safecall; - procedure Set_onselect(p: OleVariant); safecall; - function Get_onselect: OleVariant; safecall; - procedure Set_onbeforeunload(p: OleVariant); safecall; - function Get_onbeforeunload: OleVariant; safecall; - function createTextRange: IHTMLTxtRange; safecall; - property background: WideString read Get_background write Set_background; - property bgProperties: WideString read Get_bgProperties write Set_bgProperties; - property leftMargin: OleVariant read Get_leftMargin write Set_leftMargin; - property topMargin: OleVariant read Get_topMargin write Set_topMargin; - property rightMargin: OleVariant read Get_rightMargin write Set_rightMargin; - property bottomMargin: OleVariant read Get_bottomMargin write Set_bottomMargin; - property noWrap: WordBool read Get_noWrap write Set_noWrap; - property bgColor: OleVariant read Get_bgColor write Set_bgColor; - property text: OleVariant read Get_text write Set_text; - property link: OleVariant read Get_link write Set_link; - property vLink: OleVariant read Get_vLink write Set_vLink; - property aLink: OleVariant read Get_aLink write Set_aLink; - property onload: OleVariant read Get_onload write Set_onload; - property onunload: OleVariant read Get_onunload write Set_onunload; - property scroll: WideString read Get_scroll write Set_scroll; - property onselect: OleVariant read Get_onselect write Set_onselect; - property onbeforeunload: OleVariant read Get_onbeforeunload write Set_onbeforeunload; - end; - -// *********************************************************************// -// DispIntf: IHTMLBodyElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1D8-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBodyElementDisp = dispinterface - ['{3050F1D8-98B5-11CF-BB82-00AA00BDCE0B}'] - property background: WideString dispid - 2147413111; - property bgProperties: WideString dispid - 2147413067; - property leftMargin: OleVariant dispid - 2147413072; - property topMargin: OleVariant dispid - 2147413075; - property rightMargin: OleVariant dispid - 2147413074; - property bottomMargin: OleVariant dispid - 2147413073; - property noWrap: WordBool dispid - 2147413107; - property bgColor: OleVariant dispid - 501; - property text: OleVariant dispid - 2147413110; - property link: OleVariant dispid 2010; - property vLink: OleVariant dispid 2012; - property aLink: OleVariant dispid 2011; - property onload: OleVariant dispid - 2147412080; - property onunload: OleVariant dispid - 2147412079; - property scroll: WideString dispid - 2147413033; - property onselect: OleVariant dispid - 2147412102; - property onbeforeunload: OleVariant dispid - 2147412073; - function createTextRange: IHTMLTxtRange; dispid 2013; - end; - -// *********************************************************************// -// Interface: IHTMLBodyElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5C5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBodyElement2 = interface(IDispatch) - ['{3050F5C5-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_onbeforeprint(p: OleVariant); safecall; - function Get_onbeforeprint: OleVariant; safecall; - procedure Set_onafterprint(p: OleVariant); safecall; - function Get_onafterprint: OleVariant; safecall; - property onbeforeprint: OleVariant read Get_onbeforeprint write Set_onbeforeprint; - property onafterprint: OleVariant read Get_onafterprint write Set_onafterprint; - end; - -// *********************************************************************// -// DispIntf: IHTMLBodyElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5C5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBodyElement2Disp = dispinterface - ['{3050F5C5-98B5-11CF-BB82-00AA00BDCE0B}'] - property onbeforeprint: OleVariant dispid - 2147412046; - property onafterprint: OleVariant dispid - 2147412045; - end; - -// *********************************************************************// -// DispIntf: DispHTMLBody -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F507-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLBody = dispinterface - ['{3050F507-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property background: WideString dispid - 2147413111; - property bgProperties: WideString dispid - 2147413067; - property leftMargin: OleVariant dispid - 2147413072; - property topMargin: OleVariant dispid - 2147413075; - property rightMargin: OleVariant dispid - 2147413074; - property bottomMargin: OleVariant dispid - 2147413073; - property noWrap: WordBool dispid - 2147413107; - property bgColor: OleVariant dispid - 501; - property text: OleVariant dispid - 2147413110; - property link: OleVariant dispid 2010; - property vLink: OleVariant dispid 2012; - property aLink: OleVariant dispid 2011; - property onload: OleVariant dispid - 2147412080; - property onunload: OleVariant dispid - 2147412079; - property scroll: WideString dispid - 2147413033; - property onselect: OleVariant dispid - 2147412102; - property onbeforeunload: OleVariant dispid - 2147412073; - function createTextRange: IHTMLTxtRange; dispid 2013; - property onbeforeprint: OleVariant dispid - 2147412046; - property onafterprint: OleVariant dispid - 2147412045; - end; - -// *********************************************************************// -// Interface: IHTMLFontElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1D9-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFontElement = interface(IDispatch) - ['{3050F1D9-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_color(p: OleVariant); safecall; - function Get_color: OleVariant; safecall; - procedure Set_face(const p: WideString); safecall; - function Get_face: WideString; safecall; - procedure Set_size(p: OleVariant); safecall; - function Get_size: OleVariant; safecall; - property color: OleVariant read Get_color write Set_color; - property face: WideString read Get_face write Set_face; - property size: OleVariant read Get_size write Set_size; - end; - -// *********************************************************************// -// DispIntf: IHTMLFontElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1D9-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFontElementDisp = dispinterface - ['{3050F1D9-98B5-11CF-BB82-00AA00BDCE0B}'] - property color: OleVariant dispid - 2147413110; - property face: WideString dispid - 2147413094; - property size: OleVariant dispid - 2147413093; - end; - -// *********************************************************************// -// DispIntf: DispHTMLFontElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F512-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLFontElement = dispinterface - ['{3050F512-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property color: OleVariant dispid - 2147413110; - property face: WideString dispid - 2147413094; - property size: OleVariant dispid - 2147413093; - end; - -// *********************************************************************// -// DispIntf: HTMLAnchorEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F610-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLAnchorEvents2 = dispinterface - ['{3050F610-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - end; - -// *********************************************************************// -// DispIntf: HTMLAnchorEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F29D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLAnchorEvents = dispinterface - ['{3050F29D-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - end; - -// *********************************************************************// -// Interface: IHTMLAnchorElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1DA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAnchorElement = interface(IDispatch) - ['{3050F1DA-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_href(const p: WideString); safecall; - function Get_href: WideString; safecall; - procedure Set_target(const p: WideString); safecall; - function Get_target: WideString; safecall; - procedure Set_rel(const p: WideString); safecall; - function Get_rel: WideString; safecall; - procedure Set_rev(const p: WideString); safecall; - function Get_rev: WideString; safecall; - procedure Set_urn(const p: WideString); safecall; - function Get_urn: WideString; safecall; - procedure Set_Methods(const p: WideString); safecall; - function Get_Methods: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_host(const p: WideString); safecall; - function Get_host: WideString; safecall; - procedure Set_hostname(const p: WideString); safecall; - function Get_hostname: WideString; safecall; - procedure Set_pathname(const p: WideString); safecall; - function Get_pathname: WideString; safecall; - procedure Set_port(const p: WideString); safecall; - function Get_port: WideString; safecall; - procedure Set_protocol(const p: WideString); safecall; - function Get_protocol: WideString; safecall; - procedure Set_search(const p: WideString); safecall; - function Get_search: WideString; safecall; - procedure Set_hash(const p: WideString); safecall; - function Get_hash: WideString; safecall; - procedure Set_onblur(p: OleVariant); safecall; - function Get_onblur: OleVariant; safecall; - procedure Set_onfocus(p: OleVariant); safecall; - function Get_onfocus: OleVariant; safecall; - procedure Set_accessKey(const p: WideString); safecall; - function Get_accessKey: WideString; safecall; - function Get_protocolLong: WideString; safecall; - function Get_mimeType: WideString; safecall; - function Get_nameProp: WideString; safecall; - procedure Set_tabIndex(p: Smallint); safecall; - function Get_tabIndex: Smallint; safecall; - procedure focus; safecall; - procedure blur; safecall; - property href: WideString read Get_href write Set_href; - property target: WideString read Get_target write Set_target; - property rel: WideString read Get_rel write Set_rel; - property rev: WideString read Get_rev write Set_rev; - property urn: WideString read Get_urn write Set_urn; - property Methods: WideString read Get_Methods write Set_Methods; - property name: WideString read Get_name write Set_name; - property host: WideString read Get_host write Set_host; - property hostname: WideString read Get_hostname write Set_hostname; - property pathname: WideString read Get_pathname write Set_pathname; - property port: WideString read Get_port write Set_port; - property protocol: WideString read Get_protocol write Set_protocol; - property search: WideString read Get_search write Set_search; - property hash: WideString read Get_hash write Set_hash; - property onblur: OleVariant read Get_onblur write Set_onblur; - property onfocus: OleVariant read Get_onfocus write Set_onfocus; - property accessKey: WideString read Get_accessKey write Set_accessKey; - property protocolLong: WideString read Get_protocolLong; - property mimeType: WideString read Get_mimeType; - property nameProp: WideString read Get_nameProp; - property tabIndex: Smallint read Get_tabIndex write Set_tabIndex; - end; - -// *********************************************************************// -// DispIntf: IHTMLAnchorElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1DA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAnchorElementDisp = dispinterface - ['{3050F1DA-98B5-11CF-BB82-00AA00BDCE0B}'] - property href: WideString dispid 0; - property target: WideString dispid 1003; - property rel: WideString dispid 1005; - property rev: WideString dispid 1006; - property urn: WideString dispid 1007; - property Methods: WideString dispid 1008; - property name: WideString dispid - 2147418112; - property host: WideString dispid 1012; - property hostname: WideString dispid 1013; - property pathname: WideString dispid 1014; - property port: WideString dispid 1015; - property protocol: WideString dispid 1016; - property search: WideString dispid 1017; - property hash: WideString dispid 1018; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property accessKey: WideString dispid - 2147416107; - property protocolLong: WideString readonly dispid 1031; - property mimeType: WideString readonly dispid 1030; - property nameProp: WideString readonly dispid 1032; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - procedure blur; dispid - 2147416110; - end; - -// *********************************************************************// -// Interface: IHTMLAnchorElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F825-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAnchorElement2 = interface(IDispatch) - ['{3050F825-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_charset(const p: WideString); safecall; - function Get_charset: WideString; safecall; - procedure Set_coords(const p: WideString); safecall; - function Get_coords: WideString; safecall; - procedure Set_hreflang(const p: WideString); safecall; - function Get_hreflang: WideString; safecall; - procedure Set_shape(const p: WideString); safecall; - function Get_shape: WideString; safecall; - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - property charset: WideString read Get_charset write Set_charset; - property coords: WideString read Get_coords write Set_coords; - property hreflang: WideString read Get_hreflang write Set_hreflang; - property shape: WideString read Get_shape write Set_shape; - property type_: WideString read Get_type_ write Set_type_; - end; - -// *********************************************************************// -// DispIntf: IHTMLAnchorElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F825-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAnchorElement2Disp = dispinterface - ['{3050F825-98B5-11CF-BB82-00AA00BDCE0B}'] - property charset: WideString dispid 1023; - property coords: WideString dispid 1024; - property hreflang: WideString dispid 1025; - property shape: WideString dispid 1026; - property type_: WideString dispid 1027; - end; - -// *********************************************************************// -// DispIntf: DispHTMLAnchorElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F502-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLAnchorElement = dispinterface - ['{3050F502-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property href: WideString dispid 0; - property target: WideString dispid 1003; - property rel: WideString dispid 1005; - property rev: WideString dispid 1006; - property urn: WideString dispid 1007; - property Methods: WideString dispid 1008; - property name: WideString dispid - 2147418112; - property host: WideString dispid 1012; - property hostname: WideString dispid 1013; - property pathname: WideString dispid 1014; - property port: WideString dispid 1015; - property protocol: WideString dispid 1016; - property search: WideString dispid 1017; - property hash: WideString dispid 1018; - property protocolLong: WideString readonly dispid 1031; - property mimeType: WideString readonly dispid 1030; - property nameProp: WideString readonly dispid 1032; - property charset: WideString dispid 1023; - property coords: WideString dispid 1024; - property hreflang: WideString dispid 1025; - property shape: WideString dispid 1026; - property type_: WideString dispid 1027; - end; - -// *********************************************************************// -// DispIntf: HTMLLabelEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F61C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLLabelEvents2 = dispinterface - ['{3050F61C-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - end; - -// *********************************************************************// -// DispIntf: HTMLLabelEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F329-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLLabelEvents = dispinterface - ['{3050F329-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - end; - -// *********************************************************************// -// Interface: IHTMLLabelElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F32A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLabelElement = interface(IDispatch) - ['{3050F32A-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_htmlFor(const p: WideString); safecall; - function Get_htmlFor: WideString; safecall; - procedure Set_accessKey(const p: WideString); safecall; - function Get_accessKey: WideString; safecall; - property htmlFor: WideString read Get_htmlFor write Set_htmlFor; - property accessKey: WideString read Get_accessKey write Set_accessKey; - end; - -// *********************************************************************// -// DispIntf: IHTMLLabelElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F32A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLabelElementDisp = dispinterface - ['{3050F32A-98B5-11CF-BB82-00AA00BDCE0B}'] - property htmlFor: WideString dispid 1000; - property accessKey: WideString dispid - 2147416107; - end; - -// *********************************************************************// -// Interface: IHTMLLabelElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F832-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLabelElement2 = interface(IDispatch) - ['{3050F832-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_form: IHTMLFormElement; safecall; - property form: IHTMLFormElement read Get_form; - end; - -// *********************************************************************// -// DispIntf: IHTMLLabelElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F832-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLabelElement2Disp = dispinterface - ['{3050F832-98B5-11CF-BB82-00AA00BDCE0B}'] - property form: IHTMLFormElement readonly dispid 1002; - end; - -// *********************************************************************// -// DispIntf: DispHTMLLabelElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F522-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLLabelElement = dispinterface - ['{3050F522-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property htmlFor: WideString dispid 1000; - property form: IHTMLFormElement readonly dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLListElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F20E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLListElement = interface(IDispatch) - ['{3050F20E-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: IHTMLListElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F20E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLListElementDisp = dispinterface - ['{3050F20E-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// Interface: IHTMLListElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F822-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLListElement2 = interface(IDispatch) - ['{3050F822-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_compact(p: WordBool); safecall; - function Get_compact: WordBool; safecall; - property compact: WordBool read Get_compact write Set_compact; - end; - -// *********************************************************************// -// DispIntf: IHTMLListElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F822-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLListElement2Disp = dispinterface - ['{3050F822-98B5-11CF-BB82-00AA00BDCE0B}'] - property compact: WordBool dispid 1001; - end; - -// *********************************************************************// -// DispIntf: DispHTMLListElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F525-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLListElement = dispinterface - ['{3050F525-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property compact: WordBool dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLUListElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1DD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLUListElement = interface(IDispatch) - ['{3050F1DD-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_compact(p: WordBool); safecall; - function Get_compact: WordBool; safecall; - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - property compact: WordBool read Get_compact write Set_compact; - property type_: WideString read Get_type_ write Set_type_; - end; - -// *********************************************************************// -// DispIntf: IHTMLUListElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1DD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLUListElementDisp = dispinterface - ['{3050F1DD-98B5-11CF-BB82-00AA00BDCE0B}'] - property compact: WordBool dispid 1001; - property type_: WideString dispid - 2147413095; - end; - -// *********************************************************************// -// DispIntf: DispHTMLUListElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F538-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLUListElement = dispinterface - ['{3050F538-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property compact: WordBool dispid 1001; - property type_: WideString dispid - 2147413095; - end; - -// *********************************************************************// -// Interface: IHTMLOListElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1DE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOListElement = interface(IDispatch) - ['{3050F1DE-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_compact(p: WordBool); safecall; - function Get_compact: WordBool; safecall; - procedure Set_Start(p: Integer); safecall; - function Get_Start: Integer; safecall; - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - property compact: WordBool read Get_compact write Set_compact; - property Start: Integer read Get_Start write Set_Start; - property type_: WideString read Get_type_ write Set_type_; - end; - -// *********************************************************************// -// DispIntf: IHTMLOListElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1DE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOListElementDisp = dispinterface - ['{3050F1DE-98B5-11CF-BB82-00AA00BDCE0B}'] - property compact: WordBool dispid 1001; - property Start: Integer dispid 1003; - property type_: WideString dispid - 2147413095; - end; - -// *********************************************************************// -// DispIntf: DispHTMLOListElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F52A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLOListElement = dispinterface - ['{3050F52A-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property compact: WordBool dispid 1001; - property Start: Integer dispid 1003; - property type_: WideString dispid - 2147413095; - end; - -// *********************************************************************// -// Interface: IHTMLLIElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1E0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLIElement = interface(IDispatch) - ['{3050F1E0-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - procedure Set_value(p: Integer); safecall; - function Get_value: Integer; safecall; - property type_: WideString read Get_type_ write Set_type_; - property value: Integer read Get_value write Set_value; - end; - -// *********************************************************************// -// DispIntf: IHTMLLIElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1E0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLIElementDisp = dispinterface - ['{3050F1E0-98B5-11CF-BB82-00AA00BDCE0B}'] - property type_: WideString dispid - 2147413095; - property value: Integer dispid 1001; - end; - -// *********************************************************************// -// DispIntf: DispHTMLLIElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F523-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLLIElement = dispinterface - ['{3050F523-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property type_: WideString dispid - 2147413095; - property value: Integer dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLBlockElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F208-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBlockElement = interface(IDispatch) - ['{3050F208-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_clear(const p: WideString); safecall; - function Get_clear: WideString; safecall; - property clear: WideString read Get_clear write Set_clear; - end; - -// *********************************************************************// -// DispIntf: IHTMLBlockElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F208-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBlockElementDisp = dispinterface - ['{3050F208-98B5-11CF-BB82-00AA00BDCE0B}'] - property clear: WideString dispid - 2147413096; - end; - -// *********************************************************************// -// Interface: IHTMLBlockElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F823-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBlockElement2 = interface(IDispatch) - ['{3050F823-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_cite(const p: WideString); safecall; - function Get_cite: WideString; safecall; - procedure Set_width(const p: WideString); safecall; - function Get_width: WideString; safecall; - property cite: WideString read Get_cite write Set_cite; - property width: WideString read Get_width write Set_width; - end; - -// *********************************************************************// -// DispIntf: IHTMLBlockElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F823-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBlockElement2Disp = dispinterface - ['{3050F823-98B5-11CF-BB82-00AA00BDCE0B}'] - property cite: WideString dispid 1001; - property width: WideString dispid 1002; - end; - -// *********************************************************************// -// DispIntf: DispHTMLBlockElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F506-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLBlockElement = dispinterface - ['{3050F506-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property clear: WideString dispid - 2147413096; - property cite: WideString dispid 1001; - property width: WideString dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLDivElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F200-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDivElement = interface(IDispatch) - ['{3050F200-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_noWrap(p: WordBool); safecall; - function Get_noWrap: WordBool; safecall; - property align: WideString read Get_align write Set_align; - property noWrap: WordBool read Get_noWrap write Set_noWrap; - end; - -// *********************************************************************// -// DispIntf: IHTMLDivElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F200-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDivElementDisp = dispinterface - ['{3050F200-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418040; - property noWrap: WordBool dispid - 2147413107; - end; - -// *********************************************************************// -// DispIntf: DispHTMLDivElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F50C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLDivElement = dispinterface - ['{3050F50C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property align: WideString dispid - 2147418040; - property noWrap: WordBool dispid - 2147413107; - end; - -// *********************************************************************// -// Interface: IHTMLDDElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDDElement = interface(IDispatch) - ['{3050F1F2-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_noWrap(p: WordBool); safecall; - function Get_noWrap: WordBool; safecall; - property noWrap: WordBool read Get_noWrap write Set_noWrap; - end; - -// *********************************************************************// -// DispIntf: IHTMLDDElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDDElementDisp = dispinterface - ['{3050F1F2-98B5-11CF-BB82-00AA00BDCE0B}'] - property noWrap: WordBool dispid - 2147413107; - end; - -// *********************************************************************// -// DispIntf: DispHTMLDDElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F50B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLDDElement = dispinterface - ['{3050F50B-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property noWrap: WordBool dispid - 2147413107; - end; - -// *********************************************************************// -// Interface: IHTMLDTElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDTElement = interface(IDispatch) - ['{3050F1F3-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_noWrap(p: WordBool); safecall; - function Get_noWrap: WordBool; safecall; - property noWrap: WordBool read Get_noWrap write Set_noWrap; - end; - -// *********************************************************************// -// DispIntf: IHTMLDTElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDTElementDisp = dispinterface - ['{3050F1F3-98B5-11CF-BB82-00AA00BDCE0B}'] - property noWrap: WordBool dispid - 2147413107; - end; - -// *********************************************************************// -// DispIntf: DispHTMLDTElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F50D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLDTElement = dispinterface - ['{3050F50D-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property noWrap: WordBool dispid - 2147413107; - end; - -// *********************************************************************// -// Interface: IHTMLBRElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBRElement = interface(IDispatch) - ['{3050F1F0-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_clear(const p: WideString); safecall; - function Get_clear: WideString; safecall; - property clear: WideString read Get_clear write Set_clear; - end; - -// *********************************************************************// -// DispIntf: IHTMLBRElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBRElementDisp = dispinterface - ['{3050F1F0-98B5-11CF-BB82-00AA00BDCE0B}'] - property clear: WideString dispid - 2147413096; - end; - -// *********************************************************************// -// DispIntf: DispHTMLBRElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F53A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLBRElement = dispinterface - ['{3050F53A-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property clear: WideString dispid - 2147413096; - end; - -// *********************************************************************// -// Interface: IHTMLDListElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F1-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDListElement = interface(IDispatch) - ['{3050F1F1-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_compact(p: WordBool); safecall; - function Get_compact: WordBool; safecall; - property compact: WordBool read Get_compact write Set_compact; - end; - -// *********************************************************************// -// DispIntf: IHTMLDListElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F1-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDListElementDisp = dispinterface - ['{3050F1F1-98B5-11CF-BB82-00AA00BDCE0B}'] - property compact: WordBool dispid 1001; - end; - -// *********************************************************************// -// DispIntf: DispHTMLDListElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F53B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLDListElement = dispinterface - ['{3050F53B-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property compact: WordBool dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLHRElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLHRElement = interface(IDispatch) - ['{3050F1F4-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_color(p: OleVariant); safecall; - function Get_color: OleVariant; safecall; - procedure Set_noShade(p: WordBool); safecall; - function Get_noShade: WordBool; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - procedure Set_size(p: OleVariant); safecall; - function Get_size: OleVariant; safecall; - property align: WideString read Get_align write Set_align; - property color: OleVariant read Get_color write Set_color; - property noShade: WordBool read Get_noShade write Set_noShade; - property width: OleVariant read Get_width write Set_width; - property size: OleVariant read Get_size write Set_size; - end; - -// *********************************************************************// -// DispIntf: IHTMLHRElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLHRElementDisp = dispinterface - ['{3050F1F4-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418040; - property color: OleVariant dispid - 2147413110; - property noShade: WordBool dispid 1001; - property width: OleVariant dispid - 2147418107; - property size: OleVariant dispid - 2147418106; - end; - -// *********************************************************************// -// DispIntf: DispHTMLHRElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F53D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLHRElement = dispinterface - ['{3050F53D-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property align: WideString dispid - 2147418040; - property color: OleVariant dispid - 2147413110; - property noShade: WordBool dispid 1001; - property width: OleVariant dispid - 2147418107; - property size: OleVariant dispid - 2147418106; - end; - -// *********************************************************************// -// Interface: IHTMLParaElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLParaElement = interface(IDispatch) - ['{3050F1F5-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - property align: WideString read Get_align write Set_align; - end; - -// *********************************************************************// -// DispIntf: IHTMLParaElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLParaElementDisp = dispinterface - ['{3050F1F5-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418040; - end; - -// *********************************************************************// -// DispIntf: DispHTMLParaElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F52C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLParaElement = dispinterface - ['{3050F52C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property clear: WideString dispid - 2147413096; - property align: WideString dispid - 2147418040; - end; - -// *********************************************************************// -// Interface: IHTMLElementCollection2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5EE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElementCollection2 = interface(IDispatch) - ['{3050F5EE-98B5-11CF-BB82-00AA00BDCE0B}'] - function urns(urn: OleVariant): IDispatch; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLElementCollection2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5EE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElementCollection2Disp = dispinterface - ['{3050F5EE-98B5-11CF-BB82-00AA00BDCE0B}'] - function urns(urn: OleVariant): IDispatch; dispid 1505; - end; - -// *********************************************************************// -// Interface: IHTMLElementCollection3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F835-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElementCollection3 = interface(IDispatch) - ['{3050F835-98B5-11CF-BB82-00AA00BDCE0B}'] - function namedItem(const name: WideString): IDispatch; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLElementCollection3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F835-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLElementCollection3Disp = dispinterface - ['{3050F835-98B5-11CF-BB82-00AA00BDCE0B}'] - function namedItem(const name: WideString): IDispatch; dispid 1506; - end; - -// *********************************************************************// -// DispIntf: DispHTMLElementCollection -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F56B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLElementCollection = dispinterface - ['{3050F56B-98B5-11CF-BB82-00AA00BDCE0B}'] - function toString: WideString; dispid 1501; - property length: Integer dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(name: OleVariant; index: OleVariant): IDispatch; dispid 0; - function tags(tagName: OleVariant): IDispatch; dispid 1502; - function urns(urn: OleVariant): IDispatch; dispid 1505; - function namedItem(const name: WideString): IDispatch; dispid 1506; - end; - -// *********************************************************************// -// Interface: IHTMLHeaderElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLHeaderElement = interface(IDispatch) - ['{3050F1F6-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - property align: WideString read Get_align write Set_align; - end; - -// *********************************************************************// -// DispIntf: IHTMLHeaderElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F1F6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLHeaderElementDisp = dispinterface - ['{3050F1F6-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418040; - end; - -// *********************************************************************// -// DispIntf: DispHTMLHeaderElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F515-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLHeaderElement = dispinterface - ['{3050F515-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property clear: WideString dispid - 2147413096; - property align: WideString dispid - 2147418040; - end; - -// *********************************************************************// -// DispIntf: HTMLSelectElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F622-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLSelectElementEvents2 = dispinterface - ['{3050F622-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - procedure onchange(const pEvtObj: IHTMLEventObj); dispid 1001; - end; - -// *********************************************************************// -// DispIntf: HTMLSelectElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F302-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLSelectElementEvents = dispinterface - ['{3050F302-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - procedure onchange; dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLSelectElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F244-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSelectElement = interface(IDispatch) - ['{3050F244-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_size(p: Integer); safecall; - function Get_size: Integer; safecall; - procedure Set_multiple(p: WordBool); safecall; - function Get_multiple: WordBool; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - function Get_options: IDispatch; safecall; - procedure Set_onchange(p: OleVariant); safecall; - function Get_onchange: OleVariant; safecall; - procedure Set_selectedIndex(p: Integer); safecall; - function Get_selectedIndex: Integer; safecall; - function Get_type_: WideString; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - function Get_form: IHTMLFormElement; safecall; - procedure add(const element: IHTMLElement; before: OleVariant); safecall; - procedure remove(index: Integer); safecall; - procedure Set_length(p: Integer); safecall; - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - function item(name: OleVariant; index: OleVariant): IDispatch; safecall; - function tags(tagName: OleVariant): IDispatch; safecall; - property size: Integer read Get_size write Set_size; - property multiple: WordBool read Get_multiple write Set_multiple; - property name: WideString read Get_name write Set_name; - property options: IDispatch read Get_options; - property onchange: OleVariant read Get_onchange write Set_onchange; - property selectedIndex: Integer read Get_selectedIndex write Set_selectedIndex; - property type_: WideString read Get_type_; - property value: WideString read Get_value write Set_value; - property disabled: WordBool read Get_disabled write Set_disabled; - property form: IHTMLFormElement read Get_form; - property length: Integer read Get_length write Set_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLSelectElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F244-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSelectElementDisp = dispinterface - ['{3050F244-98B5-11CF-BB82-00AA00BDCE0B}'] - property size: Integer dispid 1002; - property multiple: WordBool dispid 1003; - property name: WideString dispid - 2147418112; - property options: IDispatch readonly dispid 1005; - property onchange: OleVariant dispid - 2147412082; - property selectedIndex: Integer dispid 1010; - property type_: WideString readonly dispid 1012; - property value: WideString dispid 1011; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - procedure add(const element: IHTMLElement; before: OleVariant); dispid 1503; - procedure remove(index: Integer); dispid 1504; - property length: Integer dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(name: OleVariant; index: OleVariant): IDispatch; dispid 0; - function tags(tagName: OleVariant): IDispatch; dispid 1502; - end; - -// *********************************************************************// -// Interface: IHTMLSelectElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5ED-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSelectElement2 = interface(IDispatch) - ['{3050F5ED-98B5-11CF-BB82-00AA00BDCE0B}'] - function urns(urn: OleVariant): IDispatch; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLSelectElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5ED-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSelectElement2Disp = dispinterface - ['{3050F5ED-98B5-11CF-BB82-00AA00BDCE0B}'] - function urns(urn: OleVariant): IDispatch; dispid 1505; - end; - -// *********************************************************************// -// Interface: IHTMLSelectElement4 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F838-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSelectElement4 = interface(IDispatch) - ['{3050F838-98B5-11CF-BB82-00AA00BDCE0B}'] - function namedItem(const name: WideString): IDispatch; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLSelectElement4Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F838-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSelectElement4Disp = dispinterface - ['{3050F838-98B5-11CF-BB82-00AA00BDCE0B}'] - function namedItem(const name: WideString): IDispatch; dispid 1506; - end; - -// *********************************************************************// -// DispIntf: DispHTMLSelectElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F531-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLSelectElement = dispinterface - ['{3050F531-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property size: Integer dispid 1002; - property multiple: WordBool dispid 1003; - property name: WideString dispid - 2147418112; - property options: IDispatch readonly dispid 1005; - property onchange: OleVariant dispid - 2147412082; - property selectedIndex: Integer dispid 1010; - property type_: WideString readonly dispid 1012; - property value: WideString dispid 1011; - property form: IHTMLFormElement readonly dispid - 2147416108; - procedure add(const element: IHTMLElement; before: OleVariant); dispid 1503; - procedure remove(index: Integer); dispid 1504; - property length: Integer dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(name: OleVariant; index: OleVariant): IDispatch; dispid 0; - function tags(tagName: OleVariant): IDispatch; dispid 1502; - function urns(urn: OleVariant): IDispatch; dispid 1505; - function namedItem(const name: WideString): IDispatch; dispid 1506; - end; - -// *********************************************************************// -// Interface: IHTMLSelectionObject -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F25A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSelectionObject = interface(IDispatch) - ['{3050F25A-98B5-11CF-BB82-00AA00BDCE0B}'] - function createRange: IDispatch; safecall; - procedure empty; safecall; - procedure clear; safecall; - function Get_type_: WideString; safecall; - property type_: WideString read Get_type_; - end; - -// *********************************************************************// -// DispIntf: IHTMLSelectionObjectDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F25A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSelectionObjectDisp = dispinterface - ['{3050F25A-98B5-11CF-BB82-00AA00BDCE0B}'] - function createRange: IDispatch; dispid 1001; - procedure empty; dispid 1002; - procedure clear; dispid 1003; - property type_: WideString readonly dispid 1004; - end; - -// *********************************************************************// -// Interface: IHTMLSelectionObject2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7EC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSelectionObject2 = interface(IDispatch) - ['{3050F7EC-98B5-11CF-BB82-00AA00BDCE0B}'] - function createRangeCollection: IDispatch; safecall; - function Get_typeDetail: WideString; safecall; - property typeDetail: WideString read Get_typeDetail; - end; - -// *********************************************************************// -// DispIntf: IHTMLSelectionObject2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7EC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSelectionObject2Disp = dispinterface - ['{3050F7EC-98B5-11CF-BB82-00AA00BDCE0B}'] - function createRangeCollection: IDispatch; dispid 1005; - property typeDetail: WideString readonly dispid 1006; - end; - -// *********************************************************************// -// Interface: IHTMLOptionElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F211-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOptionElement = interface(IDispatch) - ['{3050F211-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_selected(p: WordBool); safecall; - function Get_selected: WordBool; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - procedure Set_defaultSelected(p: WordBool); safecall; - function Get_defaultSelected: WordBool; safecall; - procedure Set_index(p: Integer); safecall; - function Get_index: Integer; safecall; - procedure Set_text(const p: WideString); safecall; - function Get_text: WideString; safecall; - function Get_form: IHTMLFormElement; safecall; - property selected: WordBool read Get_selected write Set_selected; - property value: WideString read Get_value write Set_value; - property defaultSelected: WordBool read Get_defaultSelected write Set_defaultSelected; - property index: Integer read Get_index write Set_index; - property text: WideString read Get_text write Set_text; - property form: IHTMLFormElement read Get_form; - end; - -// *********************************************************************// -// DispIntf: IHTMLOptionElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F211-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOptionElementDisp = dispinterface - ['{3050F211-98B5-11CF-BB82-00AA00BDCE0B}'] - property selected: WordBool dispid 1001; - property value: WideString dispid 1002; - property defaultSelected: WordBool dispid 1003; - property index: Integer dispid 1005; - property text: WideString dispid 1004; - property form: IHTMLFormElement readonly dispid 1006; - end; - -// *********************************************************************// -// Interface: IHTMLOptionElement3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F820-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOptionElement3 = interface(IDispatch) - ['{3050F820-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_label_(const p: WideString); safecall; - function Get_label_: WideString; safecall; - property label_: WideString read Get_label_ write Set_label_; - end; - -// *********************************************************************// -// DispIntf: IHTMLOptionElement3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F820-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOptionElement3Disp = dispinterface - ['{3050F820-98B5-11CF-BB82-00AA00BDCE0B}'] - property label_: WideString dispid 1007; - end; - -// *********************************************************************// -// Interface: IHTMLOptionElementFactory -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F38C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOptionElementFactory = interface(IDispatch) - ['{3050F38C-98B5-11CF-BB82-00AA00BDCE0B}'] - function create(text: OleVariant; value: OleVariant; defaultSelected: OleVariant; - selected: OleVariant): IHTMLOptionElement; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLOptionElementFactoryDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F38C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOptionElementFactoryDisp = dispinterface - ['{3050F38C-98B5-11CF-BB82-00AA00BDCE0B}'] - function create(text: OleVariant; value: OleVariant; defaultSelected: OleVariant; - selected: OleVariant): IHTMLOptionElement; dispid 0; - end; - -// *********************************************************************// -// DispIntf: DispHTMLOptionElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F52B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLOptionElement = dispinterface - ['{3050F52B-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property selected: WordBool dispid 1001; - property value: WideString dispid 1002; - property defaultSelected: WordBool dispid 1003; - property index: Integer dispid 1005; - property text: WideString dispid 1004; - property form: IHTMLFormElement readonly dispid 1006; - property label_: WideString dispid 1007; - end; - -// *********************************************************************// -// DispIntf: HTMLButtonElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F617-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLButtonElementEvents2 = dispinterface - ['{3050F617-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - end; - -// *********************************************************************// -// DispIntf: HTMLButtonElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F2B3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLButtonElementEvents = dispinterface - ['{3050F2B3-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - end; - -// *********************************************************************// -// DispIntf: HTMLInputTextElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F618-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLInputTextElementEvents2 = dispinterface - ['{3050F618-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - function onchange(const pEvtObj: IHTMLEventObj): WordBool; dispid 1001; - procedure onselect(const pEvtObj: IHTMLEventObj); dispid 1006; - procedure onload(const pEvtObj: IHTMLEventObj); dispid 1003; - procedure onerror(const pEvtObj: IHTMLEventObj); dispid 1002; - procedure onabort(const pEvtObj: IHTMLEventObj); dispid 1000; - end; - -// *********************************************************************// -// DispIntf: HTMLOptionButtonElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F619-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLOptionButtonElementEvents2 = dispinterface - ['{3050F619-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - function onchange(const pEvtObj: IHTMLEventObj): WordBool; dispid 1001; - procedure onselect(const pEvtObj: IHTMLEventObj); dispid 1006; - procedure onload(const pEvtObj: IHTMLEventObj); dispid 1003; - procedure onerror(const pEvtObj: IHTMLEventObj); dispid 1002; - procedure onabort(const pEvtObj: IHTMLEventObj); dispid 1000; - end; - -// *********************************************************************// -// DispIntf: HTMLInputFileElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F61A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLInputFileElementEvents2 = dispinterface - ['{3050F61A-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - function onchange(const pEvtObj: IHTMLEventObj): WordBool; dispid 1001; - procedure onselect(const pEvtObj: IHTMLEventObj); dispid 1006; - procedure onload(const pEvtObj: IHTMLEventObj); dispid 1003; - procedure onerror(const pEvtObj: IHTMLEventObj); dispid 1002; - procedure onabort(const pEvtObj: IHTMLEventObj); dispid 1000; - end; - -// *********************************************************************// -// DispIntf: HTMLInputImageEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F61B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLInputImageEvents2 = dispinterface - ['{3050F61B-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - procedure onload(const pEvtObj: IHTMLEventObj); dispid 1003; - procedure onerror(const pEvtObj: IHTMLEventObj); dispid 1002; - procedure onabort(const pEvtObj: IHTMLEventObj); dispid 1000; - end; - -// *********************************************************************// -// DispIntf: HTMLInputTextElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F2A7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLInputTextElementEvents = dispinterface - ['{3050F2A7-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - function onchange: WordBool; dispid 1001; - procedure onselect; dispid 1006; - procedure onload; dispid 1003; - procedure onerror; dispid 1002; - procedure onabort; dispid 1000; - end; - -// *********************************************************************// -// DispIntf: HTMLOptionButtonElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F2BD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLOptionButtonElementEvents = dispinterface - ['{3050F2BD-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - function onchange: WordBool; dispid 1001; - procedure onselect; dispid 1006; - procedure onload; dispid 1003; - procedure onerror; dispid 1002; - procedure onabort; dispid 1000; - end; - -// *********************************************************************// -// DispIntf: HTMLInputFileElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F2AF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLInputFileElementEvents = dispinterface - ['{3050F2AF-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - function onchange: WordBool; dispid 1001; - procedure onselect; dispid 1006; - procedure onload; dispid 1003; - procedure onerror; dispid 1002; - procedure onabort; dispid 1000; - end; - -// *********************************************************************// -// DispIntf: HTMLInputImageEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F2C3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLInputImageEvents = dispinterface - ['{3050F2C3-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - procedure onload; dispid 1003; - procedure onerror; dispid 1002; - procedure onabort; dispid 1000; - end; - -// *********************************************************************// -// Interface: IHTMLInputElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5D2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputElement = interface(IDispatch) - ['{3050F5D2-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_status(p: WordBool); safecall; - function Get_status: WordBool; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - function Get_form: IHTMLFormElement; safecall; - procedure Set_size(p: Integer); safecall; - function Get_size: Integer; safecall; - procedure Set_maxLength(p: Integer); safecall; - function Get_maxLength: Integer; safecall; - procedure select; safecall; - procedure Set_onchange(p: OleVariant); safecall; - function Get_onchange: OleVariant; safecall; - procedure Set_onselect(p: OleVariant); safecall; - function Get_onselect: OleVariant; safecall; - procedure Set_defaultValue(const p: WideString); safecall; - function Get_defaultValue: WideString; safecall; - procedure Set_readOnly(p: WordBool); safecall; - function Get_readOnly: WordBool; safecall; - function createTextRange: IHTMLTxtRange; safecall; - procedure Set_indeterminate(p: WordBool); safecall; - function Get_indeterminate: WordBool; safecall; - procedure Set_defaultChecked(p: WordBool); safecall; - function Get_defaultChecked: WordBool; safecall; - procedure Set_checked(p: WordBool); safecall; - function Get_checked: WordBool; safecall; - procedure Set_border(p: OleVariant); safecall; - function Get_border: OleVariant; safecall; - procedure Set_vspace(p: Integer); safecall; - function Get_vspace: Integer; safecall; - procedure Set_hspace(p: Integer); safecall; - function Get_hspace: Integer; safecall; - procedure Set_alt(const p: WideString); safecall; - function Get_alt: WideString; safecall; - procedure Set_src(const p: WideString); safecall; - function Get_src: WideString; safecall; - procedure Set_lowsrc(const p: WideString); safecall; - function Get_lowsrc: WideString; safecall; - procedure Set_vrml(const p: WideString); safecall; - function Get_vrml: WideString; safecall; - procedure Set_dynsrc(const p: WideString); safecall; - function Get_dynsrc: WideString; safecall; - function Get_readyState: WideString; safecall; - function Get_complete: WordBool; safecall; - procedure Set_loop(p: OleVariant); safecall; - function Get_loop: OleVariant; safecall; - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_onload(p: OleVariant); safecall; - function Get_onload: OleVariant; safecall; - procedure Set_onerror(p: OleVariant); safecall; - function Get_onerror: OleVariant; safecall; - procedure Set_onabort(p: OleVariant); safecall; - function Get_onabort: OleVariant; safecall; - procedure Set_width(p: Integer); safecall; - function Get_width: Integer; safecall; - procedure Set_height(p: Integer); safecall; - function Get_height: Integer; safecall; - procedure Set_Start(const p: WideString); safecall; - function Get_Start: WideString; safecall; - property type_: WideString read Get_type_ write Set_type_; - property value: WideString read Get_value write Set_value; - property name: WideString read Get_name write Set_name; - property status: WordBool read Get_status write Set_status; - property disabled: WordBool read Get_disabled write Set_disabled; - property form: IHTMLFormElement read Get_form; - property size: Integer read Get_size write Set_size; - property maxLength: Integer read Get_maxLength write Set_maxLength; - property onchange: OleVariant read Get_onchange write Set_onchange; - property onselect: OleVariant read Get_onselect write Set_onselect; - property defaultValue: WideString read Get_defaultValue write Set_defaultValue; - property readOnly: WordBool read Get_readOnly write Set_readOnly; - property indeterminate: WordBool read Get_indeterminate write Set_indeterminate; - property defaultChecked: WordBool read Get_defaultChecked write Set_defaultChecked; - property checked: WordBool read Get_checked write Set_checked; - property border: OleVariant read Get_border write Set_border; - property vspace: Integer read Get_vspace write Set_vspace; - property hspace: Integer read Get_hspace write Set_hspace; - property alt: WideString read Get_alt write Set_alt; - property src: WideString read Get_src write Set_src; - property lowsrc: WideString read Get_lowsrc write Set_lowsrc; - property vrml: WideString read Get_vrml write Set_vrml; - property dynsrc: WideString read Get_dynsrc write Set_dynsrc; - property readyState: WideString read Get_readyState; - property complete: WordBool read Get_complete; - property loop: OleVariant read Get_loop write Set_loop; - property align: WideString read Get_align write Set_align; - property onload: OleVariant read Get_onload write Set_onload; - property onerror: OleVariant read Get_onerror write Set_onerror; - property onabort: OleVariant read Get_onabort write Set_onabort; - property width: Integer read Get_width write Set_width; - property height: Integer read Get_height write Set_height; - property Start: WideString read Get_Start write Set_Start; - end; - -// *********************************************************************// -// DispIntf: IHTMLInputElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5D2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputElementDisp = dispinterface - ['{3050F5D2-98B5-11CF-BB82-00AA00BDCE0B}'] - property type_: WideString dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: WordBool dispid 2001; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - property size: Integer dispid 2002; - property maxLength: Integer dispid 2003; - procedure select; dispid 2004; - property onchange: OleVariant dispid - 2147412082; - property onselect: OleVariant dispid - 2147412102; - property defaultValue: WideString dispid - 2147413029; - property readOnly: WordBool dispid 2005; - function createTextRange: IHTMLTxtRange; dispid 2006; - property indeterminate: WordBool dispid 2007; - property defaultChecked: WordBool dispid 2008; - property checked: WordBool dispid 2009; - property border: OleVariant dispid 2012; - property vspace: Integer dispid 2013; - property hspace: Integer dispid 2014; - property alt: WideString dispid 2010; - property src: WideString dispid 2011; - property lowsrc: WideString dispid 2015; - property vrml: WideString dispid 2016; - property dynsrc: WideString dispid 2017; - property readyState: WideString readonly dispid - 2147412996; - property complete: WordBool readonly dispid 2018; - property loop: OleVariant dispid 2019; - property align: WideString dispid - 2147418039; - property onload: OleVariant dispid - 2147412080; - property onerror: OleVariant dispid - 2147412083; - property onabort: OleVariant dispid - 2147412084; - property width: Integer dispid - 2147418107; - property height: Integer dispid - 2147418106; - property Start: WideString dispid 2020; - end; - -// *********************************************************************// -// Interface: IHTMLInputElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F821-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputElement2 = interface(IDispatch) - ['{3050F821-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_accept(const p: WideString); safecall; - function Get_accept: WideString; safecall; - procedure Set_useMap(const p: WideString); safecall; - function Get_useMap: WideString; safecall; - property accept: WideString read Get_accept write Set_accept; - property useMap: WideString read Get_useMap write Set_useMap; - end; - -// *********************************************************************// -// DispIntf: IHTMLInputElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F821-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputElement2Disp = dispinterface - ['{3050F821-98B5-11CF-BB82-00AA00BDCE0B}'] - property accept: WideString dispid 2022; - property useMap: WideString dispid 2023; - end; - -// *********************************************************************// -// Interface: IHTMLInputButtonElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2B2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputButtonElement = interface(IDispatch) - ['{3050F2B2-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_type_: WideString; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_status(p: OleVariant); safecall; - function Get_status: OleVariant; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - function Get_form: IHTMLFormElement; safecall; - function createTextRange: IHTMLTxtRange; safecall; - property type_: WideString read Get_type_; - property value: WideString read Get_value write Set_value; - property name: WideString read Get_name write Set_name; - property status: OleVariant read Get_status write Set_status; - property disabled: WordBool read Get_disabled write Set_disabled; - property form: IHTMLFormElement read Get_form; - end; - -// *********************************************************************// -// DispIntf: IHTMLInputButtonElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2B2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputButtonElementDisp = dispinterface - ['{3050F2B2-98B5-11CF-BB82-00AA00BDCE0B}'] - property type_: WideString readonly dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 2021; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - function createTextRange: IHTMLTxtRange; dispid 2006; - end; - -// *********************************************************************// -// Interface: IHTMLInputHiddenElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2A4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputHiddenElement = interface(IDispatch) - ['{3050F2A4-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_type_: WideString; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_status(p: OleVariant); safecall; - function Get_status: OleVariant; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - function Get_form: IHTMLFormElement; safecall; - function createTextRange: IHTMLTxtRange; safecall; - property type_: WideString read Get_type_; - property value: WideString read Get_value write Set_value; - property name: WideString read Get_name write Set_name; - property status: OleVariant read Get_status write Set_status; - property disabled: WordBool read Get_disabled write Set_disabled; - property form: IHTMLFormElement read Get_form; - end; - -// *********************************************************************// -// DispIntf: IHTMLInputHiddenElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2A4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputHiddenElementDisp = dispinterface - ['{3050F2A4-98B5-11CF-BB82-00AA00BDCE0B}'] - property type_: WideString readonly dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 2021; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - function createTextRange: IHTMLTxtRange; dispid 2006; - end; - -// *********************************************************************// -// Interface: IHTMLInputTextElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2A6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputTextElement = interface(IDispatch) - ['{3050F2A6-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_type_: WideString; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_status(p: OleVariant); safecall; - function Get_status: OleVariant; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - function Get_form: IHTMLFormElement; safecall; - procedure Set_defaultValue(const p: WideString); safecall; - function Get_defaultValue: WideString; safecall; - procedure Set_size(p: Integer); safecall; - function Get_size: Integer; safecall; - procedure Set_maxLength(p: Integer); safecall; - function Get_maxLength: Integer; safecall; - procedure select; safecall; - procedure Set_onchange(p: OleVariant); safecall; - function Get_onchange: OleVariant; safecall; - procedure Set_onselect(p: OleVariant); safecall; - function Get_onselect: OleVariant; safecall; - procedure Set_readOnly(p: WordBool); safecall; - function Get_readOnly: WordBool; safecall; - function createTextRange: IHTMLTxtRange; safecall; - property type_: WideString read Get_type_; - property value: WideString read Get_value write Set_value; - property name: WideString read Get_name write Set_name; - property status: OleVariant read Get_status write Set_status; - property disabled: WordBool read Get_disabled write Set_disabled; - property form: IHTMLFormElement read Get_form; - property defaultValue: WideString read Get_defaultValue write Set_defaultValue; - property size: Integer read Get_size write Set_size; - property maxLength: Integer read Get_maxLength write Set_maxLength; - property onchange: OleVariant read Get_onchange write Set_onchange; - property onselect: OleVariant read Get_onselect write Set_onselect; - property readOnly: WordBool read Get_readOnly write Set_readOnly; - end; - -// *********************************************************************// -// DispIntf: IHTMLInputTextElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2A6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputTextElementDisp = dispinterface - ['{3050F2A6-98B5-11CF-BB82-00AA00BDCE0B}'] - property type_: WideString readonly dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 2021; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - property defaultValue: WideString dispid - 2147413029; - property size: Integer dispid 2002; - property maxLength: Integer dispid 2003; - procedure select; dispid 2004; - property onchange: OleVariant dispid - 2147412082; - property onselect: OleVariant dispid - 2147412102; - property readOnly: WordBool dispid 2005; - function createTextRange: IHTMLTxtRange; dispid 2006; - end; - -// *********************************************************************// -// Interface: IHTMLInputFileElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2AD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputFileElement = interface(IDispatch) - ['{3050F2AD-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_type_: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_status(p: OleVariant); safecall; - function Get_status: OleVariant; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - function Get_form: IHTMLFormElement; safecall; - procedure Set_size(p: Integer); safecall; - function Get_size: Integer; safecall; - procedure Set_maxLength(p: Integer); safecall; - function Get_maxLength: Integer; safecall; - procedure select; safecall; - procedure Set_onchange(p: OleVariant); safecall; - function Get_onchange: OleVariant; safecall; - procedure Set_onselect(p: OleVariant); safecall; - function Get_onselect: OleVariant; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - property type_: WideString read Get_type_; - property name: WideString read Get_name write Set_name; - property status: OleVariant read Get_status write Set_status; - property disabled: WordBool read Get_disabled write Set_disabled; - property form: IHTMLFormElement read Get_form; - property size: Integer read Get_size write Set_size; - property maxLength: Integer read Get_maxLength write Set_maxLength; - property onchange: OleVariant read Get_onchange write Set_onchange; - property onselect: OleVariant read Get_onselect write Set_onselect; - property value: WideString read Get_value write Set_value; - end; - -// *********************************************************************// -// DispIntf: IHTMLInputFileElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2AD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputFileElementDisp = dispinterface - ['{3050F2AD-98B5-11CF-BB82-00AA00BDCE0B}'] - property type_: WideString readonly dispid 2000; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 2021; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - property size: Integer dispid 2002; - property maxLength: Integer dispid 2003; - procedure select; dispid 2004; - property onchange: OleVariant dispid - 2147412082; - property onselect: OleVariant dispid - 2147412102; - property value: WideString dispid - 2147413011; - end; - -// *********************************************************************// -// Interface: IHTMLOptionButtonElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2BC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOptionButtonElement = interface(IDispatch) - ['{3050F2BC-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - function Get_type_: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_checked(p: WordBool); safecall; - function Get_checked: WordBool; safecall; - procedure Set_defaultChecked(p: WordBool); safecall; - function Get_defaultChecked: WordBool; safecall; - procedure Set_onchange(p: OleVariant); safecall; - function Get_onchange: OleVariant; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - procedure Set_status(p: WordBool); safecall; - function Get_status: WordBool; safecall; - procedure Set_indeterminate(p: WordBool); safecall; - function Get_indeterminate: WordBool; safecall; - function Get_form: IHTMLFormElement; safecall; - property value: WideString read Get_value write Set_value; - property type_: WideString read Get_type_; - property name: WideString read Get_name write Set_name; - property checked: WordBool read Get_checked write Set_checked; - property defaultChecked: WordBool read Get_defaultChecked write Set_defaultChecked; - property onchange: OleVariant read Get_onchange write Set_onchange; - property disabled: WordBool read Get_disabled write Set_disabled; - property status: WordBool read Get_status write Set_status; - property indeterminate: WordBool read Get_indeterminate write Set_indeterminate; - property form: IHTMLFormElement read Get_form; - end; - -// *********************************************************************// -// DispIntf: IHTMLOptionButtonElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2BC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOptionButtonElementDisp = dispinterface - ['{3050F2BC-98B5-11CF-BB82-00AA00BDCE0B}'] - property value: WideString dispid - 2147413011; - property type_: WideString readonly dispid 2000; - property name: WideString dispid - 2147418112; - property checked: WordBool dispid 2009; - property defaultChecked: WordBool dispid 2008; - property onchange: OleVariant dispid - 2147412082; - property disabled: WordBool dispid - 2147418036; - property status: WordBool dispid 2001; - property indeterminate: WordBool dispid 2007; - property form: IHTMLFormElement readonly dispid - 2147416108; - end; - -// *********************************************************************// -// Interface: IHTMLInputImage -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2C2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputImage = interface(IDispatch) - ['{3050F2C2-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_type_: WideString; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - procedure Set_border(p: OleVariant); safecall; - function Get_border: OleVariant; safecall; - procedure Set_vspace(p: Integer); safecall; - function Get_vspace: Integer; safecall; - procedure Set_hspace(p: Integer); safecall; - function Get_hspace: Integer; safecall; - procedure Set_alt(const p: WideString); safecall; - function Get_alt: WideString; safecall; - procedure Set_src(const p: WideString); safecall; - function Get_src: WideString; safecall; - procedure Set_lowsrc(const p: WideString); safecall; - function Get_lowsrc: WideString; safecall; - procedure Set_vrml(const p: WideString); safecall; - function Get_vrml: WideString; safecall; - procedure Set_dynsrc(const p: WideString); safecall; - function Get_dynsrc: WideString; safecall; - function Get_readyState: WideString; safecall; - function Get_complete: WordBool; safecall; - procedure Set_loop(p: OleVariant); safecall; - function Get_loop: OleVariant; safecall; - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_onload(p: OleVariant); safecall; - function Get_onload: OleVariant; safecall; - procedure Set_onerror(p: OleVariant); safecall; - function Get_onerror: OleVariant; safecall; - procedure Set_onabort(p: OleVariant); safecall; - function Get_onabort: OleVariant; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_width(p: Integer); safecall; - function Get_width: Integer; safecall; - procedure Set_height(p: Integer); safecall; - function Get_height: Integer; safecall; - procedure Set_Start(const p: WideString); safecall; - function Get_Start: WideString; safecall; - property type_: WideString read Get_type_; - property disabled: WordBool read Get_disabled write Set_disabled; - property border: OleVariant read Get_border write Set_border; - property vspace: Integer read Get_vspace write Set_vspace; - property hspace: Integer read Get_hspace write Set_hspace; - property alt: WideString read Get_alt write Set_alt; - property src: WideString read Get_src write Set_src; - property lowsrc: WideString read Get_lowsrc write Set_lowsrc; - property vrml: WideString read Get_vrml write Set_vrml; - property dynsrc: WideString read Get_dynsrc write Set_dynsrc; - property readyState: WideString read Get_readyState; - property complete: WordBool read Get_complete; - property loop: OleVariant read Get_loop write Set_loop; - property align: WideString read Get_align write Set_align; - property onload: OleVariant read Get_onload write Set_onload; - property onerror: OleVariant read Get_onerror write Set_onerror; - property onabort: OleVariant read Get_onabort write Set_onabort; - property name: WideString read Get_name write Set_name; - property width: Integer read Get_width write Set_width; - property height: Integer read Get_height write Set_height; - property Start: WideString read Get_Start write Set_Start; - end; - -// *********************************************************************// -// DispIntf: IHTMLInputImageDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2C2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLInputImageDisp = dispinterface - ['{3050F2C2-98B5-11CF-BB82-00AA00BDCE0B}'] - property type_: WideString readonly dispid 2000; - property disabled: WordBool dispid - 2147418036; - property border: OleVariant dispid 2012; - property vspace: Integer dispid 2013; - property hspace: Integer dispid 2014; - property alt: WideString dispid 2010; - property src: WideString dispid 2011; - property lowsrc: WideString dispid 2015; - property vrml: WideString dispid 2016; - property dynsrc: WideString dispid 2017; - property readyState: WideString readonly dispid - 2147412996; - property complete: WordBool readonly dispid 2018; - property loop: OleVariant dispid 2019; - property align: WideString dispid - 2147418039; - property onload: OleVariant dispid - 2147412080; - property onerror: OleVariant dispid - 2147412083; - property onabort: OleVariant dispid - 2147412084; - property name: WideString dispid - 2147418112; - property width: Integer dispid - 2147418107; - property height: Integer dispid - 2147418106; - property Start: WideString dispid 2020; - end; - -// *********************************************************************// -// DispIntf: DispHTMLInputElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F57D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLInputElement = dispinterface - ['{3050F57D-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property type_: WideString dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: WordBool dispid 2001; - property form: IHTMLFormElement readonly dispid - 2147416108; - property size: Integer dispid 2002; - property maxLength: Integer dispid 2003; - procedure select; dispid 2004; - property onchange: OleVariant dispid - 2147412082; - property onselect: OleVariant dispid - 2147412102; - property defaultValue: WideString dispid - 2147413029; - property readOnly: WordBool dispid 2005; - function createTextRange: IHTMLTxtRange; dispid 2006; - property indeterminate: WordBool dispid 2007; - property defaultChecked: WordBool dispid 2008; - property checked: WordBool dispid 2009; - property border: OleVariant dispid 2012; - property vspace: Integer dispid 2013; - property hspace: Integer dispid 2014; - property alt: WideString dispid 2010; - property src: WideString dispid 2011; - property lowsrc: WideString dispid 2015; - property vrml: WideString dispid 2016; - property dynsrc: WideString dispid 2017; - property complete: WordBool readonly dispid 2018; - property loop: OleVariant dispid 2019; - property align: WideString dispid - 2147418039; - property onload: OleVariant dispid - 2147412080; - property onerror: OleVariant dispid - 2147412083; - property onabort: OleVariant dispid - 2147412084; - property width: Integer dispid - 2147418107; - property height: Integer dispid - 2147418106; - property Start: WideString dispid 2020; - property accept: WideString dispid 2022; - property useMap: WideString dispid 2023; - end; - -// *********************************************************************// -// Interface: IHTMLTextAreaElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2AA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTextAreaElement = interface(IDispatch) - ['{3050F2AA-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_type_: WideString; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_status(p: OleVariant); safecall; - function Get_status: OleVariant; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - function Get_form: IHTMLFormElement; safecall; - procedure Set_defaultValue(const p: WideString); safecall; - function Get_defaultValue: WideString; safecall; - procedure select; safecall; - procedure Set_onchange(p: OleVariant); safecall; - function Get_onchange: OleVariant; safecall; - procedure Set_onselect(p: OleVariant); safecall; - function Get_onselect: OleVariant; safecall; - procedure Set_readOnly(p: WordBool); safecall; - function Get_readOnly: WordBool; safecall; - procedure Set_rows(p: Integer); safecall; - function Get_rows: Integer; safecall; - procedure Set_cols(p: Integer); safecall; - function Get_cols: Integer; safecall; - procedure Set_wrap(const p: WideString); safecall; - function Get_wrap: WideString; safecall; - function createTextRange: IHTMLTxtRange; safecall; - property type_: WideString read Get_type_; - property value: WideString read Get_value write Set_value; - property name: WideString read Get_name write Set_name; - property status: OleVariant read Get_status write Set_status; - property disabled: WordBool read Get_disabled write Set_disabled; - property form: IHTMLFormElement read Get_form; - property defaultValue: WideString read Get_defaultValue write Set_defaultValue; - property onchange: OleVariant read Get_onchange write Set_onchange; - property onselect: OleVariant read Get_onselect write Set_onselect; - property readOnly: WordBool read Get_readOnly write Set_readOnly; - property rows: Integer read Get_rows write Set_rows; - property cols: Integer read Get_cols write Set_cols; - property wrap: WideString read Get_wrap write Set_wrap; - end; - -// *********************************************************************// -// DispIntf: IHTMLTextAreaElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2AA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTextAreaElementDisp = dispinterface - ['{3050F2AA-98B5-11CF-BB82-00AA00BDCE0B}'] - property type_: WideString readonly dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 2001; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - property defaultValue: WideString dispid - 2147413029; - procedure select; dispid 7005; - property onchange: OleVariant dispid - 2147412082; - property onselect: OleVariant dispid - 2147412102; - property readOnly: WordBool dispid 7004; - property rows: Integer dispid 7001; - property cols: Integer dispid 7002; - property wrap: WideString dispid 7003; - function createTextRange: IHTMLTxtRange; dispid 7006; - end; - -// *********************************************************************// -// DispIntf: DispHTMLTextAreaElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F521-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLTextAreaElement = dispinterface - ['{3050F521-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property type_: WideString readonly dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 2001; - property form: IHTMLFormElement readonly dispid - 2147416108; - property defaultValue: WideString dispid - 2147413029; - procedure select; dispid 7005; - property onchange: OleVariant dispid - 2147412082; - property onselect: OleVariant dispid - 2147412102; - property readOnly: WordBool dispid 7004; - property rows: Integer dispid 7001; - property cols: Integer dispid 7002; - property wrap: WideString dispid 7003; - function createTextRange: IHTMLTxtRange; dispid 7006; - end; - -// *********************************************************************// -// DispIntf: DispHTMLRichtextElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F54D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLRichtextElement = dispinterface - ['{3050F54D-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property type_: WideString readonly dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 2001; - property form: IHTMLFormElement readonly dispid - 2147416108; - property defaultValue: WideString dispid - 2147413029; - procedure select; dispid 7005; - property onchange: OleVariant dispid - 2147412082; - property onselect: OleVariant dispid - 2147412102; - property readOnly: WordBool dispid 7004; - property rows: Integer dispid 7001; - property cols: Integer dispid 7002; - property wrap: WideString dispid 7003; - function createTextRange: IHTMLTxtRange; dispid 7006; - end; - -// *********************************************************************// -// Interface: IHTMLButtonElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2BB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLButtonElement = interface(IDispatch) - ['{3050F2BB-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_type_: WideString; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_status(p: OleVariant); safecall; - function Get_status: OleVariant; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - function Get_form: IHTMLFormElement; safecall; - function createTextRange: IHTMLTxtRange; safecall; - property type_: WideString read Get_type_; - property value: WideString read Get_value write Set_value; - property name: WideString read Get_name write Set_name; - property status: OleVariant read Get_status write Set_status; - property disabled: WordBool read Get_disabled write Set_disabled; - property form: IHTMLFormElement read Get_form; - end; - -// *********************************************************************// -// DispIntf: IHTMLButtonElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2BB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLButtonElementDisp = dispinterface - ['{3050F2BB-98B5-11CF-BB82-00AA00BDCE0B}'] - property type_: WideString readonly dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 8001; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - function createTextRange: IHTMLTxtRange; dispid 8002; - end; - -// *********************************************************************// -// DispIntf: DispHTMLButtonElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F51F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLButtonElement = dispinterface - ['{3050F51F-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property type_: WideString readonly dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 8001; - property form: IHTMLFormElement readonly dispid - 2147416108; - function createTextRange: IHTMLTxtRange; dispid 8002; - end; - -// *********************************************************************// -// DispIntf: HTMLMarqueeElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F61F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLMarqueeElementEvents2 = dispinterface - ['{3050F61F-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - procedure onchange(const pEvtObj: IHTMLEventObj); dispid 1001; - procedure onselect(const pEvtObj: IHTMLEventObj); dispid 1006; - procedure onbounce(const pEvtObj: IHTMLEventObj); dispid 1009; - procedure onfinish(const pEvtObj: IHTMLEventObj); dispid 1010; - procedure onstart(const pEvtObj: IHTMLEventObj); dispid 1011; - end; - -// *********************************************************************// -// DispIntf: HTMLMarqueeElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F2B8-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLMarqueeElementEvents = dispinterface - ['{3050F2B8-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - procedure onchange; dispid 1001; - procedure onselect; dispid 1006; - procedure onbounce; dispid 1009; - procedure onfinish; dispid 1010; - procedure onstart; dispid 1011; - end; - -// *********************************************************************// -// Interface: IHTMLMarqueeElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2B5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLMarqueeElement = interface(IDispatch) - ['{3050F2B5-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_bgColor(p: OleVariant); safecall; - function Get_bgColor: OleVariant; safecall; - procedure Set_scrollDelay(p: Integer); safecall; - function Get_scrollDelay: Integer; safecall; - procedure Set_direction(const p: WideString); safecall; - function Get_direction: WideString; safecall; - procedure Set_behavior(const p: WideString); safecall; - function Get_behavior: WideString; safecall; - procedure Set_scrollAmount(p: Integer); safecall; - function Get_scrollAmount: Integer; safecall; - procedure Set_loop(p: Integer); safecall; - function Get_loop: Integer; safecall; - procedure Set_vspace(p: Integer); safecall; - function Get_vspace: Integer; safecall; - procedure Set_hspace(p: Integer); safecall; - function Get_hspace: Integer; safecall; - procedure Set_onfinish(p: OleVariant); safecall; - function Get_onfinish: OleVariant; safecall; - procedure Set_onstart(p: OleVariant); safecall; - function Get_onstart: OleVariant; safecall; - procedure Set_onbounce(p: OleVariant); safecall; - function Get_onbounce: OleVariant; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - procedure Set_height(p: OleVariant); safecall; - function Get_height: OleVariant; safecall; - procedure Set_trueSpeed(p: WordBool); safecall; - function Get_trueSpeed: WordBool; safecall; - procedure Start; safecall; - procedure stop; safecall; - property bgColor: OleVariant read Get_bgColor write Set_bgColor; - property scrollDelay: Integer read Get_scrollDelay write Set_scrollDelay; - property direction: WideString read Get_direction write Set_direction; - property behavior: WideString read Get_behavior write Set_behavior; - property scrollAmount: Integer read Get_scrollAmount write Set_scrollAmount; - property loop: Integer read Get_loop write Set_loop; - property vspace: Integer read Get_vspace write Set_vspace; - property hspace: Integer read Get_hspace write Set_hspace; - property onfinish: OleVariant read Get_onfinish write Set_onfinish; - property onstart: OleVariant read Get_onstart write Set_onstart; - property onbounce: OleVariant read Get_onbounce write Set_onbounce; - property width: OleVariant read Get_width write Set_width; - property height: OleVariant read Get_height write Set_height; - property trueSpeed: WordBool read Get_trueSpeed write Set_trueSpeed; - end; - -// *********************************************************************// -// DispIntf: IHTMLMarqueeElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2B5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLMarqueeElementDisp = dispinterface - ['{3050F2B5-98B5-11CF-BB82-00AA00BDCE0B}'] - property bgColor: OleVariant dispid - 501; - property scrollDelay: Integer dispid 6000; - property direction: WideString dispid 6001; - property behavior: WideString dispid 6002; - property scrollAmount: Integer dispid 6003; - property loop: Integer dispid 6004; - property vspace: Integer dispid 6005; - property hspace: Integer dispid 6006; - property onfinish: OleVariant dispid - 2147412086; - property onstart: OleVariant dispid - 2147412085; - property onbounce: OleVariant dispid - 2147412092; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property trueSpeed: WordBool dispid 6007; - procedure Start; dispid 6010; - procedure stop; dispid 6011; - end; - -// *********************************************************************// -// DispIntf: DispHTMLMarqueeElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F527-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLMarqueeElement = dispinterface - ['{3050F527-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property bgColor: OleVariant dispid - 501; - property scrollDelay: Integer dispid 6000; - property direction: WideString dispid 6001; - property behavior: WideString dispid 6002; - property scrollAmount: Integer dispid 6003; - property loop: Integer dispid 6004; - property vspace: Integer dispid 6005; - property hspace: Integer dispid 6006; - property onfinish: OleVariant dispid - 2147412086; - property onstart: OleVariant dispid - 2147412085; - property onbounce: OleVariant dispid - 2147412092; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property trueSpeed: WordBool dispid 6007; - procedure Start; dispid 6010; - procedure stop; dispid 6011; - end; - -// *********************************************************************// -// Interface: IHTMLHtmlElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F81C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLHtmlElement = interface(IDispatch) - ['{3050F81C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_version(const p: WideString); safecall; - function Get_version: WideString; safecall; - property version: WideString read Get_version write Set_version; - end; - -// *********************************************************************// -// DispIntf: IHTMLHtmlElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F81C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLHtmlElementDisp = dispinterface - ['{3050F81C-98B5-11CF-BB82-00AA00BDCE0B}'] - property version: WideString dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLHeadElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F81D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLHeadElement = interface(IDispatch) - ['{3050F81D-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_profile(const p: WideString); safecall; - function Get_profile: WideString; safecall; - property profile: WideString read Get_profile write Set_profile; - end; - -// *********************************************************************// -// DispIntf: IHTMLHeadElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F81D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLHeadElementDisp = dispinterface - ['{3050F81D-98B5-11CF-BB82-00AA00BDCE0B}'] - property profile: WideString dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLTitleElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F322-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTitleElement = interface(IDispatch) - ['{3050F322-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_text(const p: WideString); safecall; - function Get_text: WideString; safecall; - property text: WideString read Get_text write Set_text; - end; - -// *********************************************************************// -// DispIntf: IHTMLTitleElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F322-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTitleElementDisp = dispinterface - ['{3050F322-98B5-11CF-BB82-00AA00BDCE0B}'] - property text: WideString dispid - 2147413011; - end; - -// *********************************************************************// -// Interface: IHTMLMetaElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F203-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLMetaElement = interface(IDispatch) - ['{3050F203-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_httpEquiv(const p: WideString); safecall; - function Get_httpEquiv: WideString; safecall; - procedure Set_content(const p: WideString); safecall; - function Get_content: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_url(const p: WideString); safecall; - function Get_url: WideString; safecall; - procedure Set_charset(const p: WideString); safecall; - function Get_charset: WideString; safecall; - property httpEquiv: WideString read Get_httpEquiv write Set_httpEquiv; - property content: WideString read Get_content write Set_content; - property name: WideString read Get_name write Set_name; - property url: WideString read Get_url write Set_url; - property charset: WideString read Get_charset write Set_charset; - end; - -// *********************************************************************// -// DispIntf: IHTMLMetaElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F203-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLMetaElementDisp = dispinterface - ['{3050F203-98B5-11CF-BB82-00AA00BDCE0B}'] - property httpEquiv: WideString dispid 1001; - property content: WideString dispid 1002; - property name: WideString dispid - 2147418112; - property url: WideString dispid 1003; - property charset: WideString dispid 1013; - end; - -// *********************************************************************// -// Interface: IHTMLMetaElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F81F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLMetaElement2 = interface(IDispatch) - ['{3050F81F-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_scheme(const p: WideString); safecall; - function Get_scheme: WideString; safecall; - property scheme: WideString read Get_scheme write Set_scheme; - end; - -// *********************************************************************// -// DispIntf: IHTMLMetaElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F81F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLMetaElement2Disp = dispinterface - ['{3050F81F-98B5-11CF-BB82-00AA00BDCE0B}'] - property scheme: WideString dispid 1020; - end; - -// *********************************************************************// -// Interface: IHTMLBaseElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F204-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBaseElement = interface(IDispatch) - ['{3050F204-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_href(const p: WideString); safecall; - function Get_href: WideString; safecall; - procedure Set_target(const p: WideString); safecall; - function Get_target: WideString; safecall; - property href: WideString read Get_href write Set_href; - property target: WideString read Get_target write Set_target; - end; - -// *********************************************************************// -// DispIntf: IHTMLBaseElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F204-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBaseElementDisp = dispinterface - ['{3050F204-98B5-11CF-BB82-00AA00BDCE0B}'] - property href: WideString dispid 1003; - property target: WideString dispid 1004; - end; - -// *********************************************************************// -// Interface: IHTMLIsIndexElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F206-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLIsIndexElement = interface(IDispatch) - ['{3050F206-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_prompt(const p: WideString); safecall; - function Get_prompt: WideString; safecall; - procedure Set_action(const p: WideString); safecall; - function Get_action: WideString; safecall; - property prompt: WideString read Get_prompt write Set_prompt; - property action: WideString read Get_action write Set_action; - end; - -// *********************************************************************// -// DispIntf: IHTMLIsIndexElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F206-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLIsIndexElementDisp = dispinterface - ['{3050F206-98B5-11CF-BB82-00AA00BDCE0B}'] - property prompt: WideString dispid 1010; - property action: WideString dispid 1011; - end; - -// *********************************************************************// -// Interface: IHTMLIsIndexElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLIsIndexElement2 = interface(IDispatch) - ['{3050F82F-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_form: IHTMLFormElement; safecall; - property form: IHTMLFormElement read Get_form; - end; - -// *********************************************************************// -// DispIntf: IHTMLIsIndexElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLIsIndexElement2Disp = dispinterface - ['{3050F82F-98B5-11CF-BB82-00AA00BDCE0B}'] - property form: IHTMLFormElement readonly dispid 1012; - end; - -// *********************************************************************// -// Interface: IHTMLNextIdElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F207-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLNextIdElement = interface(IDispatch) - ['{3050F207-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_n(const p: WideString); safecall; - function Get_n: WideString; safecall; - property n: WideString read Get_n write Set_n; - end; - -// *********************************************************************// -// DispIntf: IHTMLNextIdElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F207-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLNextIdElementDisp = dispinterface - ['{3050F207-98B5-11CF-BB82-00AA00BDCE0B}'] - property n: WideString dispid 1012; - end; - -// *********************************************************************// -// DispIntf: DispHTMLHtmlElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F560-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLHtmlElement = dispinterface - ['{3050F560-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property version: WideString dispid 1001; - end; - -// *********************************************************************// -// DispIntf: DispHTMLHeadElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F561-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLHeadElement = dispinterface - ['{3050F561-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property profile: WideString dispid 1001; - end; - -// *********************************************************************// -// DispIntf: DispHTMLTitleElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F516-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLTitleElement = dispinterface - ['{3050F516-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property text: WideString dispid - 2147413011; - end; - -// *********************************************************************// -// DispIntf: DispHTMLMetaElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F517-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLMetaElement = dispinterface - ['{3050F517-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property httpEquiv: WideString dispid 1001; - property content: WideString dispid 1002; - property name: WideString dispid - 2147418112; - property url: WideString dispid 1003; - property charset: WideString dispid 1013; - property scheme: WideString dispid 1020; - end; - -// *********************************************************************// -// DispIntf: DispHTMLBaseElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F518-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLBaseElement = dispinterface - ['{3050F518-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property href: WideString dispid 1003; - property target: WideString dispid 1004; - end; - -// *********************************************************************// -// DispIntf: DispHTMLIsIndexElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F519-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLIsIndexElement = dispinterface - ['{3050F519-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property prompt: WideString dispid 1010; - property action: WideString dispid 1011; - property form: IHTMLFormElement readonly dispid 1012; - end; - -// *********************************************************************// -// DispIntf: DispHTMLNextIdElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F51A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLNextIdElement = dispinterface - ['{3050F51A-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property n: WideString dispid 1012; - end; - -// *********************************************************************// -// Interface: IHTMLBaseFontElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F202-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBaseFontElement = interface(IDispatch) - ['{3050F202-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_color(p: OleVariant); safecall; - function Get_color: OleVariant; safecall; - procedure Set_face(const p: WideString); safecall; - function Get_face: WideString; safecall; - procedure Set_size(p: Integer); safecall; - function Get_size: Integer; safecall; - property color: OleVariant read Get_color write Set_color; - property face: WideString read Get_face write Set_face; - property size: Integer read Get_size write Set_size; - end; - -// *********************************************************************// -// DispIntf: IHTMLBaseFontElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F202-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBaseFontElementDisp = dispinterface - ['{3050F202-98B5-11CF-BB82-00AA00BDCE0B}'] - property color: OleVariant dispid - 2147413110; - property face: WideString dispid - 2147413094; - property size: Integer dispid - 2147413086; - end; - -// *********************************************************************// -// DispIntf: DispHTMLBaseFontElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F504-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLBaseFontElement = dispinterface - ['{3050F504-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property color: OleVariant dispid - 2147413110; - property face: WideString dispid - 2147413094; - property size: Integer dispid - 2147413086; - end; - -// *********************************************************************// -// Interface: IHTMLUnknownElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F209-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLUnknownElement = interface(IDispatch) - ['{3050F209-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: IHTMLUnknownElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F209-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLUnknownElementDisp = dispinterface - ['{3050F209-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: DispHTMLUnknownElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F539-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLUnknownElement = dispinterface - ['{3050F539-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - end; - -// *********************************************************************// -// Interface: IOmHistory -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {FECEAAA2-8405-11CF-8BA1-00AA00476DA6} -// *********************************************************************// - IOmHistory = interface(IDispatch) - ['{FECEAAA2-8405-11CF-8BA1-00AA00476DA6}'] - function Get_length: Smallint; safecall; - procedure back(var pvargdistance: OleVariant); safecall; - procedure forward(var pvargdistance: OleVariant); safecall; - procedure go(var pvargdistance: OleVariant); safecall; - property length: Smallint read Get_length; - end; - -// *********************************************************************// -// DispIntf: IOmHistoryDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {FECEAAA2-8405-11CF-8BA1-00AA00476DA6} -// *********************************************************************// - IOmHistoryDisp = dispinterface - ['{FECEAAA2-8405-11CF-8BA1-00AA00476DA6}'] - property length: Smallint readonly dispid 1; - procedure back(var pvargdistance: OleVariant); dispid 2; - procedure forward(var pvargdistance: OleVariant); dispid 3; - procedure go(var pvargdistance: OleVariant); dispid 4; - end; - -// *********************************************************************// -// Interface: IHTMLMimeTypesCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3FC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLMimeTypesCollection = interface(IDispatch) - ['{3050F3FC-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - property length: Integer read Get_length; - end; - -// *********************************************************************// -// DispIntf: IHTMLMimeTypesCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3FC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLMimeTypesCollectionDisp = dispinterface - ['{3050F3FC-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1; - end; - -// *********************************************************************// -// Interface: IHTMLPluginsCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3FD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPluginsCollection = interface(IDispatch) - ['{3050F3FD-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - procedure refresh(reload: WordBool); safecall; - property length: Integer read Get_length; - end; - -// *********************************************************************// -// DispIntf: IHTMLPluginsCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3FD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPluginsCollectionDisp = dispinterface - ['{3050F3FD-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1; - procedure refresh(reload: WordBool); dispid 2; - end; - -// *********************************************************************// -// Interface: IHTMLOpsProfile -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F401-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOpsProfile = interface(IDispatch) - ['{3050F401-98B5-11CF-BB82-00AA00BDCE0B}'] - function addRequest(const name: WideString; reserved: OleVariant): WordBool; safecall; - procedure clearRequest; safecall; - procedure doRequest(usage: OleVariant; fname: OleVariant; domain: OleVariant; path: OleVariant; - expire: OleVariant; reserved: OleVariant); safecall; - function getAttribute(const name: WideString): WideString; safecall; - function setAttribute(const name: WideString; const value: WideString; prefs: OleVariant): WordBool; safecall; - function commitChanges: WordBool; safecall; - function addReadRequest(const name: WideString; reserved: OleVariant): WordBool; safecall; - procedure doReadRequest(usage: OleVariant; fname: OleVariant; domain: OleVariant; - path: OleVariant; expire: OleVariant; reserved: OleVariant); safecall; - function doWriteRequest: WordBool; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLOpsProfileDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F401-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOpsProfileDisp = dispinterface - ['{3050F401-98B5-11CF-BB82-00AA00BDCE0B}'] - function addRequest(const name: WideString; reserved: OleVariant): WordBool; dispid 1; - procedure clearRequest; dispid 2; - procedure doRequest(usage: OleVariant; fname: OleVariant; domain: OleVariant; path: OleVariant; - expire: OleVariant; reserved: OleVariant); dispid 3; - function getAttribute(const name: WideString): WideString; dispid 4; - function setAttribute(const name: WideString; const value: WideString; prefs: OleVariant): WordBool; dispid 5; - function commitChanges: WordBool; dispid 6; - function addReadRequest(const name: WideString; reserved: OleVariant): WordBool; dispid 7; - procedure doReadRequest(usage: OleVariant; fname: OleVariant; domain: OleVariant; - path: OleVariant; expire: OleVariant; reserved: OleVariant); dispid 8; - function doWriteRequest: WordBool; dispid 9; - end; - -// *********************************************************************// -// Interface: IOmNavigator -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {FECEAAA5-8405-11CF-8BA1-00AA00476DA6} -// *********************************************************************// - IOmNavigator = interface(IDispatch) - ['{FECEAAA5-8405-11CF-8BA1-00AA00476DA6}'] - function Get_appCodeName: WideString; safecall; - function Get_appName: WideString; safecall; - function Get_appVersion: WideString; safecall; - function Get_userAgent: WideString; safecall; - function javaEnabled: WordBool; safecall; - function taintEnabled: WordBool; safecall; - function Get_mimeTypes: IHTMLMimeTypesCollection; safecall; - function Get_plugins: IHTMLPluginsCollection; safecall; - function Get_cookieEnabled: WordBool; safecall; - function Get_opsProfile: IHTMLOpsProfile; safecall; - function toString: WideString; safecall; - function Get_cpuClass: WideString; safecall; - function Get_systemLanguage: WideString; safecall; - function Get_browserLanguage: WideString; safecall; - function Get_userLanguage: WideString; safecall; - function Get_platform: WideString; safecall; - function Get_appMinorVersion: WideString; safecall; - function Get_connectionSpeed: Integer; safecall; - function Get_onLine: WordBool; safecall; - function Get_userProfile: IHTMLOpsProfile; safecall; - property appCodeName: WideString read Get_appCodeName; - property appName: WideString read Get_appName; - property appVersion: WideString read Get_appVersion; - property userAgent: WideString read Get_userAgent; - property mimeTypes: IHTMLMimeTypesCollection read Get_mimeTypes; - property plugins: IHTMLPluginsCollection read Get_plugins; - property cookieEnabled: WordBool read Get_cookieEnabled; - property opsProfile: IHTMLOpsProfile read Get_opsProfile; - property cpuClass: WideString read Get_cpuClass; - property systemLanguage: WideString read Get_systemLanguage; - property browserLanguage: WideString read Get_browserLanguage; - property userLanguage: WideString read Get_userLanguage; - property platform: WideString read Get_platform; - property appMinorVersion: WideString read Get_appMinorVersion; - property connectionSpeed: Integer read Get_connectionSpeed; - property onLine: WordBool read Get_onLine; - property userProfile: IHTMLOpsProfile read Get_userProfile; - end; - -// *********************************************************************// -// DispIntf: IOmNavigatorDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {FECEAAA5-8405-11CF-8BA1-00AA00476DA6} -// *********************************************************************// - IOmNavigatorDisp = dispinterface - ['{FECEAAA5-8405-11CF-8BA1-00AA00476DA6}'] - property appCodeName: WideString readonly dispid 1; - property appName: WideString readonly dispid 2; - property appVersion: WideString readonly dispid 3; - property userAgent: WideString readonly dispid 4; - function javaEnabled: WordBool; dispid 5; - function taintEnabled: WordBool; dispid 6; - property mimeTypes: IHTMLMimeTypesCollection readonly dispid 7; - property plugins: IHTMLPluginsCollection readonly dispid 8; - property cookieEnabled: WordBool readonly dispid 9; - property opsProfile: IHTMLOpsProfile readonly dispid 10; - function toString: WideString; dispid 11; - property cpuClass: WideString readonly dispid 12; - property systemLanguage: WideString readonly dispid 13; - property browserLanguage: WideString readonly dispid 14; - property userLanguage: WideString readonly dispid 15; - property platform: WideString readonly dispid 16; - property appMinorVersion: WideString readonly dispid 17; - property connectionSpeed: Integer readonly dispid 18; - property onLine: WordBool readonly dispid 19; - property userProfile: IHTMLOpsProfile readonly dispid 20; - end; - -// *********************************************************************// -// Interface: IHTMLLocation -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {163BB1E0-6E00-11CF-837A-48DC04C10000} -// *********************************************************************// - IHTMLLocation = interface(IDispatch) - ['{163BB1E0-6E00-11CF-837A-48DC04C10000}'] - procedure Set_href(const p: WideString); safecall; - function Get_href: WideString; safecall; - procedure Set_protocol(const p: WideString); safecall; - function Get_protocol: WideString; safecall; - procedure Set_host(const p: WideString); safecall; - function Get_host: WideString; safecall; - procedure Set_hostname(const p: WideString); safecall; - function Get_hostname: WideString; safecall; - procedure Set_port(const p: WideString); safecall; - function Get_port: WideString; safecall; - procedure Set_pathname(const p: WideString); safecall; - function Get_pathname: WideString; safecall; - procedure Set_search(const p: WideString); safecall; - function Get_search: WideString; safecall; - procedure Set_hash(const p: WideString); safecall; - function Get_hash: WideString; safecall; - procedure reload(flag: WordBool); safecall; - procedure replace(const bstr: WideString); safecall; - procedure assign(const bstr: WideString); safecall; - function toString: WideString; safecall; - property href: WideString read Get_href write Set_href; - property protocol: WideString read Get_protocol write Set_protocol; - property host: WideString read Get_host write Set_host; - property hostname: WideString read Get_hostname write Set_hostname; - property port: WideString read Get_port write Set_port; - property pathname: WideString read Get_pathname write Set_pathname; - property search: WideString read Get_search write Set_search; - property hash: WideString read Get_hash write Set_hash; - end; - -// *********************************************************************// -// DispIntf: IHTMLLocationDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {163BB1E0-6E00-11CF-837A-48DC04C10000} -// *********************************************************************// - IHTMLLocationDisp = dispinterface - ['{163BB1E0-6E00-11CF-837A-48DC04C10000}'] - property href: WideString dispid 0; - property protocol: WideString dispid 1; - property host: WideString dispid 2; - property hostname: WideString dispid 3; - property port: WideString dispid 4; - property pathname: WideString dispid 5; - property search: WideString dispid 6; - property hash: WideString dispid 7; - procedure reload(flag: WordBool); dispid 8; - procedure replace(const bstr: WideString); dispid 9; - procedure assign(const bstr: WideString); dispid 10; - function toString: WideString; dispid 11; - end; - -// *********************************************************************// -// Interface: IHTMLBookmarkCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4CE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBookmarkCollection = interface(IDispatch) - ['{3050F4CE-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - function item(index: Integer): OleVariant; safecall; - property length: Integer read Get_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLBookmarkCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4CE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBookmarkCollectionDisp = dispinterface - ['{3050F4CE-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1501; - property _newEnum: IUnknown readonly dispid - 4; - function item(index: Integer): OleVariant; dispid 0; - end; - -// *********************************************************************// -// Interface: IHTMLDataTransfer -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4B3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDataTransfer = interface(IDispatch) - ['{3050F4B3-98B5-11CF-BB82-00AA00BDCE0B}'] - function setData(const format: WideString; var data: OleVariant): WordBool; safecall; - function getData(const format: WideString): OleVariant; safecall; - function clearData(const format: WideString): WordBool; safecall; - procedure Set_dropEffect(const p: WideString); safecall; - function Get_dropEffect: WideString; safecall; - procedure Set_effectAllowed(const p: WideString); safecall; - function Get_effectAllowed: WideString; safecall; - property dropEffect: WideString read Get_dropEffect write Set_dropEffect; - property effectAllowed: WideString read Get_effectAllowed write Set_effectAllowed; - end; - -// *********************************************************************// -// DispIntf: IHTMLDataTransferDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4B3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDataTransferDisp = dispinterface - ['{3050F4B3-98B5-11CF-BB82-00AA00BDCE0B}'] - function setData(const format: WideString; var data: OleVariant): WordBool; dispid 1001; - function getData(const format: WideString): OleVariant; dispid 1002; - function clearData(const format: WideString): WordBool; dispid 1003; - property dropEffect: WideString dispid 1004; - property effectAllowed: WideString dispid 1005; - end; - -// *********************************************************************// -// Interface: IHTMLEventObj2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F48B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEventObj2 = interface(IDispatch) - ['{3050F48B-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); safecall; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; safecall; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; safecall; - procedure Set_propertyName(const p: WideString); safecall; - function Get_propertyName: WideString; safecall; - procedure _Set_bookmarks(const p: IHTMLBookmarkCollection); safecall; - function Get_bookmarks: IHTMLBookmarkCollection; safecall; - procedure _Set_recordset(const p: IDispatch); safecall; - function Get_recordset: IDispatch; safecall; - procedure Set_dataFld(const p: WideString); safecall; - function Get_dataFld: WideString; safecall; - procedure _Set_boundElements(const p: IHTMLElementCollection); safecall; - function Get_boundElements: IHTMLElementCollection; safecall; - procedure Set_repeat_(p: WordBool); safecall; - function Get_repeat_: WordBool; safecall; - procedure Set_srcUrn(const p: WideString); safecall; - function Get_srcUrn: WideString; safecall; - procedure _Set_srcElement(const p: IHTMLElement); safecall; - function Get_srcElement: IHTMLElement; safecall; - procedure Set_altKey(p: WordBool); safecall; - function Get_altKey: WordBool; safecall; - procedure Set_ctrlKey(p: WordBool); safecall; - function Get_ctrlKey: WordBool; safecall; - procedure Set_shiftKey(p: WordBool); safecall; - function Get_shiftKey: WordBool; safecall; - procedure _Set_fromElement(const p: IHTMLElement); safecall; - function Get_fromElement: IHTMLElement; safecall; - procedure _Set_toElement(const p: IHTMLElement); safecall; - function Get_toElement: IHTMLElement; safecall; - procedure Set_button(p: Integer); safecall; - function Get_button: Integer; safecall; - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - procedure Set_qualifier(const p: WideString); safecall; - function Get_qualifier: WideString; safecall; - procedure Set_reason(p: Integer); safecall; - function Get_reason: Integer; safecall; - procedure Set_x(p: Integer); safecall; - function Get_x: Integer; safecall; - procedure Set_y(p: Integer); safecall; - function Get_y: Integer; safecall; - procedure Set_clientX(p: Integer); safecall; - function Get_clientX: Integer; safecall; - procedure Set_clientY(p: Integer); safecall; - function Get_clientY: Integer; safecall; - procedure Set_offsetX(p: Integer); safecall; - function Get_offsetX: Integer; safecall; - procedure Set_offsetY(p: Integer); safecall; - function Get_offsetY: Integer; safecall; - procedure Set_screenX(p: Integer); safecall; - function Get_screenX: Integer; safecall; - procedure Set_screenY(p: Integer); safecall; - function Get_screenY: Integer; safecall; - procedure _Set_srcFilter(const p: IDispatch); safecall; - function Get_srcFilter: IDispatch; safecall; - function Get_dataTransfer: IHTMLDataTransfer; safecall; - property propertyName: WideString read Get_propertyName write Set_propertyName; - property bookmarks: IHTMLBookmarkCollection read Get_bookmarks write _Set_bookmarks; - property recordset: IDispatch read Get_recordset write _Set_recordset; - property dataFld: WideString read Get_dataFld write Set_dataFld; - property boundElements: IHTMLElementCollection read Get_boundElements write _Set_boundElements; - property repeat_: WordBool read Get_repeat_ write Set_repeat_; - property srcUrn: WideString read Get_srcUrn write Set_srcUrn; - property srcElement: IHTMLElement read Get_srcElement write _Set_srcElement; - property altKey: WordBool read Get_altKey write Set_altKey; - property ctrlKey: WordBool read Get_ctrlKey write Set_ctrlKey; - property shiftKey: WordBool read Get_shiftKey write Set_shiftKey; - property fromElement: IHTMLElement read Get_fromElement write _Set_fromElement; - property toElement: IHTMLElement read Get_toElement write _Set_toElement; - property button: Integer read Get_button write Set_button; - property type_: WideString read Get_type_ write Set_type_; - property qualifier: WideString read Get_qualifier write Set_qualifier; - property reason: Integer read Get_reason write Set_reason; - property x: Integer read Get_x write Set_x; - property y: Integer read Get_y write Set_y; - property clientX: Integer read Get_clientX write Set_clientX; - property clientY: Integer read Get_clientY write Set_clientY; - property offsetX: Integer read Get_offsetX write Set_offsetX; - property offsetY: Integer read Get_offsetY write Set_offsetY; - property screenX: Integer read Get_screenX write Set_screenX; - property screenY: Integer read Get_screenY write Set_screenY; - property srcFilter: IDispatch read Get_srcFilter write _Set_srcFilter; - property dataTransfer: IHTMLDataTransfer read Get_dataTransfer; - end; - -// *********************************************************************// -// DispIntf: IHTMLEventObj2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F48B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEventObj2Disp = dispinterface - ['{3050F48B-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property propertyName: WideString dispid 1027; - property bookmarks: IHTMLBookmarkCollection dispid 1031; - property recordset: IDispatch dispid 1032; - property dataFld: WideString dispid 1033; - property boundElements: IHTMLElementCollection dispid 1034; - property repeat_: WordBool dispid 1035; - property srcUrn: WideString dispid 1036; - property srcElement: IHTMLElement dispid 1001; - property altKey: WordBool dispid 1002; - property ctrlKey: WordBool dispid 1003; - property shiftKey: WordBool dispid 1004; - property fromElement: IHTMLElement dispid 1009; - property toElement: IHTMLElement dispid 1010; - property button: Integer dispid 1012; - property type_: WideString dispid 1013; - property qualifier: WideString dispid 1014; - property reason: Integer dispid 1015; - property x: Integer dispid 1005; - property y: Integer dispid 1006; - property clientX: Integer dispid 1020; - property clientY: Integer dispid 1021; - property offsetX: Integer dispid 1022; - property offsetY: Integer dispid 1023; - property screenX: Integer dispid 1024; - property screenY: Integer dispid 1025; - property srcFilter: IDispatch dispid 1026; - property dataTransfer: IHTMLDataTransfer readonly dispid 1037; - end; - -// *********************************************************************// -// Interface: IHTMLEventObj3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F680-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEventObj3 = interface(IDispatch) - ['{3050F680-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_contentOverflow: WordBool; safecall; - procedure Set_shiftLeft(p: WordBool); safecall; - function Get_shiftLeft: WordBool; safecall; - procedure Set_altLeft(p: WordBool); safecall; - function Get_altLeft: WordBool; safecall; - procedure Set_ctrlLeft(p: WordBool); safecall; - function Get_ctrlLeft: WordBool; safecall; - function Get_imeCompositionChange: LONG_PTR; safecall; - function Get_imeNotifyCommand: LONG_PTR; safecall; - function Get_imeNotifyData: LONG_PTR; safecall; - function Get_imeRequest: LONG_PTR; safecall; - function Get_imeRequestData: LONG_PTR; safecall; - function Get_keyboardLayout: LONG_PTR; safecall; - function Get_behaviorCookie: Integer; safecall; - function Get_behaviorPart: Integer; safecall; - function Get_nextPage: WideString; safecall; - property contentOverflow: WordBool read Get_contentOverflow; - property shiftLeft: WordBool read Get_shiftLeft write Set_shiftLeft; - property altLeft: WordBool read Get_altLeft write Set_altLeft; - property ctrlLeft: WordBool read Get_ctrlLeft write Set_ctrlLeft; - property imeCompositionChange: LONG_PTR read Get_imeCompositionChange; - property imeNotifyCommand: LONG_PTR read Get_imeNotifyCommand; - property imeNotifyData: LONG_PTR read Get_imeNotifyData; - property imeRequest: LONG_PTR read Get_imeRequest; - property imeRequestData: LONG_PTR read Get_imeRequestData; - property keyboardLayout: LONG_PTR read Get_keyboardLayout; - property behaviorCookie: Integer read Get_behaviorCookie; - property behaviorPart: Integer read Get_behaviorPart; - property nextPage: WideString read Get_nextPage; - end; - -// *********************************************************************// -// DispIntf: IHTMLEventObj3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F680-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEventObj3Disp = dispinterface - ['{3050F680-98B5-11CF-BB82-00AA00BDCE0B}'] - property contentOverflow: WordBool readonly dispid 1038; - property shiftLeft: WordBool dispid 1039; - property altLeft: WordBool dispid 1040; - property ctrlLeft: WordBool dispid 1041; - property imeCompositionChange: LONG_PTR readonly dispid 1042; - property imeNotifyCommand: LONG_PTR readonly dispid 1043; - property imeNotifyData: LONG_PTR readonly dispid 1044; - property imeRequest: LONG_PTR readonly dispid 1046; - property imeRequestData: LONG_PTR readonly dispid 1047; - property keyboardLayout: LONG_PTR readonly dispid 1045; - property behaviorCookie: Integer readonly dispid 1048; - property behaviorPart: Integer readonly dispid 1049; - property nextPage: WideString readonly dispid 1050; - end; - -// *********************************************************************// -// Interface: IHTMLEventObj4 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F814-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEventObj4 = interface(IDispatch) - ['{3050F814-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_wheelDelta: Integer; safecall; - property wheelDelta: Integer read Get_wheelDelta; - end; - -// *********************************************************************// -// DispIntf: IHTMLEventObj4Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F814-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEventObj4Disp = dispinterface - ['{3050F814-98B5-11CF-BB82-00AA00BDCE0B}'] - property wheelDelta: Integer readonly dispid 1051; - end; - -// *********************************************************************// -// DispIntf: DispCEventObj -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F558-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispCEventObj = dispinterface - ['{3050F558-98B5-11CF-BB82-00AA00BDCE0B}'] - property returnValue: OleVariant dispid 1007; - property cancelBubble: WordBool dispid 1008; - property keyCode: Integer dispid 1011; - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property propertyName: WideString dispid 1027; - property bookmarks: IHTMLBookmarkCollection dispid 1031; - property recordset: IDispatch dispid 1032; - property dataFld: WideString dispid 1033; - property boundElements: IHTMLElementCollection dispid 1034; - property repeat_: WordBool dispid 1035; - property srcUrn: WideString dispid 1036; - property srcElement: IHTMLElement dispid 1001; - property altKey: WordBool dispid 1002; - property ctrlKey: WordBool dispid 1003; - property shiftKey: WordBool dispid 1004; - property fromElement: IHTMLElement dispid 1009; - property toElement: IHTMLElement dispid 1010; - property button: Integer dispid 1012; - property type_: WideString dispid 1013; - property qualifier: WideString dispid 1014; - property reason: Integer dispid 1015; - property x: Integer dispid 1005; - property y: Integer dispid 1006; - property clientX: Integer dispid 1020; - property clientY: Integer dispid 1021; - property offsetX: Integer dispid 1022; - property offsetY: Integer dispid 1023; - property screenX: Integer dispid 1024; - property screenY: Integer dispid 1025; - property srcFilter: IDispatch dispid 1026; - property dataTransfer: IHTMLDataTransfer readonly dispid 1037; - property contentOverflow: WordBool readonly dispid 1038; - property shiftLeft: WordBool dispid 1039; - property altLeft: WordBool dispid 1040; - property ctrlLeft: WordBool dispid 1041; - property imeCompositionChange: LONG_PTR readonly dispid 1042; - property imeNotifyCommand: LONG_PTR readonly dispid 1043; - property imeNotifyData: LONG_PTR readonly dispid 1044; - property imeRequest: LONG_PTR readonly dispid 1046; - property imeRequestData: LONG_PTR readonly dispid 1047; - property keyboardLayout: LONG_PTR readonly dispid 1045; - property behaviorCookie: Integer readonly dispid 1048; - property behaviorPart: Integer readonly dispid 1049; - property nextPage: WideString readonly dispid 1050; - property wheelDelta: Integer readonly dispid 1051; - end; - -// *********************************************************************// -// DispIntf: HTMLWindowEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F625-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLWindowEvents2 = dispinterface - ['{3050F625-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure onload(const pEvtObj: IHTMLEventObj); dispid 1003; - procedure onunload(const pEvtObj: IHTMLEventObj); dispid 1008; - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onerror(const description: WideString; const url: WideString; line: Integer); dispid 1002; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onbeforeunload(const pEvtObj: IHTMLEventObj); dispid 1017; - procedure onbeforeprint(const pEvtObj: IHTMLEventObj); dispid 1024; - procedure onafterprint(const pEvtObj: IHTMLEventObj); dispid 1025; - end; - -// *********************************************************************// -// DispIntf: HTMLWindowEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {96A0A4E0-D062-11CF-94B6-00AA0060275C} -// *********************************************************************// - HTMLWindowEvents = dispinterface - ['{96A0A4E0-D062-11CF-94B6-00AA0060275C}'] - procedure onload; dispid 1003; - procedure onunload; dispid 1008; - function onhelp: WordBool; dispid - 2147418102; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onerror(const description: WideString; const url: WideString; line: Integer); dispid 1002; - procedure onresize; dispid 1016; - procedure onscroll; dispid 1014; - procedure onbeforeunload; dispid 1017; - procedure onbeforeprint; dispid 1024; - procedure onafterprint; dispid 1025; - end; - -// *********************************************************************// -// Interface: IHTMLDocument2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {332C4425-26CB-11D0-B483-00C04FD90119} -// *********************************************************************// - IHTMLDocument2 = interface(IHTMLDocument) - ['{332C4425-26CB-11D0-B483-00C04FD90119}'] - function Get_all: IHTMLElementCollection; safecall; - function Get_body: IHTMLElement; safecall; - function Get_activeElement: IHTMLElement; safecall; - function Get_images: IHTMLElementCollection; safecall; - function Get_applets: IHTMLElementCollection; safecall; - function Get_links: IHTMLElementCollection; safecall; - function Get_forms: IHTMLElementCollection; safecall; - function Get_anchors: IHTMLElementCollection; safecall; - procedure Set_title(const p: WideString); safecall; - function Get_title: WideString; safecall; - function Get_scripts: IHTMLElementCollection; safecall; - procedure Set_designMode(const p: WideString); safecall; - function Get_designMode: WideString; safecall; - function Get_selection: IHTMLSelectionObject; safecall; - function Get_readyState: WideString; safecall; - function Get_frames: IHTMLFramesCollection2; safecall; - function Get_embeds: IHTMLElementCollection; safecall; - function Get_plugins: IHTMLElementCollection; safecall; - procedure Set_alinkColor(p: OleVariant); safecall; - function Get_alinkColor: OleVariant; safecall; - procedure Set_bgColor(p: OleVariant); safecall; - function Get_bgColor: OleVariant; safecall; - procedure Set_fgColor(p: OleVariant); safecall; - function Get_fgColor: OleVariant; safecall; - procedure Set_linkColor(p: OleVariant); safecall; - function Get_linkColor: OleVariant; safecall; - procedure Set_vlinkColor(p: OleVariant); safecall; - function Get_vlinkColor: OleVariant; safecall; - function Get_referrer: WideString; safecall; - function Get_location: IHTMLLocation; safecall; - function Get_lastModified: WideString; safecall; - procedure Set_url(const p: WideString); safecall; - function Get_url: WideString; safecall; - procedure Set_domain(const p: WideString); safecall; - function Get_domain: WideString; safecall; - procedure Set_cookie(const p: WideString); safecall; - function Get_cookie: WideString; safecall; - procedure Set_expando(p: WordBool); safecall; - function Get_expando: WordBool; safecall; - procedure Set_charset(const p: WideString); safecall; - function Get_charset: WideString; safecall; - procedure Set_defaultCharset(const p: WideString); safecall; - function Get_defaultCharset: WideString; safecall; - function Get_mimeType: WideString; safecall; - function Get_fileSize: WideString; safecall; - function Get_fileCreatedDate: WideString; safecall; - function Get_fileModifiedDate: WideString; safecall; - function Get_fileUpdatedDate: WideString; safecall; - function Get_security: WideString; safecall; - function Get_protocol: WideString; safecall; - function Get_nameProp: WideString; safecall; - procedure write(psarray: PSafeArray); safecall; - procedure writeln(psarray: PSafeArray); safecall; - function open(const url: WideString; name: OleVariant; features: OleVariant; replace: OleVariant): IDispatch; safecall; - procedure close; safecall; - procedure clear; safecall; - function queryCommandSupported(const cmdID: WideString): WordBool; safecall; - function queryCommandEnabled(const cmdID: WideString): WordBool; safecall; - function queryCommandState(const cmdID: WideString): WordBool; safecall; - function queryCommandIndeterm(const cmdID: WideString): WordBool; safecall; - function queryCommandText(const cmdID: WideString): WideString; safecall; - function queryCommandValue(const cmdID: WideString): OleVariant; safecall; - function execCommand(const cmdID: WideString; showUI: WordBool; value: OleVariant): WordBool; safecall; - function execCommandShowHelp(const cmdID: WideString): WordBool; safecall; - function createElement(const eTag: WideString): IHTMLElement; safecall; - procedure Set_onhelp(p: OleVariant); safecall; - function Get_onhelp: OleVariant; safecall; - procedure Set_onclick(p: OleVariant); safecall; - function Get_onclick: OleVariant; safecall; - procedure Set_ondblclick(p: OleVariant); safecall; - function Get_ondblclick: OleVariant; safecall; - procedure Set_onkeyup(p: OleVariant); safecall; - function Get_onkeyup: OleVariant; safecall; - procedure Set_onkeydown(p: OleVariant); safecall; - function Get_onkeydown: OleVariant; safecall; - procedure Set_onkeypress(p: OleVariant); safecall; - function Get_onkeypress: OleVariant; safecall; - procedure Set_onmouseup(p: OleVariant); safecall; - function Get_onmouseup: OleVariant; safecall; - procedure Set_onmousedown(p: OleVariant); safecall; - function Get_onmousedown: OleVariant; safecall; - procedure Set_onmousemove(p: OleVariant); safecall; - function Get_onmousemove: OleVariant; safecall; - procedure Set_onmouseout(p: OleVariant); safecall; - function Get_onmouseout: OleVariant; safecall; - procedure Set_onmouseover(p: OleVariant); safecall; - function Get_onmouseover: OleVariant; safecall; - procedure Set_onreadystatechange(p: OleVariant); safecall; - function Get_onreadystatechange: OleVariant; safecall; - procedure Set_onafterupdate(p: OleVariant); safecall; - function Get_onafterupdate: OleVariant; safecall; - procedure Set_onrowexit(p: OleVariant); safecall; - function Get_onrowexit: OleVariant; safecall; - procedure Set_onrowenter(p: OleVariant); safecall; - function Get_onrowenter: OleVariant; safecall; - procedure Set_ondragstart(p: OleVariant); safecall; - function Get_ondragstart: OleVariant; safecall; - procedure Set_onselectstart(p: OleVariant); safecall; - function Get_onselectstart: OleVariant; safecall; - function elementFromPoint(x: Integer; y: Integer): IHTMLElement; safecall; - function Get_parentWindow: IHTMLWindow2; safecall; - function Get_styleSheets: IHTMLStyleSheetsCollection; safecall; - procedure Set_onbeforeupdate(p: OleVariant); safecall; - function Get_onbeforeupdate: OleVariant; safecall; - procedure Set_onerrorupdate(p: OleVariant); safecall; - function Get_onerrorupdate: OleVariant; safecall; - function toString: WideString; safecall; - function createStyleSheet(const bstrHref: WideString; lIndex: Integer): IHTMLStyleSheet; safecall; - property all: IHTMLElementCollection read Get_all; - property body: IHTMLElement read Get_body; - property activeElement: IHTMLElement read Get_activeElement; - property images: IHTMLElementCollection read Get_images; - property applets: IHTMLElementCollection read Get_applets; - property links: IHTMLElementCollection read Get_links; - property forms: IHTMLElementCollection read Get_forms; - property anchors: IHTMLElementCollection read Get_anchors; - property title: WideString read Get_title write Set_title; - property scripts: IHTMLElementCollection read Get_scripts; - property designMode: WideString read Get_designMode write Set_designMode; - property selection: IHTMLSelectionObject read Get_selection; - property readyState: WideString read Get_readyState; - property frames: IHTMLFramesCollection2 read Get_frames; - property embeds: IHTMLElementCollection read Get_embeds; - property plugins: IHTMLElementCollection read Get_plugins; - property alinkColor: OleVariant read Get_alinkColor write Set_alinkColor; - property bgColor: OleVariant read Get_bgColor write Set_bgColor; - property fgColor: OleVariant read Get_fgColor write Set_fgColor; - property linkColor: OleVariant read Get_linkColor write Set_linkColor; - property vlinkColor: OleVariant read Get_vlinkColor write Set_vlinkColor; - property referrer: WideString read Get_referrer; - property location: IHTMLLocation read Get_location; - property lastModified: WideString read Get_lastModified; - property url: WideString read Get_url write Set_url; - property domain: WideString read Get_domain write Set_domain; - property cookie: WideString read Get_cookie write Set_cookie; - property expando: WordBool read Get_expando write Set_expando; - property charset: WideString read Get_charset write Set_charset; - property defaultCharset: WideString read Get_defaultCharset write Set_defaultCharset; - property mimeType: WideString read Get_mimeType; - property fileSize: WideString read Get_fileSize; - property fileCreatedDate: WideString read Get_fileCreatedDate; - property fileModifiedDate: WideString read Get_fileModifiedDate; - property fileUpdatedDate: WideString read Get_fileUpdatedDate; - property security: WideString read Get_security; - property protocol: WideString read Get_protocol; - property nameProp: WideString read Get_nameProp; - property onhelp: OleVariant read Get_onhelp write Set_onhelp; - property onclick: OleVariant read Get_onclick write Set_onclick; - property ondblclick: OleVariant read Get_ondblclick write Set_ondblclick; - property onkeyup: OleVariant read Get_onkeyup write Set_onkeyup; - property onkeydown: OleVariant read Get_onkeydown write Set_onkeydown; - property onkeypress: OleVariant read Get_onkeypress write Set_onkeypress; - property onmouseup: OleVariant read Get_onmouseup write Set_onmouseup; - property onmousedown: OleVariant read Get_onmousedown write Set_onmousedown; - property onmousemove: OleVariant read Get_onmousemove write Set_onmousemove; - property onmouseout: OleVariant read Get_onmouseout write Set_onmouseout; - property onmouseover: OleVariant read Get_onmouseover write Set_onmouseover; - property onreadystatechange: OleVariant read Get_onreadystatechange write Set_onreadystatechange; - property onafterupdate: OleVariant read Get_onafterupdate write Set_onafterupdate; - property onrowexit: OleVariant read Get_onrowexit write Set_onrowexit; - property onrowenter: OleVariant read Get_onrowenter write Set_onrowenter; - property ondragstart: OleVariant read Get_ondragstart write Set_ondragstart; - property onselectstart: OleVariant read Get_onselectstart write Set_onselectstart; - property parentWindow: IHTMLWindow2 read Get_parentWindow; - property styleSheets: IHTMLStyleSheetsCollection read Get_styleSheets; - property onbeforeupdate: OleVariant read Get_onbeforeupdate write Set_onbeforeupdate; - property onerrorupdate: OleVariant read Get_onerrorupdate write Set_onerrorupdate; - end; - -// *********************************************************************// -// DispIntf: IHTMLDocument2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {332C4425-26CB-11D0-B483-00C04FD90119} -// *********************************************************************// - IHTMLDocument2Disp = dispinterface - ['{332C4425-26CB-11D0-B483-00C04FD90119}'] - property all: IHTMLElementCollection readonly dispid 1003; - property body: IHTMLElement readonly dispid 1004; - property activeElement: IHTMLElement readonly dispid 1005; - property images: IHTMLElementCollection readonly dispid 1011; - property applets: IHTMLElementCollection readonly dispid 1008; - property links: IHTMLElementCollection readonly dispid 1009; - property forms: IHTMLElementCollection readonly dispid 1010; - property anchors: IHTMLElementCollection readonly dispid 1007; - property title: WideString dispid 1012; - property scripts: IHTMLElementCollection readonly dispid 1013; - property designMode: WideString dispid 1014; - property selection: IHTMLSelectionObject readonly dispid 1017; - property readyState: WideString readonly dispid 1018; - property frames: IHTMLFramesCollection2 readonly dispid 1019; - property embeds: IHTMLElementCollection readonly dispid 1015; - property plugins: IHTMLElementCollection readonly dispid 1021; - property alinkColor: OleVariant dispid 1022; - property bgColor: OleVariant dispid - 501; - property fgColor: OleVariant dispid - 2147413110; - property linkColor: OleVariant dispid 1024; - property vlinkColor: OleVariant dispid 1023; - property referrer: WideString readonly dispid 1027; - property location: IHTMLLocation readonly dispid 1026; - property lastModified: WideString readonly dispid 1028; - property url: WideString dispid 1025; - property domain: WideString dispid 1029; - property cookie: WideString dispid 1030; - property expando: WordBool dispid 1031; - property charset: WideString dispid 1032; - property defaultCharset: WideString dispid 1033; - property mimeType: WideString readonly dispid 1041; - property fileSize: WideString readonly dispid 1042; - property fileCreatedDate: WideString readonly dispid 1043; - property fileModifiedDate: WideString readonly dispid 1044; - property fileUpdatedDate: WideString readonly dispid 1045; - property security: WideString readonly dispid 1046; - property protocol: WideString readonly dispid 1047; - property nameProp: WideString readonly dispid 1048; - procedure write(psarray: {??PSafeArray} OleVariant); dispid 1054; - procedure writeln(psarray: {??PSafeArray} OleVariant); dispid 1055; - function open(const url: WideString; name: OleVariant; features: OleVariant; replace: OleVariant): IDispatch; dispid 1056; - procedure close; dispid 1057; - procedure clear; dispid 1058; - function queryCommandSupported(const cmdID: WideString): WordBool; dispid 1059; - function queryCommandEnabled(const cmdID: WideString): WordBool; dispid 1060; - function queryCommandState(const cmdID: WideString): WordBool; dispid 1061; - function queryCommandIndeterm(const cmdID: WideString): WordBool; dispid 1062; - function queryCommandText(const cmdID: WideString): WideString; dispid 1063; - function queryCommandValue(const cmdID: WideString): OleVariant; dispid 1064; - function execCommand(const cmdID: WideString; showUI: WordBool; value: OleVariant): WordBool; dispid 1065; - function execCommandShowHelp(const cmdID: WideString): WordBool; dispid 1066; - function createElement(const eTag: WideString): IHTMLElement; dispid 1067; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeyup: OleVariant dispid - 2147412106; - property onkeydown: OleVariant dispid - 2147412107; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseup: OleVariant dispid - 2147412109; - property onmousedown: OleVariant dispid - 2147412110; - property onmousemove: OleVariant dispid - 2147412108; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onreadystatechange: OleVariant dispid - 2147412087; - property onafterupdate: OleVariant dispid - 2147412090; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondragstart: OleVariant dispid - 2147412077; - property onselectstart: OleVariant dispid - 2147412075; - function elementFromPoint(x: Integer; y: Integer): IHTMLElement; dispid 1068; - property parentWindow: IHTMLWindow2 readonly dispid 1034; - property styleSheets: IHTMLStyleSheetsCollection readonly dispid 1069; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onerrorupdate: OleVariant dispid - 2147412074; - function toString: WideString; dispid 1070; - function createStyleSheet(const bstrHref: WideString; lIndex: Integer): IHTMLStyleSheet; dispid 1071; - property Script: IDispatch readonly dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLFramesCollection2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {332C4426-26CB-11D0-B483-00C04FD90119} -// *********************************************************************// - IHTMLFramesCollection2 = interface(IDispatch) - ['{332C4426-26CB-11D0-B483-00C04FD90119}'] - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; safecall; - function Get_length: Integer; safecall; - property length: Integer read Get_length; - end; - -// *********************************************************************// -// DispIntf: IHTMLFramesCollection2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {332C4426-26CB-11D0-B483-00C04FD90119} -// *********************************************************************// - IHTMLFramesCollection2Disp = dispinterface - ['{332C4426-26CB-11D0-B483-00C04FD90119}'] - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; dispid 0; - property length: Integer readonly dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLWindow2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {332C4427-26CB-11D0-B483-00C04FD90119} -// *********************************************************************// - IHTMLWindow2 = interface(IHTMLFramesCollection2) - ['{332C4427-26CB-11D0-B483-00C04FD90119}'] - function Get_frames: IHTMLFramesCollection2; safecall; - procedure Set_defaultStatus(const p: WideString); safecall; - function Get_defaultStatus: WideString; safecall; - procedure Set_status(const p: WideString); safecall; - function Get_status: WideString; safecall; - function setTimeout(const expression: WideString; msec: Integer; var language: OleVariant): Integer; safecall; - procedure clearTimeout(timerID: Integer); safecall; - procedure alert(const message: WideString); safecall; - function confirm(const message: WideString): WordBool; safecall; - function prompt(const message: WideString; const defstr: WideString): OleVariant; safecall; - function Get_Image: IHTMLImageElementFactory; safecall; - function Get_location: IHTMLLocation; safecall; - function Get_history: IOmHistory; safecall; - procedure close; safecall; - procedure Set_opener(p: OleVariant); safecall; - function Get_opener: OleVariant; safecall; - function Get_navigator: IOmNavigator; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - function Get_parent: IHTMLWindow2; safecall; - function open(const url: WideString; const name: WideString; const features: WideString; - replace: WordBool): IHTMLWindow2; safecall; - function Get_self: IHTMLWindow2; safecall; - function Get_top: IHTMLWindow2; safecall; - function Get_window: IHTMLWindow2; safecall; - procedure navigate(const url: WideString); safecall; - procedure Set_onfocus(p: OleVariant); safecall; - function Get_onfocus: OleVariant; safecall; - procedure Set_onblur(p: OleVariant); safecall; - function Get_onblur: OleVariant; safecall; - procedure Set_onload(p: OleVariant); safecall; - function Get_onload: OleVariant; safecall; - procedure Set_onbeforeunload(p: OleVariant); safecall; - function Get_onbeforeunload: OleVariant; safecall; - procedure Set_onunload(p: OleVariant); safecall; - function Get_onunload: OleVariant; safecall; - procedure Set_onhelp(p: OleVariant); safecall; - function Get_onhelp: OleVariant; safecall; - procedure Set_onerror(p: OleVariant); safecall; - function Get_onerror: OleVariant; safecall; - procedure Set_onresize(p: OleVariant); safecall; - function Get_onresize: OleVariant; safecall; - procedure Set_onscroll(p: OleVariant); safecall; - function Get_onscroll: OleVariant; safecall; - function Get_document: IHTMLDocument2; safecall; - function Get_event: IHTMLEventObj; safecall; - function Get__newEnum: IUnknown; safecall; - function showModalDialog(const dialog: WideString; var varArgIn: OleVariant; - var varOptions: OleVariant): OleVariant; safecall; - procedure showHelp(const helpURL: WideString; helpArg: OleVariant; const features: WideString); safecall; - function Get_screen: IHTMLScreen; safecall; - function Get_Option: IHTMLOptionElementFactory; safecall; - procedure focus; safecall; - function Get_closed: WordBool; safecall; - procedure blur; safecall; - procedure scroll(x: Integer; y: Integer); safecall; - function Get_clientInformation: IOmNavigator; safecall; - function setInterval(const expression: WideString; msec: Integer; var language: OleVariant): Integer; safecall; - procedure clearInterval(timerID: Integer); safecall; - procedure Set_offscreenBuffering(p: OleVariant); safecall; - function Get_offscreenBuffering: OleVariant; safecall; - function execScript(const code: WideString; const language: WideString): OleVariant; safecall; - function toString: WideString; safecall; - procedure scrollBy(x: Integer; y: Integer); safecall; - procedure scrollTo(x: Integer; y: Integer); safecall; - procedure moveTo(x: Integer; y: Integer); safecall; - procedure moveBy(x: Integer; y: Integer); safecall; - procedure resizeTo(x: Integer; y: Integer); safecall; - procedure resizeBy(x: Integer; y: Integer); safecall; - function Get_external: IDispatch; safecall; - property frames: IHTMLFramesCollection2 read Get_frames; - property defaultStatus: WideString read Get_defaultStatus write Set_defaultStatus; - property status: WideString read Get_status write Set_status; - property Image: IHTMLImageElementFactory read Get_Image; - property location: IHTMLLocation read Get_location; - property history: IOmHistory read Get_history; - property opener: OleVariant read Get_opener write Set_opener; - property navigator: IOmNavigator read Get_navigator; - property name: WideString read Get_name write Set_name; - property parent: IHTMLWindow2 read Get_parent; - property self: IHTMLWindow2 read Get_self; - property top: IHTMLWindow2 read Get_top; - property window: IHTMLWindow2 read Get_window; - property onfocus: OleVariant read Get_onfocus write Set_onfocus; - property onblur: OleVariant read Get_onblur write Set_onblur; - property onload: OleVariant read Get_onload write Set_onload; - property onbeforeunload: OleVariant read Get_onbeforeunload write Set_onbeforeunload; - property onunload: OleVariant read Get_onunload write Set_onunload; - property onhelp: OleVariant read Get_onhelp write Set_onhelp; - property onerror: OleVariant read Get_onerror write Set_onerror; - property onresize: OleVariant read Get_onresize write Set_onresize; - property onscroll: OleVariant read Get_onscroll write Set_onscroll; - property document: IHTMLDocument2 read Get_document; - property event: IHTMLEventObj read Get_event; - property _newEnum: IUnknown read Get__newEnum; - property screen: IHTMLScreen read Get_screen; - property Option: IHTMLOptionElementFactory read Get_Option; - property closed: WordBool read Get_closed; - property clientInformation: IOmNavigator read Get_clientInformation; - property offscreenBuffering: OleVariant read Get_offscreenBuffering write Set_offscreenBuffering; - property external: IDispatch read Get_external; - end; - -// *********************************************************************// -// DispIntf: IHTMLWindow2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {332C4427-26CB-11D0-B483-00C04FD90119} -// *********************************************************************// - IHTMLWindow2Disp = dispinterface - ['{332C4427-26CB-11D0-B483-00C04FD90119}'] - property frames: IHTMLFramesCollection2 readonly dispid 1100; - property defaultStatus: WideString dispid 1101; - property status: WideString dispid 1102; - function setTimeout(const expression: WideString; msec: Integer; var language: OleVariant): Integer; dispid 1172; - procedure clearTimeout(timerID: Integer); dispid 1104; - procedure alert(const message: WideString); dispid 1105; - function confirm(const message: WideString): WordBool; dispid 1110; - function prompt(const message: WideString; const defstr: WideString): OleVariant; dispid 1111; - property Image: IHTMLImageElementFactory readonly dispid 1125; - property location: IHTMLLocation readonly dispid 14; - property history: IOmHistory readonly dispid 2; - procedure close; dispid 3; - property opener: OleVariant dispid 4; - property navigator: IOmNavigator readonly dispid 5; - property name: WideString dispid 11; - property parent: IHTMLWindow2 readonly dispid 12; - function open(const url: WideString; const name: WideString; const features: WideString; - replace: WordBool): IHTMLWindow2; dispid 13; - property self: IHTMLWindow2 readonly dispid 20; - property top: IHTMLWindow2 readonly dispid 21; - property window: IHTMLWindow2 readonly dispid 22; - procedure navigate(const url: WideString); dispid 25; - property onfocus: OleVariant dispid - 2147412098; - property onblur: OleVariant dispid - 2147412097; - property onload: OleVariant dispid - 2147412080; - property onbeforeunload: OleVariant dispid - 2147412073; - property onunload: OleVariant dispid - 2147412079; - property onhelp: OleVariant dispid - 2147412099; - property onerror: OleVariant dispid - 2147412083; - property onresize: OleVariant dispid - 2147412076; - property onscroll: OleVariant dispid - 2147412081; - property document: IHTMLDocument2 readonly dispid 1151; - property event: IHTMLEventObj readonly dispid 1152; - property _newEnum: IUnknown readonly dispid 1153; - function showModalDialog(const dialog: WideString; var varArgIn: OleVariant; - var varOptions: OleVariant): OleVariant; dispid 1154; - procedure showHelp(const helpURL: WideString; helpArg: OleVariant; const features: WideString); dispid 1155; - property screen: IHTMLScreen readonly dispid 1156; - property Option: IHTMLOptionElementFactory readonly dispid 1157; - procedure focus; dispid 1158; - property closed: WordBool readonly dispid 23; - procedure blur; dispid 1159; - procedure scroll(x: Integer; y: Integer); dispid 1160; - property clientInformation: IOmNavigator readonly dispid 1161; - function setInterval(const expression: WideString; msec: Integer; var language: OleVariant): Integer; dispid 1173; - procedure clearInterval(timerID: Integer); dispid 1163; - property offscreenBuffering: OleVariant dispid 1164; - function execScript(const code: WideString; const language: WideString): OleVariant; dispid 1165; - function toString: WideString; dispid 1166; - procedure scrollBy(x: Integer; y: Integer); dispid 1167; - procedure scrollTo(x: Integer; y: Integer); dispid 1168; - procedure moveTo(x: Integer; y: Integer); dispid 6; - procedure moveBy(x: Integer; y: Integer); dispid 7; - procedure resizeTo(x: Integer; y: Integer); dispid 9; - procedure resizeBy(x: Integer; y: Integer); dispid 8; - property external: IDispatch readonly dispid 1169; - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; dispid 0; - property length: Integer readonly dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLScreen -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F35C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLScreen = interface(IDispatch) - ['{3050F35C-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_colorDepth: Integer; safecall; - procedure Set_bufferDepth(p: Integer); safecall; - function Get_bufferDepth: Integer; safecall; - function Get_width: Integer; safecall; - function Get_height: Integer; safecall; - procedure Set_updateInterval(p: Integer); safecall; - function Get_updateInterval: Integer; safecall; - function Get_availHeight: Integer; safecall; - function Get_availWidth: Integer; safecall; - function Get_fontSmoothingEnabled: WordBool; safecall; - property colorDepth: Integer read Get_colorDepth; - property bufferDepth: Integer read Get_bufferDepth write Set_bufferDepth; - property width: Integer read Get_width; - property height: Integer read Get_height; - property updateInterval: Integer read Get_updateInterval write Set_updateInterval; - property availHeight: Integer read Get_availHeight; - property availWidth: Integer read Get_availWidth; - property fontSmoothingEnabled: WordBool read Get_fontSmoothingEnabled; - end; - -// *********************************************************************// -// DispIntf: IHTMLScreenDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F35C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLScreenDisp = dispinterface - ['{3050F35C-98B5-11CF-BB82-00AA00BDCE0B}'] - property colorDepth: Integer readonly dispid 1001; - property bufferDepth: Integer dispid 1002; - property width: Integer readonly dispid 1003; - property height: Integer readonly dispid 1004; - property updateInterval: Integer dispid 1005; - property availHeight: Integer readonly dispid 1006; - property availWidth: Integer readonly dispid 1007; - property fontSmoothingEnabled: WordBool readonly dispid 1008; - end; - -// *********************************************************************// -// Interface: IHTMLWindow3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4AE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLWindow3 = interface(IDispatch) - ['{3050F4AE-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_screenLeft: Integer; safecall; - function Get_screenTop: Integer; safecall; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; safecall; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); safecall; - function setTimeout(var expression: OleVariant; msec: Integer; var language: OleVariant): Integer; safecall; - function setInterval(var expression: OleVariant; msec: Integer; var language: OleVariant): Integer; safecall; - procedure print; safecall; - procedure Set_onbeforeprint(p: OleVariant); safecall; - function Get_onbeforeprint: OleVariant; safecall; - procedure Set_onafterprint(p: OleVariant); safecall; - function Get_onafterprint: OleVariant; safecall; - function Get_clipboardData: IHTMLDataTransfer; safecall; - function showModelessDialog(const url: WideString; var varArgIn: OleVariant; - var options: OleVariant): IHTMLWindow2; safecall; - property screenLeft: Integer read Get_screenLeft; - property screenTop: Integer read Get_screenTop; - property onbeforeprint: OleVariant read Get_onbeforeprint write Set_onbeforeprint; - property onafterprint: OleVariant read Get_onafterprint write Set_onafterprint; - property clipboardData: IHTMLDataTransfer read Get_clipboardData; - end; - -// *********************************************************************// -// DispIntf: IHTMLWindow3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4AE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLWindow3Disp = dispinterface - ['{3050F4AE-98B5-11CF-BB82-00AA00BDCE0B}'] - property screenLeft: Integer readonly dispid 1170; - property screenTop: Integer readonly dispid 1171; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - function setTimeout(var expression: OleVariant; msec: Integer; var language: OleVariant): Integer; dispid 1103; - function setInterval(var expression: OleVariant; msec: Integer; var language: OleVariant): Integer; dispid 1162; - procedure print; dispid 1174; - property onbeforeprint: OleVariant dispid - 2147412046; - property onafterprint: OleVariant dispid - 2147412045; - property clipboardData: IHTMLDataTransfer readonly dispid 1175; - function showModelessDialog(const url: WideString; var varArgIn: OleVariant; - var options: OleVariant): IHTMLWindow2; dispid 1176; - end; - -// *********************************************************************// -// Interface: IHTMLFrameBase -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F311-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameBase = interface(IDispatch) - ['{3050F311-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_src(const p: WideString); safecall; - function Get_src: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_border(p: OleVariant); safecall; - function Get_border: OleVariant; safecall; - procedure Set_frameBorder(const p: WideString); safecall; - function Get_frameBorder: WideString; safecall; - procedure Set_frameSpacing(p: OleVariant); safecall; - function Get_frameSpacing: OleVariant; safecall; - procedure Set_marginWidth(p: OleVariant); safecall; - function Get_marginWidth: OleVariant; safecall; - procedure Set_marginHeight(p: OleVariant); safecall; - function Get_marginHeight: OleVariant; safecall; - procedure Set_noResize(p: WordBool); safecall; - function Get_noResize: WordBool; safecall; - procedure Set_scrolling(const p: WideString); safecall; - function Get_scrolling: WideString; safecall; - property src: WideString read Get_src write Set_src; - property name: WideString read Get_name write Set_name; - property border: OleVariant read Get_border write Set_border; - property frameBorder: WideString read Get_frameBorder write Set_frameBorder; - property frameSpacing: OleVariant read Get_frameSpacing write Set_frameSpacing; - property marginWidth: OleVariant read Get_marginWidth write Set_marginWidth; - property marginHeight: OleVariant read Get_marginHeight write Set_marginHeight; - property noResize: WordBool read Get_noResize write Set_noResize; - property scrolling: WideString read Get_scrolling write Set_scrolling; - end; - -// *********************************************************************// -// DispIntf: IHTMLFrameBaseDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F311-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameBaseDisp = dispinterface - ['{3050F311-98B5-11CF-BB82-00AA00BDCE0B}'] - property src: WideString dispid - 2147415112; - property name: WideString dispid - 2147418112; - property border: OleVariant dispid - 2147415110; - property frameBorder: WideString dispid - 2147415109; - property frameSpacing: OleVariant dispid - 2147415108; - property marginWidth: OleVariant dispid - 2147415107; - property marginHeight: OleVariant dispid - 2147415106; - property noResize: WordBool dispid - 2147415105; - property scrolling: WideString dispid - 2147415104; - end; - -// *********************************************************************// -// Interface: IHTMLScreen2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F84A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLScreen2 = interface(IDispatch) - ['{3050F84A-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_logicalXDPI: Integer; safecall; - function Get_logicalYDPI: Integer; safecall; - function Get_deviceXDPI: Integer; safecall; - function Get_deviceYDPI: Integer; safecall; - property logicalXDPI: Integer read Get_logicalXDPI; - property logicalYDPI: Integer read Get_logicalYDPI; - property deviceXDPI: Integer read Get_deviceXDPI; - property deviceYDPI: Integer read Get_deviceYDPI; - end; - -// *********************************************************************// -// DispIntf: IHTMLScreen2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F84A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLScreen2Disp = dispinterface - ['{3050F84A-98B5-11CF-BB82-00AA00BDCE0B}'] - property logicalXDPI: Integer readonly dispid 1009; - property logicalYDPI: Integer readonly dispid 1010; - property deviceXDPI: Integer readonly dispid 1011; - property deviceYDPI: Integer readonly dispid 1012; - end; - -// *********************************************************************// -// Interface: IHTMLWindow4 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6CF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLWindow4 = interface(IDispatch) - ['{3050F6CF-98B5-11CF-BB82-00AA00BDCE0B}'] - function createPopup(var varArgIn: OleVariant): IDispatch; safecall; - function Get_frameElement: IHTMLFrameBase; safecall; - property frameElement: IHTMLFrameBase read Get_frameElement; - end; - -// *********************************************************************// -// DispIntf: IHTMLWindow4Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6CF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLWindow4Disp = dispinterface - ['{3050F6CF-98B5-11CF-BB82-00AA00BDCE0B}'] - function createPopup(var varArgIn: OleVariant): IDispatch; dispid 1180; - property frameElement: IHTMLFrameBase readonly dispid 1181; - end; - -// *********************************************************************// -// DispIntf: DispHTMLScreen -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F591-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLScreen = dispinterface - ['{3050F591-98B5-11CF-BB82-00AA00BDCE0B}'] - property colorDepth: Integer readonly dispid 1001; - property bufferDepth: Integer dispid 1002; - property width: Integer readonly dispid 1003; - property height: Integer readonly dispid 1004; - property updateInterval: Integer dispid 1005; - property availHeight: Integer readonly dispid 1006; - property availWidth: Integer readonly dispid 1007; - property fontSmoothingEnabled: WordBool readonly dispid 1008; - property logicalXDPI: Integer readonly dispid 1009; - property logicalYDPI: Integer readonly dispid 1010; - property deviceXDPI: Integer readonly dispid 1011; - property deviceYDPI: Integer readonly dispid 1012; - end; - -// *********************************************************************// -// DispIntf: DispHTMLWindow2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F55D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLWindow2 = dispinterface - ['{3050F55D-98B5-11CF-BB82-00AA00BDCE0B}'] - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; dispid 0; - property length: Integer readonly dispid 1001; - property frames: IHTMLFramesCollection2 readonly dispid 1100; - property defaultStatus: WideString dispid 1101; - property status: WideString dispid 1102; - procedure clearTimeout(timerID: Integer); dispid 1104; - procedure alert(const message: WideString); dispid 1105; - function confirm(const message: WideString): WordBool; dispid 1110; - function prompt(const message: WideString; const defstr: WideString): OleVariant; dispid 1111; - property Image: IHTMLImageElementFactory readonly dispid 1125; - property location: IHTMLLocation readonly dispid 14; - property history: IOmHistory readonly dispid 2; - procedure close; dispid 3; - property opener: OleVariant dispid 4; - property navigator: IOmNavigator readonly dispid 5; - property name: WideString dispid 11; - property parent: IHTMLWindow2 readonly dispid 12; - function open(const url: WideString; const name: WideString; const features: WideString; - replace: WordBool): IHTMLWindow2; dispid 13; - property self: IHTMLWindow2 readonly dispid 20; - property top: IHTMLWindow2 readonly dispid 21; - property window: IHTMLWindow2 readonly dispid 22; - procedure navigate(const url: WideString); dispid 25; - property onfocus: OleVariant dispid - 2147412098; - property onblur: OleVariant dispid - 2147412097; - property onload: OleVariant dispid - 2147412080; - property onbeforeunload: OleVariant dispid - 2147412073; - property onunload: OleVariant dispid - 2147412079; - property onhelp: OleVariant dispid - 2147412099; - property onerror: OleVariant dispid - 2147412083; - property onresize: OleVariant dispid - 2147412076; - property onscroll: OleVariant dispid - 2147412081; - property document: IHTMLDocument2 readonly dispid 1151; - property event: IHTMLEventObj readonly dispid 1152; - property _newEnum: IUnknown readonly dispid 1153; - function showModalDialog(const dialog: WideString; var varArgIn: OleVariant; - var varOptions: OleVariant): OleVariant; dispid 1154; - procedure showHelp(const helpURL: WideString; helpArg: OleVariant; const features: WideString); dispid 1155; - property screen: IHTMLScreen readonly dispid 1156; - property Option: IHTMLOptionElementFactory readonly dispid 1157; - procedure focus; dispid 1158; - property closed: WordBool readonly dispid 23; - procedure blur; dispid 1159; - procedure scroll(x: Integer; y: Integer); dispid 1160; - property clientInformation: IOmNavigator readonly dispid 1161; - procedure clearInterval(timerID: Integer); dispid 1163; - property offscreenBuffering: OleVariant dispid 1164; - function execScript(const code: WideString; const language: WideString): OleVariant; dispid 1165; - function toString: WideString; dispid 1166; - procedure scrollBy(x: Integer; y: Integer); dispid 1167; - procedure scrollTo(x: Integer; y: Integer); dispid 1168; - procedure moveTo(x: Integer; y: Integer); dispid 6; - procedure moveBy(x: Integer; y: Integer); dispid 7; - procedure resizeTo(x: Integer; y: Integer); dispid 9; - procedure resizeBy(x: Integer; y: Integer); dispid 8; - property external: IDispatch readonly dispid 1169; - property screenLeft: Integer readonly dispid 1170; - property screenTop: Integer readonly dispid 1171; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - function setTimeout(var expression: OleVariant; msec: Integer; var language: OleVariant): Integer; dispid 1103; - function setInterval(var expression: OleVariant; msec: Integer; var language: OleVariant): Integer; dispid 1162; - procedure print; dispid 1174; - property onbeforeprint: OleVariant dispid - 2147412046; - property onafterprint: OleVariant dispid - 2147412045; - property clipboardData: IHTMLDataTransfer readonly dispid 1175; - function showModelessDialog(const url: WideString; var varArgIn: OleVariant; - var options: OleVariant): IHTMLWindow2; dispid 1176; - function createPopup(var varArgIn: OleVariant): IDispatch; dispid 1180; - property frameElement: IHTMLFrameBase readonly dispid 1181; - end; - -// *********************************************************************// -// DispIntf: DispHTMLWindowProxy -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F55E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLWindowProxy = dispinterface - ['{3050F55E-98B5-11CF-BB82-00AA00BDCE0B}'] - // !! API fix decl - function item(const pvarIndex: OleVariant): OleVariant; dispid 0; - property length: Integer readonly dispid 1001; - property frames: IHTMLFramesCollection2 readonly dispid 1100; - property defaultStatus: WideString dispid 1101; - property status: WideString dispid 1102; - procedure clearTimeout(timerID: Integer); dispid 1104; - procedure alert(const message: WideString); dispid 1105; - function confirm(const message: WideString): WordBool; dispid 1110; - function prompt(const message: WideString; const defstr: WideString): OleVariant; dispid 1111; - property Image: IHTMLImageElementFactory readonly dispid 1125; - property location: IHTMLLocation readonly dispid 14; - property history: IOmHistory readonly dispid 2; - procedure close; dispid 3; - property opener: OleVariant dispid 4; - property navigator: IOmNavigator readonly dispid 5; - property name: WideString dispid 11; - property parent: IHTMLWindow2 readonly dispid 12; - function open(const url: WideString; const name: WideString; const features: WideString; - replace: WordBool): IHTMLWindow2; dispid 13; - property self: IHTMLWindow2 readonly dispid 20; - property top: IHTMLWindow2 readonly dispid 21; - property window: IHTMLWindow2 readonly dispid 22; - procedure navigate(const url: WideString); dispid 25; - property onfocus: OleVariant dispid - 2147412098; - property onblur: OleVariant dispid - 2147412097; - property onload: OleVariant dispid - 2147412080; - property onbeforeunload: OleVariant dispid - 2147412073; - property onunload: OleVariant dispid - 2147412079; - property onhelp: OleVariant dispid - 2147412099; - property onerror: OleVariant dispid - 2147412083; - property onresize: OleVariant dispid - 2147412076; - property onscroll: OleVariant dispid - 2147412081; - property document: IHTMLDocument2 readonly dispid 1151; - property event: IHTMLEventObj readonly dispid 1152; - property _newEnum: IUnknown readonly dispid 1153; - function showModalDialog(const dialog: WideString; var varArgIn: OleVariant; - var varOptions: OleVariant): OleVariant; dispid 1154; - procedure showHelp(const helpURL: WideString; helpArg: OleVariant; const features: WideString); dispid 1155; - property screen: IHTMLScreen readonly dispid 1156; - property Option: IHTMLOptionElementFactory readonly dispid 1157; - procedure focus; dispid 1158; - property closed: WordBool readonly dispid 23; - procedure blur; dispid 1159; - procedure scroll(x: Integer; y: Integer); dispid 1160; - property clientInformation: IOmNavigator readonly dispid 1161; - procedure clearInterval(timerID: Integer); dispid 1163; - property offscreenBuffering: OleVariant dispid 1164; - function execScript(const code: WideString; const language: WideString): OleVariant; dispid 1165; - function toString: WideString; dispid 1166; - procedure scrollBy(x: Integer; y: Integer); dispid 1167; - procedure scrollTo(x: Integer; y: Integer); dispid 1168; - procedure moveTo(x: Integer; y: Integer); dispid 6; - procedure moveBy(x: Integer; y: Integer); dispid 7; - procedure resizeTo(x: Integer; y: Integer); dispid 9; - procedure resizeBy(x: Integer; y: Integer); dispid 8; - property external: IDispatch readonly dispid 1169; - property screenLeft: Integer readonly dispid 1170; - property screenTop: Integer readonly dispid 1171; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - function setTimeout(var expression: OleVariant; msec: Integer; var language: OleVariant): Integer; dispid 1103; - function setInterval(var expression: OleVariant; msec: Integer; var language: OleVariant): Integer; dispid 1162; - procedure print; dispid 1174; - property onbeforeprint: OleVariant dispid - 2147412046; - property onafterprint: OleVariant dispid - 2147412045; - property clipboardData: IHTMLDataTransfer readonly dispid 1175; - function showModelessDialog(const url: WideString; var varArgIn: OleVariant; - var options: OleVariant): IHTMLWindow2; dispid 1176; - function createPopup(var varArgIn: OleVariant): IDispatch; dispid 1180; - property frameElement: IHTMLFrameBase readonly dispid 1181; - end; - -// *********************************************************************// -// DispIntf: HTMLDocumentEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F613-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLDocumentEvents2 = dispinterface - ['{3050F613-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - function onstop(const pEvtObj: IHTMLEventObj): WordBool; dispid 1026; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onbeforeeditfocus(const pEvtObj: IHTMLEventObj); dispid 1027; - procedure onselectionchange(const pEvtObj: IHTMLEventObj); dispid 1037; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - end; - -// *********************************************************************// -// DispIntf: HTMLDocumentEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F260-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLDocumentEvents = dispinterface - ['{3050F260-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - function onkeypress: WordBool; dispid - 603; - procedure onmousedown; dispid - 605; - procedure onmousemove; dispid - 606; - procedure onmouseup; dispid - 607; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onreadystatechange; dispid - 609; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - function ondragstart: WordBool; dispid - 2147418101; - function onselectstart: WordBool; dispid - 2147418100; - function onerrorupdate: WordBool; dispid - 2147418099; - function oncontextmenu: WordBool; dispid 1023; - function onstop: WordBool; dispid 1026; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onpropertychange; dispid - 2147418093; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onbeforeeditfocus; dispid 1027; - procedure onselectionchange; dispid 1037; - function oncontrolselect: WordBool; dispid 1036; - function onmousewheel: WordBool; dispid 1033; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - function onbeforeactivate: WordBool; dispid 1047; - function onbeforedeactivate: WordBool; dispid 1034; - end; - -// *********************************************************************// -// Interface: IHTMLDocument3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F485-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDocument3 = interface(IDispatch) - ['{3050F485-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure releaseCapture; safecall; - procedure recalc(fForce: WordBool); safecall; - function createTextNode(const text: WideString): IHTMLDOMNode; safecall; - function Get_documentElement: IHTMLElement; safecall; - function Get_uniqueID: WideString; safecall; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; safecall; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); safecall; - procedure Set_onrowsdelete(p: OleVariant); safecall; - function Get_onrowsdelete: OleVariant; safecall; - procedure Set_onrowsinserted(p: OleVariant); safecall; - function Get_onrowsinserted: OleVariant; safecall; - procedure Set_oncellchange(p: OleVariant); safecall; - function Get_oncellchange: OleVariant; safecall; - procedure Set_ondatasetchanged(p: OleVariant); safecall; - function Get_ondatasetchanged: OleVariant; safecall; - procedure Set_ondataavailable(p: OleVariant); safecall; - function Get_ondataavailable: OleVariant; safecall; - procedure Set_ondatasetcomplete(p: OleVariant); safecall; - function Get_ondatasetcomplete: OleVariant; safecall; - procedure Set_onpropertychange(p: OleVariant); safecall; - function Get_onpropertychange: OleVariant; safecall; - procedure Set_dir(const p: WideString); safecall; - function Get_dir: WideString; safecall; - procedure Set_oncontextmenu(p: OleVariant); safecall; - function Get_oncontextmenu: OleVariant; safecall; - procedure Set_onstop(p: OleVariant); safecall; - function Get_onstop: OleVariant; safecall; - function createDocumentFragment: IHTMLDocument2; safecall; - function Get_parentDocument: IHTMLDocument2; safecall; - procedure Set_enableDownload(p: WordBool); safecall; - function Get_enableDownload: WordBool; safecall; - procedure Set_baseUrl(const p: WideString); safecall; - function Get_baseUrl: WideString; safecall; - function Get_childNodes: IDispatch; safecall; - procedure Set_inheritStyleSheets(p: WordBool); safecall; - function Get_inheritStyleSheets: WordBool; safecall; - procedure Set_onbeforeeditfocus(p: OleVariant); safecall; - function Get_onbeforeeditfocus: OleVariant; safecall; - function getElementsByName(const v: WideString): IHTMLElementCollection; safecall; - function getElementById(const v: WideString): IHTMLElement; safecall; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; safecall; - property documentElement: IHTMLElement read Get_documentElement; - property uniqueID: WideString read Get_uniqueID; - property onrowsdelete: OleVariant read Get_onrowsdelete write Set_onrowsdelete; - property onrowsinserted: OleVariant read Get_onrowsinserted write Set_onrowsinserted; - property oncellchange: OleVariant read Get_oncellchange write Set_oncellchange; - property ondatasetchanged: OleVariant read Get_ondatasetchanged write Set_ondatasetchanged; - property ondataavailable: OleVariant read Get_ondataavailable write Set_ondataavailable; - property ondatasetcomplete: OleVariant read Get_ondatasetcomplete write Set_ondatasetcomplete; - property onpropertychange: OleVariant read Get_onpropertychange write Set_onpropertychange; - property dir: WideString read Get_dir write Set_dir; - property oncontextmenu: OleVariant read Get_oncontextmenu write Set_oncontextmenu; - property onstop: OleVariant read Get_onstop write Set_onstop; - property parentDocument: IHTMLDocument2 read Get_parentDocument; - property enableDownload: WordBool read Get_enableDownload write Set_enableDownload; - property baseUrl: WideString read Get_baseUrl write Set_baseUrl; - property childNodes: IDispatch read Get_childNodes; - property inheritStyleSheets: WordBool read Get_inheritStyleSheets write Set_inheritStyleSheets; - property onbeforeeditfocus: OleVariant read Get_onbeforeeditfocus write Set_onbeforeeditfocus; - end; - -// *********************************************************************// -// DispIntf: IHTMLDocument3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F485-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDocument3Disp = dispinterface - ['{3050F485-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure releaseCapture; dispid 1072; - procedure recalc(fForce: WordBool); dispid 1073; - function createTextNode(const text: WideString): IHTMLDOMNode; dispid 1074; - property documentElement: IHTMLElement readonly dispid 1075; - property uniqueID: WideString readonly dispid 1077; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onpropertychange: OleVariant dispid - 2147412065; - property dir: WideString dispid - 2147412995; - property oncontextmenu: OleVariant dispid - 2147412047; - property onstop: OleVariant dispid - 2147412044; - function createDocumentFragment: IHTMLDocument2; dispid 1076; - property parentDocument: IHTMLDocument2 readonly dispid 1078; - property enableDownload: WordBool dispid 1079; - property baseUrl: WideString dispid 1080; - property childNodes: IDispatch readonly dispid - 2147417063; - property inheritStyleSheets: WordBool dispid 1082; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - function getElementsByName(const v: WideString): IHTMLElementCollection; dispid 1086; - function getElementById(const v: WideString): IHTMLElement; dispid 1088; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid 1087; - end; - -// *********************************************************************// -// Interface: IHTMLDocument4 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F69A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDocument4 = interface(IDispatch) - ['{3050F69A-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure focus; safecall; - function hasFocus: WordBool; safecall; - procedure Set_onselectionchange(p: OleVariant); safecall; - function Get_onselectionchange: OleVariant; safecall; - function Get_namespaces: IDispatch; safecall; - function createDocumentFromUrl(const bstrUrl: WideString; const bstrOptions: WideString): IHTMLDocument2; safecall; - procedure Set_media(const p: WideString); safecall; - function Get_media: WideString; safecall; - function CreateEventObject(var pvarEventObject: OleVariant): IHTMLEventObj; safecall; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; safecall; - function createRenderStyle(const v: WideString): IHTMLRenderStyle; safecall; - procedure Set_oncontrolselect(p: OleVariant); safecall; - function Get_oncontrolselect: OleVariant; safecall; - function Get_URLUnencoded: WideString; safecall; - property onselectionchange: OleVariant read Get_onselectionchange write Set_onselectionchange; - property namespaces: IDispatch read Get_namespaces; - property media: WideString read Get_media write Set_media; - property oncontrolselect: OleVariant read Get_oncontrolselect write Set_oncontrolselect; - property URLUnencoded: WideString read Get_URLUnencoded; - end; - -// *********************************************************************// -// DispIntf: IHTMLDocument4Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F69A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDocument4Disp = dispinterface - ['{3050F69A-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure focus; dispid 1089; - function hasFocus: WordBool; dispid 1090; - property onselectionchange: OleVariant dispid - 2147412032; - property namespaces: IDispatch readonly dispid 1091; - function createDocumentFromUrl(const bstrUrl: WideString; const bstrOptions: WideString): IHTMLDocument2; dispid 1092; - property media: WideString dispid 1093; - function CreateEventObject(var pvarEventObject: OleVariant): IHTMLEventObj; dispid 1094; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid 1095; - function createRenderStyle(const v: WideString): IHTMLRenderStyle; dispid 1096; - property oncontrolselect: OleVariant dispid - 2147412033; - property URLUnencoded: WideString readonly dispid 1097; - end; - -// *********************************************************************// -// Interface: IHTMLDocument5 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F80C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDocument5 = interface(IDispatch) - ['{3050F80C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_onmousewheel(p: OleVariant); safecall; - function Get_onmousewheel: OleVariant; safecall; - function Get_doctype: IHTMLDOMNode; safecall; - function Get_implementation_: IHTMLDOMImplementation; safecall; - function createAttribute(const bstrattrName: WideString): IHTMLDOMAttribute; safecall; - function createComment(const bstrdata: WideString): IHTMLDOMNode; safecall; - procedure Set_onfocusin(p: OleVariant); safecall; - function Get_onfocusin: OleVariant; safecall; - procedure Set_onfocusout(p: OleVariant); safecall; - function Get_onfocusout: OleVariant; safecall; - procedure Set_onactivate(p: OleVariant); safecall; - function Get_onactivate: OleVariant; safecall; - procedure Set_ondeactivate(p: OleVariant); safecall; - function Get_ondeactivate: OleVariant; safecall; - procedure Set_onbeforeactivate(p: OleVariant); safecall; - function Get_onbeforeactivate: OleVariant; safecall; - procedure Set_onbeforedeactivate(p: OleVariant); safecall; - function Get_onbeforedeactivate: OleVariant; safecall; - function Get_compatMode: WideString; safecall; - property onmousewheel: OleVariant read Get_onmousewheel write Set_onmousewheel; - property doctype: IHTMLDOMNode read Get_doctype; - property implementation_: IHTMLDOMImplementation read Get_implementation_; - property onfocusin: OleVariant read Get_onfocusin write Set_onfocusin; - property onfocusout: OleVariant read Get_onfocusout write Set_onfocusout; - property onactivate: OleVariant read Get_onactivate write Set_onactivate; - property ondeactivate: OleVariant read Get_ondeactivate write Set_ondeactivate; - property onbeforeactivate: OleVariant read Get_onbeforeactivate write Set_onbeforeactivate; - property onbeforedeactivate: OleVariant read Get_onbeforedeactivate write Set_onbeforedeactivate; - property compatMode: WideString read Get_compatMode; - end; - -// *********************************************************************// -// DispIntf: IHTMLDocument5Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F80C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDocument5Disp = dispinterface - ['{3050F80C-98B5-11CF-BB82-00AA00BDCE0B}'] - property onmousewheel: OleVariant dispid - 2147412036; - property doctype: IHTMLDOMNode readonly dispid 1098; - property implementation_: IHTMLDOMImplementation readonly dispid 1099; - function createAttribute(const bstrattrName: WideString): IHTMLDOMAttribute; dispid 1100; - function createComment(const bstrdata: WideString): IHTMLDOMNode; dispid 1101; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onbeforedeactivate: OleVariant dispid - 2147412035; - property compatMode: WideString readonly dispid 1102; - end; - -// *********************************************************************// -// DispIntf: DispHTMLDocument -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F55F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLDocument = dispinterface - ['{3050F55F-98B5-11CF-BB82-00AA00BDCE0B}'] - property Script: IDispatch readonly dispid 1001; - property all: IHTMLElementCollection readonly dispid 1003; - property body: IHTMLElement readonly dispid 1004; - property activeElement: IHTMLElement readonly dispid 1005; - property images: IHTMLElementCollection readonly dispid 1011; - property applets: IHTMLElementCollection readonly dispid 1008; - property links: IHTMLElementCollection readonly dispid 1009; - property forms: IHTMLElementCollection readonly dispid 1010; - property anchors: IHTMLElementCollection readonly dispid 1007; - property title: WideString dispid 1012; - property scripts: IHTMLElementCollection readonly dispid 1013; - property designMode: WideString dispid 1014; - property selection: IHTMLSelectionObject readonly dispid 1017; - property readyState: WideString readonly dispid 1018; - property frames: IHTMLFramesCollection2 readonly dispid 1019; - property embeds: IHTMLElementCollection readonly dispid 1015; - property plugins: IHTMLElementCollection readonly dispid 1021; - property alinkColor: OleVariant dispid 1022; - property bgColor: OleVariant dispid - 501; - property fgColor: OleVariant dispid - 2147413110; - property linkColor: OleVariant dispid 1024; - property vlinkColor: OleVariant dispid 1023; - property referrer: WideString readonly dispid 1027; - property location: IHTMLLocation readonly dispid 1026; - property lastModified: WideString readonly dispid 1028; - property url: WideString dispid 1025; - property domain: WideString dispid 1029; - property cookie: WideString dispid 1030; - property expando: WordBool dispid 1031; - property charset: WideString dispid 1032; - property defaultCharset: WideString dispid 1033; - property mimeType: WideString readonly dispid 1041; - property fileSize: WideString readonly dispid 1042; - property fileCreatedDate: WideString readonly dispid 1043; - property fileModifiedDate: WideString readonly dispid 1044; - property fileUpdatedDate: WideString readonly dispid 1045; - property security: WideString readonly dispid 1046; - property protocol: WideString readonly dispid 1047; - property nameProp: WideString readonly dispid 1048; - procedure write(psarray: {??PSafeArray} OleVariant); dispid 1054; - procedure writeln(psarray: {??PSafeArray} OleVariant); dispid 1055; - function open(const url: WideString; name: OleVariant; features: OleVariant; replace: OleVariant): IDispatch; dispid 1056; - procedure close; dispid 1057; - procedure clear; dispid 1058; - function queryCommandSupported(const cmdID: WideString): WordBool; dispid 1059; - function queryCommandEnabled(const cmdID: WideString): WordBool; dispid 1060; - function queryCommandState(const cmdID: WideString): WordBool; dispid 1061; - function queryCommandIndeterm(const cmdID: WideString): WordBool; dispid 1062; - function queryCommandText(const cmdID: WideString): WideString; dispid 1063; - function queryCommandValue(const cmdID: WideString): OleVariant; dispid 1064; - function execCommand(const cmdID: WideString; showUI: WordBool; value: OleVariant): WordBool; dispid 1065; - function execCommandShowHelp(const cmdID: WideString): WordBool; dispid 1066; - function createElement(const eTag: WideString): IHTMLElement; dispid 1067; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeyup: OleVariant dispid - 2147412106; - property onkeydown: OleVariant dispid - 2147412107; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseup: OleVariant dispid - 2147412109; - property onmousedown: OleVariant dispid - 2147412110; - property onmousemove: OleVariant dispid - 2147412108; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onreadystatechange: OleVariant dispid - 2147412087; - property onafterupdate: OleVariant dispid - 2147412090; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondragstart: OleVariant dispid - 2147412077; - property onselectstart: OleVariant dispid - 2147412075; - function elementFromPoint(x: Integer; y: Integer): IHTMLElement; dispid 1068; - property parentWindow: IHTMLWindow2 readonly dispid 1034; - property styleSheets: IHTMLStyleSheetsCollection readonly dispid 1069; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onerrorupdate: OleVariant dispid - 2147412074; - function toString: WideString; dispid 1070; - function createStyleSheet(const bstrHref: WideString; lIndex: Integer): IHTMLStyleSheet; dispid 1071; - procedure releaseCapture; dispid 1072; - procedure recalc(fForce: WordBool); dispid 1073; - function createTextNode(const text: WideString): IHTMLDOMNode; dispid 1074; - property documentElement: IHTMLElement readonly dispid 1075; - property uniqueID: WideString readonly dispid 1077; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onpropertychange: OleVariant dispid - 2147412065; - property dir: WideString dispid - 2147412995; - property oncontextmenu: OleVariant dispid - 2147412047; - property onstop: OleVariant dispid - 2147412044; - function createDocumentFragment: IHTMLDocument2; dispid 1076; - property parentDocument: IHTMLDocument2 readonly dispid 1078; - property enableDownload: WordBool dispid 1079; - property baseUrl: WideString dispid 1080; - property inheritStyleSheets: WordBool dispid 1082; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - function getElementsByName(const v: WideString): IHTMLElementCollection; dispid 1086; - function getElementById(const v: WideString): IHTMLElement; dispid 1088; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid 1087; - procedure focus; dispid 1089; - function hasFocus: WordBool; dispid 1090; - property onselectionchange: OleVariant dispid - 2147412032; - property namespaces: IDispatch readonly dispid 1091; - function createDocumentFromUrl(const bstrUrl: WideString; const bstrOptions: WideString): IHTMLDocument2; dispid 1092; - property media: WideString dispid 1093; - function CreateEventObject(var pvarEventObject: OleVariant): IHTMLEventObj; dispid 1094; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid 1095; - function createRenderStyle(const v: WideString): IHTMLRenderStyle; dispid 1096; - property oncontrolselect: OleVariant dispid - 2147412033; - property URLUnencoded: WideString readonly dispid 1097; - property onmousewheel: OleVariant dispid - 2147412036; - property doctype: IHTMLDOMNode readonly dispid 1098; - property implementation_: IHTMLDOMImplementation readonly dispid 1099; - function createAttribute(const bstrattrName: WideString): IHTMLDOMAttribute; dispid 1100; - function createComment(const bstrdata: WideString): IHTMLDOMNode; dispid 1101; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onbeforedeactivate: OleVariant dispid - 2147412035; - property compatMode: WideString readonly dispid 1102; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - end; - -// *********************************************************************// -// DispIntf: DWebBridgeEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {A6D897FF-0A95-11D1-B0BA-006008166E11} -// *********************************************************************// - DWebBridgeEvents = dispinterface - ['{A6D897FF-0A95-11D1-B0BA-006008166E11}'] - procedure onscriptletevent(const name: WideString; eventData: OleVariant); dispid 1; - procedure onreadystatechange; dispid - 609; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - function onkeypress: WordBool; dispid - 603; - procedure onmousedown; dispid - 605; - procedure onmousemove; dispid - 606; - procedure onmouseup; dispid - 607; - end; - -// *********************************************************************// -// Interface: IWebBridge -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {AE24FDAD-03C6-11D1-8B76-0080C744F389} -// *********************************************************************// - IWebBridge = interface(IDispatch) - ['{AE24FDAD-03C6-11D1-8B76-0080C744F389}'] - procedure Set_url(const p: WideString); safecall; - function Get_url: WideString; safecall; - procedure Set_Scrollbar(p: WordBool); safecall; - function Get_Scrollbar: WordBool; safecall; - procedure Set_embed(p: WordBool); safecall; - function Get_embed: WordBool; safecall; - function Get_event: IDispatch; safecall; - function Get_readyState: Integer; safecall; - procedure AboutBox; safecall; - property url: WideString read Get_url write Set_url; - property Scrollbar: WordBool read Get_Scrollbar write Set_Scrollbar; - property embed: WordBool read Get_embed write Set_embed; - property event: IDispatch read Get_event; - property readyState: Integer read Get_readyState; - end; - -// *********************************************************************// -// DispIntf: IWebBridgeDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {AE24FDAD-03C6-11D1-8B76-0080C744F389} -// *********************************************************************// - IWebBridgeDisp = dispinterface - ['{AE24FDAD-03C6-11D1-8B76-0080C744F389}'] - property url: WideString dispid 1; - property Scrollbar: WordBool dispid 2; - property embed: WordBool dispid 3; - property event: IDispatch readonly dispid 1152; - property readyState: Integer readonly dispid - 525; - procedure AboutBox; dispid - 552; - end; - -// *********************************************************************// -// Interface: IWBScriptControl -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {A5170870-0CF8-11D1-8B91-0080C744F389} -// *********************************************************************// - IWBScriptControl = interface(IDispatch) - ['{A5170870-0CF8-11D1-8B91-0080C744F389}'] - procedure raiseEvent(const name: WideString; eventData: OleVariant); safecall; - procedure bubbleEvent; safecall; - procedure setContextMenu(menuItemPairs: OleVariant); safecall; - procedure Set_selectableContent(p: WordBool); safecall; - function Get_selectableContent: WordBool; safecall; - function Get_frozen: WordBool; safecall; - procedure Set_Scrollbar(p: WordBool); safecall; - function Get_Scrollbar: WordBool; safecall; - function Get_version: WideString; safecall; - function Get_visibility: WordBool; safecall; - procedure Set_onvisibilitychange(p: OleVariant); safecall; - function Get_onvisibilitychange: OleVariant; safecall; - property selectableContent: WordBool read Get_selectableContent write Set_selectableContent; - property frozen: WordBool read Get_frozen; - property Scrollbar: WordBool read Get_Scrollbar write Set_Scrollbar; - property version: WideString read Get_version; - property visibility: WordBool read Get_visibility; - property onvisibilitychange: OleVariant read Get_onvisibilitychange write Set_onvisibilitychange; - end; - -// *********************************************************************// -// DispIntf: IWBScriptControlDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {A5170870-0CF8-11D1-8B91-0080C744F389} -// *********************************************************************// - IWBScriptControlDisp = dispinterface - ['{A5170870-0CF8-11D1-8B91-0080C744F389}'] - procedure raiseEvent(const name: WideString; eventData: OleVariant); dispid 1; - procedure bubbleEvent; dispid 2; - procedure setContextMenu(menuItemPairs: OleVariant); dispid 3; - property selectableContent: WordBool dispid 4; - property frozen: WordBool readonly dispid 5; - property Scrollbar: WordBool dispid 7; - property version: WideString readonly dispid 8; - property visibility: WordBool readonly dispid 9; - property onvisibilitychange: OleVariant dispid 10; - end; - -// *********************************************************************// -// Interface: IHTMLEmbedElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F25F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEmbedElement = interface(IDispatch) - ['{3050F25F-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_hidden(const p: WideString); safecall; - function Get_hidden: WideString; safecall; - function Get_palette: WideString; safecall; - function Get_pluginspage: WideString; safecall; - procedure Set_src(const p: WideString); safecall; - function Get_src: WideString; safecall; - procedure Set_units(const p: WideString); safecall; - function Get_units: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - procedure Set_height(p: OleVariant); safecall; - function Get_height: OleVariant; safecall; - property hidden: WideString read Get_hidden write Set_hidden; - property palette: WideString read Get_palette; - property pluginspage: WideString read Get_pluginspage; - property src: WideString read Get_src write Set_src; - property units: WideString read Get_units write Set_units; - property name: WideString read Get_name write Set_name; - property width: OleVariant read Get_width write Set_width; - property height: OleVariant read Get_height write Set_height; - end; - -// *********************************************************************// -// DispIntf: IHTMLEmbedElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F25F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEmbedElementDisp = dispinterface - ['{3050F25F-98B5-11CF-BB82-00AA00BDCE0B}'] - property hidden: WideString dispid - 2147415102; - property palette: WideString readonly dispid - 2147415108; - property pluginspage: WideString readonly dispid - 2147415107; - property src: WideString dispid - 2147415106; - property units: WideString dispid - 2147415104; - property name: WideString dispid - 2147418112; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - end; - -// *********************************************************************// -// DispIntf: DispHTMLEmbed -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F52E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLEmbed = dispinterface - ['{3050F52E-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property hidden: WideString dispid - 2147415102; - property palette: WideString readonly dispid - 2147415108; - property pluginspage: WideString readonly dispid - 2147415107; - property src: WideString dispid - 2147415106; - property units: WideString dispid - 2147415104; - property name: WideString dispid - 2147418112; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - end; - -// *********************************************************************// -// DispIntf: HTMLMapEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F61E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLMapEvents2 = dispinterface - ['{3050F61E-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - end; - -// *********************************************************************// -// DispIntf: HTMLMapEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F3BA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLMapEvents = dispinterface - ['{3050F3BA-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - end; - -// *********************************************************************// -// Interface: IHTMLAreasCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F383-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAreasCollection = interface(IDispatch) - ['{3050F383-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_length(p: Integer); safecall; - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - function item(name: OleVariant; index: OleVariant): IDispatch; safecall; - function tags(tagName: OleVariant): IDispatch; safecall; - procedure add(const element: IHTMLElement; before: OleVariant); safecall; - procedure remove(index: Integer); safecall; - property length: Integer read Get_length write Set_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLAreasCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F383-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAreasCollectionDisp = dispinterface - ['{3050F383-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(name: OleVariant; index: OleVariant): IDispatch; dispid 0; - function tags(tagName: OleVariant): IDispatch; dispid 1502; - procedure add(const element: IHTMLElement; before: OleVariant); dispid 1503; - procedure remove(index: Integer); dispid 1504; - end; - -// *********************************************************************// -// Interface: IHTMLAreasCollection2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5EC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAreasCollection2 = interface(IDispatch) - ['{3050F5EC-98B5-11CF-BB82-00AA00BDCE0B}'] - function urns(urn: OleVariant): IDispatch; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLAreasCollection2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5EC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAreasCollection2Disp = dispinterface - ['{3050F5EC-98B5-11CF-BB82-00AA00BDCE0B}'] - function urns(urn: OleVariant): IDispatch; dispid 1505; - end; - -// *********************************************************************// -// Interface: IHTMLAreasCollection3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F837-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAreasCollection3 = interface(IDispatch) - ['{3050F837-98B5-11CF-BB82-00AA00BDCE0B}'] - function namedItem(const name: WideString): IDispatch; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLAreasCollection3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F837-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAreasCollection3Disp = dispinterface - ['{3050F837-98B5-11CF-BB82-00AA00BDCE0B}'] - function namedItem(const name: WideString): IDispatch; dispid 1506; - end; - -// *********************************************************************// -// Interface: IHTMLMapElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F266-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLMapElement = interface(IDispatch) - ['{3050F266-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_areas: IHTMLAreasCollection; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - property areas: IHTMLAreasCollection read Get_areas; - property name: WideString read Get_name write Set_name; - end; - -// *********************************************************************// -// DispIntf: IHTMLMapElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F266-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLMapElementDisp = dispinterface - ['{3050F266-98B5-11CF-BB82-00AA00BDCE0B}'] - property areas: IHTMLAreasCollection readonly dispid 1002; - property name: WideString dispid - 2147418112; - end; - -// *********************************************************************// -// DispIntf: DispHTMLAreasCollection -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F56A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLAreasCollection = dispinterface - ['{3050F56A-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer dispid 1500; - property _newEnum: IUnknown readonly dispid - 4; - function item(name: OleVariant; index: OleVariant): IDispatch; dispid 0; - function tags(tagName: OleVariant): IDispatch; dispid 1502; - procedure add(const element: IHTMLElement; before: OleVariant); dispid 1503; - procedure remove(index: Integer); dispid 1504; - function urns(urn: OleVariant): IDispatch; dispid 1505; - function namedItem(const name: WideString): IDispatch; dispid 1506; - end; - -// *********************************************************************// -// DispIntf: DispHTMLMapElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F526-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLMapElement = dispinterface - ['{3050F526-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property areas: IHTMLAreasCollection readonly dispid 1002; - property name: WideString dispid - 2147418112; - end; - -// *********************************************************************// -// DispIntf: HTMLAreaEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F611-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLAreaEvents2 = dispinterface - ['{3050F611-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - end; - -// *********************************************************************// -// DispIntf: HTMLAreaEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F366-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLAreaEvents = dispinterface - ['{3050F366-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - end; - -// *********************************************************************// -// Interface: IHTMLAreaElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F265-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAreaElement = interface(IDispatch) - ['{3050F265-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_shape(const p: WideString); safecall; - function Get_shape: WideString; safecall; - procedure Set_coords(const p: WideString); safecall; - function Get_coords: WideString; safecall; - procedure Set_href(const p: WideString); safecall; - function Get_href: WideString; safecall; - procedure Set_target(const p: WideString); safecall; - function Get_target: WideString; safecall; - procedure Set_alt(const p: WideString); safecall; - function Get_alt: WideString; safecall; - procedure Set_noHref(p: WordBool); safecall; - function Get_noHref: WordBool; safecall; - procedure Set_host(const p: WideString); safecall; - function Get_host: WideString; safecall; - procedure Set_hostname(const p: WideString); safecall; - function Get_hostname: WideString; safecall; - procedure Set_pathname(const p: WideString); safecall; - function Get_pathname: WideString; safecall; - procedure Set_port(const p: WideString); safecall; - function Get_port: WideString; safecall; - procedure Set_protocol(const p: WideString); safecall; - function Get_protocol: WideString; safecall; - procedure Set_search(const p: WideString); safecall; - function Get_search: WideString; safecall; - procedure Set_hash(const p: WideString); safecall; - function Get_hash: WideString; safecall; - procedure Set_onblur(p: OleVariant); safecall; - function Get_onblur: OleVariant; safecall; - procedure Set_onfocus(p: OleVariant); safecall; - function Get_onfocus: OleVariant; safecall; - procedure Set_tabIndex(p: Smallint); safecall; - function Get_tabIndex: Smallint; safecall; - procedure focus; safecall; - procedure blur; safecall; - property shape: WideString read Get_shape write Set_shape; - property coords: WideString read Get_coords write Set_coords; - property href: WideString read Get_href write Set_href; - property target: WideString read Get_target write Set_target; - property alt: WideString read Get_alt write Set_alt; - property noHref: WordBool read Get_noHref write Set_noHref; - property host: WideString read Get_host write Set_host; - property hostname: WideString read Get_hostname write Set_hostname; - property pathname: WideString read Get_pathname write Set_pathname; - property port: WideString read Get_port write Set_port; - property protocol: WideString read Get_protocol write Set_protocol; - property search: WideString read Get_search write Set_search; - property hash: WideString read Get_hash write Set_hash; - property onblur: OleVariant read Get_onblur write Set_onblur; - property onfocus: OleVariant read Get_onfocus write Set_onfocus; - property tabIndex: Smallint read Get_tabIndex write Set_tabIndex; - end; - -// *********************************************************************// -// DispIntf: IHTMLAreaElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F265-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAreaElementDisp = dispinterface - ['{3050F265-98B5-11CF-BB82-00AA00BDCE0B}'] - property shape: WideString dispid 1001; - property coords: WideString dispid 1002; - property href: WideString dispid 0; - property target: WideString dispid 1004; - property alt: WideString dispid 1005; - property noHref: WordBool dispid 1006; - property host: WideString dispid 1007; - property hostname: WideString dispid 1008; - property pathname: WideString dispid 1009; - property port: WideString dispid 1010; - property protocol: WideString dispid 1011; - property search: WideString dispid 1012; - property hash: WideString dispid 1013; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - procedure blur; dispid - 2147416110; - end; - -// *********************************************************************// -// DispIntf: DispHTMLAreaElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F503-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLAreaElement = dispinterface - ['{3050F503-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property shape: WideString dispid 1001; - property coords: WideString dispid 1002; - property href: WideString dispid 0; - property target: WideString dispid 1004; - property alt: WideString dispid 1005; - property noHref: WordBool dispid 1006; - property host: WideString dispid 1007; - property hostname: WideString dispid 1008; - property pathname: WideString dispid 1009; - property port: WideString dispid 1010; - property protocol: WideString dispid 1011; - property search: WideString dispid 1012; - property hash: WideString dispid 1013; - end; - -// *********************************************************************// -// Interface: IHTMLTableCaption -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2EB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableCaption = interface(IDispatch) - ['{3050F2EB-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_vAlign(const p: WideString); safecall; - function Get_vAlign: WideString; safecall; - property align: WideString read Get_align write Set_align; - property vAlign: WideString read Get_vAlign write Set_vAlign; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableCaptionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F2EB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableCaptionDisp = dispinterface - ['{3050F2EB-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418040; - property vAlign: WideString dispid - 2147413081; - end; - -// *********************************************************************// -// DispIntf: DispHTMLTableCaption -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F508-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLTableCaption = dispinterface - ['{3050F508-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property align: WideString dispid - 2147418040; - property vAlign: WideString dispid - 2147413081; - end; - -// *********************************************************************// -// Interface: IHTMLCommentElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F20C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCommentElement = interface(IDispatch) - ['{3050F20C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_text(const p: WideString); safecall; - function Get_text: WideString; safecall; - procedure Set_atomic(p: Integer); safecall; - function Get_atomic: Integer; safecall; - property text: WideString read Get_text write Set_text; - property atomic: Integer read Get_atomic write Set_atomic; - end; - -// *********************************************************************// -// DispIntf: IHTMLCommentElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F20C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCommentElementDisp = dispinterface - ['{3050F20C-98B5-11CF-BB82-00AA00BDCE0B}'] - property text: WideString dispid 1001; - property atomic: Integer dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLCommentElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F813-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCommentElement2 = interface(IDispatch) - ['{3050F813-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_data(const p: WideString); safecall; - function Get_data: WideString; safecall; - function Get_length: Integer; safecall; - function substringData(offset: Integer; Count: Integer): WideString; safecall; - procedure appendData(const bstrstring: WideString); safecall; - procedure insertData(offset: Integer; const bstrstring: WideString); safecall; - procedure deleteData(offset: Integer; Count: Integer); safecall; - procedure replaceData(offset: Integer; Count: Integer; const bstrstring: WideString); safecall; - property data: WideString read Get_data write Set_data; - property length: Integer read Get_length; - end; - -// *********************************************************************// -// DispIntf: IHTMLCommentElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F813-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCommentElement2Disp = dispinterface - ['{3050F813-98B5-11CF-BB82-00AA00BDCE0B}'] - property data: WideString dispid 1003; - property length: Integer readonly dispid 1004; - function substringData(offset: Integer; Count: Integer): WideString; dispid 1005; - procedure appendData(const bstrstring: WideString); dispid 1006; - procedure insertData(offset: Integer; const bstrstring: WideString); dispid 1007; - procedure deleteData(offset: Integer; Count: Integer); dispid 1008; - procedure replaceData(offset: Integer; Count: Integer; const bstrstring: WideString); dispid 1009; - end; - -// *********************************************************************// -// DispIntf: DispHTMLCommentElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F50A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLCommentElement = dispinterface - ['{3050F50A-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property text: WideString dispid 1001; - property atomic: Integer dispid 1002; - property data: WideString dispid 1003; - property length: Integer readonly dispid 1004; - function substringData(offset: Integer; Count: Integer): WideString; dispid 1005; - procedure appendData(const bstrstring: WideString); dispid 1006; - procedure insertData(offset: Integer; const bstrstring: WideString); dispid 1007; - procedure deleteData(offset: Integer; Count: Integer); dispid 1008; - procedure replaceData(offset: Integer; Count: Integer; const bstrstring: WideString); dispid 1009; - end; - -// *********************************************************************// -// Interface: IHTMLPhraseElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F20A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPhraseElement = interface(IDispatch) - ['{3050F20A-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: IHTMLPhraseElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F20A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPhraseElementDisp = dispinterface - ['{3050F20A-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// Interface: IHTMLPhraseElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F824-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPhraseElement2 = interface(IDispatch) - ['{3050F824-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_cite(const p: WideString); safecall; - function Get_cite: WideString; safecall; - procedure Set_dateTime(const p: WideString); safecall; - function Get_dateTime: WideString; safecall; - property cite: WideString read Get_cite write Set_cite; - property dateTime: WideString read Get_dateTime write Set_dateTime; - end; - -// *********************************************************************// -// DispIntf: IHTMLPhraseElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F824-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPhraseElement2Disp = dispinterface - ['{3050F824-98B5-11CF-BB82-00AA00BDCE0B}'] - property cite: WideString dispid 1001; - property dateTime: WideString dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLSpanElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3F3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSpanElement = interface(IDispatch) - ['{3050F3F3-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: IHTMLSpanElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3F3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSpanElementDisp = dispinterface - ['{3050F3F3-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: DispHTMLPhraseElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F52D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLPhraseElement = dispinterface - ['{3050F52D-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property cite: WideString dispid 1001; - property dateTime: WideString dispid 1002; - end; - -// *********************************************************************// -// DispIntf: DispHTMLSpanElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F548-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLSpanElement = dispinterface - ['{3050F548-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - end; - -// *********************************************************************// -// DispIntf: HTMLTableEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F623-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLTableEvents2 = dispinterface - ['{3050F623-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - end; - -// *********************************************************************// -// DispIntf: HTMLTableEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F407-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLTableEvents = dispinterface - ['{3050F407-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - end; - -// *********************************************************************// -// Interface: IHTMLTableSection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F23B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableSection = interface(IDispatch) - ['{3050F23B-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_vAlign(const p: WideString); safecall; - function Get_vAlign: WideString; safecall; - procedure Set_bgColor(p: OleVariant); safecall; - function Get_bgColor: OleVariant; safecall; - function Get_rows: IHTMLElementCollection; safecall; - function insertRow(index: Integer): IDispatch; safecall; - procedure deleteRow(index: Integer); safecall; - property align: WideString read Get_align write Set_align; - property vAlign: WideString read Get_vAlign write Set_vAlign; - property bgColor: OleVariant read Get_bgColor write Set_bgColor; - property rows: IHTMLElementCollection read Get_rows; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableSectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F23B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableSectionDisp = dispinterface - ['{3050F23B-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418040; - property vAlign: WideString dispid - 2147413081; - property bgColor: OleVariant dispid - 501; - property rows: IHTMLElementCollection readonly dispid 1000; - function insertRow(index: Integer): IDispatch; dispid 1001; - procedure deleteRow(index: Integer); dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLTable -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F21E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTable = interface(IDispatch) - ['{3050F21E-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_cols(p: Integer); safecall; - function Get_cols: Integer; safecall; - procedure Set_border(p: OleVariant); safecall; - function Get_border: OleVariant; safecall; - procedure Set_frame(const p: WideString); safecall; - function Get_frame: WideString; safecall; - procedure Set_rules(const p: WideString); safecall; - function Get_rules: WideString; safecall; - procedure Set_cellSpacing(p: OleVariant); safecall; - function Get_cellSpacing: OleVariant; safecall; - procedure Set_cellPadding(p: OleVariant); safecall; - function Get_cellPadding: OleVariant; safecall; - procedure Set_background(const p: WideString); safecall; - function Get_background: WideString; safecall; - procedure Set_bgColor(p: OleVariant); safecall; - function Get_bgColor: OleVariant; safecall; - procedure Set_borderColor(p: OleVariant); safecall; - function Get_borderColor: OleVariant; safecall; - procedure Set_borderColorLight(p: OleVariant); safecall; - function Get_borderColorLight: OleVariant; safecall; - procedure Set_borderColorDark(p: OleVariant); safecall; - function Get_borderColorDark: OleVariant; safecall; - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure refresh; safecall; - function Get_rows: IHTMLElementCollection; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - procedure Set_height(p: OleVariant); safecall; - function Get_height: OleVariant; safecall; - procedure Set_dataPageSize(p: Integer); safecall; - function Get_dataPageSize: Integer; safecall; - procedure nextPage; safecall; - procedure previousPage; safecall; - function Get_tHead: IHTMLTableSection; safecall; - function Get_tFoot: IHTMLTableSection; safecall; - function Get_tBodies: IHTMLElementCollection; safecall; - function Get_caption: IHTMLTableCaption; safecall; - function createTHead: IDispatch; safecall; - procedure deleteTHead; safecall; - function createTFoot: IDispatch; safecall; - procedure deleteTFoot; safecall; - function createCaption: IHTMLTableCaption; safecall; - procedure deleteCaption; safecall; - function insertRow(index: Integer): IDispatch; safecall; - procedure deleteRow(index: Integer); safecall; - function Get_readyState: WideString; safecall; - procedure Set_onreadystatechange(p: OleVariant); safecall; - function Get_onreadystatechange: OleVariant; safecall; - property cols: Integer read Get_cols write Set_cols; - property border: OleVariant read Get_border write Set_border; - property frame: WideString read Get_frame write Set_frame; - property rules: WideString read Get_rules write Set_rules; - property cellSpacing: OleVariant read Get_cellSpacing write Set_cellSpacing; - property cellPadding: OleVariant read Get_cellPadding write Set_cellPadding; - property background: WideString read Get_background write Set_background; - property bgColor: OleVariant read Get_bgColor write Set_bgColor; - property borderColor: OleVariant read Get_borderColor write Set_borderColor; - property borderColorLight: OleVariant read Get_borderColorLight write Set_borderColorLight; - property borderColorDark: OleVariant read Get_borderColorDark write Set_borderColorDark; - property align: WideString read Get_align write Set_align; - property rows: IHTMLElementCollection read Get_rows; - property width: OleVariant read Get_width write Set_width; - property height: OleVariant read Get_height write Set_height; - property dataPageSize: Integer read Get_dataPageSize write Set_dataPageSize; - property tHead: IHTMLTableSection read Get_tHead; - property tFoot: IHTMLTableSection read Get_tFoot; - property tBodies: IHTMLElementCollection read Get_tBodies; - property caption: IHTMLTableCaption read Get_caption; - property readyState: WideString read Get_readyState; - property onreadystatechange: OleVariant read Get_onreadystatechange write Set_onreadystatechange; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F21E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableDisp = dispinterface - ['{3050F21E-98B5-11CF-BB82-00AA00BDCE0B}'] - property cols: Integer dispid 1001; - property border: OleVariant dispid 1002; - property frame: WideString dispid 1004; - property rules: WideString dispid 1003; - property cellSpacing: OleVariant dispid 1005; - property cellPadding: OleVariant dispid 1006; - property background: WideString dispid - 2147413111; - property bgColor: OleVariant dispid - 501; - property borderColor: OleVariant dispid - 2147413084; - property borderColorLight: OleVariant dispid - 2147413083; - property borderColorDark: OleVariant dispid - 2147413082; - property align: WideString dispid - 2147418039; - procedure refresh; dispid 1015; - property rows: IHTMLElementCollection readonly dispid 1016; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property dataPageSize: Integer dispid 1017; - procedure nextPage; dispid 1018; - procedure previousPage; dispid 1019; - property tHead: IHTMLTableSection readonly dispid 1020; - property tFoot: IHTMLTableSection readonly dispid 1021; - property tBodies: IHTMLElementCollection readonly dispid 1024; - property caption: IHTMLTableCaption readonly dispid 1025; - function createTHead: IDispatch; dispid 1026; - procedure deleteTHead; dispid 1027; - function createTFoot: IDispatch; dispid 1028; - procedure deleteTFoot; dispid 1029; - function createCaption: IHTMLTableCaption; dispid 1030; - procedure deleteCaption; dispid 1031; - function insertRow(index: Integer): IDispatch; dispid 1032; - procedure deleteRow(index: Integer); dispid 1033; - property readyState: WideString readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - end; - -// *********************************************************************// -// Interface: IHTMLTable2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4AD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTable2 = interface(IDispatch) - ['{3050F4AD-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure firstPage; safecall; - procedure lastPage; safecall; - function Get_cells: IHTMLElementCollection; safecall; - function moveRow(indexFrom: Integer; indexTo: Integer): IDispatch; safecall; - property cells: IHTMLElementCollection read Get_cells; - end; - -// *********************************************************************// -// DispIntf: IHTMLTable2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4AD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTable2Disp = dispinterface - ['{3050F4AD-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure firstPage; dispid 1035; - procedure lastPage; dispid 1036; - property cells: IHTMLElementCollection readonly dispid 1037; - function moveRow(indexFrom: Integer; indexTo: Integer): IDispatch; dispid 1038; - end; - -// *********************************************************************// -// Interface: IHTMLTable3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F829-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTable3 = interface(IDispatch) - ['{3050F829-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_summary(const p: WideString); safecall; - function Get_summary: WideString; safecall; - property summary: WideString read Get_summary write Set_summary; - end; - -// *********************************************************************// -// DispIntf: IHTMLTable3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F829-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTable3Disp = dispinterface - ['{3050F829-98B5-11CF-BB82-00AA00BDCE0B}'] - property summary: WideString dispid 1039; - end; - -// *********************************************************************// -// Interface: IHTMLTableCol -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F23A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableCol = interface(IDispatch) - ['{3050F23A-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_span(p: Integer); safecall; - function Get_span: Integer; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_vAlign(const p: WideString); safecall; - function Get_vAlign: WideString; safecall; - property span: Integer read Get_span write Set_span; - property width: OleVariant read Get_width write Set_width; - property align: WideString read Get_align write Set_align; - property vAlign: WideString read Get_vAlign write Set_vAlign; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableColDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F23A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableColDisp = dispinterface - ['{3050F23A-98B5-11CF-BB82-00AA00BDCE0B}'] - property span: Integer dispid 1001; - property width: OleVariant dispid - 2147418107; - property align: WideString dispid - 2147418040; - property vAlign: WideString dispid - 2147413081; - end; - -// *********************************************************************// -// Interface: IHTMLTableCol2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableCol2 = interface(IDispatch) - ['{3050F82A-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_ch(const p: WideString); safecall; - function Get_ch: WideString; safecall; - procedure Set_chOff(const p: WideString); safecall; - function Get_chOff: WideString; safecall; - property ch: WideString read Get_ch write Set_ch; - property chOff: WideString read Get_chOff write Set_chOff; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableCol2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableCol2Disp = dispinterface - ['{3050F82A-98B5-11CF-BB82-00AA00BDCE0B}'] - property ch: WideString dispid 1002; - property chOff: WideString dispid 1003; - end; - -// *********************************************************************// -// Interface: IHTMLTableSection2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5C7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableSection2 = interface(IDispatch) - ['{3050F5C7-98B5-11CF-BB82-00AA00BDCE0B}'] - function moveRow(indexFrom: Integer; indexTo: Integer): IDispatch; safecall; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableSection2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5C7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableSection2Disp = dispinterface - ['{3050F5C7-98B5-11CF-BB82-00AA00BDCE0B}'] - function moveRow(indexFrom: Integer; indexTo: Integer): IDispatch; dispid 1003; - end; - -// *********************************************************************// -// Interface: IHTMLTableSection3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableSection3 = interface(IDispatch) - ['{3050F82B-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_ch(const p: WideString); safecall; - function Get_ch: WideString; safecall; - procedure Set_chOff(const p: WideString); safecall; - function Get_chOff: WideString; safecall; - property ch: WideString read Get_ch write Set_ch; - property chOff: WideString read Get_chOff write Set_chOff; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableSection3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableSection3Disp = dispinterface - ['{3050F82B-98B5-11CF-BB82-00AA00BDCE0B}'] - property ch: WideString dispid 1004; - property chOff: WideString dispid 1005; - end; - -// *********************************************************************// -// Interface: IHTMLTableRow -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F23C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableRow = interface(IDispatch) - ['{3050F23C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_vAlign(const p: WideString); safecall; - function Get_vAlign: WideString; safecall; - procedure Set_bgColor(p: OleVariant); safecall; - function Get_bgColor: OleVariant; safecall; - procedure Set_borderColor(p: OleVariant); safecall; - function Get_borderColor: OleVariant; safecall; - procedure Set_borderColorLight(p: OleVariant); safecall; - function Get_borderColorLight: OleVariant; safecall; - procedure Set_borderColorDark(p: OleVariant); safecall; - function Get_borderColorDark: OleVariant; safecall; - function Get_rowIndex: Integer; safecall; - function Get_sectionRowIndex: Integer; safecall; - function Get_cells: IHTMLElementCollection; safecall; - function insertCell(index: Integer): IDispatch; safecall; - procedure deleteCell(index: Integer); safecall; - property align: WideString read Get_align write Set_align; - property vAlign: WideString read Get_vAlign write Set_vAlign; - property bgColor: OleVariant read Get_bgColor write Set_bgColor; - property borderColor: OleVariant read Get_borderColor write Set_borderColor; - property borderColorLight: OleVariant read Get_borderColorLight write Set_borderColorLight; - property borderColorDark: OleVariant read Get_borderColorDark write Set_borderColorDark; - property rowIndex: Integer read Get_rowIndex; - property sectionRowIndex: Integer read Get_sectionRowIndex; - property cells: IHTMLElementCollection read Get_cells; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableRowDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F23C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableRowDisp = dispinterface - ['{3050F23C-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418040; - property vAlign: WideString dispid - 2147413081; - property bgColor: OleVariant dispid - 501; - property borderColor: OleVariant dispid - 2147413084; - property borderColorLight: OleVariant dispid - 2147413083; - property borderColorDark: OleVariant dispid - 2147413082; - property rowIndex: Integer readonly dispid 1000; - property sectionRowIndex: Integer readonly dispid 1001; - property cells: IHTMLElementCollection readonly dispid 1002; - function insertCell(index: Integer): IDispatch; dispid 1003; - procedure deleteCell(index: Integer); dispid 1004; - end; - -// *********************************************************************// -// Interface: IHTMLTableRow2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4A1-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableRow2 = interface(IDispatch) - ['{3050F4A1-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_height(p: OleVariant); safecall; - function Get_height: OleVariant; safecall; - property height: OleVariant read Get_height write Set_height; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableRow2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4A1-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableRow2Disp = dispinterface - ['{3050F4A1-98B5-11CF-BB82-00AA00BDCE0B}'] - property height: OleVariant dispid - 2147418106; - end; - -// *********************************************************************// -// Interface: IHTMLTableRow3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableRow3 = interface(IDispatch) - ['{3050F82C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_ch(const p: WideString); safecall; - function Get_ch: WideString; safecall; - procedure Set_chOff(const p: WideString); safecall; - function Get_chOff: WideString; safecall; - property ch: WideString read Get_ch write Set_ch; - property chOff: WideString read Get_chOff write Set_chOff; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableRow3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableRow3Disp = dispinterface - ['{3050F82C-98B5-11CF-BB82-00AA00BDCE0B}'] - property ch: WideString dispid 1009; - property chOff: WideString dispid 1010; - end; - -// *********************************************************************// -// Interface: IHTMLTableRowMetrics -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F413-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableRowMetrics = interface(IDispatch) - ['{3050F413-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_clientHeight: Integer; safecall; - function Get_clientWidth: Integer; safecall; - function Get_clientTop: Integer; safecall; - function Get_clientLeft: Integer; safecall; - property clientHeight: Integer read Get_clientHeight; - property clientWidth: Integer read Get_clientWidth; - property clientTop: Integer read Get_clientTop; - property clientLeft: Integer read Get_clientLeft; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableRowMetricsDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F413-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableRowMetricsDisp = dispinterface - ['{3050F413-98B5-11CF-BB82-00AA00BDCE0B}'] - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - end; - -// *********************************************************************// -// Interface: IHTMLTableCell -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F23D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableCell = interface(IDispatch) - ['{3050F23D-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_rowSpan(p: Integer); safecall; - function Get_rowSpan: Integer; safecall; - procedure Set_colSpan(p: Integer); safecall; - function Get_colSpan: Integer; safecall; - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_vAlign(const p: WideString); safecall; - function Get_vAlign: WideString; safecall; - procedure Set_bgColor(p: OleVariant); safecall; - function Get_bgColor: OleVariant; safecall; - procedure Set_noWrap(p: WordBool); safecall; - function Get_noWrap: WordBool; safecall; - procedure Set_background(const p: WideString); safecall; - function Get_background: WideString; safecall; - procedure Set_borderColor(p: OleVariant); safecall; - function Get_borderColor: OleVariant; safecall; - procedure Set_borderColorLight(p: OleVariant); safecall; - function Get_borderColorLight: OleVariant; safecall; - procedure Set_borderColorDark(p: OleVariant); safecall; - function Get_borderColorDark: OleVariant; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - procedure Set_height(p: OleVariant); safecall; - function Get_height: OleVariant; safecall; - function Get_cellIndex: Integer; safecall; - property rowSpan: Integer read Get_rowSpan write Set_rowSpan; - property colSpan: Integer read Get_colSpan write Set_colSpan; - property align: WideString read Get_align write Set_align; - property vAlign: WideString read Get_vAlign write Set_vAlign; - property bgColor: OleVariant read Get_bgColor write Set_bgColor; - property noWrap: WordBool read Get_noWrap write Set_noWrap; - property background: WideString read Get_background write Set_background; - property borderColor: OleVariant read Get_borderColor write Set_borderColor; - property borderColorLight: OleVariant read Get_borderColorLight write Set_borderColorLight; - property borderColorDark: OleVariant read Get_borderColorDark write Set_borderColorDark; - property width: OleVariant read Get_width write Set_width; - property height: OleVariant read Get_height write Set_height; - property cellIndex: Integer read Get_cellIndex; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableCellDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F23D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableCellDisp = dispinterface - ['{3050F23D-98B5-11CF-BB82-00AA00BDCE0B}'] - property rowSpan: Integer dispid 2001; - property colSpan: Integer dispid 2002; - property align: WideString dispid - 2147418040; - property vAlign: WideString dispid - 2147413081; - property bgColor: OleVariant dispid - 501; - property noWrap: WordBool dispid - 2147413107; - property background: WideString dispid - 2147413111; - property borderColor: OleVariant dispid - 2147413084; - property borderColorLight: OleVariant dispid - 2147413083; - property borderColorDark: OleVariant dispid - 2147413082; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property cellIndex: Integer readonly dispid 2003; - end; - -// *********************************************************************// -// Interface: IHTMLTableCell2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableCell2 = interface(IDispatch) - ['{3050F82D-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_abbr(const p: WideString); safecall; - function Get_abbr: WideString; safecall; - procedure Set_axis(const p: WideString); safecall; - function Get_axis: WideString; safecall; - procedure Set_ch(const p: WideString); safecall; - function Get_ch: WideString; safecall; - procedure Set_chOff(const p: WideString); safecall; - function Get_chOff: WideString; safecall; - procedure Set_headers(const p: WideString); safecall; - function Get_headers: WideString; safecall; - procedure Set_scope(const p: WideString); safecall; - function Get_scope: WideString; safecall; - property abbr: WideString read Get_abbr write Set_abbr; - property axis: WideString read Get_axis write Set_axis; - property ch: WideString read Get_ch write Set_ch; - property chOff: WideString read Get_chOff write Set_chOff; - property headers: WideString read Get_headers write Set_headers; - property scope: WideString read Get_scope write Set_scope; - end; - -// *********************************************************************// -// DispIntf: IHTMLTableCell2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLTableCell2Disp = dispinterface - ['{3050F82D-98B5-11CF-BB82-00AA00BDCE0B}'] - property abbr: WideString dispid 2004; - property axis: WideString dispid 2005; - property ch: WideString dispid 2006; - property chOff: WideString dispid 2007; - property headers: WideString dispid 2008; - property scope: WideString dispid 2009; - end; - -// *********************************************************************// -// DispIntf: DispHTMLTable -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F532-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLTable = dispinterface - ['{3050F532-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property cols: Integer dispid 1001; - property border: OleVariant dispid 1002; - property frame: WideString dispid 1004; - property rules: WideString dispid 1003; - property cellSpacing: OleVariant dispid 1005; - property cellPadding: OleVariant dispid 1006; - property background: WideString dispid - 2147413111; - property bgColor: OleVariant dispid - 501; - property borderColor: OleVariant dispid - 2147413084; - property borderColorLight: OleVariant dispid - 2147413083; - property borderColorDark: OleVariant dispid - 2147413082; - property align: WideString dispid - 2147418039; - procedure refresh; dispid 1015; - property rows: IHTMLElementCollection readonly dispid 1016; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property dataPageSize: Integer dispid 1017; - procedure nextPage; dispid 1018; - procedure previousPage; dispid 1019; - property tHead: IHTMLTableSection readonly dispid 1020; - property tFoot: IHTMLTableSection readonly dispid 1021; - property tBodies: IHTMLElementCollection readonly dispid 1024; - property caption: IHTMLTableCaption readonly dispid 1025; - function createTHead: IDispatch; dispid 1026; - procedure deleteTHead; dispid 1027; - function createTFoot: IDispatch; dispid 1028; - procedure deleteTFoot; dispid 1029; - function createCaption: IHTMLTableCaption; dispid 1030; - procedure deleteCaption; dispid 1031; - function insertRow(index: Integer): IDispatch; dispid 1032; - procedure deleteRow(index: Integer); dispid 1033; - procedure firstPage; dispid 1035; - procedure lastPage; dispid 1036; - property cells: IHTMLElementCollection readonly dispid 1037; - function moveRow(indexFrom: Integer; indexTo: Integer): IDispatch; dispid 1038; - property summary: WideString dispid 1039; - end; - -// *********************************************************************// -// DispIntf: DispHTMLTableCol -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F533-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLTableCol = dispinterface - ['{3050F533-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property span: Integer dispid 1001; - property width: OleVariant dispid - 2147418107; - property align: WideString dispid - 2147418040; - property vAlign: WideString dispid - 2147413081; - property ch: WideString dispid 1002; - property chOff: WideString dispid 1003; - end; - -// *********************************************************************// -// DispIntf: DispHTMLTableSection -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F534-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLTableSection = dispinterface - ['{3050F534-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property align: WideString dispid - 2147418040; - property vAlign: WideString dispid - 2147413081; - property bgColor: OleVariant dispid - 501; - property rows: IHTMLElementCollection readonly dispid 1000; - function insertRow(index: Integer): IDispatch; dispid 1001; - procedure deleteRow(index: Integer); dispid 1002; - function moveRow(indexFrom: Integer; indexTo: Integer): IDispatch; dispid 1003; - property ch: WideString dispid 1004; - property chOff: WideString dispid 1005; - end; - -// *********************************************************************// -// DispIntf: DispHTMLTableRow -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F535-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLTableRow = dispinterface - ['{3050F535-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property align: WideString dispid - 2147418040; - property vAlign: WideString dispid - 2147413081; - property bgColor: OleVariant dispid - 501; - property borderColor: OleVariant dispid - 2147413084; - property borderColorLight: OleVariant dispid - 2147413083; - property borderColorDark: OleVariant dispid - 2147413082; - property rowIndex: Integer readonly dispid 1000; - property sectionRowIndex: Integer readonly dispid 1001; - property cells: IHTMLElementCollection readonly dispid 1002; - function insertCell(index: Integer): IDispatch; dispid 1003; - procedure deleteCell(index: Integer); dispid 1004; - property height: OleVariant dispid - 2147418106; - property ch: WideString dispid 1009; - property chOff: WideString dispid 1010; - end; - -// *********************************************************************// -// DispIntf: DispHTMLTableCell -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F536-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLTableCell = dispinterface - ['{3050F536-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property rowSpan: Integer dispid 2001; - property colSpan: Integer dispid 2002; - property align: WideString dispid - 2147418040; - property vAlign: WideString dispid - 2147413081; - property bgColor: OleVariant dispid - 501; - property noWrap: WordBool dispid - 2147413107; - property background: WideString dispid - 2147413111; - property borderColor: OleVariant dispid - 2147413084; - property borderColorLight: OleVariant dispid - 2147413083; - property borderColorDark: OleVariant dispid - 2147413082; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property cellIndex: Integer readonly dispid 2003; - property abbr: WideString dispid 2004; - property axis: WideString dispid 2005; - property ch: WideString dispid 2006; - property chOff: WideString dispid 2007; - property headers: WideString dispid 2008; - property scope: WideString dispid 2009; - end; - -// *********************************************************************// -// DispIntf: HTMLScriptEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F621-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLScriptEvents2 = dispinterface - ['{3050F621-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - procedure onerror(const pEvtObj: IHTMLEventObj); dispid 1002; - end; - -// *********************************************************************// -// DispIntf: HTMLScriptEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F3E2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLScriptEvents = dispinterface - ['{3050F3E2-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - procedure onerror; dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLScriptElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F28B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLScriptElement = interface(IDispatch) - ['{3050F28B-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_src(const p: WideString); safecall; - function Get_src: WideString; safecall; - procedure Set_htmlFor(const p: WideString); safecall; - function Get_htmlFor: WideString; safecall; - procedure Set_event(const p: WideString); safecall; - function Get_event: WideString; safecall; - procedure Set_text(const p: WideString); safecall; - function Get_text: WideString; safecall; - procedure Set_defer(p: WordBool); safecall; - function Get_defer: WordBool; safecall; - function Get_readyState: WideString; safecall; - procedure Set_onerror(p: OleVariant); safecall; - function Get_onerror: OleVariant; safecall; - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - property src: WideString read Get_src write Set_src; - property htmlFor: WideString read Get_htmlFor write Set_htmlFor; - property event: WideString read Get_event write Set_event; - property text: WideString read Get_text write Set_text; - property defer: WordBool read Get_defer write Set_defer; - property readyState: WideString read Get_readyState; - property onerror: OleVariant read Get_onerror write Set_onerror; - property type_: WideString read Get_type_ write Set_type_; - end; - -// *********************************************************************// -// DispIntf: IHTMLScriptElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F28B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLScriptElementDisp = dispinterface - ['{3050F28B-98B5-11CF-BB82-00AA00BDCE0B}'] - property src: WideString dispid 1001; - property htmlFor: WideString dispid 1004; - property event: WideString dispid 1005; - property text: WideString dispid 1006; - property defer: WordBool dispid 1007; - property readyState: WideString readonly dispid - 2147412996; - property onerror: OleVariant dispid - 2147412083; - property type_: WideString dispid 1009; - end; - -// *********************************************************************// -// Interface: IHTMLScriptElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F828-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLScriptElement2 = interface(IDispatch) - ['{3050F828-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_charset(const p: WideString); safecall; - function Get_charset: WideString; safecall; - property charset: WideString read Get_charset write Set_charset; - end; - -// *********************************************************************// -// DispIntf: IHTMLScriptElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F828-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLScriptElement2Disp = dispinterface - ['{3050F828-98B5-11CF-BB82-00AA00BDCE0B}'] - property charset: WideString dispid 1010; - end; - -// *********************************************************************// -// DispIntf: DispHTMLScriptElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F530-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLScriptElement = dispinterface - ['{3050F530-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property src: WideString dispid 1001; - property htmlFor: WideString dispid 1004; - property event: WideString dispid 1005; - property text: WideString dispid 1006; - property defer: WordBool dispid 1007; - property onerror: OleVariant dispid - 2147412083; - property type_: WideString dispid 1009; - property charset: WideString dispid 1010; - end; - -// *********************************************************************// -// Interface: IHTMLNoShowElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F38A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLNoShowElement = interface(IDispatch) - ['{3050F38A-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: IHTMLNoShowElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F38A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLNoShowElementDisp = dispinterface - ['{3050F38A-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// DispIntf: DispHTMLNoShowElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F528-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLNoShowElement = dispinterface - ['{3050F528-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - end; - -// *********************************************************************// -// DispIntf: HTMLObjectElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F620-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLObjectElementEvents2 = dispinterface - ['{3050F620-98B5-11CF-BB82-00AA00BDCE0B}'] - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - function onerror(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418093; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 2147418092; - end; - -// *********************************************************************// -// DispIntf: HTMLObjectElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F3C4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLObjectElementEvents = dispinterface - ['{3050F3C4-98B5-11CF-BB82-00AA00BDCE0B}'] - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - function onerror: WordBool; dispid - 2147418093; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 2147418092; - end; - -// *********************************************************************// -// Interface: IHTMLObjectElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F24F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLObjectElement = interface(IDispatch) - ['{3050F24F-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_object_: IDispatch; safecall; - function Get_classid: WideString; safecall; - function Get_data: WideString; safecall; - procedure _Set_recordset(const p: IDispatch); safecall; - function Get_recordset: IDispatch; safecall; - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_codeBase(const p: WideString); safecall; - function Get_codeBase: WideString; safecall; - procedure Set_codeType(const p: WideString); safecall; - function Get_codeType: WideString; safecall; - procedure Set_code(const p: WideString); safecall; - function Get_code: WideString; safecall; - function Get_BaseHref: WideString; safecall; - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - function Get_form: IHTMLFormElement; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - procedure Set_height(p: OleVariant); safecall; - function Get_height: OleVariant; safecall; - function Get_readyState: Integer; safecall; - procedure Set_onreadystatechange(p: OleVariant); safecall; - function Get_onreadystatechange: OleVariant; safecall; - procedure Set_onerror(p: OleVariant); safecall; - function Get_onerror: OleVariant; safecall; - procedure Set_altHtml(const p: WideString); safecall; - function Get_altHtml: WideString; safecall; - procedure Set_vspace(p: Integer); safecall; - function Get_vspace: Integer; safecall; - procedure Set_hspace(p: Integer); safecall; - function Get_hspace: Integer; safecall; - property object_: IDispatch read Get_object_; - property classid: WideString read Get_classid; - property data: WideString read Get_data; - property recordset: IDispatch read Get_recordset write _Set_recordset; - property align: WideString read Get_align write Set_align; - property name: WideString read Get_name write Set_name; - property codeBase: WideString read Get_codeBase write Set_codeBase; - property codeType: WideString read Get_codeType write Set_codeType; - property code: WideString read Get_code write Set_code; - property BaseHref: WideString read Get_BaseHref; - property type_: WideString read Get_type_ write Set_type_; - property form: IHTMLFormElement read Get_form; - property width: OleVariant read Get_width write Set_width; - property height: OleVariant read Get_height write Set_height; - property readyState: Integer read Get_readyState; - property onreadystatechange: OleVariant read Get_onreadystatechange write Set_onreadystatechange; - property onerror: OleVariant read Get_onerror write Set_onerror; - property altHtml: WideString read Get_altHtml write Set_altHtml; - property vspace: Integer read Get_vspace write Set_vspace; - property hspace: Integer read Get_hspace write Set_hspace; - end; - -// *********************************************************************// -// DispIntf: IHTMLObjectElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F24F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLObjectElementDisp = dispinterface - ['{3050F24F-98B5-11CF-BB82-00AA00BDCE0B}'] - property object_: IDispatch readonly dispid - 2147415111; - property classid: WideString readonly dispid - 2147415110; - property data: WideString readonly dispid - 2147415109; - property recordset: IDispatch dispid - 2147415107; - property align: WideString dispid - 2147418039; - property name: WideString dispid - 2147418112; - property codeBase: WideString dispid - 2147415106; - property codeType: WideString dispid - 2147415105; - property code: WideString dispid - 2147415104; - property BaseHref: WideString readonly dispid - 2147418110; - property type_: WideString dispid - 2147415103; - property form: IHTMLFormElement readonly dispid - 2147416108; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property readyState: Integer readonly dispid - 2147415102; - property onreadystatechange: OleVariant dispid - 2147412087; - property onerror: OleVariant dispid - 2147412083; - property altHtml: WideString dispid - 2147415101; - property vspace: Integer dispid - 2147415100; - property hspace: Integer dispid - 2147415099; - end; - -// *********************************************************************// -// Interface: IHTMLObjectElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4CD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLObjectElement2 = interface(IDispatch) - ['{3050F4CD-98B5-11CF-BB82-00AA00BDCE0B}'] - function namedRecordset(const dataMember: WideString; var hierarchy: OleVariant): IDispatch; safecall; - procedure Set_classid(const p: WideString); safecall; - function Get_classid: WideString; safecall; - procedure Set_data(const p: WideString); safecall; - function Get_data: WideString; safecall; - property classid: WideString read Get_classid write Set_classid; - property data: WideString read Get_data write Set_data; - end; - -// *********************************************************************// -// DispIntf: IHTMLObjectElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4CD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLObjectElement2Disp = dispinterface - ['{3050F4CD-98B5-11CF-BB82-00AA00BDCE0B}'] - function namedRecordset(const dataMember: WideString; var hierarchy: OleVariant): IDispatch; dispid - 2147415098; - property classid: WideString dispid - 2147415110; - property data: WideString dispid - 2147415109; - end; - -// *********************************************************************// -// Interface: IHTMLObjectElement3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F827-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLObjectElement3 = interface(IDispatch) - ['{3050F827-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_archive(const p: WideString); safecall; - function Get_archive: WideString; safecall; - procedure Set_alt(const p: WideString); safecall; - function Get_alt: WideString; safecall; - procedure Set_declare(p: WordBool); safecall; - function Get_declare: WordBool; safecall; - procedure Set_standby(const p: WideString); safecall; - function Get_standby: WideString; safecall; - procedure Set_border(p: OleVariant); safecall; - function Get_border: OleVariant; safecall; - procedure Set_useMap(const p: WideString); safecall; - function Get_useMap: WideString; safecall; - property archive: WideString read Get_archive write Set_archive; - property alt: WideString read Get_alt write Set_alt; - property declare: WordBool read Get_declare write Set_declare; - property standby: WideString read Get_standby write Set_standby; - property border: OleVariant read Get_border write Set_border; - property useMap: WideString read Get_useMap write Set_useMap; - end; - -// *********************************************************************// -// DispIntf: IHTMLObjectElement3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F827-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLObjectElement3Disp = dispinterface - ['{3050F827-98B5-11CF-BB82-00AA00BDCE0B}'] - property archive: WideString dispid - 2147415097; - property alt: WideString dispid - 2147415096; - property declare: WordBool dispid - 2147415095; - property standby: WideString dispid - 2147415094; - property border: OleVariant dispid - 2147415093; - property useMap: WideString dispid - 2147415092; - end; - -// *********************************************************************// -// Interface: IHTMLParamElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F83D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLParamElement = interface(IDispatch) - ['{3050F83D-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_value(const p: WideString); safecall; - function Get_value: WideString; safecall; - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - procedure Set_valueType(const p: WideString); safecall; - function Get_valueType: WideString; safecall; - property name: WideString read Get_name write Set_name; - property value: WideString read Get_value write Set_value; - property type_: WideString read Get_type_ write Set_type_; - property valueType: WideString read Get_valueType write Set_valueType; - end; - -// *********************************************************************// -// DispIntf: IHTMLParamElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F83D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLParamElementDisp = dispinterface - ['{3050F83D-98B5-11CF-BB82-00AA00BDCE0B}'] - property name: WideString dispid 1001; - property value: WideString dispid 1002; - property type_: WideString dispid 1003; - property valueType: WideString dispid 1004; - end; - -// *********************************************************************// -// DispIntf: DispHTMLObjectElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F529-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLObjectElement = dispinterface - ['{3050F529-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property object_: IDispatch readonly dispid - 2147415111; - property recordset: IDispatch dispid - 2147415107; - property align: WideString dispid - 2147418039; - property name: WideString dispid - 2147418112; - property codeBase: WideString dispid - 2147415106; - property codeType: WideString dispid - 2147415105; - property code: WideString dispid - 2147415104; - property BaseHref: WideString readonly dispid - 2147418110; - property type_: WideString dispid - 2147415103; - property form: IHTMLFormElement readonly dispid - 2147416108; - property width: OleVariant dispid - 2147418107; - property height: OleVariant dispid - 2147418106; - property onerror: OleVariant dispid - 2147412083; - property altHtml: WideString dispid - 2147415101; - property vspace: Integer dispid - 2147415100; - property hspace: Integer dispid - 2147415099; - function namedRecordset(const dataMember: WideString; var hierarchy: OleVariant): IDispatch; dispid - 2147415098; - property classid: WideString dispid - 2147415110; - property data: WideString dispid - 2147415109; - property archive: WideString dispid - 2147415097; - property alt: WideString dispid - 2147415096; - property declare: WordBool dispid - 2147415095; - property standby: WideString dispid - 2147415094; - property border: OleVariant dispid - 2147415093; - property useMap: WideString dispid - 2147415092; - end; - -// *********************************************************************// -// DispIntf: DispHTMLParamElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F590-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLParamElement = dispinterface - ['{3050F590-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property name: WideString dispid 1001; - property value: WideString dispid 1002; - property type_: WideString dispid 1003; - property valueType: WideString dispid 1004; - end; - -// *********************************************************************// -// DispIntf: HTMLFrameSiteEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F7FF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLFrameSiteEvents2 = dispinterface - ['{3050F7FF-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - procedure onload(const pEvtObj: IHTMLEventObj); dispid 1003; - end; - -// *********************************************************************// -// DispIntf: HTMLFrameSiteEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F800-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLFrameSiteEvents = dispinterface - ['{3050F800-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - procedure onload; dispid 1003; - end; - -// *********************************************************************// -// Interface: IHTMLFrameBase2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6DB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameBase2 = interface(IDispatch) - ['{3050F6DB-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_contentWindow: IHTMLWindow2; safecall; - procedure Set_onload(p: OleVariant); safecall; - function Get_onload: OleVariant; safecall; - procedure Set_onreadystatechange(p: OleVariant); safecall; - function Get_onreadystatechange: OleVariant; safecall; - function Get_readyState: WideString; safecall; - procedure Set_allowTransparency(p: WordBool); safecall; - function Get_allowTransparency: WordBool; safecall; - property contentWindow: IHTMLWindow2 read Get_contentWindow; - property onload: OleVariant read Get_onload write Set_onload; - property onreadystatechange: OleVariant read Get_onreadystatechange write Set_onreadystatechange; - property readyState: WideString read Get_readyState; - property allowTransparency: WordBool read Get_allowTransparency write Set_allowTransparency; - end; - -// *********************************************************************// -// DispIntf: IHTMLFrameBase2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6DB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameBase2Disp = dispinterface - ['{3050F6DB-98B5-11CF-BB82-00AA00BDCE0B}'] - property contentWindow: IHTMLWindow2 readonly dispid - 2147415103; - property onload: OleVariant dispid - 2147412080; - property onreadystatechange: OleVariant dispid - 2147412087; - property readyState: WideString readonly dispid - 2147412996; - property allowTransparency: WordBool dispid - 2147412906; - end; - -// *********************************************************************// -// Interface: IHTMLFrameBase3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameBase3 = interface(IDispatch) - ['{3050F82E-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_longDesc(const p: WideString); safecall; - function Get_longDesc: WideString; safecall; - property longDesc: WideString read Get_longDesc write Set_longDesc; - end; - -// *********************************************************************// -// DispIntf: IHTMLFrameBase3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F82E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameBase3Disp = dispinterface - ['{3050F82E-98B5-11CF-BB82-00AA00BDCE0B}'] - property longDesc: WideString dispid - 2147415102; - end; - -// *********************************************************************// -// DispIntf: DispHTMLFrameBase -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F541-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLFrameBase = dispinterface - ['{3050F541-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property src: WideString dispid - 2147415112; - property name: WideString dispid - 2147418112; - property border: OleVariant dispid - 2147415110; - property frameBorder: WideString dispid - 2147415109; - property frameSpacing: OleVariant dispid - 2147415108; - property marginWidth: OleVariant dispid - 2147415107; - property marginHeight: OleVariant dispid - 2147415106; - property noResize: WordBool dispid - 2147415105; - property scrolling: WideString dispid - 2147415104; - property contentWindow: IHTMLWindow2 readonly dispid - 2147415103; - property onload: OleVariant dispid - 2147412080; - property allowTransparency: WordBool dispid - 2147412906; - property longDesc: WideString dispid - 2147415102; - end; - -// *********************************************************************// -// Interface: IHTMLFrameElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F313-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameElement = interface(IDispatch) - ['{3050F313-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_borderColor(p: OleVariant); safecall; - function Get_borderColor: OleVariant; safecall; - property borderColor: OleVariant read Get_borderColor write Set_borderColor; - end; - -// *********************************************************************// -// DispIntf: IHTMLFrameElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F313-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameElementDisp = dispinterface - ['{3050F313-98B5-11CF-BB82-00AA00BDCE0B}'] - property borderColor: OleVariant dispid - 2147414111; - end; - -// *********************************************************************// -// Interface: IHTMLFrameElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7F5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameElement2 = interface(IDispatch) - ['{3050F7F5-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_height(p: OleVariant); safecall; - function Get_height: OleVariant; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - property height: OleVariant read Get_height write Set_height; - property width: OleVariant read Get_width write Set_width; - end; - -// *********************************************************************// -// DispIntf: IHTMLFrameElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F7F5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameElement2Disp = dispinterface - ['{3050F7F5-98B5-11CF-BB82-00AA00BDCE0B}'] - property height: OleVariant dispid - 2147418106; - property width: OleVariant dispid - 2147418107; - end; - -// *********************************************************************// -// DispIntf: DispHTMLFrameElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F513-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLFrameElement = dispinterface - ['{3050F513-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property src: WideString dispid - 2147415112; - property name: WideString dispid - 2147418112; - property border: OleVariant dispid - 2147415110; - property frameBorder: WideString dispid - 2147415109; - property frameSpacing: OleVariant dispid - 2147415108; - property marginWidth: OleVariant dispid - 2147415107; - property marginHeight: OleVariant dispid - 2147415106; - property noResize: WordBool dispid - 2147415105; - property scrolling: WideString dispid - 2147415104; - property contentWindow: IHTMLWindow2 readonly dispid - 2147415103; - property onload: OleVariant dispid - 2147412080; - property allowTransparency: WordBool dispid - 2147412906; - property longDesc: WideString dispid - 2147415102; - property borderColor: OleVariant dispid - 2147414111; - property height: OleVariant dispid - 2147418106; - property width: OleVariant dispid - 2147418107; - end; - -// *********************************************************************// -// Interface: IHTMLIFrameElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F315-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLIFrameElement = interface(IDispatch) - ['{3050F315-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_vspace(p: Integer); safecall; - function Get_vspace: Integer; safecall; - procedure Set_hspace(p: Integer); safecall; - function Get_hspace: Integer; safecall; - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - property vspace: Integer read Get_vspace write Set_vspace; - property hspace: Integer read Get_hspace write Set_hspace; - property align: WideString read Get_align write Set_align; - end; - -// *********************************************************************// -// DispIntf: IHTMLIFrameElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F315-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLIFrameElementDisp = dispinterface - ['{3050F315-98B5-11CF-BB82-00AA00BDCE0B}'] - property vspace: Integer dispid - 2147414111; - property hspace: Integer dispid - 2147414110; - property align: WideString dispid - 2147418039; - end; - -// *********************************************************************// -// Interface: IHTMLIFrameElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4E6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLIFrameElement2 = interface(IDispatch) - ['{3050F4E6-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_height(p: OleVariant); safecall; - function Get_height: OleVariant; safecall; - procedure Set_width(p: OleVariant); safecall; - function Get_width: OleVariant; safecall; - property height: OleVariant read Get_height write Set_height; - property width: OleVariant read Get_width write Set_width; - end; - -// *********************************************************************// -// DispIntf: IHTMLIFrameElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F4E6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLIFrameElement2Disp = dispinterface - ['{3050F4E6-98B5-11CF-BB82-00AA00BDCE0B}'] - property height: OleVariant dispid - 2147418106; - property width: OleVariant dispid - 2147418107; - end; - -// *********************************************************************// -// DispIntf: DispHTMLIFrame -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F51B-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLIFrame = dispinterface - ['{3050F51B-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property src: WideString dispid - 2147415112; - property name: WideString dispid - 2147418112; - property border: OleVariant dispid - 2147415110; - property frameBorder: WideString dispid - 2147415109; - property frameSpacing: OleVariant dispid - 2147415108; - property marginWidth: OleVariant dispid - 2147415107; - property marginHeight: OleVariant dispid - 2147415106; - property noResize: WordBool dispid - 2147415105; - property scrolling: WideString dispid - 2147415104; - property contentWindow: IHTMLWindow2 readonly dispid - 2147415103; - property onload: OleVariant dispid - 2147412080; - property allowTransparency: WordBool dispid - 2147412906; - property longDesc: WideString dispid - 2147415102; - property vspace: Integer dispid - 2147414111; - property hspace: Integer dispid - 2147414110; - property align: WideString dispid - 2147418039; - property height: OleVariant dispid - 2147418106; - property width: OleVariant dispid - 2147418107; - end; - -// *********************************************************************// -// Interface: IHTMLDivPosition -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F212-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDivPosition = interface(IDispatch) - ['{3050F212-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - property align: WideString read Get_align write Set_align; - end; - -// *********************************************************************// -// DispIntf: IHTMLDivPositionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F212-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDivPositionDisp = dispinterface - ['{3050F212-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418039; - end; - -// *********************************************************************// -// Interface: IHTMLFieldSetElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3E7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFieldSetElement = interface(IDispatch) - ['{3050F3E7-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - property align: WideString read Get_align write Set_align; - end; - -// *********************************************************************// -// DispIntf: IHTMLFieldSetElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3E7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFieldSetElementDisp = dispinterface - ['{3050F3E7-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418039; - end; - -// *********************************************************************// -// Interface: IHTMLFieldSetElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F833-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFieldSetElement2 = interface(IDispatch) - ['{3050F833-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_form: IHTMLFormElement; safecall; - property form: IHTMLFormElement read Get_form; - end; - -// *********************************************************************// -// DispIntf: IHTMLFieldSetElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F833-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFieldSetElement2Disp = dispinterface - ['{3050F833-98B5-11CF-BB82-00AA00BDCE0B}'] - property form: IHTMLFormElement readonly dispid - 2147416108; - end; - -// *********************************************************************// -// Interface: IHTMLLegendElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3EA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLegendElement = interface(IDispatch) - ['{3050F3EA-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - property align: WideString read Get_align write Set_align; - end; - -// *********************************************************************// -// DispIntf: IHTMLLegendElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3EA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLegendElementDisp = dispinterface - ['{3050F3EA-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418039; - end; - -// *********************************************************************// -// Interface: IHTMLLegendElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F834-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLegendElement2 = interface(IDispatch) - ['{3050F834-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_form: IHTMLFormElement; safecall; - property form: IHTMLFormElement read Get_form; - end; - -// *********************************************************************// -// DispIntf: IHTMLLegendElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F834-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLLegendElement2Disp = dispinterface - ['{3050F834-98B5-11CF-BB82-00AA00BDCE0B}'] - property form: IHTMLFormElement readonly dispid - 2147416108; - end; - -// *********************************************************************// -// DispIntf: DispHTMLDivPosition -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F50F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLDivPosition = dispinterface - ['{3050F50F-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property align: WideString dispid - 2147418039; - end; - -// *********************************************************************// -// DispIntf: DispHTMLFieldSetElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F545-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLFieldSetElement = dispinterface - ['{3050F545-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property align: WideString dispid - 2147418039; - property form: IHTMLFormElement readonly dispid - 2147416108; - end; - -// *********************************************************************// -// DispIntf: DispHTMLLegendElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F546-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLLegendElement = dispinterface - ['{3050F546-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property align: WideString dispid - 2147418039; - property form: IHTMLFormElement readonly dispid - 2147416108; - end; - -// *********************************************************************// -// Interface: IHTMLSpanFlow -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3E5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSpanFlow = interface(IDispatch) - ['{3050F3E5-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_align(const p: WideString); safecall; - function Get_align: WideString; safecall; - property align: WideString read Get_align write Set_align; - end; - -// *********************************************************************// -// DispIntf: IHTMLSpanFlowDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3E5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLSpanFlowDisp = dispinterface - ['{3050F3E5-98B5-11CF-BB82-00AA00BDCE0B}'] - property align: WideString dispid - 2147418039; - end; - -// *********************************************************************// -// DispIntf: DispHTMLSpanFlow -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F544-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLSpanFlow = dispinterface - ['{3050F544-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - property align: WideString dispid - 2147418039; - end; - -// *********************************************************************// -// Interface: IHTMLFrameSetElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F319-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameSetElement = interface(IDispatch) - ['{3050F319-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_rows(const p: WideString); safecall; - function Get_rows: WideString; safecall; - procedure Set_cols(const p: WideString); safecall; - function Get_cols: WideString; safecall; - procedure Set_border(p: OleVariant); safecall; - function Get_border: OleVariant; safecall; - procedure Set_borderColor(p: OleVariant); safecall; - function Get_borderColor: OleVariant; safecall; - procedure Set_frameBorder(const p: WideString); safecall; - function Get_frameBorder: WideString; safecall; - procedure Set_frameSpacing(p: OleVariant); safecall; - function Get_frameSpacing: OleVariant; safecall; - procedure Set_name(const p: WideString); safecall; - function Get_name: WideString; safecall; - procedure Set_onload(p: OleVariant); safecall; - function Get_onload: OleVariant; safecall; - procedure Set_onunload(p: OleVariant); safecall; - function Get_onunload: OleVariant; safecall; - procedure Set_onbeforeunload(p: OleVariant); safecall; - function Get_onbeforeunload: OleVariant; safecall; - property rows: WideString read Get_rows write Set_rows; - property cols: WideString read Get_cols write Set_cols; - property border: OleVariant read Get_border write Set_border; - property borderColor: OleVariant read Get_borderColor write Set_borderColor; - property frameBorder: WideString read Get_frameBorder write Set_frameBorder; - property frameSpacing: OleVariant read Get_frameSpacing write Set_frameSpacing; - property name: WideString read Get_name write Set_name; - property onload: OleVariant read Get_onload write Set_onload; - property onunload: OleVariant read Get_onunload write Set_onunload; - property onbeforeunload: OleVariant read Get_onbeforeunload write Set_onbeforeunload; - end; - -// *********************************************************************// -// DispIntf: IHTMLFrameSetElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F319-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameSetElementDisp = dispinterface - ['{3050F319-98B5-11CF-BB82-00AA00BDCE0B}'] - property rows: WideString dispid 1000; - property cols: WideString dispid 1001; - property border: OleVariant dispid 1002; - property borderColor: OleVariant dispid 1003; - property frameBorder: WideString dispid 1004; - property frameSpacing: OleVariant dispid 1005; - property name: WideString dispid - 2147418112; - property onload: OleVariant dispid - 2147412080; - property onunload: OleVariant dispid - 2147412079; - property onbeforeunload: OleVariant dispid - 2147412073; - end; - -// *********************************************************************// -// Interface: IHTMLFrameSetElement2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5C6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameSetElement2 = interface(IDispatch) - ['{3050F5C6-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_onbeforeprint(p: OleVariant); safecall; - function Get_onbeforeprint: OleVariant; safecall; - procedure Set_onafterprint(p: OleVariant); safecall; - function Get_onafterprint: OleVariant; safecall; - property onbeforeprint: OleVariant read Get_onbeforeprint write Set_onbeforeprint; - property onafterprint: OleVariant read Get_onafterprint write Set_onafterprint; - end; - -// *********************************************************************// -// DispIntf: IHTMLFrameSetElement2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5C6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFrameSetElement2Disp = dispinterface - ['{3050F5C6-98B5-11CF-BB82-00AA00BDCE0B}'] - property onbeforeprint: OleVariant dispid - 2147412046; - property onafterprint: OleVariant dispid - 2147412045; - end; - -// *********************************************************************// -// DispIntf: DispHTMLFrameSetSite -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F514-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLFrameSetSite = dispinterface - ['{3050F514-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property rows: WideString dispid 1000; - property cols: WideString dispid 1001; - property border: OleVariant dispid 1002; - property borderColor: OleVariant dispid 1003; - property frameBorder: WideString dispid 1004; - property frameSpacing: OleVariant dispid 1005; - property name: WideString dispid - 2147418112; - property onload: OleVariant dispid - 2147412080; - property onunload: OleVariant dispid - 2147412079; - property onbeforeunload: OleVariant dispid - 2147412073; - property onbeforeprint: OleVariant dispid - 2147412046; - property onafterprint: OleVariant dispid - 2147412045; - end; - -// *********************************************************************// -// Interface: IHTMLBGsound -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F369-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBGsound = interface(IDispatch) - ['{3050F369-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_src(const p: WideString); safecall; - function Get_src: WideString; safecall; - procedure Set_loop(p: OleVariant); safecall; - function Get_loop: OleVariant; safecall; - procedure Set_volume(p: OleVariant); safecall; - function Get_volume: OleVariant; safecall; - procedure Set_balance(p: OleVariant); safecall; - function Get_balance: OleVariant; safecall; - property src: WideString read Get_src write Set_src; - property loop: OleVariant read Get_loop write Set_loop; - property volume: OleVariant read Get_volume write Set_volume; - property balance: OleVariant read Get_balance write Set_balance; - end; - -// *********************************************************************// -// DispIntf: IHTMLBGsoundDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F369-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLBGsoundDisp = dispinterface - ['{3050F369-98B5-11CF-BB82-00AA00BDCE0B}'] - property src: WideString dispid 1001; - property loop: OleVariant dispid 1002; - property volume: OleVariant dispid 1003; - property balance: OleVariant dispid 1004; - end; - -// *********************************************************************// -// DispIntf: DispHTMLBGsound -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F53C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLBGsound = dispinterface - ['{3050F53C-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property src: WideString dispid 1001; - property loop: OleVariant dispid 1002; - property volume: OleVariant dispid 1003; - property balance: OleVariant dispid 1004; - end; - -// *********************************************************************// -// Interface: IHTMLFontNamesCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F376-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFontNamesCollection = interface(IDispatch) - ['{3050F376-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - function item(index: Integer): WideString; safecall; - property length: Integer read Get_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLFontNamesCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F376-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFontNamesCollectionDisp = dispinterface - ['{3050F376-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1501; - property _newEnum: IUnknown readonly dispid - 4; - function item(index: Integer): WideString; dispid 0; - end; - -// *********************************************************************// -// Interface: IHTMLFontSizesCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F377-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFontSizesCollection = interface(IDispatch) - ['{3050F377-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - function Get_forFont: WideString; safecall; - function item(index: Integer): Integer; safecall; - property length: Integer read Get_length; - property _newEnum: IUnknown read Get__newEnum; - property forFont: WideString read Get_forFont; - end; - -// *********************************************************************// -// DispIntf: IHTMLFontSizesCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F377-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLFontSizesCollectionDisp = dispinterface - ['{3050F377-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1502; - property _newEnum: IUnknown readonly dispid - 4; - property forFont: WideString readonly dispid 1503; - function item(index: Integer): Integer; dispid 0; - end; - -// *********************************************************************// -// Interface: IHTMLOptionsHolder -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F378-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOptionsHolder = interface(IDispatch) - ['{3050F378-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_document: IHTMLDocument2; safecall; - function Get_fonts: IHTMLFontNamesCollection; safecall; - procedure Set_execArg(p: OleVariant); safecall; - function Get_execArg: OleVariant; safecall; - procedure Set_errorLine(p: Integer); safecall; - function Get_errorLine: Integer; safecall; - procedure Set_errorCharacter(p: Integer); safecall; - function Get_errorCharacter: Integer; safecall; - procedure Set_errorCode(p: Integer); safecall; - function Get_errorCode: Integer; safecall; - procedure Set_errorMessage(const p: WideString); safecall; - function Get_errorMessage: WideString; safecall; - procedure Set_errorDebug(p: WordBool); safecall; - function Get_errorDebug: WordBool; safecall; - function Get_unsecuredWindowOfDocument: IHTMLWindow2; safecall; - procedure Set_findText(const p: WideString); safecall; - function Get_findText: WideString; safecall; - procedure Set_anythingAfterFrameset(p: WordBool); safecall; - function Get_anythingAfterFrameset: WordBool; safecall; - function sizes(const fontName: WideString): IHTMLFontSizesCollection; safecall; - function openfiledlg(initFile: OleVariant; initDir: OleVariant; filter: OleVariant; - title: OleVariant): WideString; safecall; - function savefiledlg(initFile: OleVariant; initDir: OleVariant; filter: OleVariant; - title: OleVariant): WideString; safecall; - function choosecolordlg(initColor: OleVariant): Integer; safecall; - procedure showSecurityInfo; safecall; - function isApartmentModel(const object_: IHTMLObjectElement): WordBool; safecall; - function getCharset(const fontName: WideString): Integer; safecall; - function Get_secureConnectionInfo: WideString; safecall; - property document: IHTMLDocument2 read Get_document; - property fonts: IHTMLFontNamesCollection read Get_fonts; - property execArg: OleVariant read Get_execArg write Set_execArg; - property errorLine: Integer read Get_errorLine write Set_errorLine; - property errorCharacter: Integer read Get_errorCharacter write Set_errorCharacter; - property errorCode: Integer read Get_errorCode write Set_errorCode; - property errorMessage: WideString read Get_errorMessage write Set_errorMessage; - property errorDebug: WordBool read Get_errorDebug write Set_errorDebug; - property unsecuredWindowOfDocument: IHTMLWindow2 read Get_unsecuredWindowOfDocument; - property findText: WideString read Get_findText write Set_findText; - property anythingAfterFrameset: WordBool read Get_anythingAfterFrameset write Set_anythingAfterFrameset; - property secureConnectionInfo: WideString read Get_secureConnectionInfo; - end; - -// *********************************************************************// -// DispIntf: IHTMLOptionsHolderDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F378-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLOptionsHolderDisp = dispinterface - ['{3050F378-98B5-11CF-BB82-00AA00BDCE0B}'] - property document: IHTMLDocument2 readonly dispid 1503; - property fonts: IHTMLFontNamesCollection readonly dispid 1504; - property execArg: OleVariant dispid 1505; - property errorLine: Integer dispid 1506; - property errorCharacter: Integer dispid 1507; - property errorCode: Integer dispid 1508; - property errorMessage: WideString dispid 1509; - property errorDebug: WordBool dispid 1510; - property unsecuredWindowOfDocument: IHTMLWindow2 readonly dispid 1511; - property findText: WideString dispid 1512; - property anythingAfterFrameset: WordBool dispid 1513; - function sizes(const fontName: WideString): IHTMLFontSizesCollection; dispid 1514; - function openfiledlg(initFile: OleVariant; initDir: OleVariant; filter: OleVariant; - title: OleVariant): WideString; dispid 1515; - function savefiledlg(initFile: OleVariant; initDir: OleVariant; filter: OleVariant; - title: OleVariant): WideString; dispid 1516; - function choosecolordlg(initColor: OleVariant): Integer; dispid 1517; - procedure showSecurityInfo; dispid 1518; - function isApartmentModel(const object_: IHTMLObjectElement): WordBool; dispid 1519; - function getCharset(const fontName: WideString): Integer; dispid 1520; - property secureConnectionInfo: WideString readonly dispid 1521; - end; - -// *********************************************************************// -// DispIntf: HTMLStyleElementEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F615-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLStyleElementEvents2 = dispinterface - ['{3050F615-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418102; - function onclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 600; - function ondblclick(const pEvtObj: IHTMLEventObj): WordBool; dispid - 601; - function onkeypress(const pEvtObj: IHTMLEventObj): WordBool; dispid - 603; - procedure onkeydown(const pEvtObj: IHTMLEventObj); dispid - 602; - procedure onkeyup(const pEvtObj: IHTMLEventObj); dispid - 604; - procedure onmouseout(const pEvtObj: IHTMLEventObj); dispid - 2147418103; - procedure onmouseover(const pEvtObj: IHTMLEventObj); dispid - 2147418104; - procedure onmousemove(const pEvtObj: IHTMLEventObj); dispid - 606; - procedure onmousedown(const pEvtObj: IHTMLEventObj); dispid - 605; - procedure onmouseup(const pEvtObj: IHTMLEventObj); dispid - 607; - function onselectstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418100; - procedure onfilterchange(const pEvtObj: IHTMLEventObj); dispid - 2147418095; - function ondragstart(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418101; - function onbeforeupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418108; - procedure onafterupdate(const pEvtObj: IHTMLEventObj); dispid - 2147418107; - function onerrorupdate(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418099; - function onrowexit(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418106; - procedure onrowenter(const pEvtObj: IHTMLEventObj); dispid - 2147418105; - procedure ondatasetchanged(const pEvtObj: IHTMLEventObj); dispid - 2147418098; - procedure ondataavailable(const pEvtObj: IHTMLEventObj); dispid - 2147418097; - procedure ondatasetcomplete(const pEvtObj: IHTMLEventObj); dispid - 2147418096; - procedure onlosecapture(const pEvtObj: IHTMLEventObj); dispid - 2147418094; - procedure onpropertychange(const pEvtObj: IHTMLEventObj); dispid - 2147418093; - procedure onscroll(const pEvtObj: IHTMLEventObj); dispid 1014; - procedure onfocus(const pEvtObj: IHTMLEventObj); dispid - 2147418111; - procedure onblur(const pEvtObj: IHTMLEventObj); dispid - 2147418112; - procedure onresize(const pEvtObj: IHTMLEventObj); dispid 1016; - function ondrag(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418092; - procedure ondragend(const pEvtObj: IHTMLEventObj); dispid - 2147418091; - function ondragenter(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418090; - function ondragover(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418089; - procedure ondragleave(const pEvtObj: IHTMLEventObj); dispid - 2147418088; - function ondrop(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418087; - function onbeforecut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418083; - function oncut(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418086; - function onbeforecopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418082; - function oncopy(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418085; - function onbeforepaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418081; - function onpaste(const pEvtObj: IHTMLEventObj): WordBool; dispid - 2147418084; - function oncontextmenu(const pEvtObj: IHTMLEventObj): WordBool; dispid 1023; - procedure onrowsdelete(const pEvtObj: IHTMLEventObj); dispid - 2147418080; - procedure onrowsinserted(const pEvtObj: IHTMLEventObj); dispid - 2147418079; - procedure oncellchange(const pEvtObj: IHTMLEventObj); dispid - 2147418078; - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - procedure onlayoutcomplete(const pEvtObj: IHTMLEventObj); dispid 1030; - procedure onpage(const pEvtObj: IHTMLEventObj); dispid 1031; - procedure onmouseenter(const pEvtObj: IHTMLEventObj); dispid 1042; - procedure onmouseleave(const pEvtObj: IHTMLEventObj); dispid 1043; - procedure onactivate(const pEvtObj: IHTMLEventObj); dispid 1044; - procedure ondeactivate(const pEvtObj: IHTMLEventObj); dispid 1045; - function onbeforedeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1034; - function onbeforeactivate(const pEvtObj: IHTMLEventObj): WordBool; dispid 1047; - procedure onfocusin(const pEvtObj: IHTMLEventObj); dispid 1048; - procedure onfocusout(const pEvtObj: IHTMLEventObj); dispid 1049; - procedure onmove(const pEvtObj: IHTMLEventObj); dispid 1035; - function oncontrolselect(const pEvtObj: IHTMLEventObj): WordBool; dispid 1036; - function onmovestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1038; - procedure onmoveend(const pEvtObj: IHTMLEventObj); dispid 1039; - function onresizestart(const pEvtObj: IHTMLEventObj): WordBool; dispid 1040; - procedure onresizeend(const pEvtObj: IHTMLEventObj); dispid 1041; - function onmousewheel(const pEvtObj: IHTMLEventObj): WordBool; dispid 1033; - procedure onload(const pEvtObj: IHTMLEventObj); dispid 1003; - procedure onerror(const pEvtObj: IHTMLEventObj); dispid 1002; - end; - -// *********************************************************************// -// DispIntf: HTMLStyleElementEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F3CB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLStyleElementEvents = dispinterface - ['{3050F3CB-98B5-11CF-BB82-00AA00BDCE0B}'] - function onhelp: WordBool; dispid - 2147418102; - function onclick: WordBool; dispid - 600; - function ondblclick: WordBool; dispid - 601; - function onkeypress: WordBool; dispid - 603; - procedure onkeydown; dispid - 602; - procedure onkeyup; dispid - 604; - procedure onmouseout; dispid - 2147418103; - procedure onmouseover; dispid - 2147418104; - procedure onmousemove; dispid - 606; - procedure onmousedown; dispid - 605; - procedure onmouseup; dispid - 607; - function onselectstart: WordBool; dispid - 2147418100; - procedure onfilterchange; dispid - 2147418095; - function ondragstart: WordBool; dispid - 2147418101; - function onbeforeupdate: WordBool; dispid - 2147418108; - procedure onafterupdate; dispid - 2147418107; - function onerrorupdate: WordBool; dispid - 2147418099; - function onrowexit: WordBool; dispid - 2147418106; - procedure onrowenter; dispid - 2147418105; - procedure ondatasetchanged; dispid - 2147418098; - procedure ondataavailable; dispid - 2147418097; - procedure ondatasetcomplete; dispid - 2147418096; - procedure onlosecapture; dispid - 2147418094; - procedure onpropertychange; dispid - 2147418093; - procedure onscroll; dispid 1014; - procedure onfocus; dispid - 2147418111; - procedure onblur; dispid - 2147418112; - procedure onresize; dispid 1016; - function ondrag: WordBool; dispid - 2147418092; - procedure ondragend; dispid - 2147418091; - function ondragenter: WordBool; dispid - 2147418090; - function ondragover: WordBool; dispid - 2147418089; - procedure ondragleave; dispid - 2147418088; - function ondrop: WordBool; dispid - 2147418087; - function onbeforecut: WordBool; dispid - 2147418083; - function oncut: WordBool; dispid - 2147418086; - function onbeforecopy: WordBool; dispid - 2147418082; - function oncopy: WordBool; dispid - 2147418085; - function onbeforepaste: WordBool; dispid - 2147418081; - function onpaste: WordBool; dispid - 2147418084; - function oncontextmenu: WordBool; dispid 1023; - procedure onrowsdelete; dispid - 2147418080; - procedure onrowsinserted; dispid - 2147418079; - procedure oncellchange; dispid - 2147418078; - procedure onreadystatechange; dispid - 609; - procedure onbeforeeditfocus; dispid 1027; - procedure onlayoutcomplete; dispid 1030; - procedure onpage; dispid 1031; - function onbeforedeactivate: WordBool; dispid 1034; - function onbeforeactivate: WordBool; dispid 1047; - procedure onmove; dispid 1035; - function oncontrolselect: WordBool; dispid 1036; - function onmovestart: WordBool; dispid 1038; - procedure onmoveend; dispid 1039; - function onresizestart: WordBool; dispid 1040; - procedure onresizeend; dispid 1041; - procedure onmouseenter; dispid 1042; - procedure onmouseleave; dispid 1043; - function onmousewheel: WordBool; dispid 1033; - procedure onactivate; dispid 1044; - procedure ondeactivate; dispid 1045; - procedure onfocusin; dispid 1048; - procedure onfocusout; dispid 1049; - procedure onload; dispid 1003; - procedure onerror; dispid 1002; - end; - -// *********************************************************************// -// Interface: IHTMLStyleElement -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F375-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleElement = interface(IDispatch) - ['{3050F375-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_type_(const p: WideString); safecall; - function Get_type_: WideString; safecall; - function Get_readyState: WideString; safecall; - procedure Set_onreadystatechange(p: OleVariant); safecall; - function Get_onreadystatechange: OleVariant; safecall; - procedure Set_onload(p: OleVariant); safecall; - function Get_onload: OleVariant; safecall; - procedure Set_onerror(p: OleVariant); safecall; - function Get_onerror: OleVariant; safecall; - function Get_styleSheet: IHTMLStyleSheet; safecall; - procedure Set_disabled(p: WordBool); safecall; - function Get_disabled: WordBool; safecall; - procedure Set_media(const p: WideString); safecall; - function Get_media: WideString; safecall; - property type_: WideString read Get_type_ write Set_type_; - property readyState: WideString read Get_readyState; - property onreadystatechange: OleVariant read Get_onreadystatechange write Set_onreadystatechange; - property onload: OleVariant read Get_onload write Set_onload; - property onerror: OleVariant read Get_onerror write Set_onerror; - property styleSheet: IHTMLStyleSheet read Get_styleSheet; - property disabled: WordBool read Get_disabled write Set_disabled; - property media: WideString read Get_media write Set_media; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyleElementDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F375-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleElementDisp = dispinterface - ['{3050F375-98B5-11CF-BB82-00AA00BDCE0B}'] - property type_: WideString dispid 1002; - property readyState: WideString readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onload: OleVariant dispid - 2147412080; - property onerror: OleVariant dispid - 2147412083; - property styleSheet: IHTMLStyleSheet readonly dispid 1004; - property disabled: WordBool dispid - 2147418036; - property media: WideString dispid 1006; - end; - -// *********************************************************************// -// DispIntf: DispHTMLStyleElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F511-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLStyleElement = dispinterface - ['{3050F511-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property scopeName: WideString readonly dispid - 2147417073; - procedure setCapture(containerCapture: WordBool); dispid - 2147417072; - procedure releaseCapture; dispid - 2147417071; - property onlosecapture: OleVariant dispid - 2147412066; - function componentFromPoint(x: Integer; y: Integer): WideString; dispid - 2147417070; - procedure doScroll(component: OleVariant); dispid - 2147417069; - property onscroll: OleVariant dispid - 2147412081; - property ondrag: OleVariant dispid - 2147412063; - property ondragend: OleVariant dispid - 2147412062; - property ondragenter: OleVariant dispid - 2147412061; - property ondragover: OleVariant dispid - 2147412060; - property ondragleave: OleVariant dispid - 2147412059; - property ondrop: OleVariant dispid - 2147412058; - property onbeforecut: OleVariant dispid - 2147412054; - property oncut: OleVariant dispid - 2147412057; - property onbeforecopy: OleVariant dispid - 2147412053; - property oncopy: OleVariant dispid - 2147412056; - property onbeforepaste: OleVariant dispid - 2147412052; - property onpaste: OleVariant dispid - 2147412055; - property currentStyle: IHTMLCurrentStyle readonly dispid - 2147417105; - property onpropertychange: OleVariant dispid - 2147412065; - function getClientRects: IHTMLRectCollection; dispid - 2147417068; - function getBoundingClientRect: IHTMLRect; dispid - 2147417067; - procedure setExpression(const propname: WideString; const expression: WideString; - const language: WideString); dispid - 2147417608; - function getExpression(const propname: WideString): OleVariant; dispid - 2147417607; - function removeExpression(const propname: WideString): WordBool; dispid - 2147417606; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - property onrowsdelete: OleVariant dispid - 2147412050; - property onrowsinserted: OleVariant dispid - 2147412049; - property oncellchange: OleVariant dispid - 2147412048; - property dir: WideString dispid - 2147412995; - function createControlRange: IDispatch; dispid - 2147417056; - property scrollHeight: Integer readonly dispid - 2147417055; - property scrollWidth: Integer readonly dispid - 2147417054; - property scrollTop: Integer dispid - 2147417053; - property scrollLeft: Integer dispid - 2147417052; - procedure clearAttributes; dispid - 2147417050; - property oncontextmenu: OleVariant dispid - 2147412047; - function insertAdjacentElement(const where: WideString; const insertedElement: IHTMLElement): IHTMLElement; dispid - 2147417043; - function applyElement(const apply: IHTMLElement; const where: WideString): IHTMLElement; dispid - 2147417047; - function getAdjacentText(const where: WideString): WideString; dispid - 2147417042; - function replaceAdjacentText(const where: WideString; const newText: WideString): WideString; dispid - 2147417041; - property canHaveChildren: WordBool readonly dispid - 2147417040; - function addBehavior(const bstrUrl: WideString; var pvarFactory: OleVariant): Integer; dispid - 2147417032; - function removeBehavior(cookie: Integer): WordBool; dispid - 2147417031; - property runtimeStyle: IHTMLStyle readonly dispid - 2147417048; - property behaviorUrns: IDispatch readonly dispid - 2147417030; - property tagUrn: WideString dispid - 2147417029; - property onbeforeeditfocus: OleVariant dispid - 2147412043; - property readyStateValue: Integer readonly dispid - 2147417028; - function getElementsByTagName(const v: WideString): IHTMLElementCollection; dispid - 2147417027; - procedure mergeAttributes(const mergeThis: IHTMLElement; var pvarFlags: OleVariant); dispid - 2147417016; - property isMultiLine: WordBool readonly dispid - 2147417015; - property canHaveHTML: WordBool readonly dispid - 2147417014; - property onlayoutcomplete: OleVariant dispid - 2147412039; - property onpage: OleVariant dispid - 2147412038; - property inflateBlock: WordBool dispid - 2147417012; - property onbeforedeactivate: OleVariant dispid - 2147412035; - procedure setActive; dispid - 2147417011; - property contentEditable: WideString dispid - 2147412950; - property isContentEditable: WordBool readonly dispid - 2147417010; - property hideFocus: WordBool dispid - 2147412949; - property disabled: WordBool dispid - 2147418036; - property isDisabled: WordBool readonly dispid - 2147417007; - property onmove: OleVariant dispid - 2147412034; - property oncontrolselect: OleVariant dispid - 2147412033; - function FireEvent(const bstrEventName: WideString; var pvarEventObject: OleVariant): WordBool; dispid - 2147417006; - property onresizestart: OleVariant dispid - 2147412029; - property onresizeend: OleVariant dispid - 2147412028; - property onmovestart: OleVariant dispid - 2147412031; - property onmoveend: OleVariant dispid - 2147412030; - property onmouseenter: OleVariant dispid - 2147412027; - property onmouseleave: OleVariant dispid - 2147412026; - property onactivate: OleVariant dispid - 2147412025; - property ondeactivate: OleVariant dispid - 2147412024; - function dragDrop: WordBool; dispid - 2147417005; - property glyphMode: Integer readonly dispid - 2147417004; - property onmousewheel: OleVariant dispid - 2147412036; - procedure normalize; dispid - 2147417000; - function getAttributeNode(const bstrName: WideString): IHTMLDOMAttribute; dispid - 2147417003; - function setAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417002; - function removeAttributeNode(const pattr: IHTMLDOMAttribute): IHTMLDOMAttribute; dispid - 2147417001; - property onbeforeactivate: OleVariant dispid - 2147412022; - property onfocusin: OleVariant dispid - 2147412021; - property onfocusout: OleVariant dispid - 2147412020; - property uniqueNumber: Integer readonly dispid - 2147417058; - property uniqueID: WideString readonly dispid - 2147417057; - property nodeType: Integer readonly dispid - 2147417066; - property parentNode: IHTMLDOMNode readonly dispid - 2147417065; - function hasChildNodes: WordBool; dispid - 2147417064; - property childNodes: IDispatch readonly dispid - 2147417063; - property attributes: IDispatch readonly dispid - 2147417062; - function insertBefore(const newChild: IHTMLDOMNode; refChild: OleVariant): IHTMLDOMNode; dispid - 2147417061; - function removeChild(const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417060; - function replaceChild(const newChild: IHTMLDOMNode; const oldChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417059; - function cloneNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417051; - function removeNode(fDeep: WordBool): IHTMLDOMNode; dispid - 2147417046; - function swapNode(const otherNode: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417044; - function replaceNode(const replacement: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417045; - function appendChild(const newChild: IHTMLDOMNode): IHTMLDOMNode; dispid - 2147417039; - property nodeName: WideString readonly dispid - 2147417038; - property nodeValue: OleVariant dispid - 2147417037; - property firstChild: IHTMLDOMNode readonly dispid - 2147417036; - property lastChild: IHTMLDOMNode readonly dispid - 2147417035; - property previousSibling: IHTMLDOMNode readonly dispid - 2147417034; - property nextSibling: IHTMLDOMNode readonly dispid - 2147417033; - property ownerDocument: IDispatch readonly dispid - 2147416999; - property type_: WideString dispid 1002; - property onload: OleVariant dispid - 2147412080; - property onerror: OleVariant dispid - 2147412083; - property styleSheet: IHTMLStyleSheet readonly dispid 1004; - property media: WideString dispid 1006; - end; - -// *********************************************************************// -// Interface: IHTMLStyleFontFace -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3D5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleFontFace = interface(IDispatch) - ['{3050F3D5-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_fontsrc(const p: WideString); safecall; - function Get_fontsrc: WideString; safecall; - property fontsrc: WideString read Get_fontsrc write Set_fontsrc; - end; - -// *********************************************************************// -// DispIntf: IHTMLStyleFontFaceDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F3D5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLStyleFontFaceDisp = dispinterface - ['{3050F3D5-98B5-11CF-BB82-00AA00BDCE0B}'] - property fontsrc: WideString dispid - 2147413015; - end; - -// *********************************************************************// -// Interface: ICSSFilterSite -// Flags: (0) -// GUID: {3050F3ED-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - ICSSFilterSite = interface(IUnknown) - ['{3050F3ED-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetElement(out element: IHTMLElement): HRESULT; stdcall; - function FireOnFilterChangeEvent: HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IMarkupPointer -// Flags: (0) -// GUID: {3050F49F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - pTOleChar = ^TOleChar; - - IMarkupPointer = interface(IUnknown) - ['{3050F49F-98B5-11CF-BB82-00AA00BDCE0B}'] - function OwningDoc(out ppDoc: IHTMLDocument2): HRESULT; stdcall; - function Gravity(out pGravity: _POINTER_GRAVITY): HRESULT; stdcall; - function SetGravity(Gravity: _POINTER_GRAVITY): HRESULT; stdcall; - function Cling(out pfCling: Integer): HRESULT; stdcall; - function SetCling(fCLing: Integer): HRESULT; stdcall; - function Unposition: HRESULT; stdcall; - function IsPositioned(out pfPositioned: Integer): HRESULT; stdcall; - function GetContainer(out ppContainer: IMarkupContainer): HRESULT; stdcall; - function MoveAdjacentToElement(const pElement: IHTMLElement; eAdj: _ELEMENT_ADJACENCY): HRESULT; stdcall; - function MoveToPointer(const pPointer: IMarkupPointer): HRESULT; stdcall; - function MoveToContainer(const pContainer: IMarkupContainer; fAtStart: Integer): HRESULT; stdcall; - function left(fMove: Integer; out pContext: _MARKUP_CONTEXT_TYPE; out ppElement: IHTMLElement; - var pcch: Integer; pchText: pTOleChar): HRESULT; stdcall; - function right(fMove: Integer; out pContext: _MARKUP_CONTEXT_TYPE; out ppElement: IHTMLElement; - var pcch: Integer; pchText: pTOleChar): HRESULT; stdcall; - function CurrentScope(out ppElemCurrent: IHTMLElement): HRESULT; stdcall; - function IsLeftOf(const pPointerThat: IMarkupPointer; out pfResult: Integer): HRESULT; stdcall; - function IsLeftOfOrEqualTo(const pPointerThat: IMarkupPointer; out pfResult: Integer): HRESULT; stdcall; - function IsRightOf(const pPointerThat: IMarkupPointer; out pfResult: Integer): HRESULT; stdcall; - function IsRightOfOrEqualTo(const pPointerThat: IMarkupPointer; out pfResult: Integer): HRESULT; stdcall; - function IsEqualTo(const pPointerThat: IMarkupPointer; out pfAreEqual: Integer): HRESULT; stdcall; - function MoveUnit(muAction: _MOVEUNIT_ACTION): HRESULT; stdcall; - // !! API fix decl - function findText(const pchFindText: PWideChar; dwFlags: LongWord; const pIEndMatch: IMarkupPointer; - const pIEndSearch: IMarkupPointer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IMarkupContainer -// Flags: (0) -// GUID: {3050F5F9-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IMarkupContainer = interface(IUnknown) - ['{3050F5F9-98B5-11CF-BB82-00AA00BDCE0B}'] - function OwningDoc(out ppDoc: IHTMLDocument2): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IMarkupContainer2 -// Flags: (0) -// GUID: {3050F648-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IMarkupContainer2 = interface(IMarkupContainer) - ['{3050F648-98B5-11CF-BB82-00AA00BDCE0B}'] - function CreateChangeLog(const pChangeSink: IHTMLChangeSink; out ppChangeLog: IHTMLChangeLog; - fForward: Integer; fBackward: Integer): HRESULT; stdcall; - function RegisterForDirtyRange(const pChangeSink: IHTMLChangeSink; out pdwCookie: LongWord): HRESULT; stdcall; - function UnRegisterForDirtyRange(dwCookie: LongWord): HRESULT; stdcall; - function GetAndClearDirtyRange(dwCookie: LongWord; const pIPointerBegin: IMarkupPointer; - const pIPointerEnd: IMarkupPointer): HRESULT; stdcall; - function GetVersionNumber: Integer; stdcall; - function GetMasterElement(out ppElementMaster: IHTMLElement): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLChangeSink -// Flags: (0) -// GUID: {3050F64A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLChangeSink = interface(IUnknown) - ['{3050F64A-98B5-11CF-BB82-00AA00BDCE0B}'] - function Notify: HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLChangeLog -// Flags: (0) -// GUID: {3050F649-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLChangeLog = interface(IUnknown) - ['{3050F649-98B5-11CF-BB82-00AA00BDCE0B}'] -// !! API change -// function GetNextChange(pbBuffer: PByte; nBufferSize: Integer; out pnRecordLength: Integer): HRESULT; stdcall; - function GetNextChange(pbBuffer: PByte; nBufferSize: Integer; out pnRecordLength: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IActiveIMMApp -// Flags: (0) -// GUID: {08C0E040-62D1-11D1-9326-0060B067B86E} -// *********************************************************************// - IActiveIMMApp = interface(IUnknown) - ['{08C0E040-62D1-11D1-9326-0060B067B86E}'] - function AssociateContext(hWnd: THandle; hIME: HIMC; out phPrev: LongWord): HRESULT; stdcall; - function ConfigureIMEA(var hKL: Pointer; hWnd: THandle; dwMode: LongWord; - var pData: REGISTERWORDA): HRESULT; stdcall; - function ConfigureIMEW(var hKL: Pointer; hWnd: THandle; dwMode: LongWord; - var pData: REGISTERWORDW): HRESULT; stdcall; - function CreateContext(out phIMC: HIMC): HRESULT; stdcall; - function DestroyContext(hIME: HIMC): HRESULT; stdcall; - function EnumRegisterWordA(var hKL: Pointer; szReading: PAnsiChar; dwStyle: LongWord; - szRegister: PAnsiChar; var pData: Pointer; out pEnum: IEnumRegisterWordA): HRESULT; stdcall; - function EnumRegisterWordW(var hKL: Pointer; szReading: PWideChar; dwStyle: LongWord; - szRegister: PWideChar; var pData: Pointer; - out pEnum: IEnumRegisterWordW): HRESULT; stdcall; - function EscapeA(var hKL: Pointer; hIMC: HIMC; uEscape: SYSUINT; var pData: Pointer; - out plResult: LRESULT): HRESULT; stdcall; - function EscapeW(var hKL: Pointer; hIMC: HIMC; uEscape: SYSUINT; var pData: Pointer; - out plResult: LRESULT): HRESULT; stdcall; - function GetCandidateListA(hIMC: HIMC; dwIndex: LongWord; uBufLen: SYSUINT; - out pCandList: CANDIDATELIST; - out puCopied: SYSUINT): HRESULT; stdcall; - function GetCandidateListW(hIMC: HIMC; dwIndex: LongWord; uBufLen: SYSUINT; - out pCandList: CANDIDATELIST; - out puCopied: SYSUINT): HRESULT; stdcall; - function GetCandidateListCountA(hIMC: HIMC; out pdwListSize: LongWord; - out pdwBufLen: LongWord): HRESULT; stdcall; - function GetCandidateListCountW(hIMC: HIMC; out pdwListSize: LongWord; - out pdwBufLen: LongWord): HRESULT; stdcall; - function GetCandidateWindow(hIMC: HIMC; dwIndex: LongWord; - out pCandidate: CANDIDATEFORM): HRESULT; stdcall; - function GetCompositionFontA(hIMC: HIMC; out plf: LOGFONTA): HRESULT; stdcall; - function GetCompositionFontW(hIMC: HIMC; out plf: LOGFONTA): HRESULT; stdcall; - function GetCompositionStringA(hIMC: HIMC; dwIndex: LongWord; dwBufLen: LongWord; - out plCopied: Integer; out pBuf: Pointer): HRESULT; stdcall; - function GetCompositionStringW(hIMC: HIMC; dwIndex: LongWord; dwBufLen: LongWord; - out plCopied: Integer; out pBuf: Pointer): HRESULT; stdcall; - function GetCompositionWindow(hIMC: HIMC; out pCompForm: COMPOSITIONFORM): HRESULT; stdcall; - function GetContext(hWnd: THandle; out hIMC: HIMC): HRESULT; stdcall; - function GetConversionListA(var hKL: Pointer; hIMC: LongWord; pSrc: PAnsiChar; uBufLen: SYSUINT; - uFlag: SYSUINT; out pDst: CANDIDATELIST; - out puCopied: SYSUINT): HRESULT; stdcall; - function GetConversionListW(var hKL: Pointer; hIMC: HIMC; pSrc: PWideChar; - uBufLen: SYSUINT; uFlag: SYSUINT; - out pDst: CANDIDATELIST; out puCopied: SYSUINT): HRESULT; stdcall; - function GetConversionStatus(hIMC: HIMC; out pfdwConversion: LongWord; - out pfdwSentence: LongWord): HRESULT; stdcall; - function GetDefaultIMEWnd(hWnd: HWND; out phDefWnd: HWND): HRESULT; stdcall; - function GetDescriptionA(var hKL: Pointer; uBufLen: SYSUINT; szDescription: PAnsiChar; - out puCopied: SYSUINT): HRESULT; stdcall; - function GetDescriptionW(var hKL: Pointer; uBufLen: SYSUINT; szDescription: PWideChar; - out puCopied: SYSUINT): HRESULT; stdcall; - function GetGuideLineA(hIMC: HIMC; dwIndex: LongWord; dwBufLen: LongWord; pBuf: PAnsiChar; - out pdwResult: LongWord): HRESULT; stdcall; - function GetGuideLineW(hIMC: HIMC; dwIndex: LongWord; dwBufLen: LongWord; pBuf: PWideChar; - out pdwResult: LongWord): HRESULT; stdcall; - function GetIMEFileNameA(var hKL: Pointer; uBufLen: SYSUINT; szFileName: PAnsiChar; - out puCopied: SYSUINT): HRESULT; stdcall; - function GetIMEFileNameW(var hKL: Pointer; uBufLen: SYSUINT; szFileName: PWideChar; - out puCopied: SYSUINT): HRESULT; stdcall; - function GetOpenStatus(hIMC: HIMC): HRESULT; stdcall; - function GetProperty(var hKL: Pointer; fdwIndex: LongWord; out pdwProperty: LongWord): HRESULT; stdcall; - function GetRegisterWordStyleA(var hKL: Pointer; nItem: SYSUINT; - out pStyleBuf: STYLEBUFA; - out puCopied: SYSUINT): HRESULT; stdcall; - function GetRegisterWordStyleW(var hKL: Pointer; nItem: SYSUINT; - out pStyleBuf: STYLEBUFW; - out puCopied: SYSUINT): HRESULT; stdcall; - function GetStatusWindowPos(hIMC: HIMC; out pptPos: TPoint): HRESULT; stdcall; - function GetVirtualKey(hWnd: THandle; out puVirtualKey: SYSUINT): HRESULT; stdcall; - function InstallIMEA(szIMEFileName: PAnsiChar; szLayoutText: PAnsiChar; out phKL: Pointer): HRESULT; stdcall; - function InstallIMEW(szIMEFileName: PWideChar; szLayoutText: PWideChar; out phKL: Pointer): HRESULT; stdcall; - function IsIME(var hKL: Pointer): HRESULT; stdcall; - function IsUIMessageA(hWndIME: THandle; msg: SYSUINT; wParam: WPARAM; - lParam: LPARAM): HRESULT; stdcall; - function IsUIMessageW(hWndIME: THandle; msg: SYSUINT; wParam: WPARAM; - lParam: LPARAM): HRESULT; stdcall; - function NotifyIME(hIMC: HIMC; dwAction: LongWord; dwIndex: LongWord; dwValue: LongWord): HRESULT; stdcall; - function RegisterWordA(var hKL: Pointer; szReading: PAnsiChar; dwStyle: LongWord; szRegister: PAnsiChar): HRESULT; stdcall; - function RegisterWordW(var hKL: Pointer; szReading: PWideChar; dwStyle: LongWord; - szRegister: PWideChar): HRESULT; stdcall; - function ReleaseContext(hWnd: THandle; hIMC: HIMC): HRESULT; stdcall; - function SetCandidateWindow(hIMC: HIMC; var pCandidate: CANDIDATEFORM): HRESULT; stdcall; - function SetCompositionFontA(hIMC: HIMC; var plf: LOGFONTA): HRESULT; stdcall; - function SetCompositionFontW(hIMC: HIMC; var plf: tagLOGFONTW): HRESULT; stdcall; - function SetCompositionStringA(hIMC: HIMC; dwIndex: LongWord; var pComp: Pointer; - dwCompLen: LongWord; var pRead: Pointer; dwReadLen: LongWord): HRESULT; stdcall; - function SetCompositionStringW(hIMC: HIMC; dwIndex: LongWord; var pComp: Pointer; - dwCompLen: LongWord; var pRead: Pointer; dwReadLen: LongWord): HRESULT; stdcall; - function SetCompositionWindow(hIMC: HIMC; var pCompForm: COMPOSITIONFORM): HRESULT; stdcall; - function SetConversionStatus(hIMC: HIMC; fdwConversion: LongWord; fdwSentence: LongWord): HRESULT; stdcall; - function SetOpenStatus(hIMC: LongWord; fOpen: Integer): HRESULT; stdcall; - function SetStatusWindowPos(hIMC: HIMC; var pptPos: TPoint): HRESULT; stdcall; - function SimulateHotKey(hWnd: Thandle; dwHotKeyID: LongWord): HRESULT; stdcall; - function UnregisterWordA(var hKL: Pointer; szReading: PAnsiChar; dwStyle: LongWord; - szUnregister: PAnsiChar): HResult; stdcall; - function UnregisterWordW(var hKL: Pointer; szReading: PWideChar; dwStyle: LongWord; - szUnregister: PWideChar): HRESULT; stdcall; - function Activate(fRestoreLayout: Integer): HRESULT; stdcall; - function Deactivate: HRESULT; stdcall; - function OnDefWindowProc(hWnd: THandle; msg: SYSUINT; wParam: WPARAM; - lParam: LPARAM; out plResult: LRESULT): HRESULT; stdcall; - function FilterClientWindows(var aaClassList: Word; uSize: SYSUINT): HRESULT; stdcall; - function GetCodePageA(var hKL: Pointer; out uCodePage: SYSUINT): HRESULT; stdcall; - function GetLangId(var hKL: Pointer; out plid: Word): HRESULT; stdcall; - function AssociateContextEx(hWnd: THandle; hIMC: HIMC; dwFlags: LongWord): HRESULT; stdcall; - function DisableIME(idThread: LongWord): HRESULT; stdcall; - function GetImeMenuItemsA(hIMC: HIMC; dwFlags: LongWord; dwType: LongWord; - var pImeParentMenu: IMEMENUITEMINFOA; - out pImeMenu: IMEMENUITEMINFOA; dwSize: LongWord; - out pdwResult: LongWord): HRESULT; stdcall; - function GetImeMenuItemsW(hIMC: HIMC; dwFlags: LongWord; dwType: LongWord; - var pImeParentMenu: IMEMENUITEMINFOW; - out pImeMenu: IMEMENUITEMINFOW; dwSize: LongWord; - out pdwResult: LongWord): HRESULT; stdcall; - function EnumInputContext(idThread: LongWord; out ppEnum: IEnumInputContext): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IEnumRegisterWordA -// Flags: (0) -// GUID: {08C03412-F96B-11D0-A475-00AA006BCC59} -// *********************************************************************// - IEnumRegisterWordA = interface(IUnknown) - ['{08C03412-F96B-11D0-A475-00AA006BCC59}'] - function Clone(out ppEnum: IEnumRegisterWordA): HRESULT; stdcall; - function Next(ulCount: LongWord; out rgRegisterWord: REGISTERWORDA; - out pcFetched: LongWord): HRESULT; stdcall; - function reset: HRESULT; stdcall; - function Skip(ulCount: LongWord): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IEnumRegisterWordW -// Flags: (0) -// GUID: {4955DD31-B159-11D0-8FCF-00AA006BCC59} -// *********************************************************************// - IEnumRegisterWordW = interface(IUnknown) - ['{4955DD31-B159-11D0-8FCF-00AA006BCC59}'] - function Clone(out ppEnum: IEnumRegisterWordW): HRESULT; stdcall; - function Next(ulCount: LongWord; out rgRegisterWord: REGISTERWORDW; - out pcFetched: LongWord): HRESULT; stdcall; - function reset: HRESULT; stdcall; - function Skip(ulCount: LongWord): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IEnumInputContext -// Flags: (0) -// GUID: {09B5EAB0-F997-11D1-93D4-0060B067B86E} -// *********************************************************************// - IEnumInputContext = interface(IUnknown) - ['{09B5EAB0-F997-11D1-93D4-0060B067B86E}'] - function Clone(out ppEnum: IEnumInputContext): HRESULT; stdcall; - function Next(ulCount: LongWord; out rgInputContext: LongWord; out pcFetched: LongWord): HRESULT; stdcall; - function reset: HRESULT; stdcall; - function Skip(ulCount: LongWord): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: ISegmentList -// Flags: (0) -// GUID: {3050F605-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - ISegmentList = interface(IUnknown) - ['{3050F605-98B5-11CF-BB82-00AA00BDCE0B}'] - function CreateIterator(out ppIIter: ISegmentListIterator): HRESULT; stdcall; - function GetType(out peType: _SELECTION_TYPE): HRESULT; stdcall; - function IsEmpty(out pfEmpty: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: ISegmentListIterator -// Flags: (0) -// GUID: {3050F692-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - ISegmentListIterator = interface(IUnknown) - ['{3050F692-98B5-11CF-BB82-00AA00BDCE0B}'] - function Current(out ppISegment: ISegment): HRESULT; stdcall; - function First: HRESULT; stdcall; - function IsDone: HRESULT; stdcall; - function Advance: HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: ISegment -// Flags: (0) -// GUID: {3050F683-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - ISegment = interface(IUnknown) - ['{3050F683-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetPointers(const pIStart: IMarkupPointer; const pIEnd: IMarkupPointer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLCaret -// Flags: (0) -// GUID: {3050F604-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLCaret = interface(IUnknown) - ['{3050F604-98B5-11CF-BB82-00AA00BDCE0B}'] - function MoveCaretToPointer(const pDispPointer: IDisplayPointer; fScrollIntoView: Integer; - eDir: _CARET_DIRECTION): HRESULT; stdcall; - function MoveCaretToPointerEx(const pDispPointer: IDisplayPointer; fVisible: Integer; - fScrollIntoView: Integer; eDir: _CARET_DIRECTION): HRESULT; stdcall; - function MoveMarkupPointerToCaret(const pIMarkupPointer: IMarkupPointer): HRESULT; stdcall; - function MoveDisplayPointerToCaret(const pDispPointer: IDisplayPointer): HRESULT; stdcall; - function IsVisible(out pIsVisible: Integer): HRESULT; stdcall; - function Show(fScrollIntoView: Integer): HRESULT; stdcall; - function Hide: HRESULT; stdcall; - function InsertText(var pText: Word; lLen: Integer): HRESULT; stdcall; - function scrollIntoView: HRESULT; stdcall; - function GetLocation(out pPoint: TPoint; fTranslate: Integer): HRESULT; stdcall; - function GetCaretDirection(out peDir: _CARET_DIRECTION): HRESULT; stdcall; - function SetCaretDirection(eDir: _CARET_DIRECTION): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IDisplayPointer -// Flags: (0) -// GUID: {3050F69E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IDisplayPointer = interface(IUnknown) - ['{3050F69E-98B5-11CF-BB82-00AA00BDCE0B}'] - function moveToPoint(ptPoint: TPoint; eCoordSystem: _COORD_SYSTEM; - const pElementContext: IHTMLElement; dwHitTestOptions: LongWord; - out pdwHitTestResults: LongWord): HRESULT; stdcall; - function MoveUnit(eMoveUnit: _DISPLAY_MOVEUNIT; lXPos: Integer): HRESULT; stdcall; - function PositionMarkupPointer(const pMarkupPointer: IMarkupPointer): HRESULT; stdcall; - function MoveToPointer(const pDispPointer: IDisplayPointer): HRESULT; stdcall; - function SetPointerGravity(eGravity: _POINTER_GRAVITY): HRESULT; stdcall; - function GetPointerGravity(out peGravity: _POINTER_GRAVITY): HRESULT; stdcall; - function SetDisplayGravity(eGravity: _DISPLAY_GRAVITY): HRESULT; stdcall; - function GetDisplayGravity(out peGravity: _DISPLAY_GRAVITY): HRESULT; stdcall; - function IsPositioned(out pfPositioned: Integer): HRESULT; stdcall; - function Unposition: HRESULT; stdcall; - function IsEqualTo(const pDispPointer: IDisplayPointer; out pfIsEqual: Integer): HRESULT; stdcall; - function IsLeftOf(const pDispPointer: IDisplayPointer; out pfIsLeftOf: Integer): HRESULT; stdcall; - function IsRightOf(const pDispPointer: IDisplayPointer; out pfIsRightOf: Integer): HRESULT; stdcall; - function IsAtBOL(out pfBOL: Integer): HRESULT; stdcall; - function MoveToMarkupPointer(const pPointer: IMarkupPointer; - const pDispLineContext: IDisplayPointer): HRESULT; stdcall; - function scrollIntoView: HRESULT; stdcall; - function GetLineInfo(out ppLineInfo: ILineInfo): HRESULT; stdcall; - function GetFlowElement(out ppLayoutElement: IHTMLElement): HRESULT; stdcall; - function QueryBreaks(out pdwBreaks: LongWord): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: ILineInfo -// Flags: (0) -// GUID: {3050F7E2-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - ILineInfo = interface(IUnknown) - ['{3050F7E2-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_x(out p: Integer): HRESULT; stdcall; - function Get_baseLine(out p: Integer): HRESULT; stdcall; - function Get_textDescent(out p: Integer): HRESULT; stdcall; - function Get_textHeight(out p: Integer): HRESULT; stdcall; - function Get_lineDirection(out p: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementSegment -// Flags: (0) -// GUID: {3050F68F-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementSegment = interface(ISegment) - ['{3050F68F-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetElement(out ppIElement: IHTMLElement): HRESULT; stdcall; - function SetPrimary(fPrimary: Integer): HRESULT; stdcall; - function IsPrimary(out pfPrimary: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHighlightSegment -// Flags: (0) -// GUID: {3050F690-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHighlightSegment = interface(ISegment) - ['{3050F690-98B5-11CF-BB82-00AA00BDCE0B}'] - end; - -// *********************************************************************// -// Interface: IHighlightRenderingServices -// Flags: (0) -// GUID: {3050F606-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHighlightRenderingServices = interface(IUnknown) - ['{3050F606-98B5-11CF-BB82-00AA00BDCE0B}'] - function AddSegment(const pDispPointerStart: IDisplayPointer; - const pDispPointerEnd: IDisplayPointer; - const pIRenderStyle: IHTMLRenderStyle; out ppISegment: IHighlightSegment): HRESULT; stdcall; - function MoveSegmentToPointers(const pISegment: IHighlightSegment; - const pDispPointerStart: IDisplayPointer; - const pDispPointerEnd: IDisplayPointer): HRESULT; stdcall; - function RemoveSegment(const pISegment: IHighlightSegment): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IDisplayServices -// Flags: (0) -// GUID: {3050F69D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IDisplayServices = interface(IUnknown) - ['{3050F69D-98B5-11CF-BB82-00AA00BDCE0B}'] - function CreateDisplayPointer(out ppDispPointer: IDisplayPointer): HRESULT; stdcall; - function TransformRect(var pRect: TRect; eSource: _COORD_SYSTEM; eDestination: _COORD_SYSTEM; - const pIElement: IHTMLElement): HRESULT; stdcall; - function TransformPoint(var pPoint: TPoint; eSource: _COORD_SYSTEM; - eDestination: _COORD_SYSTEM; const pIElement: IHTMLElement): HRESULT; stdcall; - function GetCaret(out ppCaret: IHTMLCaret): HRESULT; stdcall; - function GetComputedStyle(const pPointer: IMarkupPointer; - out ppComputedStyle: IHTMLComputedStyle): HRESULT; stdcall; - function ScrollRectIntoView(const pIElement: IHTMLElement; rect: TRect): HRESULT; stdcall; - function HasFlowLayout(const pIElement: IHTMLElement; out pfHasFlowLayout: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLComputedStyle -// Flags: (0) -// GUID: {3050F6C3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLComputedStyle = interface(IUnknown) - ['{3050F6C3-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_bold(out p: WordBool): HRESULT; stdcall; - function Get_italic(out p: WordBool): HRESULT; stdcall; - function Get_underline(out p: WordBool): HRESULT; stdcall; - function Get_overline(out p: WordBool): HRESULT; stdcall; - function Get_strikeOut(out p: WordBool): HRESULT; stdcall; - function Get_subScript(out p: WordBool): HRESULT; stdcall; - function Get_superScript(out p: WordBool): HRESULT; stdcall; - function Get_explicitFace(out p: WordBool): HRESULT; stdcall; - function Get_fontWeight(out p: Integer): HRESULT; stdcall; - function Get_fontSize(out p: Integer): HRESULT; stdcall; - function Get_fontName(out p: Word): HRESULT; stdcall; - function Get_hasBgColor(out p: WordBool): HRESULT; stdcall; - function Get_textColor(out p: LongWord): HRESULT; stdcall; - function Get_backgroundColor(out p: LongWord): HRESULT; stdcall; - function Get_preFormatted(out p: WordBool): HRESULT; stdcall; - function Get_direction(out p: WordBool): HRESULT; stdcall; - function Get_blockDirection(out p: WordBool): HRESULT; stdcall; - function Get_OL(out p: WordBool): HRESULT; stdcall; - function isEqual(const pComputedStyle: IHTMLComputedStyle; out pfEqual: WordBool): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHtmlDlgSafeHelper -// Flags: (4096) Dispatchable -// GUID: {3050F81A-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHtmlDlgSafeHelper = interface(IDispatch) - ['{3050F81A-98B5-11CF-BB82-00AA00BDCE0B}'] - function choosecolordlg(initColor: OleVariant; out rgbColor: OleVariant): HRESULT; stdcall; - function getCharset(const fontName: WideString; out charset: OleVariant): HRESULT; stdcall; - function Get_fonts(out p: IDispatch): HRESULT; stdcall; - function Get_BlockFormats(out p: IDispatch): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IBlockFormats -// Flags: (4096) Dispatchable -// GUID: {3050F830-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IBlockFormats = interface(IDispatch) - ['{3050F830-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get__newEnum(out p: IUnknown): HRESULT; stdcall; - function Get_Count(out p: Integer): HRESULT; stdcall; - function item(var pvarIndex: OleVariant; out pbstrBlockFormat: WideString): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IFontNames -// Flags: (4096) Dispatchable -// GUID: {3050F839-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IFontNames = interface(IDispatch) - ['{3050F839-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get__newEnum(out p: IUnknown): HRESULT; stdcall; - function Get_Count(out p: Integer): HRESULT; stdcall; - function item(var pvarIndex: OleVariant; out pbstrFontName: WideString): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: ICSSFilter -// Flags: (0) -// GUID: {3050F3EC-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - ICSSFilter = interface(IUnknown) - ['{3050F3EC-98B5-11CF-BB82-00AA00BDCE0B}'] - function SetSite(const pSink: ICSSFilterSite): HRESULT; stdcall; - function OnAmbientPropertyChange(dispid: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: ISecureUrlHost -// Flags: (0) -// GUID: {C81984C4-74C8-11D2-BAA9-00C04FC2040E} -// *********************************************************************// - ISecureUrlHost = interface(IUnknown) - ['{C81984C4-74C8-11D2-BAA9-00C04FC2040E}'] - function ValidateSecureUrl(out pfAllow: Integer; var pchUrlInQuestion: Word; dwFlags: LongWord): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IMarkupServices -// Flags: (0) -// GUID: {3050F4A0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IMarkupServices = interface(IUnknown) - ['{3050F4A0-98B5-11CF-BB82-00AA00BDCE0B}'] - function CreateMarkupPointer(out ppPointer: IMarkupPointer): HRESULT; stdcall; - function CreateMarkupContainer(out ppMarkupContainer: IMarkupContainer): HRESULT; stdcall; -// !! API change -// function createElement(tagID: _ELEMENT_TAG_ID; pchAttributes: PWord; -// out ppElement: IHTMLElement): HRESULT; stdcall; - function createElement(tagID: _ELEMENT_TAG_ID; const pchAttributes: WideString; - out ppElement: IHTMLElement): HRESULT; stdcall; - function CloneElement(const pElemCloneThis: IHTMLElement; out ppElementTheClone: IHTMLElement): HRESULT; stdcall; - function InsertElement(const pElementInsert: IHTMLElement; const pPointerStart: IMarkupPointer; - const pPointerFinish: IMarkupPointer): HRESULT; stdcall; - function RemoveElement(const pElementRemove: IHTMLElement): HRESULT; stdcall; - function remove(const pPointerStart: IMarkupPointer; const pPointerFinish: IMarkupPointer): HRESULT; stdcall; - function Copy(const pPointerSourceStart: IMarkupPointer; - const pPointerSourceFinish: IMarkupPointer; const pPointerTarget: IMarkupPointer): HRESULT; stdcall; - function move(const pPointerSourceStart: IMarkupPointer; - const pPointerSourceFinish: IMarkupPointer; const pPointerTarget: IMarkupPointer): HRESULT; stdcall; - // !! API fix decl - function InsertText(const pchText: PWideChar; cch: Integer; const pPointerTarget: IMarkupPointer): HRESULT; stdcall; - // !! API fix decl - function ParseString(pchHTML: PWideString; dwFlags: LongWord; - out ppContainerResult: IMarkupContainer; - const ppPointerStart: IMarkupPointer; const ppPointerFinish: IMarkupPointer): HRESULT; stdcall; - // !! API fix decl - function ParseGlobal(const hglobalHTML: HGLOBAL; dwFlags: LongWord; - out ppContainerResult: IMarkupContainer; - const pPointerStart: IMarkupPointer; const pPointerFinish: IMarkupPointer): HRESULT; stdcall; - function IsScopedElement(const pElement: IHTMLElement; out pfScoped: Integer): HRESULT; stdcall; - function GetElementTagId(const pElement: IHTMLElement; out ptagId: _ELEMENT_TAG_ID): HRESULT; stdcall; - function GetTagIDForName(const bstrName: WideString; out ptagId: _ELEMENT_TAG_ID): HRESULT; stdcall; - function GetNameForTagID(tagID: _ELEMENT_TAG_ID; out pbstrName: WideString): HRESULT; stdcall; - function MovePointersToRange(const pIRange: IHTMLTxtRange; const pPointerStart: IMarkupPointer; - const pPointerFinish: IMarkupPointer): HRESULT; stdcall; - function MoveRangeToPointers(const pPointerStart: IMarkupPointer; - const pPointerFinish: IMarkupPointer; const pIRange: IHTMLTxtRange): HRESULT; stdcall; -// !! API Change -// function BeginUndoUnit(var pchTitle: Word): HRESULT; stdcall; - function BeginUndoUnit(const pchTitle: WideString): HRESULT; stdcall; - function EndUndoUnit: HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IMarkupServices2 -// Flags: (0) -// GUID: {3050F682-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IMarkupServices2 = interface(IMarkupServices) - ['{3050F682-98B5-11CF-BB82-00AA00BDCE0B}'] - // !! API fix decl - function ParseGlobalEx(hglobalHTML: HGLOBAL; dwFlags: DWord; - const pContext: IMarkupContainer; - out ppContainerResult: IMarkupContainer; - const pPointerStart: IMarkupPointer; const pPointerFinish: IMarkupPointer): HRESULT; stdcall; -{ (hglobalHTML: HGLOBAL; dwFlags: DWord; - const pContext: IMarkupContainer; - out ppContainerResult: IMarkupContainer; - const pPointerStart: IMarkupPointer; const pPointerFinish: IMarkupPointer): HRESULT; stdcall;} - // !! API fix decl - function ValidateElements(const pPointerStart: IMarkupPointer; - const pPointerFinish: IMarkupPointer; - const pPointerTarget: IMarkupPointer; - pPointerStatus: IMarkupPointer; - out ppElemFailBottom: IHTMLElement; out ppElemFailTop: IHTMLElement): HRESULT; stdcall; - function SaveSegmentsToClipboard(const pSegmentList: ISegmentList; dwFlags: LongWord): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLChangePlayback -// Flags: (0) -// GUID: {3050F6E0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLChangePlayback = interface(IUnknown) - ['{3050F6E0-98B5-11CF-BB82-00AA00BDCE0B}'] -// !! API change -// function ExecChange(var pbRecord: Byte; fForward: Integer): HRESULT; stdcall; - function ExecChange(pbRecord: PByte; fForward: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IMarkupPointer2 -// Flags: (0) -// GUID: {3050F675-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IMarkupPointer2 = interface(IMarkupPointer) - ['{3050F675-98B5-11CF-BB82-00AA00BDCE0B}'] - function IsAtWordBreak(out pfAtBreak: Integer): HRESULT; stdcall; - function GetMarkupPosition(out plMP: Integer): HRESULT; stdcall; - function MoveToMarkupPosition(const pContainer: IMarkupContainer; lMP: Integer): HRESULT; stdcall; - function MoveUnitBounded(muAction: _MOVEUNIT_ACTION; const pIBoundary: IMarkupPointer): HRESULT; stdcall; - function IsInsideURL(const pRight: IMarkupPointer; out pfResult: Integer): HRESULT; stdcall; - function MoveToContent(const pIElement: IHTMLElement; fAtStart: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IMarkupTextFrags -// Flags: (0) -// GUID: {3050F5FA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IMarkupTextFrags = interface(IUnknown) - ['{3050F5FA-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetTextFragCount(out pcFrags: Integer): HRESULT; stdcall; - function GetTextFrag(iFrag: Integer; out pbstrFrag: WideString; - const pPointerFrag: IMarkupPointer): HRESULT; stdcall; - function RemoveTextFrag(iFrag: Integer): HRESULT; stdcall; - function InsertTextFrag(iFrag: Integer; const bstrInsert: WideString; - const pPointerInsert: IMarkupPointer): HRESULT; stdcall; - function FindTextFragFromMarkupPointer(const pPointerFind: IMarkupPointer; out piFrag: Integer; - out pfFragFound: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IXMLGenericParse -// Flags: (0) -// GUID: {E4E23071-4D07-11D2-AE76-0080C73BC199} -// *********************************************************************// - IXMLGenericParse = interface(IUnknown) - ['{E4E23071-4D07-11D2-AE76-0080C73BC199}'] - function SetGenericParse(fDoGeneric: WordBool): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLEditHost -// Flags: (0) -// GUID: {3050F6A0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEditHost = interface(IUnknown) - ['{3050F6A0-98B5-11CF-BB82-00AA00BDCE0B}'] - function SnapRect(const pIElement: IHTMLElement; var prcNew: TRect; eHandle: _ELEMENT_CORNER): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLEditHost2 -// Flags: (0) -// GUID: {3050F848-98B5-11CF-BB82-00AA00BDCE0D} -// *********************************************************************// - IHTMLEditHost2 = interface(IHTMLEditHost) - ['{3050F848-98B5-11CF-BB82-00AA00BDCE0D}'] - function PreDrag: HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: ISequenceNumber -// Flags: (0) -// GUID: {3050F6C1-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - ISequenceNumber = interface(IUnknown) - ['{3050F6C1-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetSequenceNumber(nCurrent: Integer; out pnNew: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IIMEServices -// Flags: (0) -// GUID: {3050F6CA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IIMEServices = interface(IUnknown) - ['{3050F6CA-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetActiveIMM(out ppActiveIMM: IActiveIMMApp): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: ISelectionServicesListener -// Flags: (0) -// GUID: {3050F699-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - ISelectionServicesListener = interface(IUnknown) - ['{3050F699-98B5-11CF-BB82-00AA00BDCE0B}'] - function BeginSelectionUndo: HRESULT; stdcall; - function EndSelectionUndo: HRESULT; stdcall; - function OnSelectedElementExit(const pIElementStart: IMarkupPointer; - const pIElementEnd: IMarkupPointer; - const pIElementContentStart: IMarkupPointer; - const pIElementContentEnd: IMarkupPointer): HRESULT; stdcall; - function OnChangeType(eType: _SELECTION_TYPE; const pIListener: ISelectionServicesListener): HRESULT; stdcall; - function GetTypeDetail(out pTypeDetail: WideString): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: ISelectionServices -// Flags: (0) -// GUID: {3050F684-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - ISelectionServices = interface(IUnknown) - ['{3050F684-98B5-11CF-BB82-00AA00BDCE0B}'] - function SetSelectionType(eType: _SELECTION_TYPE; const pIListener: ISelectionServicesListener): HRESULT; stdcall; - function GetMarkupContainer(out ppIContainer: IMarkupContainer): HRESULT; stdcall; - function AddSegment(const pIStart: IMarkupPointer; const pIEnd: IMarkupPointer; - out ppISegmentAdded: ISegment): HRESULT; stdcall; - function AddElementSegment(const pIElement: IHTMLElement; out ppISegmentAdded: IElementSegment): HRESULT; stdcall; - function RemoveSegment(const pISegment: ISegment): HRESULT; stdcall; - function GetSelectionServicesListener(out ppISelectionServicesListener: ISelectionServicesListener): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLEditDesigner -// Flags: (0) -// GUID: {3050F662-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEditDesigner = interface(IUnknown) - ['{3050F662-98B5-11CF-BB82-00AA00BDCE0B}'] - function PreHandleEvent(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT; stdcall; - function PostHandleEvent(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT; stdcall; - function TranslateAccelerator(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT; stdcall; - function PostEditorEventNotify(inEvtDispId: Integer; const pIEventObj: IHTMLEventObj): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLEditServices -// Flags: (0) -// GUID: {3050F663-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEditServices = interface(IUnknown) - ['{3050F663-98B5-11CF-BB82-00AA00BDCE0B}'] - function AddDesigner(const pIDesigner: IHTMLEditDesigner): HRESULT; stdcall; - function RemoveDesigner(const pIDesigner: IHTMLEditDesigner): HRESULT; stdcall; - function GetSelectionServices(const pIContainer: IMarkupContainer; - out ppSelSvc: ISelectionServices): HRESULT; stdcall; - function MoveToSelectionAnchor(const pIStartAnchor: IMarkupPointer): HRESULT; stdcall; - function MoveToSelectionEnd(const pIEndAnchor: IMarkupPointer): HRESULT; stdcall; - function SelectRange(const pStart: IMarkupPointer; const pEnd: IMarkupPointer; - eType: _SELECTION_TYPE): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLEditServices2 -// Flags: (0) -// GUID: {3050F812-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLEditServices2 = interface(IHTMLEditServices) - ['{3050F812-98B5-11CF-BB82-00AA00BDCE0B}'] - function MoveToSelectionAnchorEx(const pIStartAnchor: IDisplayPointer): HRESULT; stdcall; - function MoveToSelectionEndEx(const pIEndAnchor: IDisplayPointer): HRESULT; stdcall; - function FreezeVirtualCaretPos(fReCompute: Integer): HRESULT; stdcall; - function UnFreezeVirtualCaretPos(fReset: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// DispIntf: HTMLNamespaceEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F6BD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - HTMLNamespaceEvents = dispinterface - ['{3050F6BD-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure onreadystatechange(const pEvtObj: IHTMLEventObj); dispid - 609; - end; - -// *********************************************************************// -// Interface: IHTMLNamespace -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6BB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLNamespace = interface(IDispatch) - ['{3050F6BB-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_name: WideString; safecall; - function Get_urn: WideString; safecall; - function Get_tagNames: IDispatch; safecall; - function Get_readyState: OleVariant; safecall; - procedure Set_onreadystatechange(p: OleVariant); safecall; - function Get_onreadystatechange: OleVariant; safecall; - procedure doImport(const bstrImplementationUrl: WideString); safecall; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; safecall; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); safecall; - property name: WideString read Get_name; - property urn: WideString read Get_urn; - property tagNames: IDispatch read Get_tagNames; - property readyState: OleVariant read Get_readyState; - property onreadystatechange: OleVariant read Get_onreadystatechange write Set_onreadystatechange; - end; - -// *********************************************************************// -// DispIntf: IHTMLNamespaceDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6BB-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLNamespaceDisp = dispinterface - ['{3050F6BB-98B5-11CF-BB82-00AA00BDCE0B}'] - property name: WideString readonly dispid 1000; - property urn: WideString readonly dispid 1001; - property tagNames: IDispatch readonly dispid 1002; - property readyState: OleVariant readonly dispid - 2147412996; - property onreadystatechange: OleVariant dispid - 2147412087; - procedure doImport(const bstrImplementationUrl: WideString); dispid 1003; - function attachEvent(const event: WideString; const pdisp: IDispatch): WordBool; dispid - 2147417605; - procedure detachEvent(const event: WideString; const pdisp: IDispatch); dispid - 2147417604; - end; - -// *********************************************************************// -// Interface: IHTMLNamespaceCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6B8-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLNamespaceCollection = interface(IDispatch) - ['{3050F6B8-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function item(index: OleVariant): IDispatch; safecall; - function add(const bstrNamespace: WideString; const bstrUrn: WideString; - implementationUrl: OleVariant): IDispatch; safecall; - property length: Integer read Get_length; - end; - -// *********************************************************************// -// DispIntf: IHTMLNamespaceCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6B8-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLNamespaceCollectionDisp = dispinterface - ['{3050F6B8-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1000; - function item(index: OleVariant): IDispatch; dispid 0; - function add(const bstrNamespace: WideString; const bstrUrn: WideString; - implementationUrl: OleVariant): IDispatch; dispid 1001; - end; - -// *********************************************************************// -// Interface: IHTMLPainter -// Flags: (0) -// GUID: {3050F6A6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPainter = interface(IUnknown) - ['{3050F6A6-98B5-11CF-BB82-00AA00BDCE0B}'] - // !! API fix decl - function Draw(rcBounds: TRect; rcUpdate: TRect; lDrawFlags: Integer; - hdc: hdc; pvDrawObject: Pointer): HRESULT; stdcall; - function onresize(size: TSize): HRESULT; stdcall; - function GetPainterInfo(out pInfo: _HTML_PAINTER_INFO): HRESULT; stdcall; - function HitTestPoint(pt: TPoint; out pbHit: BOOL; out plPartID: Longint): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLPaintSite -// Flags: (0) -// GUID: {3050F6A7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPaintSite = interface(IUnknown) - ['{3050F6A7-98B5-11CF-BB82-00AA00BDCE0B}'] - function InvalidatePainterInfo: HRESULT; stdcall; - // !! API fix decl - function InvalidateRect(prcInvalid: PRect): HRESULT; stdcall; - function InvalidateRegion(var rgnInvalid: Pointer): HRESULT; stdcall; - function GetDrawInfo(lFlags: Integer; out pDrawInfo: _HTML_PAINT_DRAW_INFO): HRESULT; stdcall; - function TransformGlobalToLocal(ptGlobal: TPoint; out pptLocal: TPoint): HRESULT; stdcall; - function TransformLocalToGlobal(ptLocal: TPoint; out pptGlobal: TPoint): HRESULT; stdcall; - function GetHitTestCookie(out plCookie: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLPainterEventInfo -// Flags: (0) -// GUID: {3050F6DF-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPainterEventInfo = interface(IUnknown) - ['{3050F6DF-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetEventInfoFlags(out plEventInfoFlags: Integer): HRESULT; stdcall; - function GetEventTarget(var ppElement: IHTMLElement): HRESULT; stdcall; - function SetCursor(lPartID: Integer): HRESULT; stdcall; - function StringFromPartID(lPartID: Integer; out pbstrPart: WideString): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLPainterOverlay -// Flags: (0) -// GUID: {3050F7E3-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPainterOverlay = interface(IUnknown) - ['{3050F7E3-98B5-11CF-BB82-00AA00BDCE0B}'] - function onmove(rcDevice: TRect): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLIPrintCollection -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6B5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLIPrintCollection = interface(IDispatch) - ['{3050F6B5-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_length: Integer; safecall; - function Get__newEnum: IUnknown; safecall; - function item(index: Integer): IUnknown; safecall; - property length: Integer read Get_length; - property _newEnum: IUnknown read Get__newEnum; - end; - -// *********************************************************************// -// DispIntf: IHTMLIPrintCollectionDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F6B5-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLIPrintCollectionDisp = dispinterface - ['{3050F6B5-98B5-11CF-BB82-00AA00BDCE0B}'] - property length: Integer readonly dispid 1501; - property _newEnum: IUnknown readonly dispid - 4; - function item(index: Integer): IUnknown; dispid 0; - end; - -// *********************************************************************// -// Interface: IEnumPrivacyRecords -// Flags: (0) -// GUID: {3050F844-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IEnumPrivacyRecords = interface(IUnknown) - ['{3050F844-98B5-11CF-BB82-00AA00BDCE0B}'] - function reset: HRESULT; stdcall; - function GetSize(out pSize: LongWord): HRESULT; stdcall; - function GetPrivacyImpacted(out pState: Integer): HRESULT; stdcall; - function Next(out pbstrUrl: WideString; out pbstrPolicyRef: WideString; - out pdwReserved: Integer; out pdwPrivacyFlags: LongWord): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHTMLDialog -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F216-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDialog = interface(IDispatch) - ['{3050F216-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_dialogTop(p: OleVariant); safecall; - function Get_dialogTop: OleVariant; safecall; - procedure Set_dialogLeft(p: OleVariant); safecall; - function Get_dialogLeft: OleVariant; safecall; - procedure Set_dialogWidth(p: OleVariant); safecall; - function Get_dialogWidth: OleVariant; safecall; - procedure Set_dialogHeight(p: OleVariant); safecall; - function Get_dialogHeight: OleVariant; safecall; - function Get_dialogArguments: OleVariant; safecall; - function Get_menuArguments: OleVariant; safecall; - procedure Set_returnValue(p: OleVariant); safecall; - function Get_returnValue: OleVariant; safecall; - procedure close; safecall; - function toString: WideString; safecall; - property dialogTop: OleVariant read Get_dialogTop write Set_dialogTop; - property dialogLeft: OleVariant read Get_dialogLeft write Set_dialogLeft; - property dialogWidth: OleVariant read Get_dialogWidth write Set_dialogWidth; - property dialogHeight: OleVariant read Get_dialogHeight write Set_dialogHeight; - property dialogArguments: OleVariant read Get_dialogArguments; - property menuArguments: OleVariant read Get_menuArguments; - property returnValue: OleVariant read Get_returnValue write Set_returnValue; - end; - -// *********************************************************************// -// DispIntf: IHTMLDialogDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F216-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDialogDisp = dispinterface - ['{3050F216-98B5-11CF-BB82-00AA00BDCE0B}'] - property dialogTop: OleVariant dispid - 2147418108; - property dialogLeft: OleVariant dispid - 2147418109; - property dialogWidth: OleVariant dispid - 2147418107; - property dialogHeight: OleVariant dispid - 2147418106; - property dialogArguments: OleVariant readonly dispid 25000; - property menuArguments: OleVariant readonly dispid 25013; - property returnValue: OleVariant dispid 25001; - procedure close; dispid 25011; - function toString: WideString; dispid 25012; - end; - -// *********************************************************************// -// Interface: IHTMLDialog2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5E0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDialog2 = interface(IDispatch) - ['{3050F5E0-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_status(const p: WideString); safecall; - function Get_status: WideString; safecall; - procedure Set_resizable(const p: WideString); safecall; - function Get_resizable: WideString; safecall; - property status: WideString read Get_status write Set_status; - property resizable: WideString read Get_resizable write Set_resizable; - end; - -// *********************************************************************// -// DispIntf: IHTMLDialog2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5E0-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDialog2Disp = dispinterface - ['{3050F5E0-98B5-11CF-BB82-00AA00BDCE0B}'] - property status: WideString dispid 25014; - property resizable: WideString dispid 25015; - end; - -// *********************************************************************// -// Interface: IHTMLDialog3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F388-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDialog3 = interface(IDispatch) - ['{3050F388-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_unadorned(const p: WideString); safecall; - function Get_unadorned: WideString; safecall; - procedure Set_dialogHide(const p: WideString); safecall; - function Get_dialogHide: WideString; safecall; - property unadorned: WideString read Get_unadorned write Set_unadorned; - property dialogHide: WideString read Get_dialogHide write Set_dialogHide; - end; - -// *********************************************************************// -// DispIntf: IHTMLDialog3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F388-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLDialog3Disp = dispinterface - ['{3050F388-98B5-11CF-BB82-00AA00BDCE0B}'] - property unadorned: WideString dispid 25016; - property dialogHide: WideString dispid 25007; - end; - -// *********************************************************************// -// Interface: IHTMLModelessInit -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5E4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLModelessInit = interface(IDispatch) - ['{3050F5E4-98B5-11CF-BB82-00AA00BDCE0B}'] - function Get_parameters: OleVariant; safecall; - function Get_optionString: OleVariant; safecall; - function Get_moniker: IUnknown; safecall; - function Get_document: IUnknown; safecall; - property parameters: OleVariant read Get_parameters; - property optionString: OleVariant read Get_optionString; - property moniker: IUnknown read Get_moniker; - property document: IUnknown read Get_document; - end; - -// *********************************************************************// -// DispIntf: IHTMLModelessInitDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5E4-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLModelessInitDisp = dispinterface - ['{3050F5E4-98B5-11CF-BB82-00AA00BDCE0B}'] - property parameters: OleVariant readonly dispid 25000; - property optionString: OleVariant readonly dispid 25001; - property moniker: IUnknown readonly dispid 25006; - property document: IUnknown readonly dispid 25007; - end; - -// *********************************************************************// -// Interface: IHTMLPopup -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F666-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPopup = interface(IDispatch) - ['{3050F666-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Show(x: Integer; y: Integer; w: Integer; h: Integer; var pElement: OleVariant); safecall; - procedure Hide; safecall; - function Get_document: IHTMLDocument; safecall; - function Get_isOpen: WordBool; safecall; - property document: IHTMLDocument read Get_document; - property isOpen: WordBool read Get_isOpen; - end; - -// *********************************************************************// -// DispIntf: IHTMLPopupDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F666-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLPopupDisp = dispinterface - ['{3050F666-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Show(x: Integer; y: Integer; w: Integer; h: Integer; var pElement: OleVariant); dispid 27001; - procedure Hide; dispid 27002; - property document: IHTMLDocument readonly dispid 27003; - property isOpen: WordBool readonly dispid 27004; - end; - -// *********************************************************************// -// DispIntf: DispHTMLPopup -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F589-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLPopup = dispinterface - ['{3050F589-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Show(x: Integer; y: Integer; w: Integer; h: Integer; var pElement: OleVariant); dispid 27001; - procedure Hide; dispid 27002; - property document: IHTMLDocument readonly dispid 27003; - property isOpen: WordBool readonly dispid 27004; - end; - -// *********************************************************************// -// Interface: IHTMLAppBehavior -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5CA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAppBehavior = interface(IDispatch) - ['{3050F5CA-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_applicationName(const p: WideString); safecall; - function Get_applicationName: WideString; safecall; - procedure Set_version(const p: WideString); safecall; - function Get_version: WideString; safecall; - procedure Set_icon(const p: WideString); safecall; - function Get_icon: WideString; safecall; - procedure Set_singleInstance(const p: WideString); safecall; - function Get_singleInstance: WideString; safecall; - procedure Set_minimizeButton(const p: WideString); safecall; - function Get_minimizeButton: WideString; safecall; - procedure Set_maximizeButton(const p: WideString); safecall; - function Get_maximizeButton: WideString; safecall; - procedure Set_border(const p: WideString); safecall; - function Get_border: WideString; safecall; - procedure Set_borderStyle(const p: WideString); safecall; - function Get_borderStyle: WideString; safecall; - procedure Set_sysMenu(const p: WideString); safecall; - function Get_sysMenu: WideString; safecall; - procedure Set_caption(const p: WideString); safecall; - function Get_caption: WideString; safecall; - procedure Set_windowState(const p: WideString); safecall; - function Get_windowState: WideString; safecall; - procedure Set_showInTaskBar(const p: WideString); safecall; - function Get_showInTaskBar: WideString; safecall; - function Get_commandLine: WideString; safecall; - property applicationName: WideString read Get_applicationName write Set_applicationName; - property version: WideString read Get_version write Set_version; - property icon: WideString read Get_icon write Set_icon; - property singleInstance: WideString read Get_singleInstance write Set_singleInstance; - property minimizeButton: WideString read Get_minimizeButton write Set_minimizeButton; - property maximizeButton: WideString read Get_maximizeButton write Set_maximizeButton; - property border: WideString read Get_border write Set_border; - property borderStyle: WideString read Get_borderStyle write Set_borderStyle; - property sysMenu: WideString read Get_sysMenu write Set_sysMenu; - property caption: WideString read Get_caption write Set_caption; - property windowState: WideString read Get_windowState write Set_windowState; - property showInTaskBar: WideString read Get_showInTaskBar write Set_showInTaskBar; - property commandLine: WideString read Get_commandLine; - end; - -// *********************************************************************// -// DispIntf: IHTMLAppBehaviorDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5CA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAppBehaviorDisp = dispinterface - ['{3050F5CA-98B5-11CF-BB82-00AA00BDCE0B}'] - property applicationName: WideString dispid 5000; - property version: WideString dispid 5001; - property icon: WideString dispid 5002; - property singleInstance: WideString dispid 5003; - property minimizeButton: WideString dispid 5005; - property maximizeButton: WideString dispid 5006; - property border: WideString dispid 5007; - property borderStyle: WideString dispid 5008; - property sysMenu: WideString dispid 5009; - property caption: WideString dispid 5010; - property windowState: WideString dispid 5011; - property showInTaskBar: WideString dispid 5012; - property commandLine: WideString readonly dispid 5013; - end; - -// *********************************************************************// -// Interface: IHTMLAppBehavior2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5C9-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAppBehavior2 = interface(IDispatch) - ['{3050F5C9-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_contextMenu(const p: WideString); safecall; - function Get_contextMenu: WideString; safecall; - procedure Set_innerBorder(const p: WideString); safecall; - function Get_innerBorder: WideString; safecall; - procedure Set_scroll(const p: WideString); safecall; - function Get_scroll: WideString; safecall; - procedure Set_scrollFlat(const p: WideString); safecall; - function Get_scrollFlat: WideString; safecall; - procedure Set_selection(const p: WideString); safecall; - function Get_selection: WideString; safecall; - property contextMenu: WideString read Get_contextMenu write Set_contextMenu; - property innerBorder: WideString read Get_innerBorder write Set_innerBorder; - property scroll: WideString read Get_scroll write Set_scroll; - property scrollFlat: WideString read Get_scrollFlat write Set_scrollFlat; - property selection: WideString read Get_selection write Set_selection; - end; - -// *********************************************************************// -// DispIntf: IHTMLAppBehavior2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5C9-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAppBehavior2Disp = dispinterface - ['{3050F5C9-98B5-11CF-BB82-00AA00BDCE0B}'] - property contextMenu: WideString dispid 5014; - property innerBorder: WideString dispid 5015; - property scroll: WideString dispid 5016; - property scrollFlat: WideString dispid 5017; - property selection: WideString dispid 5018; - end; - -// *********************************************************************// -// Interface: IHTMLAppBehavior3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5CD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAppBehavior3 = interface(IDispatch) - ['{3050F5CD-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure Set_navigable(const p: WideString); safecall; - function Get_navigable: WideString; safecall; - property navigable: WideString read Get_navigable write Set_navigable; - end; - -// *********************************************************************// -// DispIntf: IHTMLAppBehavior3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {3050F5CD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHTMLAppBehavior3Disp = dispinterface - ['{3050F5CD-98B5-11CF-BB82-00AA00BDCE0B}'] - property navigable: WideString dispid 5019; - end; - -// *********************************************************************// -// DispIntf: DispHTMLAppBehavior -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F57C-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispHTMLAppBehavior = dispinterface - ['{3050F57C-98B5-11CF-BB82-00AA00BDCE0B}'] - property applicationName: WideString dispid 5000; - property version: WideString dispid 5001; - property icon: WideString dispid 5002; - property singleInstance: WideString dispid 5003; - property minimizeButton: WideString dispid 5005; - property maximizeButton: WideString dispid 5006; - property border: WideString dispid 5007; - property borderStyle: WideString dispid 5008; - property sysMenu: WideString dispid 5009; - property caption: WideString dispid 5010; - property windowState: WideString dispid 5011; - property showInTaskBar: WideString dispid 5012; - property commandLine: WideString readonly dispid 5013; - property contextMenu: WideString dispid 5014; - property innerBorder: WideString dispid 5015; - property scroll: WideString dispid 5016; - property scrollFlat: WideString dispid 5017; - property selection: WideString dispid 5018; - end; - -// *********************************************************************// -// DispIntf: DispIHTMLInputButtonElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F51E-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispIHTMLInputButtonElement = dispinterface - ['{3050F51E-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - property type_: WideString readonly dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 2021; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - function createTextRange: IHTMLTxtRange; dispid 2006; - end; - -// *********************************************************************// -// DispIntf: DispIHTMLInputTextElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F520-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispIHTMLInputTextElement = dispinterface - ['{3050F520-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - property type_: WideString readonly dispid 2000; - property value: WideString dispid - 2147413011; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 2021; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - property defaultValue: WideString dispid - 2147413029; - property size: Integer dispid 2002; - property maxLength: Integer dispid 2003; - procedure select; dispid 2004; - property onchange: OleVariant dispid - 2147412082; - property onselect: OleVariant dispid - 2147412102; - property readOnly: WordBool dispid 2005; - function createTextRange: IHTMLTxtRange; dispid 2006; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - end; - -// *********************************************************************// -// DispIntf: DispIHTMLInputFileElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F542-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispIHTMLInputFileElement = dispinterface - ['{3050F542-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - property type_: WideString readonly dispid 2000; - property name: WideString dispid - 2147418112; - property status: OleVariant dispid 2021; - property disabled: WordBool dispid - 2147418036; - property form: IHTMLFormElement readonly dispid - 2147416108; - property size: Integer dispid 2002; - property maxLength: Integer dispid 2003; - procedure select; dispid 2004; - property onchange: OleVariant dispid - 2147412082; - property onselect: OleVariant dispid - 2147412102; - property value: WideString dispid - 2147413011; - end; - -// *********************************************************************// -// DispIntf: DispIHTMLOptionButtonElement -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F509-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispIHTMLOptionButtonElement = dispinterface - ['{3050F509-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - property value: WideString dispid - 2147413011; - property type_: WideString readonly dispid 2000; - property name: WideString dispid - 2147418112; - property checked: WordBool dispid 2009; - property defaultChecked: WordBool dispid 2008; - property onchange: OleVariant dispid - 2147412082; - property disabled: WordBool dispid - 2147418036; - property status: WordBool dispid 2001; - property indeterminate: WordBool dispid 2007; - property form: IHTMLFormElement readonly dispid - 2147416108; - property dataFld: WideString dispid - 2147417091; - property dataSrc: WideString dispid - 2147417090; - property dataFormatAs: WideString dispid - 2147417089; - end; - -// *********************************************************************// -// DispIntf: DispIHTMLInputImage -// Flags: (4112) Hidden Dispatchable -// GUID: {3050F51D-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - DispIHTMLInputImage = dispinterface - ['{3050F51D-98B5-11CF-BB82-00AA00BDCE0B}'] - procedure setAttribute(const strAttributeName: WideString; AttributeValue: OleVariant; - lFlags: Integer); dispid - 2147417611; - function getAttribute(const strAttributeName: WideString; lFlags: Integer): OleVariant; dispid - 2147417610; - function removeAttribute(const strAttributeName: WideString; lFlags: Integer): WordBool; dispid - 2147417609; - property className: WideString dispid - 2147417111; - property id: WideString dispid - 2147417110; - property tagName: WideString readonly dispid - 2147417108; - property parentElement: IHTMLElement readonly dispid - 2147418104; - property style: IHTMLStyle readonly dispid - 2147418038; - property onhelp: OleVariant dispid - 2147412099; - property onclick: OleVariant dispid - 2147412104; - property ondblclick: OleVariant dispid - 2147412103; - property onkeydown: OleVariant dispid - 2147412107; - property onkeyup: OleVariant dispid - 2147412106; - property onkeypress: OleVariant dispid - 2147412105; - property onmouseout: OleVariant dispid - 2147412111; - property onmouseover: OleVariant dispid - 2147412112; - property onmousemove: OleVariant dispid - 2147412108; - property onmousedown: OleVariant dispid - 2147412110; - property onmouseup: OleVariant dispid - 2147412109; - property document: IDispatch readonly dispid - 2147417094; - property title: WideString dispid - 2147418043; - property language: WideString dispid - 2147413012; - property onselectstart: OleVariant dispid - 2147412075; - procedure scrollIntoView(varargStart: OleVariant); dispid - 2147417093; - function contains(const pChild: IHTMLElement): WordBool; dispid - 2147417092; - property sourceIndex: Integer readonly dispid - 2147417088; - property recordNumber: OleVariant readonly dispid - 2147417087; - property lang: WideString dispid - 2147413103; - property offsetLeft: Integer readonly dispid - 2147417104; - property offsetTop: Integer readonly dispid - 2147417103; - property offsetWidth: Integer readonly dispid - 2147417102; - property offsetHeight: Integer readonly dispid - 2147417101; - property offsetParent: IHTMLElement readonly dispid - 2147417100; - property innerHTML: WideString dispid - 2147417086; - property innerText: WideString dispid - 2147417085; - property outerHTML: WideString dispid - 2147417084; - property outerText: WideString dispid - 2147417083; - procedure insertAdjacentHTML(const where: WideString; const html: WideString); dispid - 2147417082; - procedure insertAdjacentText(const where: WideString; const text: WideString); dispid - 2147417081; - property parentTextEdit: IHTMLElement readonly dispid - 2147417080; - property isTextEdit: WordBool readonly dispid - 2147417078; - procedure click; dispid - 2147417079; - property filters: IHTMLFiltersCollection readonly dispid - 2147417077; - property ondragstart: OleVariant dispid - 2147412077; - function toString: WideString; dispid - 2147417076; - property onbeforeupdate: OleVariant dispid - 2147412091; - property onafterupdate: OleVariant dispid - 2147412090; - property onerrorupdate: OleVariant dispid - 2147412074; - property onrowexit: OleVariant dispid - 2147412094; - property onrowenter: OleVariant dispid - 2147412093; - property ondatasetchanged: OleVariant dispid - 2147412072; - property ondataavailable: OleVariant dispid - 2147412071; - property ondatasetcomplete: OleVariant dispid - 2147412070; - property onfilterchange: OleVariant dispid - 2147412069; - property children: IDispatch readonly dispid - 2147417075; - property all: IDispatch readonly dispid - 2147417074; - property tabIndex: Smallint dispid - 2147418097; - procedure focus; dispid - 2147416112; - property accessKey: WideString dispid - 2147416107; - property onblur: OleVariant dispid - 2147412097; - property onfocus: OleVariant dispid - 2147412098; - property onresize: OleVariant dispid - 2147412076; - procedure blur; dispid - 2147416110; - procedure addFilter(const pUnk: IUnknown); dispid - 2147416095; - procedure removeFilter(const pUnk: IUnknown); dispid - 2147416094; - property clientHeight: Integer readonly dispid - 2147416093; - property clientWidth: Integer readonly dispid - 2147416092; - property clientTop: Integer readonly dispid - 2147416091; - property clientLeft: Integer readonly dispid - 2147416090; - property type_: WideString readonly dispid 2000; - property disabled: WordBool dispid - 2147418036; - property border: OleVariant dispid 2012; - property vspace: Integer dispid 2013; - property hspace: Integer dispid 2014; - property alt: WideString dispid 2010; - property src: WideString dispid 2011; - property lowsrc: WideString dispid 2015; - property vrml: WideString dispid 2016; - property dynsrc: WideString dispid 2017; - property readyState: WideString readonly dispid - 2147412996; - property complete: WordBool readonly dispid 2018; - property loop: OleVariant dispid 2019; - property align: WideString dispid - 2147418039; - property onload: OleVariant dispid - 2147412080; - property onerror: OleVariant dispid - 2147412083; - property onabort: OleVariant dispid - 2147412084; - property name: WideString dispid - 2147418112; - property width: Integer dispid - 2147418107; - property height: Integer dispid - 2147418106; - property Start: WideString dispid 2020; - end; - -// *********************************************************************// -// Interface: IElementNamespace -// Flags: (0) -// GUID: {3050F671-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementNamespace = interface(IUnknown) - ['{3050F671-98B5-11CF-BB82-00AA00BDCE0B}'] - function AddTag(const bstrTagName: WideString; lFlags: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementNamespaceTable -// Flags: (0) -// GUID: {3050F670-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementNamespaceTable = interface(IUnknown) - ['{3050F670-98B5-11CF-BB82-00AA00BDCE0B}'] - // !! API fix decl - function AddNamespace(const bstrNamespace: WideString; const bstrUrn: WideString; - lFlags: Integer; const pvarFactory: OleVariant): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementNamespaceFactory -// Flags: (0) -// GUID: {3050F672-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementNamespaceFactory = interface(IUnknown) - ['{3050F672-98B5-11CF-BB82-00AA00BDCE0B}'] - function create(pNamespace: IElementNamespace): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementNamespaceFactory2 -// Flags: (0) -// GUID: {3050F805-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementNamespaceFactory2 = interface(IElementNamespaceFactory) - ['{3050F805-98B5-11CF-BB82-00AA00BDCE0B}'] - function CreateWithImplementation(pNamespace: IElementNamespace; - const bstrImplementation: WideString): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementNamespaceFactoryCallback -// Flags: (0) -// GUID: {3050F7FD-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementNamespaceFactoryCallback = interface(IUnknown) - ['{3050F7FD-98B5-11CF-BB82-00AA00BDCE0B}'] - function Resolve(const bstrNamespace, bstrTagName, bstrAttrs: WideString; - pNamespace: IElementNamespace): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorSiteOM2 -// Flags: (0) -// GUID: {3050F659-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorSiteOM2 = interface(IElementBehaviorSiteOM) - ['{3050F659-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetDefaults(out ppDefaults: IHTMLElementDefaults): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorCategory -// Flags: (0) -// GUID: {3050F4ED-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorCategory = interface(IUnknown) - ['{3050F4ED-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetCategory(out ppchCategory: PWideChar): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorSiteCategory -// Flags: (0) -// GUID: {3050F4EE-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorSiteCategory = interface(IUnknown) - ['{3050F4EE-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetRelatedBehaviors(lDirection: Integer; pchCategory: PWideChar; - out ppEnumerator: IEnumUnknown): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IEnumUnknown -// Flags: (0) -// GUID: {00000100-0000-0000-C000-000000000046} -// *********************************************************************// - IEnumUnknown = interface(IUnknown) - ['{00000100-0000-0000-C000-000000000046}'] - function RemoteNext(celt: LongWord; out rgelt: IUnknown; out pceltFetched: LongWord): HRESULT; stdcall; - function Skip(celt: LongWord): HRESULT; stdcall; - function reset: HRESULT; stdcall; - function Clone(out ppEnum: IEnumUnknown): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorSubmit -// Flags: (0) -// GUID: {3050F646-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorSubmit = interface(IUnknown) - ['{3050F646-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetSubmitInfo(pSubmitData: IHTMLSubmitData): HRESULT; stdcall; - function reset: HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorFocus -// Flags: (0) -// GUID: {3050F6B6-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorFocus = interface(IUnknown) - ['{3050F6B6-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetFocusRect(var pRect: TRect): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorLayout -// Flags: (0) -// GUID: {3050F6BA-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorLayout = interface(IUnknown) - ['{3050F6BA-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetSize(dwFlags: Integer; sizeContent: TSize; var pptTranslateBy: TPoint; - var pptTopLeft: TPoint; var psizeProposed: TSize): HRESULT; stdcall; - function GetLayoutInfo(out plLayoutInfo: Integer): HRESULT; stdcall; - function GetPosition(lFlags: Integer; var pptTopLeft: TPoint): HRESULT; stdcall; - // !! API fix decl - function MapSize(psizeIn: PSize; out prcOut: TRect): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorLayout2 -// Flags: (0) -// GUID: {3050F846-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorLayout2 = interface(IUnknown) - ['{3050F846-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetTextDescent(out plDescent: Integer): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorSiteLayout -// Flags: (0) -// GUID: {3050F6B7-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorSiteLayout = interface(IUnknown) - ['{3050F6B7-98B5-11CF-BB82-00AA00BDCE0B}'] - function InvalidateLayoutInfo: HRESULT; stdcall; - function InvalidateSize: HRESULT; stdcall; - function GetMediaResolution(out psizeResolution: TSize): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IElementBehaviorSiteLayout2 -// Flags: (0) -// GUID: {3050F847-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IElementBehaviorSiteLayout2 = interface(IUnknown) - ['{3050F847-98B5-11CF-BB82-00AA00BDCE0B}'] - function GetFontInfo(out plf: tagLOGFONTW): HRESULT; stdcall; - end; - -// *********************************************************************// -// Interface: IHostBehaviorInit -// Flags: (0) -// GUID: {3050F842-98B5-11CF-BB82-00AA00BDCE0B} -// *********************************************************************// - IHostBehaviorInit = interface(IUnknown) - ['{3050F842-98B5-11CF-BB82-00AA00BDCE0B}'] - function PopulateNamespaceTable: HRESULT; stdcall; - end; -{$IFDEF DELPHI6_UP} -{$WARN SYMBOL_PLATFORM ON} -{$ENDIF} - -implementation - -end. diff --git a/windows/src/ext/embeddedwb/Source/OleCtrlsFix.pas b/windows/src/ext/embeddedwb/Source/OleCtrlsFix.pas deleted file mode 100644 index 3ce5e82f98..0000000000 --- a/windows/src/ext/embeddedwb/Source/OleCtrlsFix.pas +++ /dev/null @@ -1,49 +0,0 @@ -unit OleCtrlsFix; - -interface - -uses - OleCtrls, Windows, Messages; - -type - TOleControlFix = class(TOleControl) - protected - // procedure WMPaint(var Message: TWMPaint); message WM_PAINT; - function GetIDispatchProp(Index: Integer): IDispatch; - function GetIUnknownProp(Index: Integer): IUnknown; - end; - -implementation - -{ TOleControlFix } - -{procedure TOleControlFix.WMPaint(var Message: TWMPaint); -var - PS: TPaintStruct; -begin - if Message.DC = 0 then - begin - BeginPaint(Handle, PS); - EndPaint(Handle, PS); - end; -end; } - -function TOleControlFix.GetIDispatchProp(Index: Integer): IDispatch; -var - Temp: TVarData; -begin - GetProperty(Index, Temp); -// Result := IDispatch(Temp.VDispatch); ***** Change to: - Pointer(Result) := Temp.VDispatch; //this avoids the extra AddRef -end; - -function TOleControlFix.GetIUnknownProp(Index: Integer): IUnknown; -var - Temp: TVarData; -begin - GetProperty(Index, Temp); -// Result := IDispatch(Temp.VUnknown); ***** Change to: - Pointer(Result) := Temp.VUnknown; //this avoids the extra AddRef -end; -end. - diff --git a/windows/src/ext/embeddedwb/Source/RichEditBrowser.pas b/windows/src/ext/embeddedwb/Source/RichEditBrowser.pas deleted file mode 100644 index 884aecb669..0000000000 --- a/windows/src/ext/embeddedwb/Source/RichEditBrowser.pas +++ /dev/null @@ -1,3377 +0,0 @@ -//***************************************************************** -// Rich Edit for Web Browser * -// * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Eran Bodankin (bsalsa) * -// bsalsa@gmail.com * -// Based on a Ideas from: http://www.torry.net/ * -// * -// Documentation and updated versions: * -// http://www.bsalsa.com * -//***************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: RichEditBrowser.pas,v 1.2 2006/11/15 21:01:44 sergev Exp $ - -unit RichEditBrowser; - -interface - -{$I EWB.inc} - -uses - System.UITypes, - Windows, Messages, Classes, Controls, ComCtrls, ExtCtrls, Graphics, ComObj, Menus, - HighLightHTML, HighLightXML, EmbeddedWB, ImgList, RichEdit, ClipBrd, ActiveX; - -const - REO_GETOBJ_NO_INTERFACES = $00000000; - REO_GETOBJ_POLEOBJ = $00000001; - REO_GETOBJ_PSTG = $00000002; - REO_GETOBJ_POLESITE = $00000004; - REO_GETOBJ_ALL_INTERFACES = $00000007; - REO_CP_SELECTION = $FFFFFFFF; - REO_IOB_SELECTION = $FFFFFFFF; - REO_IOB_USE_CP = $FFFFFFFE; - REO_NULL = $00000000; - REO_READWRITEMASK = $0000003F; - REO_DONTNEEDPALETTE = $00000020; - REO_BLANK = $00000010; - REO_DYNAMICSIZE = $00000008; - REO_INVERTEDSELECT = $00000004; - REO_BELOWBASELINE = $00000002; - REO_RESIZABLE = $00000001; - REO_LINK = $80000000; - REO_STATIC = $40000000; - REO_SELECTED = $08000000; - REO_OPEN = $04000000; - REO_INPLACEACTIVE = $02000000; - REO_HILITED = $01000000; - REO_LINKAVAILABLE = $00800000; - REO_GETMETAFILE = $00400000; - RECO_PASTE = $00000000; - RECO_DROP = $00000001; - RECO_COPY = $00000002; - RECO_CUT = $00000003; - RECO_DRAG = $00000004; - READYSTATE_COMPLETE = $00000004; - CLSID_NULL: TCLSID = '{00000000-0000-0000-0000-000000000000}'; - clSelColor = clHighlightText; - clSelColorBk = clHighlight; - clTextColor = clWindowText; - clTextColorBk = clWindow; - clHyperlink = clBlue; - clHyperlinkBk = clWindow; - -// type - // TRichEditVersion = 1..4; -type - TURLClickEvent = procedure(Sender: TObject; const URL: string) of object; - TTextAlignment = (taLeftJustify, taRightJustify, taCenter); - TThemes = (tDefault, tXP, tBlack, tAluminum, tLight); -type - TEditStreamCallBack = function(dwCookie: Longint; pbBuff: PByte; cb: - Longint; var pcb: Longint): DWORD; stdcall; - - TEditStream = record - dwCookie: Longint; - dwError: Longint; - pfnCallback: TEditStreamCallBack; - end; - - IRichEditOleCallback = interface(IUnknown) - ['{00020d03-0000-0000-c000-000000000046}'] - function GetNewStorage(out stg: IStorage): HResult; stdcall; - function GetInPlaceContext(out Frame: IOleInPlaceFrame; - out Doc: IOleInPlaceUIWindow; - lpFrameInfo: POleInPlaceFrameInfo): HResult; stdcall; - function ShowContainerUI(fShow: BOOL): HResult; stdcall; - function QueryInsertObject(const clsid: TCLSID; const stg: IStorage; - cp: Longint): HResult; stdcall; - function DeleteObject(const oleobj: IOleObject): HResult; stdcall; - function QueryAcceptData(const dataobj: IDataObject; - var cfFormat: TClipFormat; reco: DWORD; fReally: BOOL; - hMetaPict: HGLOBAL): HResult; stdcall; - function ContextSensitiveHelp(fEnterMode: BOOL): HResult; stdcall; - function GetClipboardData(const chrg: TCharRange; reco: DWORD; - out dataobj: IDataObject): HResult; stdcall; - function GetDragDropEffect(fDrag: BOOL; grfKeyState: DWORD; - var dwEffect: DWORD): HResult; stdcall; - function GetContextMenu(seltype: Word; const oleobj: IOleObject; - const chrg: TCharRange; out Menu: HMENU): HResult; stdcall; - end; - - -type - TRichEditOleCallback = class(TInterfacedObject, IRichEditOleCallback) - public - function QueryInterface(const iid: TGUID; out Obj): HResult; stdcall; - function _AddRef: Longint; stdcall; - function _Release: Longint; stdcall; - function GetNewStorage(out stg: IStorage): HResult; stdcall; - function GetClipboardData(const chrg: TCharRange; reco: DWORD; - out dataobj: IDataObject): HResult; stdcall; - function GetContextMenu(seltype: Word; const oleobj: IOleObject; - const chrg: TCharRange; out Menu: HMENU): HResult; stdcall; - function GetInPlaceContext(out Frame: IOleInPlaceFrame; - out Doc: IOleInPlaceUIWindow; - lpFrameInfo: POleInPlaceFrameInfo): HResult; stdcall; - function ShowContainerUI(fShow: BOOL): HResult; stdcall; - function QueryInsertObject(const clsid: TCLSID; const stg: IStorage; - cp: Longint): HResult; stdcall; - function DeleteObject(const oleobj: IOleObject): HResult; stdcall; - function QueryAcceptData(const dataobj: IDataObject; var cfFormat: TClipFormat; - reco: DWORD; fReally: BOOL; hMetaPict: HGLOBAL): HResult; stdcall; - function ContextSensitiveHelp(fEnterMode: BOOL): HResult; stdcall; - function GetDragDropEffect(fDrag: BOOL; grfKeyState: DWORD; - var dwEffect: DWORD): HResult; stdcall; - end; - - TRichEditWB = class(TRichEdit) - - private - // OldStatusBarW : Integer; - FAcceptDragComponnents: boolean; - FAcceptDragFiles: boolean; - FAutoNavigate: Boolean; - FEmbeddedWB: TEmbeddedWB; - FFileName: string; - FHideCaret: Boolean; - FHighlightURL: Boolean; - FHTMLHighlight: Boolean; - FImage: TImage; - FModified: Boolean; - FMoreThen64KB: Boolean; - FOnURLClick: TURLClickEvent; - FSelPos: Integer; - FStatusbar: TStatusbar; - FStream: TMemoryStream; - FThemes: TThemes; - FTextAlignment: TAlignment; - FTopGap, fLeftGap: Integer; - FRightGap, fBottomGap: Integer; - FXMLHighlight: Boolean; - FPopupVerbMenu: TPopupMenu; - FAutoVerbMenu: Boolean; - FMyCallback: TRichEditOleCallback; - inserted: Boolean; - function GetCanUndo: Boolean; - function GetModified: Boolean; - function GetRTFText: string; - procedure CheckFileSave; - procedure ClearAll(Sender: TObject); - procedure ClearSel(Sender: TObject); - procedure CNNotify(var Msg: TWMNotify); message CN_NOTIFY; - procedure CopySel(Sender: TObject); - procedure CutSel(Sender: TObject); - procedure DoHTMLrc(Sender: TObject); - procedure DoXMLrc(Sender: TObject); - procedure FindDialog(Sender: TObject); - procedure FindDialogFind(Sender: TObject); - procedure PasteSel(Sender: TObject); - procedure PerformFileOpen(const AFileName: string); - procedure PrintSel(Sender: TObject); - procedure Prnt(Sender: TObject); - procedure ReplaceDialogReplace(Sender: TObject); - procedure SetEditRect; - procedure SetFileName(const FileName: string); - procedure SetHideCaret(const Value: Boolean); - procedure SetHyperlink(Setlink: Boolean; wParam: Integer); - procedure SetModified(Value: Boolean); - procedure SetRTFText(RichText: string); - procedure SetTextAlignment(al: TAlignment); - procedure UpdateInfo; - procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES; - procedure WMPaint(var Msg: TWMPaint); message WM_PAINT; - procedure WMWindowPosChanged(var Message: TWMWindowPosChanged); - message WM_WINDOWPOSCHANGED; - - protected - FMax: Integer; - FSelection: TCharRange; - function GetPopupMenu: TPopupMenu; override; - function GetSelStart: Integer; override; - procedure CreateParams(var Params: TCreateParams); override; - procedure CreateWnd; override; - procedure DestroyWnd; override; - procedure DoSetMaxLength(Value: Integer); override; - procedure DoURLClick(const URL: string); - procedure EMExSetSel(var Message: TMessage); message EM_EXSETSEL; - procedure EMReplaceSel(var Message: TMessage); message EM_REPLACESEL; - procedure setBottomGap(Value: Integer); - procedure setLeftGap(Value: Integer); - procedure setRightGap(Value: Integer); - procedure setTopGap(Value: Integer); - procedure WndProc(var Msg: TMessage); override; - - public - CapsLockKey: string; - CarretPosition: string; - CompCount: Integer; - CursorPositionX, CursorPositionY: Integer; - HTMLSyn: THighlightHTML; - InsertKey: string; - LineIndex: Integer; - NumLockKey: string; - XMLSyn: THighlightXML; - constructor Create(AOwner: TComponent); override; - procedure Loaded; override; - destructor Destroy; override; - function AddBitmapFromImagelist(const ASource: TCustomImageList; const - AImageIndex: System.UITypes.TImageIndex): Integer; - function AddBullets: Integer; - function AddButton(bCaption, bName: string; reLeft, bLeft, bTop: Integer): Integer; - function AddCheckBox(cbCaption, cbName: string; reLeft, cbLeft, cbTop: - Integer; Chk: Boolean): Integer; - function AddDateAndTime: Integer; - function AddEditBox(eText, eName: string; reLeft, eLeft, eTop: Integer): Integer; - function AddEmptyLine: Integer; - function AddFile(FilePath: string; Linked: bool; AsIcon: - Bool): Integer; - function AddFiles(Files: TStrings; Linked: bool; AsIcon: - Bool): Integer; - function AddFormatedText(const txt: string; Bold, Italic, Strikeout, Underline: - boolean; txtColor: TColor): Integer; - function AddImage(FilePath: string): Integer; - function AddImages(Files: TStrings): Integer; - function AddImageUsingClipboard(FilePath: string): Integer; - function AddLineNumbering: Integer; - function AddRadioButton(rbCaption, rbName: string; reLeft, rbLeft, rbTop: - Integer; Chk: boolean): Integer; - function AddRomanNumbering: Integer; - function AddRTFSelection(sourceStream: TStream): Integer; - function AddRtfText(str: string): Integer; - function AddText(const txt: string): Integer; - function AddTextByCursor(str: string): Integer; - function ConvertBitmapToRTF(pict: TBitmap): string; - function ChangeToANSIChangeCase(const S: string): string; - function GetCharactersCount: Integer; - function GetLineCount: Integer; - function GetLineFromChar(CharIndex: Integer): Integer; - function GetLineIndex(LineNo: Integer): Integer; - function GetLineLength(CharIndex: Integer): Integer; - function GetNextWord(var s: string; var PrevWord: string): string; - function GetRTFSelection(intoStream: TStream): string; - function GetRTFTextToString: string; - function GetSelectedText(var SelectedText: string): boolean; - function GetVisibleLines: Integer; - function IsNumber(s: string): Boolean; - function IsSeparator(Car: Char): Boolean; - function RemoveTextFormats: Integer; - function SearchAndReplace(InSearch, InReplace: string): Integer; - function SearchForTextAndSelect(SearchText: string): string; - function SelectLine(Index: Integer): boolean; - procedure AlignText(alignment: TAlignment); - procedure AppendRTF(str: string); - procedure CheckCapslock; - procedure CheckInsertKey; - procedure CheckNumLock; - procedure CreateSnapShot(Pic: TBitmap); - procedure DoHighlightHTML; - procedure DoHighlightXML; - procedure Find; - procedure GetMemStatus; - procedure GoToPosition(LineNumber, CharNumber: Word); - procedure LoadAsCopyFromBrowser; - procedure LoadFromFile(FileName: string); - procedure LoadFromStream(S: TStream); - procedure LoadHTMLFromBrowser; - procedure LoadStreamFromBrowser; - procedure LoadStringsFromBrowser; - procedure LoadTextFromBrowser; - procedure MailContext; - procedure MailSelected; - procedure New; - procedure Open; - procedure PreviewInBrowser; - procedure PrintAll; - procedure PrintSelectedText; - procedure Replace; - procedure Save; - procedure SaveAs; - procedure SaveToFile(FileName: string); - procedure SaveToStream(S: TStream); - procedure ScrollToBottom; - procedure ScrollToTop; - procedure SelAll(Sender: TObject); - procedure SelectFont; - procedure SelectionChange; override; - procedure SetColor; - procedure SetFontBold; - procedure SetFontColor; - procedure SetFontItalic; - procedure SetFontSize; - procedure SetFontUnderLine; - procedure SetLineSpacing(lineSpacing: Byte); - procedure SetOffSetsValues(SetTo: Integer); - procedure SetSelectedBgColor; - procedure SetSelectionHyperLink(Hyperlink: Boolean); - procedure SetTabWidth(FTabWidth: Integer); - procedure SetThemes(Thm: TThemes); - procedure SetToMoreThen64KB; - procedure SetToOEM(var Key: AnsiChar); - procedure SetWordHyperLink(Hyperlink: Boolean); - procedure UndoLast(Sender: TObject); - property CanUndo: Boolean read GetCanUndo; - property Modified: Boolean read GetModified write SetModified; - property AutoVerbMenu: boolean read FAutoVerbMenu write FAutoVerbMenu default True; - - published - procedure DblClick; override; - procedure KeyDown(var Key: Word; Shift: TShiftState); override; - procedure KeyPress(var Key: Char); override; - procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: - Integer); override; - procedure MouseMove(Shift: TShiftState; X, Y: Integer); override; - procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: - Integer); override; - property AcceptDragComponnents: Boolean read fAcceptDragComponnents write - fAcceptDragComponnents default True; - property AcceptDragFiles: Boolean read fAcceptDragFiles write - fAcceptDragFiles default True; - property AutoNavigate: boolean read fAutoNavigate write fAutoNavigate; - property EmbeddedWB: TEmbeddedWB read FEmbeddedWB write FEmbeddedWB; - property FileName: string read fFileName write SetFileName; - property GapBottom: Integer read FBottomGap write setBottomGap default 0; - property GapLeft: Integer read FLeftGap write setLeftGap default 0; - property GapRight: Integer read FRightGap write setRightGap default 0; - property GapTop: Integer read FTopGap write setTopGap default 0; - property HighlightHTML: boolean read fHTMLHighlight write fHTMLHighlight; - property HighlightURL: boolean read fHighlightURL write fHighlightURL; - property HighlightXML: boolean read fXMLHighlight write fXMLHighlight; - property Image: TImage read fImage write fImage; - property OnURLClick: TURLClickEvent read FOnURLClick write FOnURLClick; - property RTFText: string read GetRTFText write SetRTFText; - property Statusbar: TStatusbar read fStatusbar write fStatusbar; - property SupprtMoreThen64KB: boolean read fMoreThen64KB write fMoreThen64KB; - property TextAlignment: TAlignment read fTextAlignment write fTextAlignment; - property HideCaret: Boolean read FHideCaret write SetHideCaret; - property Themes: TThemes read FThemes write FThemes; - - property Align; - property Alignment; - property Anchors; - property BevelEdges; - property BevelInner; - property BevelOuter; - property BevelKind default bkNone; - property BevelWidth; - property BiDiMode; - property BorderStyle; - property BorderWidth; - property Color; - property Ctl3D; - property DragCursor; - property DragKind; - property DragMode; - property Enabled; - property Font; - property HideSelection; - property HideScrollBars; - property ImeMode; - property ImeName; - property Constraints; - property Lines; - property MaxLength; - property ParentBiDiMode; - property ParentColor; - property ParentCtl3D; - property ParentFont; - property ParentShowHint; - property PlainText; - property PopupMenu; - property ReadOnly; - property ScrollBars; - property ShowHint; - property TabOrder; - property TabStop default True; - property Visible; - property WantTabs; - property WantReturns; - property WordWrap; - property OnChange; - property OnContextPopup; - property OnDragDrop; - property OnDragOver; - property OnendDock; - property OnendDrag; - property OnEnter; - property OnExit; - property OnKeyDown; - property OnKeyPress; - property OnKeyUp; -{$IFDEF DELPHI9_UP} - property OnMouseActivate; -{$ENDIF} - property OnMouseDown; - property OnMouseMove; - property OnMouseUp; - property OnMouseWheel; - property OnMouseWheelDown; - property OnMouseWheelUp; - property OnProtectChange; - property OnResizeRequest; - property OnSaveClipboard; - property OnSelectionChange; - property OnStartDock; - property OnStartDrag; - end; - -type - TREObject = packed record - cbStruct: DWORD; - cp: longint; - clsid: TCLSID; - oleobj: IOleObject; - stg: IStorage; - olesite: IOLEClientSite; - SIZEL: TSize; - dvaspect: DWORD; - dwFlags: DWORD; - dwUser: DWORD; - end; - -type - IRichEditOle = interface(IUnknown)['{00020d00-0000-0000-c000-000000000046}'] - function GetClientSite(out clientSite: IOleClientSite): HResult; stdcall; - function GetObjectCount: HResult; stdcall; - function GetLinkCount: HResult; stdcall; - function GetObject(iob: Longint; out reobject: TReObject; - dwFlags: DWORD): HResult; stdcall; - function InsertObject(var reobject: TReObject): HResult; stdcall; - function ConvertObject(iob: Longint; rclsidNew: TIID; - lpstrUsertypeNew: LPCSTR): HResult; stdcall; - function ActivateAs(rclsid: TIID; rclsidAs: TIID): HResult; stdcall; - function SetHostNames(lpstrContainerApp: LPCSTR; - lpstrContainerObj: LPCSTR): HResult; stdcall; - function SetLinkAvailable(iob: Longint; fAvailable: BOOL): HResult; stdcall; - function SetDvaspect(iob: Longint; dvaspect: DWORD): HResult; stdcall; - function HandsOffStorage(iob: Longint): HResult; stdcall; - function SaveCompleted(iob: Longint; const stg: IStorage): HResult; stdcall; - function InPlaceDeactivate: HResult; stdcall; - function ContextSensitiveHelp(fEnterMode: BOOL): HResult; stdcall; - function GetClipboardData(var chrg: TCharRange; reco: DWORD; - out dataobj: IDataObject): HResult; stdcall; - function ImportDataObject(dataobj: IDataObject; cf: TClipFormat; - hMetaPict: HGLOBAL): HResult; stdcall; - end; - - - -procedure CreateIStorage(out Fstorage: Istorage); -function GetRichOleInterface(ARichEdit: TRichEdit; out RichOleInterface: IRichEditOle; out OleClientSite: IOleclientSite): boolean; -procedure REOleSetCallback(RichEdit: TRichEdit; OleInterface: IRichEditOleCallback); -procedure ReleaseObject(var Obj); -function SetFormatEtc(Cf: TClipFormat; med: Longint; td: PDVTargetDevice = nil; - Asp: Longint = DVASPECT_CONTENT; li: Longint = -1): TFormatEtc; -function OleSwitchDisplayAspect(OleObject: IOleObject; var CurrentAspect: DWORD; - NewAspect: DWORD; METAFILEPICT: THandle; DeleteOldAspect, SetUpViewAdvise: boolean; - AdviseSink: IAdviseSink; var MustUpdate: boolean): HRESULT; -function GetOleClassFile(const Name: string): TCLSID; -function OleCopyPasString(const Source: string; Malloc: IMalloc = nil): POleStr; -function SetStgMedium(Stg, Handle: longint; Release: pointer = nil): TStgMedium; -procedure OleFreeString(Str: POleStr; Malloc: IMalloc = nil); -function OleMalloc(Size: Longword; Malloc: IMalloc = nil): pointer; -procedure OleFree(Mem: pointer; Malloc: IMalloc = nil); -procedure ChangeOleIcon(REdit: TRichEdit; HIcon: Hwnd; LabelIcon: string); -procedure AddBitmapToRichEdit(bmp: TBitmap; RichEdit: TRichEditWB); - -var - FRichEditModule: THandle; - RichEditOle: IRichEditOle; - RichEditOleCallback: IRichEditOleCallback; - // RichEditVersion : TRichEditVersion; - -implementation - -uses -{$IFDEF UNICODE} - AnsiStrings, -{$ENDIF UNICODE} - StdCtrls, dialogs, Forms, Printers, sysUtils, ShellAPI, JPEG; - -resourcestring - sSaveChanges = 'Save changes to %s?'; - sOverWrite = 'The file already exist. Do you want to overwrite %s ?'; - sUntitled = 'Untitled'; -// sModified = 'Modified'; - sColRowInfo = 'Line: %3d Col: %3d'; - -type - TImageDataObject = class(TInterfacedObject, IDataObject) - private - FMedium: STGMEDIUM; - FFormat: FORMATETC; - FHasData: Boolean; - protected - 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 enumFormatEtc: 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; - procedure SetBitmap(const ASource: TBitmap); - function GetOleObject(const AClient: IOleClientSite; - const AStorage: IStorage): IOleObject; - public - class procedure InsertBitmap(ADest: TCustomRichEdit; ASource: TBitmap); - destructor Destroy(); override; - end; - -class procedure TImageDataObject.InsertBitmap; -var - idoImage: TImageDataObject; - ifOLE: IRichEditOle; - ifData: IDataObject; - ifClient: IOleClientSite; - ifStorage: IStorage; - ifBytes: ILockBytes; - ifOLEObject: IOleObject; - sCode: HRESULT; - reObj: TREObject; - gdClass: TGUID; -begin - ifOLE := nil; - SendMessage(ADest.Handle, EM_GETOLEINTERFACE, 0, LPARAM(@ifOLE)); - if Assigned(ifOLE) then - try - idoImage := TImageDataObject.Create(); - if idoImage.GetInterface(IDataObject, ifData) then - try - idoImage.SetBitmap(ASource); - ifClient := nil; - ifOLE.GetClientSite(ifClient); - if Assigned(ifClient) then - try - ifBytes := nil; - sCode := CreateILockBytesOnHGlobal(0, True, ifBytes); - if (sCode = S_OK) and (Assigned(ifBytes)) then - try - sCode := StgCreateDocfileOnILockBytes(ifBytes, STGM_SHARE_EXCLUSIVE or - STGM_CREATE or STGM_READWRITE, 0, ifStorage); - if sCode = S_OK then - try - ifOLEObject := idoImage.GetOleObject(ifClient, ifStorage); - if Assigned(ifOLEObject) then - try - OleSetContainedObject(ifOLEObject, True); - sCode := ifOLEObject.GetUserClassID(gdClass); - if sCode = S_OK then - begin - with reObj do - begin - //clsid := ''; - cp := LongInt(REO_CP_SELECTION); - dvaspect := DVASPECT_CONTENT; - oleobj := ifOLEObject; - olesite := ifClient; - stg := ifStorage; - end; - ifOLE.InsertObject(reObj); - end; - finally - ifOLEObject := nil; - end; - finally - ifStorage := nil; - end; - finally - ifBytes := nil; - end; - finally - ifClient := nil; - end; - finally - ifData := nil; - end; - finally - ifOLE := nil; - end; -end; - -procedure TImageDataObject.SetBitmap; -begin - FMedium.tymed := TYMED_GDI; - FMedium.hBitmap := ASource.Handle; - FMedium.unkForRelease := nil; - FFormat.cfFormat := CF_BITMAP; - FFormat.ptd := nil; - FFormat.dwAspect := DVASPECT_CONTENT; - FFormat.lindex := -1; - FFormat.tymed := TYMED_GDI; -end; - -function TImageDataObject.GetOleObject; -var - sCode: HRESULT; -begin - sCode := OleCreateStaticFromData(Self, IOleObject, OLERendER_FORMAT, - @FFormat, AClient, AStorage, Result); - if sCode <> S_OK then - begin - OleCheck(sCode); - Result := nil; - end; -end; - -destructor TImageDataObject.Destroy; -begin - if FHasData then - ReleaseStgMedium(FMedium); - inherited; -end; - -function TImageDataObject.GetData; -var - hDest: THandle; - -begin - hDest := OleDuplicateData(FMedium.hBitmap, CF_BITMAP, 0); - if (hDest <> 0) then - begin - medium.tymed := TYMED_GDI; - medium.hBitmap := hDest; - medium.unkForRelease := nil; - Result := S_OK; - end - else - Result := E_HANDLE; -end; - -function TImageDataObject.GetDataHere; -begin - Result := E_NOTIMPL; -end; - -function TImageDataObject.QueryGetData; -begin - Result := E_NOTIMPL; -end; - -function TImageDataObject.GetCanonicalFormatEtc; -begin - Result := E_NOTIMPL; -end; - -function TImageDataObject.SetData; -begin - FMedium := medium; - FFormat := formatetc; - FHasData := True; - Result := S_OK; -end; - -function TImageDataObject.EnumFormatEtc; -begin - Result := E_NOTIMPL; -end; - -function TImageDataObject.DAdvise; -begin - Result := E_NOTIMPL; -end; - -function TImageDataObject.DUnadvise; -begin - Result := E_NOTIMPL; -end; - -function TImageDataObject.EnumDAdvise; -begin - Result := E_NOTIMPL; -end; - -function TRichEditOleCallback.QueryInterface(const iid: TGUID; out Obj): HResult; -begin - if GetInterface(iid, Obj) then - Result := S_OK - else - Result := E_NOINTERFACE; -end; - -function TRichEditOleCallback._AddRef: LongInt; -begin - Inc(FRefCount); - Result := FRefCount; -end; - -function TRichEditOleCallback._Release: LongInt; -begin - Dec(FRefCount); - Result := FRefCount; -end; - -function TRichEditOleCallback.GetNewStorage(out stg: IStorage): HResult; -begin - try - CreateIStorage(stg); - Result := S_OK; - except - Result := E_OUTOFMEMORY; - end; -end; - -function TRichEditOleCallback.GetClipboardData(const chrg: TCharRange; reco: DWORD; - out dataobj: IDataObject): HResult; -begin - Result := E_NOTIMPL; -end; - -function TRichEditOleCallback.GetContextMenu(seltype: Word; - const oleobj: IOleObject; const chrg: TCharRange; - out Menu: HMENU): HResult; -begin - // menu:=0; - Result := S_OK; // Result := E_NOTIMPL; -end; - -function TRichEditOleCallback.GetInPlaceContext(out Frame: IOleInPlaceFrame; out Doc: IOleInPlaceUIWindow; lpFrameInfo: POleInPlaceFrameInfo): HResult; -begin - Result := S_OK; -end; - -function TRichEditOleCallback.QueryInsertObject(const clsid: TCLSID; const stg: IStorage; - cp: Longint): HResult; -begin - Result := NOERROR; -end; - -function TRichEditOleCallback.DeleteObject(const oleobj: IOleObject): HResult; -begin - if Assigned(oleobj) then - oleobj.Close(OLECLOSE_NOSAVE); - Result := NOERROR; -end; - -function TRichEditOleCallback.QueryAcceptData(const dataobj: IDataObject; - var cfFormat: TClipFormat; reco: DWORD; fReally: BOOL; - hMetaPict: HGLOBAL): HResult; -begin - Result := S_OK; -end; - -function TRichEditOleCallback.ContextSensitiveHelp(fEnterMode: BOOL): HResult; -begin - Result := NOERROR; -end; - -function TRichEditOleCallback.GetDragDropEffect(fDrag: BOOL; grfKeyState: DWORD; - var dwEffect: DWORD): HResult; -begin - Result := E_NOTIMPL; -end; - -function TRichEditOleCallback.ShowContainerUI(fShow: BOOL): HResult; -begin - Result := S_OK; -end; - -procedure CreateIStorage(out Fstorage: Istorage); -var - FlockBytes: IlockBytes; -begin - OleCheck(CreateILockBytesOnHGlobal(0, True, FLockBytes)); - OleCheck(StgCreateDocfileOnILockBytes(FLockBytes, STGM_SHARE_EXCLUSIVE or STGM_CREATE or STGM_READWRITE, 0, FStorage)) -end; - -function GetRichOleInterface(ARichEdit: TRichEdit; out RichOleInterface: IRichEditOle; out OleClientSite: IOleclientSite): boolean; -var - AppName: AnsiString; -begin - Result := False; - if boolean(SendMessage(ARichEdit.Handle, EM_GETOLEINTERFACE, 0, longint(@RichOleInterface))) then - begin - try - AppName := AnsiString(Application.Title); - if Trim(AppName) = '' then - AppName := AnsiString(ExtractFileName(Application.ExeName)); - RichOleInterface.SetHostNames(PAnsiChar(AppName), PAnsiChar(AppName)); - RichOleInterface.GetClientSite(OleclientSite); - Result := True; - except - Result := False; - end; - end; -end; - -procedure REOleSetCallback(RichEdit: TRichEdit; OleInterface: IRichEditOleCallback); -begin - SendMessage(RichEdit.Handle, EM_SETOLECALLBACK, 0, LPARAM(Oleinterface)); -end; - -procedure ReleaseObject(var Obj); -begin - if IUnknown(Obj) <> nil then - begin - IUnknown(Obj)._Release; - IUnknown(Obj) := nil; - end; -end; - -function SetFormatEtc(Cf: TClipFormat; med: Longint; td: PDVTargetDevice = nil; - Asp: Longint = DVASPECT_CONTENT; li: Longint = -1): TFormatEtc; -begin - with Result do - begin - cfFormat := cf; - dwAspect := asp; - ptd := td; - tymed := med; - lindex := li - end -end; - -function OleSwitchDisplayAspect(OleObject: IOleObject; var CurrentAspect: DWORD; - NewAspect: DWORD; METAFILEPICT: THandle; DeleteOldAspect, SetUpViewAdvise: boolean; - AdviseSink: IAdviseSink; var MustUpdate: boolean): HRESULT; -var - OleCache: IOleCache; - ViewObject: IViewObject; - EnumStatData: IEnumStatData; - StatData: TStatData; - FormatEtc: TFormatEtc; - Medium: TStgMedium; - Advf, - NewConnection, - OldAspect: longint; - Error: HRESULT; -begin - OleCache := nil; - ViewObject := nil; - EnumStatData := nil; - OldAspect := CurrentAspect; - MustUpdate := False; - if Failed(OleObject.QueryInterface(IOleCache, OleCache)) then - begin - Result := E_INVALIDARG; - Exit - end; - FormatEtc := SetFormatEtc(0, TYMED_NULL, nil, NewAspect); - if (NewAspect = dvaspect_Icon) and (METAFILEPICT <> 0) then - Advf := advf_nodata - else - Advf := ADVF_PRIMEFIRST; - Result := OleCache.Cache(FormatEtc, Advf, NewConnection); - if Failed(Result) then - Exit; - CurrentAspect := NewAspect; - if (NewAspect = dvaspect_Icon) and (METAFILEPICT <> 0) then - begin - FormatEtc := SetFormatEtc(CF_METAFILEPICT, TYMED_MFPICT, nil, dvaspect_Icon); - Medium := SetStgMedium(TYMED_MFPICT, METAFILEPICT); - OleCache.SetData(FormatEtc, Medium, False) - end - else - MustUpdate := True; - if SetUpViewAdvise and Assigned(AdviseSink) then - if Succeeded(OleObject.QueryInterface(IViewObject, ViewObject)) then - begin - ViewObject.SetAdvise(NewAspect, 0, AdviseSink); - ViewObject := nil - end; - if DeleteOldAspect then - begin - Error := OleCache.EnumCache(EnumStatData); - while Error = S_OK do - begin - Error := EnumStatData.Next(1, StatData, nil); - if Error = S_OK then - if StatData.FormatEtc.dwAspect = OldAspect then - OleCache.Uncache(StatData.dwConnection) - end - end; - Result := S_OK -end; - -function GetOleClassFile(const Name: string): TCLSID; -var - Buffer: POleStr; -begin - Result := CLSID_NULL; - Buffer := OleCopyPasString(Name); - try - OleCheck(GetClassFile(Buffer, Result)) - finally - if Assigned(Buffer) then - OleFreeString(Buffer) - end -end; - -function OleCopyPasString(const Source: string; Malloc: IMalloc = nil): POleStr; -var - Size: Integer; -begin - Size := Length(Source); - if Size = 0 then - Result := nil - else - begin - Inc(Size); - Result := OleMalloc(Size * SizeOf(WideChar), Malloc); - if not Assigned(Result) then - OutOfMemoryError; - StringToWideChar(Source, Result, Size) - end -end; - -function SetStgMedium(Stg, Handle: longint; Release: pointer = nil): TStgMedium; -begin - Result.tymed := Stg; - Result.hGlobal := Handle; - Result.unkForRelease := Release -end; - -procedure OleFreeString(Str: POleStr; Malloc: IMalloc = nil); -begin - OleFree(Str, Malloc) -end; - -function OleMalloc(Size: Longword; Malloc: IMalloc = nil): pointer; -begin - if not Assigned(Malloc) then - Result := CoTaskMemAlloc(Size) - else - Result := Malloc.Alloc(Size) -end; - -procedure OleFree(Mem: pointer; Malloc: IMalloc = nil); -var - Ok: Integer; -begin - if not Assigned(Malloc) then - begin - Ok := CoGetMalloc(MEMCTX_TASK, Malloc); - if Ok = NOERROR then - Assert(Ok = NOERROR, 'CoGetMalloc'); - end; - Ok := Malloc.DidAlloc(Mem); - if Ok = S_False then - Assert(Ok = S_False, 'Impossible to free the memory'); - Malloc.Free(Mem) -end; - -procedure ChangeOleIcon(REdit: TRichEdit; HIcon: Hwnd; LabelIcon: string); -var - Update: Boolean; - Selectiontype: Integer; - RichEditOle: IRichEditOle; - OleClientSite: IOleClientSite; - REObject: TReObject; -begin - Update := True; - FillChar(ReObject, SizeOf(ReObject), 0); - ReObject.cbStruct := SizeOf(ReObject); - Selectiontype := SendMessage(Redit.Handle, EM_SELECTIONtype, 0, 0); - if selectionType = SEL_OBJECT then - GetRichOleInterface(REdit, RichEditOle, OleClientSite); - OleCheck(RichEditOle.GetObject(Longint(REO_IOB_SELECTION), ReObject, REO_GETOBJ_POLEOBJ or REO_GETOBJ_POLESITE)); - HIcon := OleMetafilePictFromIconAndLabel(Hicon, OleCopyPasString(LabelIcon), '', 0); - OleSwitchDisplayAspect(REObject.oleobj, REObject.dvaspect, REObject.dvaspect, Hicon, False, False, nil, Update); - OleCheck(REobject.oleobj.Update); -end; - -function TRichEditWB.ConvertBitmapToRTF(pict: TBitmap): string; -var - bi, bb, rtf: string; - bis, bbs: Cardinal; - achar: string; - hexpict: string; - I: Integer; -begin - - GetDIBSizes(pict.Handle, bis, bbs); - SetLength(bi, bis); - SetLength(bb, bbs); - GetDIB(pict.Handle, pict.Palette, PChar(bi)^, PChar(bb)^); - rtf := '{\rtf1 {\pict\dibitmap '; - SetLength(hexpict, (Length(bb) + Length(bi)) * 2); - I := 2; - for bis := 1 to Length(bi) do - begin - achar := Format('%x', [Integer(bi[bis])]); - if Length(achar) = 1 then - achar := '0' + achar; - hexpict[I - 1] := achar[1]; - hexpict[I] := achar[2]; - Inc(I, 2); - end; - for bbs := 1 to Length(bb) do - begin - achar := Format('%x', [Integer(bb[bbs])]); - if Length(achar) = 1 then - achar := '0' + achar; - hexpict[I - 1] := achar[1]; - hexpict[I] := achar[2]; - Inc(I, 2); - end; - rtf := rtf + hexpict + ' }}'; - Result := rtf; -end; - -function TRichEditWB.AddFiles(Files: TStrings; Linked: bool; AsIcon: Bool): Integer; -var - I: Integer; - FilePath: string; - Ind: word; - HIcon: hwnd; - Update: boolean; - OleClientSite: IOleClientSite; - Storage: IStorage; - OleObject: IOleObject; - ReObject: TReObject; - RichEditOle: IrichEditOle; -begin - Ind := 1; - Update := True; - FillChar(ReObject, SizeOf(TReObject), 0); - for I := 0 to Files.Count - 1 do - begin - FilePath := Files[I]; - if GetRichOleInterface(Self, RichEDitOle, OleClientSite) then - begin - Storage := nil; - try - CreateIStorage(Storage); - if Linked then - OleCheck(OleCreateLinkToFile(OleCopyPasString(FilePath), IOleObject, OLERendER_DRAW, nil, OleClientSite, Storage, OleObject)) - else - OleCheck(OleCreateLinkToFile(OleCopyPasString(FilePath), IOleObject, OLERendER_DRAW, nil, OleClientSite, Storage, OleObject)); - with ReObject do - begin - cbStruct := SizeOf(TReObject); - cp := Integer(REO_CP_SELECTION); - OleObject.GetUserClassId(CLSID); - oleobj := OleObject; - stg := Storage; - olesite := OleClientSite; - if Asicon then - DvAspect := DVASPECT_ICON - else - DvAspect := DVASPECT_CONTENT; - dwFlags := REO_RESIZABLE or REO_DYNAMICSIZE; - end; - if IsEqualCLSID(REObject.CLSID, CLSID_NULL) then - REObject.CLSID := GetOleClassFile(FilePath); - HIcon := ShellAPI.ExtractAssociatedIcon(Application.Handle, PChar(FilePath), Ind); - HIcon := OleMetafilePictFromIconAndLabel(Hicon, OleCopyPasString(ExtractFileName(FilePath)), '', 0); - OleSwitchDisplayAspect(OleObject, REObject.dvaspect, REObject.dvaspect, Hicon, False, False, nil, Update); - OleCheck(RichEditOle.InsertObject(ReObject)); - SendMessage(Self.Handle, EM_SCROLLCARET, 0, 0); - OleCheck(OleObject.Update); - finally - OleClientSite := nil; - Storage := nil; - end; - end; - end; - Result := Lines.Count; -end; - -function TRichEditWB.AddFile(FilePath: string; Linked: bool; AsIcon: Bool): Integer; -var - Ind: word; - HIcon: hwnd; - Update: boolean; - OleClientSite: IOleClientSite; - Storage: IStorage; - OleObject: IOleObject; - ReObject: TReObject; - RichEditOle: IrichEditOle; -begin - inserted := True; - Ind := 1; - Update := True; - FillChar(ReObject, SizeOf(TReObject), 0); - if GetRichOleInterface(Self, RichEDitOle, OleClientSite) then - begin - Storage := nil; - try - CreateIStorage(Storage); - if Linked then - OleCheck(OleCreateLinkToFile(OleCopyPasString(FilePath), - IOleObject, OLERendER_DRAW, nil, OleClientSite, Storage, OleObject)) - else - OleCheck(OleCreateLinkToFile(OleCopyPasString(FilePath), - IOleObject, OLERendER_DRAW, nil, OleClientSite, Storage, OleObject)); - with ReObject do - begin - cbStruct := SizeOf(TReObject); - cp := Integer(REO_CP_SELECTION); - OleObject.GetUserClassId(CLSID); - oleobj := OleObject; - stg := Storage; - olesite := OleClientSite; - if Asicon then - DvAspect := DVASPECT_ICON - else - DvAspect := DVASPECT_CONTENT; - dwFlags := REO_RESIZABLE or REO_DYNAMICSIZE; - end; - if IsEqualCLSID(REObject.CLSID, CLSID_NULL) then - REObject.CLSID := GetOleClassFile(FilePath); - HIcon := ShellAPI.ExtractAssociatedIcon(Application.Handle, PChar(FilePath), Ind); - HIcon := OleMetafilePictFromIconAndLabel(Hicon, OleCopyPasString(ExtractFileName(FilePath)), '', 0); - OleSwitchDisplayAspect(OleObject, REObject.dvaspect, REObject.dvaspect, Hicon, False, False, nil, Update); - OleCheck(RichEditOle.InsertObject(ReObject)); - SendMessage(Self.Handle, EM_SCROLLCARET, 0, 0); - OleCheck(OleObject.Update); - finally - OleClientSite := nil; - Storage := nil; - end; - end; - result := Lines.Count; -end; - -procedure AddBitmapToRichEdit(bmp: Tbitmap; RichEdit: TRichEditWB); - - function BitmapToRTF(pict: TBitmap): string; - var - bi, bb, rtf: string; - bis, bbs: Cardinal; - achar: string; - hexpict: string; - I: Integer; - begin - - GetDIBSizes(pict.Handle, bis, bbs); - SetLength(bi, bis); - SetLength(bb, bbs); - GetDIB(pict.Handle, pict.Palette, PChar(bi)^, PChar(bb)^); - rtf := '{\rtf1 {\pict\dibitmap '; - SetLength(hexpict, (Length(bb) + Length(bi)) * 2); - I := 2; - for bis := 1 to Length(bi) do - begin - achar := Format('%x', [Integer(bi[bis])]); - if Length(achar) = 1 then - achar := '0' + achar; - hexpict[I - 1] := achar[1]; - hexpict[I] := achar[2]; - Inc(I, 2); - end; - for bbs := 1 to Length(bb) do - begin - achar := Format('%x', [Integer(bb[bbs])]); - if Length(achar) = 1 then - achar := '0' + achar; - hexpict[I - 1] := achar[1]; - hexpict[I] := achar[2]; - Inc(I, 2); - end; - rtf := rtf + hexpict + ' }}'; - Result := rtf; - end; -var - s: TstringStream; -begin - S := TStringStream.Create(BitmapToRTF(bmp)); - RichEdit.PlainText := False; - // RichEdit.StreamMode := [smSelection]; - RichEdit.Lines.LoadFromStream(S); - S.Free; -end; - -function TRichEditWB.AddImages(Files: TStrings): Integer; -var - Ext: string; - Pict: TPicture; - I: Integer; -begin - Result := 0; - Pict := TPicture.Create; - try - for I := 0 to Files.Count - 1 do - begin - Ext := ExtractFileExt(Files[I]); - if (Ext = '.bmp') or (Ext = '.gif') or (Ext = '.jpg') or (Ext = '.jpeg') then - begin - Pict.LoadFromFile(Files[I]); - Clipboard.Assign(Pict); - PasteFromClipboard; - SendMessage(Handle, WM_PASTE, 0, 0); - Result := Lines.Count; - end - else - begin - MessageDlg('This format is not supported in this feature.', mtError, [mbOK], 0); - end - end; - finally - Pict.Free; - end; -end; - -function TRichEditWB.AddImageUsingClipboard(FilePath: string): Integer; -var - Pict: TPicture; -begin - Pict := TPicture.Create; - try - inserted := True; - Pict.LoadFromFile(FilePath); - Clipboard.Assign(Pict); - PasteFromClipboard; - Result := Lines.Count; - finally - Pict.Free; - end; -end; - -function TRichEditWB.AddImage(FilePath: string): Integer; -var - ImageBMP: TBitmap; - ImageJPG: TJPEGImage; -begin - WordWrap := False; - if (Pos('.bmp', FilePath) > 0) or (Pos('.BMP', FilePath) > 0) then - begin - try - inserted := True; - ImageBMP := TBitmap.Create; - ImageBMP.LoadFromFile(FilePath); - Clipboard.Assign(ImageBMP); - // Clipboard.AsText:=ConvertBitmapToRTF(ImageBMP); - Result := Lines.Count; - finally - PasteFromClipboard; - end; - ImageBMP.Free; - end - else - if (Pos('.jp', FilePath) > 0) or (Pos('.JP', FilePath) > 0) then - begin - try - ImageJPG := TJPEGImage.Create; - ImageJPG.LoadFromFile(FilePath); - Clipboard.Assign(ImageJPG); - Result := Lines.Count; - finally - PasteFromClipboard; - end; - ImageJPG.Free; - end - else - begin - MessageDlg('This format is not supported in this feature.', mtError, [mbOK], 0); - Result := 0; - end -end; - -function EditStreamInCallback(dwCookie: Longint; pbBuff: PByte; - cb: Longint; var pcb: Longint): DWORD; stdcall; -var - theStream: TStream; - dataAvail: LongInt; -begin - theStream := TStream(dwCookie); - with theStream do - begin - dataAvail := Size - Position; - Result := 0; - if dataAvail <= cb then - begin - pcb := Read(pbBuff^, dataAvail); - if pcb <> dataAvail then - result := DWord(E_FAIL); - end - else - begin - pcb := Read(pbBuff^, cb); - if pcb <> cb then - result := DWord(E_FAIL); - end; - end; -end; - -function EditStreamOutCallback(dwCookie: Longint; pbBuff: PByte; cb: - Longint; var pcb: Longint): DWORD; stdcall; -var - theStream: TStream; -begin - theStream := TStream(dwCookie); - with theStream do - begin - if cb > 0 then - pcb := Write(pbBuff^, cb); - Result := 0; - end; -end; - -function TRichEditWB.GetRTFSelection(intoStream: TStream): string; -var - editstream: TEditStream; -begin - with editstream do - begin - dwCookie := Longint(intoStream); - dwError := 0; - pfnCallback := EditStreamOutCallBack; - end; - Perform(EM_STREAMOUT, SF_RTF or SFF_SELECTION, longint(@editstream)); - Result := SelText; -end; - -function TRichEditWB.AddRTFSelection(sourceStream: TStream): Integer; -var - EditStream: TEditStream; -begin - with EditStream do - begin - dwCookie := Longint(sourceStream); - dwError := 0; - pfnCallback := EditStreamInCallBack; - end; - Perform(EM_STREAMIN, SF_RTF or SFF_SELECTION, longint(@EditStream)); - Result := Lines.Count; -end; - -function TRichEditWB.AddRtfText(str: string): Integer; -var - aMemStream: TMemoryStream; -begin - Result := 0; - if Length(str) > 0 then - begin - aMemStream := TMemoryStream.Create; - try - aMemStream.Write(str[1], length(str)); - aMemStream.Position := 0; - AddRTFSelection(aMemStream); - Result := Lines.Count; - finally - aMemStream.Free; - end; - end; -end; - -procedure TRichEditWB.AppendRTF(str: string); -var - start, length, eventmask: Integer; -begin - eventmask := SendMessage(Handle, EM_SETEVENTMASK, 0, 0); - SendMessage(Handle, WM_SETREDRAW, 0, 0); - start := SelStart; - length := SelLength; - SelLength := 0; - SelStart := System.Length(Text); - AddRtfText(str); - SelStart := start; - SelLength := length; - SendMessage(Handle, WM_SETREDRAW, 1, 0); - InvalidateRect(Handle, nil, True); - SendMessage(Handle, EM_SETEVENTMASK, 0, eventmask); -end; - -function TRichEditWB.AddBitmapFromImagelist(const ASource: TCustomImageList; - const AImageIndex: System.UITypes.TImageIndex): Integer; -var - bmpImage: TBitmap; -begin - inserted := True; - bmpImage := TBitmap.Create(); - try - ASource.GetBitmap(AImageIndex, bmpImage); - BmpImage.Width := ASource.Width + 1; - BmpImage.Height := ASource.Height + 1; - TImageDataObject.InsertBitmap(Self, bmpImage); - Result := Lines.Count; - finally - FreeAndNil(bmpImage); - end; -end; - -procedure TRichEditWB.WMPaint(var Msg: TWMPaint); -var - DC: HDC; - // R, R1: TRect; -begin - DC := GetDC(Handle); - if Transparent = 1 then - SetBkMode(DC, Windows.TRANSPARENT) - else - SetBkMode(DC, Windows.OPAQUE); - ReleaseDC(Handle, DC); - { if RichEditVersion >= 2 then - inherited - else - begin - if GetUpdateRect(Handle, R, True) then - begin - with ClientRect do - R1 := Rect(Right - 3, Top, Right, Bottom); - if IntersectRect(R, R, R1) then - InvalidateRect(Handle, @R1, True); - end; - end;}inherited -end; - -procedure TRichEditWB.DoSetMaxLength(Value: Integer); -begin - if Value = 0 then - Value := $FFFFFF; - SendMessage(Handle, EM_EXLIMITTEXT, 0, Value); -end; - -procedure TRichEditWB.SetHideCaret(const Value: Boolean); -begin - if FHideCaret <> Value then - FHideCaret := Value; - if FHideCaret then - Windows.HideCaret(Handle); -end; - -function TRichEditWB.GetLineFromChar(CharIndex: Integer): Integer; -begin - Result := SendMessage(Handle, EM_EXLINEFROMCHAR, 0, CharIndex); -end; - -function TRichEditWB.GetLineIndex(LineNo: Integer): Integer; -begin - Result := SendMessage(Handle, EM_LINEINDEX, LineNo, 0); -end; - -procedure TRichEditWB.SelectionChange; -begin - if Assigned(OnSelectionChange) then - OnSelectionChange(Self); -end; - -procedure TRichEditWB.CreateParams(var Params: TCreateParams); -begin - inherited CreateParams(Params); - { case RichEditVersion of - 1: CreateSubClass(Params, RICHEDIT_CLASS10A); - else - CreateSubClass(Params, RICHEDIT_CLASS); - end; } - Params.Style := Params.Style or WS_CLIPCHILDREN; - if FRichEditModule = 0 then - begin - FRichEditModule := LoadLibrary('RICHED20.DLL'); - if FRichEditModule <= HINSTANCE_ERROR then - FRichEditModule := 0; - end; - CreateSubClass(Params, RICHEDIT_CLASS); -end; - -procedure TRichEditWB.WMWindowPosChanged(var Message: TWMWindowPosChanged); -begin - inherited; - SetEditRect; -end; - -procedure TRichEditWB.SetEditRect; -var - Loc: TRect; -begin - SetRect(Loc, FLeftGap, FTopGap, (ClientWidth - 1) - FRightGap, (ClientHeight + 1) - FBottomGap); - SendMessage(Handle, EM_SETRECTNP, 0, LongInt(@Loc)); -end; - -procedure TRichEditWB.setLeftGap(Value: Integer); -begin - if (FLeftGap <> Value) and (Value > -1) then - begin - FLeftGap := Value; - ReCreateWnd; - end; -end; - -procedure TRichEditWB.setTopGap(Value: Integer); -begin - if (FTopGap <> Value) and (Value > -1) then - begin - FTopGap := Value; - ReCreateWnd; - end; -end; - -procedure TRichEditWB.setRightGap(Value: Integer); -begin - if (FRightGap <> Value) and (Value > -1) then - begin - FRightGap := Value; - ReCreateWnd; - end; -end; - -procedure TRichEditWB.setBottomGap(Value: Integer); -begin - if (FBottomGap <> Value) and (Value > -1) then - begin - FBottomGap := Value; - ReCreateWnd; - end; -end; - -procedure TRichEditWB.PrintAll; -var - PD: TPrintDialog; -begin - PD := TPrintDialog.Create(Self); - try - if PD.Execute then - begin - Print(Self.Lines.Text); - end; - finally - PD.Free; - end; -end; - -function TRichEditWB.AddText(const txt: string): Integer; -begin - Lines.Add(txt); - Result := Lines.Count; -end; - -function TRichEditWB.AddTextByCursor(str: string): Integer; -var - Str1: string; - i, ui: Integer; -begin - ui := Length(Lines[CaretPos.y]); - str1 := Lines[CaretPos.y]; - if Pos('<$Cursor$>', str) > 0 then - begin - i := Pos('<$Cursor$>', str); - str := StringReplace(str, '<$Cursor$>', '', [rfReplaceAll, rfIgnoreCase]); - i := i - 1 + ui; - end - else - i := -30; - System.Insert(str, Str1, CaretPos.x + 1); - Lines[CaretPos.y] := str1; - if i <> -30 then - begin - SelStart := Perform(EM_LINEINDEX, CaretPos.y, 0) + i; - SetFocus; - end; - Result := Lines.Count; -end; - -function TRichEditWB.GetCharactersCount: Integer; -begin - Result := GetTextLen; -end; - -procedure TRichEditWB.SetTabWidth(FTabWidth: Integer); -begin - WantTabs := True; - SendMessage(Handle, EM_SETTABSTOPS, 1, Longint(@FTabWidth)); -end; - -procedure TRichEditWB.SetOffSetsValues(SetTo: Integer); -var - Rect: TRect; -begin - SendMessage(Handle, EM_GETRECT, 0, LongInt(@Rect)); - Rect.Left := SetTo; - SendMessage(Handle, EM_SETRECT, 0, LongInt(@Rect)); - Refresh; -end; - -function TRichEditWB.GetLineLength(CharIndex: Integer): Integer; -begin - Result := SendMessage(Handle, EM_LINELENGTH, CharIndex, 0); -end; - -procedure TRichEditWB.SetToOEM(var Key: AnsiChar); -var - ch: string[1]; -begin - - Font.Handle := GetStockObject(OEM_FIXED_FONT); - CharToOem(@Key, @ch[1]); - Key := ch[1]; -end; - -procedure TRichEditWB.GetMemStatus; -var - memory: TMemoryStatus; -begin - memory.dwLength := SizeOf(memory); - GlobalMemoryStatus(memory); - ShowMessage('Total memory: ' + IntToStr(memory.dwTotalPhys) + ' Bytes' - + #10 + #13 + 'Available memory: ' + IntToStr(memory.dwAvailPhys) + ' Bytes'); -end; - -function TRichEditWB.IsSeparator(Car: Char): Boolean; -begin - case Car of - '.', ';', ',', ':', '!', '"', '''', '^', '+', '-', '*', '/', '\', ' ', - '`', '[', ']', '(', ')', '{', '}', '?', '%', '=': Result := True; - else - Result := False; - end; -end; - -function TRichEditWB.GetNextWord(var s: string; var PrevWord: string): string; -begin - Result := ''; - PrevWord := ''; - if s = '' then - Exit; - while (s <> '') and IsSeparator(s[1]) do - begin - PrevWord := PrevWord + s[1]; - Delete(s, 1, 1); - end; - while (s <> '') and not IsSeparator(s[1]) do - begin - Result := Result + s[1]; - Delete(s, 1, 1); - end; -end; - -function TRichEditWB.IsNumber(s: string): Boolean; -var - i: Integer; -begin - Result := False; - for i := 1 to Length(s) do - case s[i] of - '0'..'9': ; - else - Exit; - end; - Result := True; -end; - -function TRichEditWB.GetVisibleLines: Integer; -begin - Result := Height div (Abs(Self.Font.Height) + 2); -end; - -procedure TRichEditWB.DoHighlightHtml; -var - ms: TMemoryStream; -begin - if HighlightHTML then - begin - HTMLSyn := THighlightHTML.Create; - try - HTMLSyn.SetText(Text); - ms := TMemoryStream.Create; - try - HTMLSyn.ConvertToRTFStream(ms); - PlainText := False; - ms.Position := 0; - Lines.LoadFromStream(ms); - PlainText := True; - finally - ms.Free; - end; - finally - HTMLSyn.Free; - end; - end; -end; - -procedure TRichEditWB.DoHighlightXML; -var - ms: TMemoryStream; -begin - if HighlightXML then - begin - XMLSyn := THighlightXML.Create; - try - XMLSyn.SetText(Text); - ms := TMemoryStream.Create; - try - XMLSyn.ConvertToRTFStream(ms); - PlainText := False; - ms.Position := 0; - Lines.LoadFromStream(ms); - PlainText := True; - finally - ms.Free; - end; - finally - XMLSyn.Free; - end; - end; -end; - -procedure TRichEditWB.CreateSnapShot(Pic: TBitmap); -var - psd: TSaveDialog; - Range: TFormatRange; - TextBounary: TRect; -begin - Pic.Width := Width; - Pic.Height := Height; - if (Pic.Width <> 0) and (Pic.Height <> 0) then - Pic.Canvas.Draw(0, 0, Pic) - else - with Pic.Canvas do - begin - Brush.Color := Color; - FillRect(ClipRect); - end; - Pic.Canvas.Brush.Style := bsClear; - TextBounary := Rect(0, 0, Width * Screen.PixelsPerInch, Height * Screen.PixelsPerInch); - with Range do - begin - hdc := Pic.Canvas.Handle; - hdcTarget := Pic.Canvas.Handle; - rc := TextBounary; - rcPage := TextBounary; - chrg.cpMin := 0; - chrg.cpMax := -1; - end; - SendMessage(Handle, EM_FORMATRANGE, 1, Longint(@Range)); - SendMessage(Handle, EM_FORMATRANGE, 0, 0); - if not Assigned(fImage) then - begin - psd := TSaveDialog.Create(Self); - psd.FileName := 'EditorImage.bmp'; - psd.Filter := 'BMP file | (*.bmp)'; - try - if psd.Execute then - if FileExists(psd.FileName) then - if MessageDlg(Format(sOverWrite, [psd.FileName]), mtConfirmation, mbYesNoCancel, 0) - <> idYes then - Exit; - Pic.SaveToFile(psd.FileName + '.bmp'); - finally - psd.Free; - end; - end; -end; - -procedure TRichEditWB.CutSel(Sender: TObject); -begin - if not ReadOnly then - CutToClipboard; -end; - -procedure TRichEditWB.Prnt(Sender: TObject); -begin - Print(Text); -end; - -procedure TRichEditWB.CopySel(Sender: TObject); -begin - CopyToClipboard; -end; - -procedure TRichEditWB.ClearSel(Sender: TObject); -begin - if not ReadOnly then - ClearSelection; -end; - -procedure TRichEditWB.PasteSel(Sender: TObject); -begin - if not ReadOnly then - PasteFromClipboard; -end; - -procedure TRichEditWB.SelAll(Sender: TObject); -begin - SelectAll; -end; - -procedure TRichEditWB.ClearAll(Sender: TObject); -begin - if not ReadOnly then - Clear; -end; - -procedure TRichEditWB.UndoLast(Sender: TObject); -begin - Undo; -end; - -procedure TRichEditWB.SetHyperLink(Setlink: Boolean; wParam: Integer); -var - cf: TCharFormat; -begin - FillChar(cf, SizeOf(cf), 0); - cf.cbSize := SizeOf(cf); - cf.dwMask := CFM_LINK or CFM_COLOR or CFM_UNDERLINE; - - if Setlink then - begin - cf.dwEffects := CFE_LINK or CFE_UNDERLINE; - cf.crTextColor := COLORREF(clBlue); - end - else - cf.crTextColor := Font.Color; - SendMessage(Handle, EM_SETCHARFORMAT, wParam, Integer(@cf)); -end; - -procedure TRichEditWB.SetSelectionHyperLink(Hyperlink: Boolean); -begin - SetHyperlink(Hyperlink, SCF_SELECTION); -end; - -procedure TRichEditWB.SetWordHyperLink(Hyperlink: Boolean); -begin - SetHyperlink(Hyperlink, SCF_WORD or SCF_SELECTION); -end; - -procedure TRichEditWB.DoURLClick(const URL: string); -var - X: Olevariant; -begin - if fAutoNavigate then - begin - if Assigned(FOnURLClick) then - OnURLClick(Self, URL) - else - if Assigned(FEmbeddedWB) then - begin - FEmbeddedWB.Navigate(Url, X, X, X, X); - FEmbeddedWB.SetFocusToDoc; - end; - end; -end; - -procedure TRichEditWB.CNNotify(var Msg: TWMNotify); -var - p: TENLink; - sURL: string; -begin - if fHighlightURL then - begin - if (Msg.NMHdr^.code = EN_LINK) then - begin - p := TENLink(Pointer(Msg.NMHdr)^); - if (p.Msg = WM_LBUTTONDOWN) then - begin - try - SendMessage(Handle, EM_EXSETSEL, 0, Longint(@(p.chrg))); - sURL := SelText; - DoURLClick(sURL); - except - end; - end; - end; - inherited; - end; -end; - -procedure TRichEditWB.CreateWnd; -{var - mask: Word;} -begin - inherited CreateWnd; - Modified := FModified; - if fHighlightURL then - SendMessage(Handle, EM_AUTOURLDETECT, 1, 0); - // mask := SendMessage(Handle, EM_GETEVENTMASK, 0, 0); -// SendMessage(Handle, EM_SETEVENTMASK, 0, mask or ENM_LINK); - SendMessage(Handle, EM_SETBKGNDCOLOR, 0, ColorToRGB(Color)); - - DoSetMaxLength(MaxLength); -end; - -procedure TRichEditWB.DestroyWnd; -begin - FModified := Modified; - inherited DestroyWnd; -end; - -procedure TRichEditWB.WndProc(var Msg: TMessage); - - procedure Scroll(Msg, ScrollCode: Integer); - begin - Perform(Msg, ScrollCode, 0); - Perform(Msg, SB_endSCROLL, 0); - end; - -begin - if FHideCaret and not (csDesigning in ComponentState) then - begin - case Msg.Msg of - WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE, - WM_LBUTTONDBLCLK, WM_CHAR, WM_KEYUP: - begin - Msg.Result := 0; - if Msg.Msg = WM_LBUTTONDOWN then - if not Focused then - SetFocus; - Exit; - end; - WM_KEYDOWN: - begin - case Msg.WParam of - VK_DOWN: - Scroll(WM_VSCROLL, SB_LINEDOWN); - VK_UP: - Scroll(WM_VSCROLL, SB_LINEUP); - VK_LEFT: - Scroll(WM_HSCROLL, SB_LINELEFT); - VK_RIGHT: - Scroll(WM_HSCROLL, SB_LINERIGHT); - VK_NEXT: - Scroll(WM_VSCROLL, SB_PAGEDOWN); - VK_PRIOR: - Scroll(WM_VSCROLL, SB_PAGEUP); - VK_HOME: - Scroll(WM_VSCROLL, SB_TOP); - VK_end: - Scroll(WM_VSCROLL, SB_BOTTOM); - end; - Msg.Result := 0; - Exit; - end; - end; - end; - inherited WndProc(Msg); -end; - -constructor TRichEditWB.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - if AcceptDragComponnents then - begin - ControlStyle := ControlStyle + [csAcceptsControls]; - end; - CompCount := 0; - fAcceptDragComponnents := True; - fAcceptDragFiles := True; - fAutoNavigate := True; - FBottomGap := 0; - fFileName := sUntitled; - fHideCaret := False; - fHighlightURL := True; - fHTMLHighlight := True; - fLeftGap := 0; - fMoreThen64KB := False; - fRightGap := 0; - fStream := TMemoryStream.Create; - fTopGap := 0; - fXMLHighlight := True; - ScrollBars := ssBoth; - ShowHint := True; - WordWrap := True; - FAutoVerbMenu := True; - FMax := 0; - FSelection.cpMin := 0; - FSelection.cpMax := 0; -end; - -function TRichEditWB.GetPopupMenu: TPopupMenu; -var - canCopy: Boolean; -begin - Result := inherited GetPopupMenu; - canCopy := SelText <> ''; - if FAutoVerbMenu and not Assigned(PopupMenu) then - begin - FPopupVerbMenu := TPopupMenu.Create(Self); - with FPopupVerbMenu do - begin - Items.Clear; - CleanupInstance; - with Items do - begin - Add(NewItem('Undo', 0, False, CanUndo, UndoLast, 0, 'MenuItem0')); - Add(NewLine); - Add(NewItem('Cut', 0, False, canCopy, CutSel, 2, 'MenuItem2')); - Add(NewItem('Copy', 0, False, canCopy, CopySel, 3, 'MenuItem3')); - Add(NewItem('Paste', 0, False, True, PasteSel, 4, 'MenuItem4')); - Add(NewItem('Select All', 0, False, True, SelAll, 5, 'MenuItem5')); - Add(NewLine); - Add(NewItem('Clear', 0, False, True, ClearAll, 6, 'MenuItem6')); - Add(NewItem('Clear Selection', 0, False, canCopy, ClearSel, 7, 'MenuItem7')); - Add(NewLine); - Add(NewItem('Find', 0, False, True, FindDialog, 8, 'MenuItem8')); - Add(NewLine); - if fXMLHighlight then - Add(NewItem('HighLight XML', 0, False, True, DoXMLrc, 9, 'MenuItem9')); - if fHTMLHighlight then - Add(NewItem('HighLight HTML', 0, False, True, DoHTMLrc, 10, 'MenuItem10')); - Add(NewLine); - Add(NewItem('Print', 0, False, True, Prnt, 12, 'MenuItem12')); - Add(NewItem('Print Selected Text', 0, False, canCopy, PrintSel, 13, 'MenuItem13')); - PostMessage(Handle, WM_NULL, 0, 0); - end; - Result := FPopupVerbMenu; - end; - end; -end; - -procedure TRichEditWB.EMExSetSel(var Message: TMessage); -var - ISel: Integer; - XSel: ^TCharRange absolute ISel; -begin - inherited; - ISel := Message.LParam; - FSelection := XSel^; -end; - -procedure TRichEditWB.EMReplaceSel(var Message: TMessage); -begin - inherited; - FMax := FSelection.cpMax + length(PChar(Message.LParam)); -end; - -function TRichEditWB.GetSelStart: Integer; -begin - if FMax = 0 then - Result := inherited GetSelStart - else - begin - Result := FMax; - FMax := 0; - end; -end; - -procedure TRichEditWB.SetTextAlignment(al: TAlignment); -begin - Paragraph.Alignment := al; -end; - -procedure TRichEditWB.SetThemes(thm: TThemes); -begin - Themes := Thm; - if Thm = tBlack then - begin - color := clBlack; - Font.Color := clWhite; - end - else - if Thm = tAluminum then - begin - color := clSilver; - Font.Color := clWhite; - end - else - if Thm = tLight then - begin - color := clInfoBk; - Font.Color := clBlack; - end - else - if Thm = tXP then - begin - color := RGB(237, 242, 251); - Font.Color := clBlack; - end - else - if Thm = tDefault then - begin - color := clWindow; - Font.Color := clBlack; - end; - -end; - -procedure TRichEditWB.Loaded; -begin - inherited Loaded; - FMyCallback := TRichEditOleCallback.Create; - REOleSetCallback(Self, FMyCallBack); - SetTextAlignment(TextAlignment); - SetThemes(FThemes); - // if assigned(Fstatusbar) then OldStatusBarW := Fstatusbar.Panels[0].Width; - UpdateInfo; - DragAcceptFiles(Handle, True); - if fMoreThen64KB then - SendMessage(Handle, EM_EXLIMITTEXT, 0, $7FFFFFF0); - if ShowHint then - SetModified(True); - WordWrap := True; - WordWrap := False; - inserted := False; -end; - -destructor TRichEditWB.Destroy; -begin - // Fstatusbar.Panels[0].Width := OldStatusBarW; - FMyCallback.Free; - FStream.Free; - inherited Destroy; -end; - -procedure TRichEditWB.DblClick; -begin - inherited; -end; - -procedure TRichEditWB.MouseMove(Shift: TShiftState; X, Y: Integer); -begin - inherited; -end; - -function TRichEditWB.GetModified: Boolean; -begin - Result := FModified; - if HandleAllocated then - Result := SendMessage(Handle, EM_GETMODIFY, 0, 0) <> 0; -end; - -function TRichEditWB.GetCanUndo: Boolean; -begin - Result := False; - if HandleAllocated then - Result := SendMessage(Handle, EM_CANUNDO, 0, 0) <> 0; -end; - -procedure TRichEditWB.SelectFont; -var - fd: TFontDialog; -begin - fd := TFontDialog.Create(Self); - try - fd.Font.Assign(SelAttributes); - - if Fd.Execute then - Font.Assign(fd.Font); - SetFocus; - finally - fd.Free; - end; -end; - -procedure TRichEditWB.SetFontBold; -begin - with SelAttributes do - if fsBold in Style then - Style := Style - [fsBold] - else - Style := Style + [fsBold]; -end; - -procedure TRichEditWB.SetFontUnderLine; -begin - with SelAttributes do - if fsUnderLine in Style then - Style := Style - [fsUnderLine] - else - Style := Style + [fsUnderLine]; -end; - -procedure TRichEditWB.SetFontItalic; -begin - with SelAttributes do - if fsItalic in Style then - Style := Style - [fsItalic] - else - Style := Style + [fsItalic]; -end; - -procedure TRichEditWB.SetFontSize; -begin - SelAttributes.Size := SelAttributes.Size + 2; -end; - -procedure TRichEditWB.SetFontColor; -var - CD: TColorDialog; -begin - CD := TColorDialog.Create(Self); - try - CD.Color := clBlack; - if CD.Execute then - SelAttributes.Color := CD.Color; - finally - CD.Free; - end; -end; - -procedure TRichEditWB.SetColor; -var - CD: TColorDialog; -begin - CD := TColorDialog.Create(Self); - try - CD.Color := clWhite; - if CD.Execute then - Color := CD.Color; - finally - CD.Free; - end; -end; - -procedure TRichEditWB.SetSelectedBgColor; -var - Format: CHARFORMAT2; - CD: TColorDialog; -begin - CD := TColorDialog.Create(Self); - try - CD.Color := clYellow; - if CD.Execute then - FillChar(Format, SizeOf(Format), 0); - with Format do - begin - cbSize := SizeOf(Format); - dwMask := CFM_BACKCOLOR; - crBackColor := CD.Color; - Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format)); - end; - finally - CD.Free; - end; -end; - -procedure TRichEditWB.CheckCapslock; -begin - if Odd(GetKeyState(VK_CAPITAL)) then - CapsLockKey := 'Caps Lock: On' - else - CapsLockKey := 'Caps Lock: Off'; -end; - -procedure TRichEditWB.CheckInsertKey; -begin - if Odd(GetKeyState(VK_INSERT)) then - InsertKey := 'Insert: On' - else - InsertKey := 'Insert: Off'; -end; - -procedure TRichEditWB.CheckNumLock; -begin - if Odd(GetKeyState(VK_NUMLOCK)) then - NumLockKey := 'NumLock: On' - else - NumLockKey := 'NumLock: Off'; -end; - -procedure TRichEditWB.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); -{var - CurPos: TPoint; - Popup : TPopupMenu; } -begin - UpdateInfo; - LineIndex := Perform(EM_LINEFROMCHAR, SelStart, 0); - {if not Assigned(PopupMenu) then - begin - if button = mbRight then - begin - Popup := TPopupMenu.Create(self); - PopupMenu := Popup; - with popup do - begin - Items.Clear; - CleanupInstance; - GetCursorPos(CurPos); - Popup(CurPos.x, CurPos.y); - with Items do - begin - Add(NewItem('Undo',0, False, True, UndoLast, 0, 'MenuItem0')); - Add(NewLine); - Add(NewItem('Cut', 0, False, True, CutSel, 2, 'MenuItem2')); - Add(NewItem('Copy', 0, False, True, CopySel, 3, 'MenuItem3')); - Add(NewItem('Paste', 0, False, True, PasteSel, 4, 'MenuItem4')); - Add(NewItem('Select All', 0, False, True, SelAll, 5, 'MenuItem5')); - Add(NewLine); - Add(NewItem('Clear', 0, False, True, ClearAll, 6, 'MenuItem6')); - Add(NewItem('Clear Selection', 0, False, True, ClearSel, 7, 'MenuItem7')); - Add(NewLine); - Add(NewItem('Find', 0, False, True, FindDialog, 8, 'MenuItem8')); - Add(NewLine); - if fXMLHighlight then - Add(NewItem('HighLight XML', 0, False, True, DoXMLrc, 9, 'MenuItem9')); - if fHTMLHighlight then - Add(NewItem('HighLight HTML', 0, False, True, DoHTMLrc, 10, 'MenuItem10')); - Add(NewLine); - Add(NewItem('Print', 0, False, True, Prnt, 12, 'MenuItem12')); - Add(NewItem('Print Selected Text', 0, False, True, PrintSel, 13, 'MenuItem13')); - end; - end; - PostMessage(Handle, WM_NULL, 0, 0); - end; - end; } - inherited; -end; - -procedure TRichEditWB.MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); -begin - inherited; -end; - -procedure TRichEditWB.KeyDown(var Key: Word; Shift: TShiftState); -begin - inherited; - UpdateInfo; - LineIndex := Perform(EM_LINEFROMCHAR, SelStart, 0); -end; - -procedure TRichEditWB.KeyPress(var Key: Char); -const - KEY_CTRL_A = 01; - KEY_CTRL_B = 02; - KEY_CTRL_F = 06; - KEY_CTRL_I = 9; - KEY_CTRL_P = 16; - KEY_CTRL_S = 19; - KEY_CTRL_U = 21; -begin - if (Ord(Key) = KEY_CTRL_B) or (Ord(Key) = KEY_CTRL_I) or (Ord(Key) = KEY_CTRL_S) - or (Ord(Key) = KEY_CTRL_U) then - begin - with SelAttributes do - case Ord(Key) of - KEY_CTRL_B: - begin - Key := #0; - if fsBold in Style then - Style := Style - [fsBold] - else - Style := Style + [fsBold]; - end; - KEY_CTRL_I: - begin - Key := #0; - if fsItalic in Style then - Style := Style - [fsItalic] - else - Style := Style + [fsItalic]; - end; - KEY_CTRL_S: - begin - Key := #0; - if fsStrikeout in Style then - Style := Style - [fsStrikeout] - else - Style := Style + [fsStrikeout]; - end; - KEY_CTRL_U: - begin - Key := #0; - if fsUnderline in Style then - Style := Style - [fsUnderline] - else - Style := Style + [fsUnderline]; - end; - end; - end; - if (Ord(Key) = KEY_CTRL_A) then - begin - SelectAll; - end - else - if (Ord(Key) = KEY_CTRL_F) then - begin - Find; - end - else - if (Ord(Key) = KEY_CTRL_P) then - begin - PrintAll; - end; -end; - -function TRichEditWB.SelectLine(Index: Integer): boolean; -var - StartPos, endPos: Integer; -begin - result := False; - if Index < 0 then - Exit; - StartPos := Perform(EM_LINEINDEX, Index, 0); - if StartPos <> -1 then - begin - endPos := SendMessage(Handle, EM_LINEINDEX, Index + 1, 0); - if endPos = -1 then - endPos := StartPos + Perform(EM_LINELENGTH, StartPos, 0); - Perform(EM_SETSEL, StartPos, endPos); - result := True; - end; -end; - -function TRichEditWB.GetSelectedText(var SelectedText: string): boolean; -begin - SelectedText := SelText; - if SelectedText <> '' then - result := True - else - begin - MessageDlg('Please select text before using this feature.', mtError, [mbOK], 0); - result := False; - end; -end; - -procedure TRichEditWB.MailSelected; -var - em_body, em_mail, em_subject: string; -begin - if GetSelectedText(em_body) then - begin - em_subject := 'Check it out please.'; - em_mail := 'mailto:?subject=' + - em_subject + '&body=' + em_body; - ShellExecute(Handle, 'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL); - end; -end; - -procedure TRichEditWB.MailContext; -var - em_body, em_mail, em_subject: string; -begin - em_body := Lines.GetText; - if em_body <> '' then - begin - em_subject := 'Check it out please.'; - em_mail := 'mailto:?subject=' + - em_subject + '&body=' + em_body; - ShellExecute(Handle, 'open', PChar(em_mail), nil, nil, SW_SHOWNORMAL); - end - else - MessageDlg('Please enter text before using this feature.', mtError, [mbOK], 0); -end; - -function TRichEditWB.GetLineCount: Integer; -begin - GetLineCount := lines.Count; -end; - -function TRichEditWB.AddDateAndTime: Integer; -var - lt: TSYSTEMTIME; - st: TSYSTEMTIME; -begin - GetLocalTime(lt); - GetSystemTime(st); - Lines.Add('Date: ' + IntToStr(lt.wMonth) + '/' + IntToStr(lt.wDay) + '/' + - IntToStr(lt.wYear) + ' On: ' + IntToStr(lt.wHour) + ':' + - IntToStr(lt.wMinute) + ':' + IntToStr(lt.wSecond)); - Result := Lines.Count; -end; - -procedure TRichEditWB.AlignText(alignment: TAlignment); -begin - Paragraph.Alignment := alignment; -end; - -function TRichEditWB.ChangeToANSIChangeCase(const S: string): string; -var - i: Integer; - Up: ANSIChar; -begin - - Result := S; - for i := 1 to Length(Result) do - begin - Up := ANSIChar(ANSIUpperCase(Result[i])[1]); - if ANSIChar(Result[i]) = Up then - Result[i] := (ANSILowerCase(Result[i])[1]) - else - Result[i] := ANSIUpperCase(Result[i])[1]; - end; -end; - -function TRichEditWB.AddFormatedText(const txt: string; Bold, Italic, Strikeout, - Underline: boolean; txtColor: TColor): Integer; -begin - with SelAttributes do - begin - if Bold then - Style := Style + [fsBold] - else - Style := Style - [fsBold]; - if Italic then - Style := Style + [fsItalic] - else - Style := Style - [fsItalic]; - if Strikeout then - Style := Style + [fsStrikeout] - else - Style := Style - [fsStrikeout]; - if Underline then - Style := Style + [fsUnderline] - else - Style := Style - [fsUnderline]; - Color := txtColor; - end; - SelText := (txt); - Result := Lines.Count; -end; - -function TRichEditWB.RemoveTextFormats: Integer; -begin - Font.Size := 8; - with SelAttributes do - begin - Style := Style - [fsBold]; - Style := Style - [fsItalic]; - Style := Style - [fsStrikeout]; - Style := Style - [fsUnderline]; - Color := clBlack; - end; - Result := Lines.Count; -end; - -function TRichEditWB.AddEmptyLine: Integer; -begin - Lines.Add(''); - Result := Lines.Count; -end; - -procedure TRichEditWB.SetLineSpacing(lineSpacing: Byte); -var - pf2: ParaFormat2; -begin - FillChar(pf2, SizeOf(pf2), 0); - pf2.cbSize := SizeOf(PARAFORMAT2); - pf2.dwMask := PFM_LINESPACING; - pf2.bLineSpacingRule := lineSpacing; - SendMessage(Handle, EM_SETPARAFORMAT, 0, Longint(@pf2)); -end; - -procedure TRichEditWB.SetToMoreThen64KB; -begin - SendMessage(Handle, EM_EXLIMITTEXT, 0, $7FFFFFF0); -end; - -procedure TRichEditWB.PrintSelectedText; -var - printarea: TRect; - richedit_outputarea: TRect; - printresX, printresY: Integer; - fmtRange: TFormatRange; - nextChar: Integer; - S: string; -begin - Printer.beginDoc; - try - with Printer.Canvas do - begin - printresX := GetDeviceCaps(Handle, LOGPIXELSX); - printresY := GetDeviceCaps(Handle, LOGPIXELSY); - printarea := Rect(printresX, printresY * 3 div 2, Printer.PageWidth - - printresX, Printer.PageHeight - printresY * 3 div 2); - richedit_outputarea := Rect(printarea.Left * 1440 div printresX, - printarea.Top * 1440 div printresY, printarea.Right * 1440 div printresX, - printarea.Bottom * 1440 div printresY); - fmtRange.hDC := Handle; - fmtRange.hdcTarget := Handle; - fmtRange.rc := richedit_outputarea; - fmtRange.rcPage := Rect(0, 0, Printer.PageWidth * 1440 div printresX, - Printer.PageHeight * 1440 div printresY); - fmtRange.chrg.cpMin := selstart; - fmtRange.chrg.cpMax := selStart + sellength - 1; - S := SelText; - while (fmtRange.chrg.cpMax > 0) and - (S[fmtRange.chrg.cpMax] <= ' ') do - Dec(fmtRange.chrg.cpMax); - repeat - nextChar := Perform(EM_FORMATRANGE, 1, Longint(@fmtRange)); - if nextchar < fmtRange.chrg.cpMax then - begin - printer.newPage; - fmtRange.chrg.cpMin := nextChar; - end; - until nextchar >= fmtRange.chrg.cpMax; - Perform(EM_FORMATRANGE, 0, 0); - end; - finally - Printer.endDoc; - end; -end; - -function TRichEditWB.SearchForTextAndSelect(SearchText: string): string; -var - StartPos, Position, endpos: Integer; -begin - StartPos := 0; - endpos := Length(Text); - Lines.beginUpdate; - while FindText(SearchText, StartPos, endpos, [stMatchCase]) <> -1 do - begin - endpos := Length(Text) - startpos; - Position := FindText(SearchText, StartPos, endpos, [stMatchCase]); - Inc(StartPos, Length(SearchText)); - SetFocus; - SelStart := Position; - SelLength := Length(SearchText); - result := SelText; - end; - Lines.endUpdate; -end; - -procedure TRichEditWB.FindDialogFind(Sender: TObject); -var - S: string; - startpos: Integer; -begin - SelStart := 0; - with TFindDialog(Sender) do - begin - if FSelPos = 0 then - Options := Options - [frFindNext]; - if frfindNext in Options then - begin - StartPos := FSelPos + Length(Findtext); - S := Copy(Lines.Text, StartPos, MaxInt); - end - else - begin - S := Lines.Text; - StartPos := 1; - end; - FSelPos := Pos(FindText, S); - if FSelPos > 0 then - begin - FSelPos := FSelPos + StartPos - 1; - SelStart := FSelPos - 1; - SelLength := Length(FindText); - SetFocus; - end - else - begin - if frfindNext in Options then - S := Concat('There are no further occurences of "', FindText, '".') - else - S := Concat('Could not find "', FindText, '".'); - MessageDlg(S, mtError, [mbOK], 0); - end; - end; -end; - -procedure TRichEditWB.Find; -var - f: TFindDialog; -begin - if not inserted then - begin - FSelPos := 0; - try - f := TFindDialog.Create(Self); - f.OnFind := FindDialogFind; - F.Execute; - finally - end; - end - else - MessageDlg('You can not use this feature after inserting files.', mtError, [mbOK], 0); -end; - -procedure TRichEditWB.FindDialog(Sender: TObject); -var - f: TFindDialog; -begin - if not inserted then - begin - FSelPos := 0; - try - f := TFindDialog.Create(Self); - f.OnFind := FindDialogFind; - F.Execute; - finally - end; - end - else - MessageDlg('You can not use this feature after inserting files.', mtError, [mbOK], 0); -end; - -procedure TRichEditWB.ReplaceDialogReplace(Sender: TObject); -var - SelPos, SPos, SLen, TextLength: Integer; - SearchString: string; -begin - with TReplaceDialog(Sender) do - begin - TextLength := Length(Lines.Text); - SPos := SelStart; - SLen := SelLength; - SearchString := Copy(Lines.Text, SPos + SLen + 1, TextLength - SLen + 1); - SelPos := Pos(FindText, SearchString); - if SelPos > 0 then - begin - SelStart := (SelPos - 1) + (SPos + SLen); - SelLength := Length(FindText); - SelText := ReplaceText; - end - else - MessageDlg('Could not find "' + FindText + '".', mtError, [mbOk], 0); - end; -end; - -procedure TRichEditWB.Replace; -var - r: TReplaceDialog; -begin - if not inserted then - begin - FSelPos := 0; - try - r := TReplaceDialog.Create(Self); - r.OnReplace := ReplaceDialogReplace; - r.Execute; - finally - end; - end - else - MessageDlg('You can not use this feature after inserting files.', mtError, [mbOK], 0); -end; - -procedure TRichEditWB.GoToPosition(LineNumber, CharNumber: Word); -begin - SelStart := Perform(EM_LINEINDEX, LineNumber, 0) + CharNumber; - SetFocus; -end; - -procedure TRichEditWB.PrintSel(Sender: TObject); -var - printarea: TRect; - richedit_outputarea: TRect; - printresX, printresY: Integer; - fmtRange: TFormatRange; - nextChar: Integer; - S: string; -begin - Printer.beginDoc; - try - with Printer.Canvas do - begin - printresX := GetDeviceCaps(Handle, LOGPIXELSX); - printresY := GetDeviceCaps(Handle, LOGPIXELSY); - printarea := Rect(printresX, printresY * 3 div 2, Printer.PageWidth - - printresX, Printer.PageHeight - printresY * 3 div 2); - richedit_outputarea := Rect(printarea.Left * 1440 div printresX, - printarea.Top * 1440 div printresY, printarea.Right * 1440 div printresX, - printarea.Bottom * 1440 div printresY); - fmtRange.hDC := Handle; - fmtRange.hdcTarget := Handle; - fmtRange.rc := richedit_outputarea; - fmtRange.rcPage := Rect(0, 0, Printer.PageWidth * 1440 div printresX, - Printer.PageHeight * 1440 div printresY); - fmtRange.chrg.cpMin := selstart; - fmtRange.chrg.cpMax := selStart + sellength - 1; - S := SelText; - while (fmtRange.chrg.cpMax > 0) and - (S[fmtRange.chrg.cpMax] <= ' ') do - Dec(fmtRange.chrg.cpMax); - repeat - nextChar := Perform(EM_FORMATRANGE, 1, Longint(@fmtRange)); - if nextchar < fmtRange.chrg.cpMax then - begin - printer.newPage; - fmtRange.chrg.cpMin := nextChar; - end; - until nextchar >= fmtRange.chrg.cpMax; - Perform(EM_FORMATRANGE, 0, 0); - end; - finally - Printer.endDoc; - end; -end; - -function TRichEditWB.SearchAndReplace(InSearch, InReplace: string): Integer; -var - X, Toend: Integer; - oldCursor: TCursor; -begin - oldCursor := Forms.Screen.Cursor; - Screen.Cursor := crHourglass; - begin - X := 0; - Toend := length(Text); - X := FindText(inSearch, X, Toend, []); - while X <> -1 do - begin - SetFocus; - SelStart := X; - SelLength := length(inSearch); - SelText := InReplace; - X := FindText(inSearch, X + length(InReplace), Toend, []); - end; - end; - Screen.Cursor := oldCursor; - Result := Lines.Count; -end; - -procedure TRichEditWB.SetRTFText(RichText: string); -begin - FStream.Clear; - FStream.WriteBuffer(RichText[1], Length(RichText)); - FStream.Position := 0; - Lines.LoadFromStream(FStream); -end; - -function TRichEditWB.GetRTFText: string; -begin - FStream.Clear; - Lines.SaveToStream(FStream); - Result := PChar(FStream.Memory); -end; - -procedure TRichEditWB.PreviewInBrowser; -var - st: TStringList; -begin - if Assigned(FEmbeddedWB) then - begin - while EmbeddedWB.ReadyState <> READYSTATE_COMPLETE do - EmbeddedWB.Stop; - try - PlainText := False; - st := TStringList.Create; - st.Clear; - st.Add(Text); - EmbeddedWB.LoadFromStrings(st); - finally - end; - end - else - MessageDlg('You must assign a TEmbeddedWB before using this feature.', mtError, [MbOk], 0); -end; - -function TRichEditWB.GetRTFTextToString: string; -var - ss: TStringStream; - EmptyStr: string; -begin - EmptyStr := ''; - ss := TStringStream.Create(EmptyStr); - try - PlainText := False; - Lines.SaveToStream(ss); - Result := ss.DataString; - finally - ss.Free - end; -end; - -procedure TRichEditWB.LoadStreamFromBrowser; -var - Stm: TMemoryStream; -begin - if Assigned(FEmbeddedWB) then - begin - while EmbeddedWB.ReadyState <> READYSTATE_COMPLETE do - Forms.Application.ProcessMessages; - Stm := TMemoryStream.Create; - PlainText := False; - Clear; - try - EmbeddedWB.SaveToStream(Stm); - Stm.Position := 0; - Lines.LoadFromStream(Stm); - Stm.Position := 0; - FFileName := EmbeddedWB.LocationName; - UpdateInfo; - ScrollToTop; - SelStart := Perform(EM_LINEINDEX, 1, 1); - finally - Stm.Free; - end; - end - else - MessageDlg('You must assign a TEmbeddedWB before using this feature.', mtError, [MbOk], 0); -end; - -procedure TRichEditWB.LoadHTMLFromBrowser; -begin - if Assigned(FEmbeddedWB) then - begin - PlainText := False; - Clear; - while EmbeddedWB.ReadyState <> READYSTATE_COMPLETE do - Forms.Application.ProcessMessages; - if Assigned(EmbeddedWB.document) then - Lines.Add(EmbeddedWB.OleObject.Document.documentElement.innerHTML); - fFileName := EmbeddedWB.LocationName; - UpdateInfo; - ScrollToTop; - SelStart := Perform(EM_LINEINDEX, 1, 1); - end - else - MessageDlg('You must assign a TEmbeddedWB before using this feature.', mtError, [MbOk], 0); -end; - -procedure TRichEditWB.LoadTextFromBrowser; -begin - if Assigned(FEmbeddedWB) then - begin - Clear; - PlainText := False; - while EmbeddedWB.ReadyState <> READYSTATE_COMPLETE do - Forms.Application.ProcessMessages; - if Assigned(EmbeddedWB.document) then - Lines.Add(EmbeddedWB.OleObject.Document.documentElement.innerText); - fFileName := EmbeddedWB.LocationName; - UpdateInfo; - ScrollToTop; - SelStart := Perform(EM_LINEINDEX, 1, 1); - end - else - MessageDlg('You should Assign A web Browser before using this feature!', mtError, [MbOk], 0); -end; - -procedure TRichEditWB.LoadStringsFromBrowser; -begin - if Assigned(FEmbeddedWB) then - begin - Clear; - PlainText := False; - while EmbeddedWB.ReadyState <> READYSTATE_COMPLETE do - Forms.Application.ProcessMessages; - EmbeddedWB.SaveToStrings(Lines); - fFileName := EmbeddedWB.LocationName; - UpdateInfo; - ScrollToTop; - SelStart := Perform(EM_LINEINDEX, 1, 1); - end - else - MessageDlg('You should Assign A web Browser before using this feature!', mtError, [MbOk], 0); -end; - -procedure TRichEditWB.LoadAsCopyFromBrowser; -begin - if Assigned(FEmbeddedWB) then - begin - Clear; - PlainText := False; - while EmbeddedWB.ReadyState <> READYSTATE_COMPLETE do - Forms.Application.ProcessMessages; - EmbeddedWB.SelectAll; - EmbeddedWB.Copy; - PasteFromClipboard; - fFileName := EmbeddedWB.LocationName; - UpdateInfo; - ScrollToTop; - SelStart := Perform(EM_LINEINDEX, 1, 1); - end - else - MessageDlg('You should Assign A web Browser before using this feature!', mtError, [MbOk], 0); -end; - -procedure TRichEditWB.ScrollToTop; -begin - SendMessage(Handle, EM_LINESCROLL, 0, -Lines.Count); - SetFocus; -end; - -procedure TRichEditWB.ScrollToBottom; -begin - SendMessage(Handle, EM_SCROLL, 0, Lines.Count); - SetFocus; -end; - -procedure TRichEditWB.DoHTMLrc(Sender: TObject); -var - ms: TMemoryStream; -begin - HTMLSyn := THighlightHTML.Create; - try - HTMLSyn.SetText(Text); - ms := TMemoryStream.Create; - try - HTMLSyn.ConvertToRTFStream(ms); - PlainText := False; - ms.Position := 0; - Lines.LoadFromStream(ms); - PlainText := True; - finally - ms.Free; - end; - finally - HTMLSyn.Free; - end; -end; - -procedure TRichEditWB.DoXMLrc(Sender: TObject); -var - ms: TMemoryStream; -begin - XMLSyn := THighlightXML.Create; - try - XMLSyn.SetText(Text); - ms := TMemoryStream.Create; - try - XMLSyn.ConvertToRTFStream(ms); - PlainText := False; - ms.Position := 0; - Lines.LoadFromStream(ms); - PlainText := True; - finally - ms.Free; - end; - finally - XMLSyn.Free; - end; -end; - -function TRichEditWB.AddLineNumbering: Integer; -var - fmt: TParaFormat2; -begin - FillChar(fmt, SizeOf(fmt), 0); - fmt.cbSize := SizeOf(fmt); - fmt.dwMask := PFM_NUMBERING or PFM_NUMBERINGSTART or PFM_NUMBERINGSTYLE or - PFM_NUMBERINGTAB; - fmt.wNumbering := 2; - fmt.wNumberingStart := 1; - fmt.wNumberingStyle := $200; - fmt.wNumberingTab := 1440 div 4; - Perform(EM_SETPARAFORMAT, 0, lParam(@fmt)); - Result := Lines.Count; -end; - -function TRichEditWB.AddBullets: Integer; -var - fmt: TParaFormat2; -begin - SelectAll; - FillChar(fmt, SizeOf(fmt), 0); - with fmt do - begin - cbSize := SizeOf(fmt); - dwMask := PFM_NUMBERING or PFM_NUMBERINGSTART or PFM_NUMBERINGSTYLE or - PFM_NUMBERINGTAB; - wNumbering := 1; - wNumberingStart := 1; - wNumberingStyle := $200; - wNumberingTab := 1440 div 4; - end; - Perform(EM_SETPARAFORMAT, 0, lParam(@fmt)); - selStart := 0; - Result := Lines.Count; -end; - -function TRichEditWB.AddRomanNumbering: Integer; -var - fmt: TParaFormat2; -begin - SelectAll; - FillChar(fmt, SizeOf(fmt), 0); - with fmt do - begin - cbSize := SizeOf(fmt); - dwMask := PFM_NUMBERING or PFM_NUMBERINGSTART or PFM_NUMBERINGSTYLE or - PFM_NUMBERINGTAB; - wNumbering := 6; - wNumberingStart := 1; - wNumberingStyle := $200; - wNumberingTab := 1440 div 4; - end; - Perform(EM_SETPARAFORMAT, 0, lParam(@fmt)); - selStart := 0; - Result := Lines.Count; -end; - -function TRichEditWB.AddCheckBox(cbCaption, cbName: string; reLeft, cbLeft, - cbTop: Integer; Chk: Boolean): Integer; -var - cb: TCheckBox; -begin - if AcceptDragComponnents then - begin - Self.Left := RELeft; - cb := TCheckBox.Create(Self); - with cb do - begin - Name := cbName + IntToStr(CompCount); - Caption := cbCaption; - Left := cbLeft; - Top := cbTop; - Parent := Self; - Checked := Chk; - inc(CompCount); - Result := CompCount; - end; - end - else - Result := 0; -end; - -function TRichEditWB.AddEditBox(eText, eName: string; reLeft, eLeft, eTop: Integer): Integer; -var - E: TEdit; -begin - if AcceptDragComponnents then - begin - Self.Left := RELeft; - E := TEdit.Create(Self); - with E do - begin - Name := eName + IntToStr(CompCount); - Text := eText; - Left := eLeft; - Top := eTop; - Parent := Self; - inc(CompCount); - Result := CompCount; - end; - end - else - Result := 0; -end; - -function TRichEditWB.AddRadioButton(rbCaption, rbName: string; reLeft, rbLeft, - rbTop: Integer; Chk: boolean): Integer; -var - RB: TRadioButton; -begin - if AcceptDragComponnents then - begin - Self.Left := reLeft; - RB := TRadioButton.Create(Self); - with RB do - begin - Name := rbName + IntToStr(CompCount); - Caption := rbCaption; - Left := rbLeft; - Top := rbTop; - Parent := Self; - Checked := Chk; - inc(CompCount); - Result := CompCount; - end; - end - else - Result := 0; -end; - -function TRichEditWB.AddButton(bCaption, bName: string; reLeft, bLeft, bTop: - Integer): Integer; -var - B: TButton; -begin - if AcceptDragComponnents then - begin - Self.Left := reLeft; - B := TButton.Create(Self); - with B do - begin - Name := bName + IntToStr(CompCount); - Caption := bCaption; - Left := bLeft; - Top := bTop; - Parent := Self; - inc(CompCount); - Result := CompCount; - end; - end - else - Result := 0; -end; - -procedure TRichEditWB.SetModified(Value: Boolean); -begin - inherited Modified; - UpdateInfo; - // if Assigned(FStatusbar) then - begin - //FStatusbar.Panels[0].Width := 2000; - // FStatusbar.Panels[0].Text := Hint; - end; -end; - -procedure TRichEditWB.UpdateInfo; -var - CharPos: TPoint; - sMod: string; -begin - CharPos.Y := SendMessage(Handle, EM_EXLINEFROMCHAR, 0, SelStart); - CharPos.X := (SelStart - SendMessage(Handle, EM_LINEINDEX, CharPos.Y, 0)); - Inc(CharPos.Y); - Inc(CharPos.X); - CarretPosition := Format(sColRowInfo, [CharPos.Y, CharPos.X]); - CheckCapslock; - CheckInsertKey; - CheckNumLock; - if Modified then - sMod := 'Modified' - else - sMod := ''; - Hint := 'File Name: ' + fFileName + '. | ' + - #10 + #13 + 'Position: ' + Format(sColRowInfo, [CharPos.Y, CharPos.X]) + '. | ' + - #10 + #13 + sMod + '. | ' + - #10 + #13 + CapsLockKey + '. | ' + - #10 + #13 + NumLockKey + '. | ' + - #10 + #13 + InsertKey + '. | ' + - #10 + #13 + 'Total Lines Count: ' + IntToStr(GetLineCount) + '. |'; - CursorPositionX := CharPos.X; - CursorPositionY := CharPos.Y; -end; - -procedure TRichEditWB.New; -begin - CheckFileSave; - SetFileName(sUntitled); - Lines.Clear; - inserted := False; - Modified := False; - SetModified(False); -end; - -procedure TRichEditWB.PerformFileOpen(const AFileName: string); -var - Ext: string; -begin - inserted := False; - Ext := ExtractFileExt(AFileName); - PlainText := Ext = '.txt'; - Lines.LoadFromFile(AFileName); - SetFileName(AFileName); - SetFocus; - Modified := False; - SetModified(False); -end; - -procedure TRichEditWB.Open; -var - OD: TOpendialog; -begin - CheckFileSave; - OD := TOpendialog.Create(Self); - try - OD.Title := Forms.Application.Title + ' - ' + 'Open Dialog'; - if OD.Execute then - begin - ReadOnly := ofReadOnly in OD.Options; - PerformFileOpen(OD.FileName); - Setfilename(OD.FileName); - UpdateInfo; - end; - finally - OD.Free; - end; -end; - -procedure TRichEditWB.LoadFromFile(FileName: string); -begin - Lines.LoadFromFile(FileName); -end; - -procedure TRichEditWB.LoadFromStream(S: TStream); -begin - Lines.LoadFromStream(S); -end; - -procedure TRichEditWB.SaveToFile(FileName: string); -begin - Lines.SaveToFile(FileName); -end; - -procedure TRichEditWB.SaveToStream(S: TStream); -begin - Lines.SaveToStream(S); -end; - -procedure TRichEditWB.Save; -var - i: Integer; -begin - if FFileName = sUntitled then - begin - SaveAs; - Exit; - end - else - begin - if FileExists(Trim(FFileName + '.html')) then - begin - i := MessageDlg(Format(sOverWrite, [Trim(FFileName + '.html')]), mtConfirmation, - mbYesNoCancel, 0); - if i = mrCancel then Exit; - if i = mrNo then SaveAs; - if i = mrYes then - begin - Lines.SaveToFile(Trim(FFileName + '.html')); - Modified := False; - SetModified(False); - end; - end - else - Lines.SaveToFile(Trim(FFileName + '.html')); - Modified := False; - SetModified(False); - end; -end; - -procedure TRichEditWB.SaveAs; -var - sd: TSaveDialog; -begin - sd := TSaveDialog.Create(Self); - try - SD.FileName := (Trim(FFileName + '.html')); - if SD.Execute then - begin - if FileExists(Trim(SD.FileName + '.html')) then - if MessageDlg(Format(sOverWrite, [(Trim(SD.FileName + '.html'))]), mtConfirmation, mbYesNoCancel, 0) - <> idYes then Exit; - Lines.SaveToFile(SD.FileName + '.html'); - SetFileName(SD.FileName); - Modified := False; - SetModified(False); - end; - finally - sd.Free; - end; -end; - -procedure TRichEditWB.SetFileName(const FileName: string); -begin - fFileName := FileName; -end; - -procedure TRichEditWB.CheckFileSave; -var - SaveResp: Integer; -begin - if not Modified then - Exit; - SaveResp := MessageDlg(Format(sSaveChanges, [FFileName]), - mtConfirmation, mbYesNoCancel, 0); - case SaveResp of - idYes: Save; - idNo: {Nothing}; - idCancel: Abort; - end; -end; - -procedure TRichEditWB.WMDropFiles(var Msg: TWMDropFiles); -var - CFileName: array[0..MAX_PATH] of Char; -begin - if AcceptDragFiles then - begin - try - if DragQueryFile(Msg.Drop, 0, CFileName, MAX_PATH) > 0 then - begin - CheckFileSave; - PerformFileOpen(CFileName); - Msg.Result := 0; - end; - finally - DragFinish(Msg.Drop); - end; - end; -end; - -initialization - -finalization - if FRichEditModule <> 0 then - FreeLibrary(FRichEditModule); -end. diff --git a/windows/src/ext/embeddedwb/Source/SHDocVw_EWB.pas b/windows/src/ext/embeddedwb/Source/SHDocVw_EWB.pas deleted file mode 100644 index ff4aba6349..0000000000 --- a/windows/src/ext/embeddedwb/Source/SHDocVw_EWB.pas +++ /dev/null @@ -1,1976 +0,0 @@ -//************************************************************** -// * -// SHDocVw_EWB * -// * -// For Delphi 5 to XE * -// by * -// bsalsa - Eran Bodankin - bsalsa@gmail.com * -// * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************** -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: SHDocVw_EWB.pas,v 1.3 2006/12/14 12:57:55 bsalsa Exp $ - -unit SHDocVw_EWB; -{$I EWB.inc} -// ************************************************************************ // -// Type Lib: shdocvw.dll (1) EWB -// LIBID: {EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B} -// LCID: 0 -// Created by Eran Bodankin (bsalsa) -// Errors: -// Hint: Symbol 'Type' renamed to 'type_' -// Hint: Parameter 'Type' of IWebBrowser.Type changed to 'Type_' -// Hint: Parameter 'Property' of DWebBrowserEvents.PropertyChange changed to 'Property_' -// Hint: Parameter 'Property' of IWebBrowserApp.PutProperty changed to 'Property_' -// Hint: Parameter 'Property' of IWebBrowserApp.GetProperty changed to 'Property_' -// Hint: Parameter 'Type' of IShellUIHelper.AddDesktopComponent changed to 'Type_' -// Hint: Parameter 'var' of IShellNameSpace.Expand changed to 'var_' -// ************************************************************************ // -{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers. -{$IFDEF DELPHI6_UP} -{$WARN SYMBOL_PLATFORM OFF} -{$ALIGN 4} -{$VARPROPSETTER ON} // You need to download and install the second D6 patch in order for this to compile. -{$ENDIF} -{$WRITEABLECONST ON} - -interface - -{$I EWB.inc} - -uses - EwbAcc, Windows, ActiveX, Classes{$IFDEF USE_OleCtrlsFix}, OleCtrlsFix{$ENDIF}, OleCtrls, OleServer, StdVCL{$IFDEF DELPHI6_UP}, Variants{$ENDIF}; - -// *********************************************************************// -// GUIDS declared in the TypeLibrary. Following prefixes are used: -// Type Libraries : LIBID_xxxx -// CoClasses : CLASS_xxxx -// DISPInterfaces : DIID_xxxx -// Non-DISP interfaces: IID_xxxx -// *********************************************************************// -const - // TypeLibrary Major and minor versions - SHDocVwMajorVersion = 1; - SHDocVwMinorVersion = 1; - - LIBID_SHDocVw: TGUID = '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}'; - - IID_IWebBrowser: TGUID = '{EAB22AC1-30C1-11CF-A7EB-0000C05BAE0B}'; - DIID_DWebBrowserEvents: TGUID = '{EAB22AC2-30C1-11CF-A7EB-0000C05BAE0B}'; - IID_IWebBrowserApp: TGUID = '{0002DF05-0000-0000-C000-000000000046}'; - IID_IWebBrowser2: TGUID = '{D30C1661-CDAF-11D0-8A3E-00C04FC9E26E}'; - DIID_DWebBrowserEvents2: TGUID = '{34A715A0-6587-11D0-924A-0020AFC7AC4D}'; - CLASS_WebBrowser_V1: TGUID = '{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}'; - CLASS_WebBrowser: TGUID = '{8856F961-340A-11D0-A96B-00C04FD705A2}'; - CLASS_InternetExplorer: TGUID = '{0002DF01-0000-0000-C000-000000000046}'; - CLASS_ShellBrowserWindow: TGUID = '{C08AFD90-F2A1-11D1-8455-00A0C91F3880}'; - DIID_DShellWindowsEvents: TGUID = '{FE4106E0-399A-11D0-A48C-00A0C90A8F39}'; - IID_IShellWindows: TGUID = '{85CB6900-4D95-11CF-960C-0080C7F4EE85}'; - CLASS_ShellWindows: TGUID = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}'; - IID_IShellUIHelper: TGUID = '{729FE2F8-1EA8-11D1-8F85-00C04FC2FBE1}'; - IID_IShellUIHelper2: TGUID = '{A7FE6EDA-1932-4281-B881-87B31B8BC52C}'; - IID_IShellUIHelper3: TGUID = '{B7FCA399-7F15-42DF-A51C-E39C1A4F32DE}'; - CLASS_ShellUIHelper: TGUID = '{64AB4BB7-111E-11D1-8F79-00C04FC2FBE1}'; - DIID_DShellNameSpaceEvents: TGUID = '{55136806-B2DE-11D1-B9F2-00A0C98BC547}'; - IID_IShellFavoritesNameSpace: TGUID = '{55136804-B2DE-11D1-B9F2-00A0C98BC547}'; - IID_IShellNameSpace: TGUID = '{E572D3C9-37BE-4AE2-825D-D521763E3108}'; - CLASS_ShellNameSpace: TGUID = '{55136805-B2DE-11D1-B9F2-00A0C98BC547}'; - CLASS_ShellShellNameSpace: TGUID = '{2F2F1F96-2BC1-4B1C-BE28-EA3774F4676A}'; - IID_IScriptErrorList: TGUID = '{F3470F24-15FD-11D2-BB2E-00805FF7EFCA}'; - CLASS_CScriptErrorList: TGUID = '{EFD01300-160F-11D2-BB2E-00805FF7EFCA}'; - -{$IFDEF USE_OleCtrlsFix} -type - TOleControl = class(OleCtrlsFix.TOleControlFix); -{$ENDIF} - -// *********************************************************************// -// Declaration of Enumerations defined in Type Library -// *********************************************************************// -// Constants for enum CommandStateChangeConstants -type - CommandStateChangeConstants = TOleEnum; -const - CSC_UPDATECOMMANDS = $FFFFFFFF; - CSC_NAVIGATEFORWARD = $00000001; - CSC_NAVIGATEBACK = $00000002; - -// Constants for enum OLECMDID -type - OLECMDID = TOleEnum; -const - OLECMDID_OPEN = $00000001; - OLECMDID_NEW = $00000002; - OLECMDID_SAVE = $00000003; - OLECMDID_SAVEAS = $00000004; - OLECMDID_SAVECOPYAS = $00000005; - OLECMDID_PRINT = $00000006; - OLECMDID_PRINTPREVIEW = $00000007; - OLECMDID_PAGESETUP = $00000008; - OLECMDID_SPELL = $00000009; - OLECMDID_PROPERTIES = $0000000A; - OLECMDID_CUT = $0000000B; - OLECMDID_COPY = $0000000C; - OLECMDID_PASTE = $0000000D; - OLECMDID_PASTESPECIAL = $0000000E; - OLECMDID_UNDO = $0000000F; - OLECMDID_REDO = $00000010; - OLECMDID_SELECTALL = $00000011; - OLECMDID_CLEARSELECTION = $00000012; - OLECMDID_ZOOM = $00000013; - OLECMDID_GETZOOMRANGE = $00000014; - OLECMDID_UPDATECOMMANDS = $00000015; - OLECMDID_REFRESH = $00000016; - OLECMDID_STOP = $00000017; - OLECMDID_HIDETOOLBARS = $00000018; - OLECMDID_SETPROGRESSMAX = $00000019; - OLECMDID_SETPROGRESSPOS = $0000001A; - OLECMDID_SETPROGRESSTEXT = $0000001B; - OLECMDID_SETTITLE = $0000001C; - OLECMDID_SETDOWNLOADSTATE = $0000001D; - OLECMDID_STOPDOWNLOAD = $0000001E; - OLECMDID_ONTOOLBARACTIVATED = $0000001F; - OLECMDID_FIND = $00000020; - OLECMDID_DELETE = $00000021; - OLECMDID_HTTPEQUIV = $00000022; - OLECMDID_HTTPEQUIV_DONE = $00000023; - OLECMDID_ENABLE_INTERACTION = $00000024; - OLECMDID_ONUNLOAD = $00000025; - OLECMDID_PROPERTYBAG2 = $00000026; - OLECMDID_PREREFRESH = $00000027; - OLECMDID_SHOWSCRIPTERROR = $00000028; - OLECMDID_SHOWMESSAGE = $00000029; - OLECMDID_SHOWFIND = $0000002A; - OLECMDID_SHOWPAGESETUP = $0000002B; - OLECMDID_SHOWPRINT = $0000002C; - OLECMDID_CLOSE = $0000002D; - OLECMDID_ALLOWUILESSSAVEAS = $0000002E; - OLECMDID_DONTDOWNLOADCSS = $0000002F; - OLECMDID_UPDATEPAGESTATUS = $00000030; - OLECMDID_PRINT2 = $00000031; - OLECMDID_PRINTPREVIEW2 = $00000032; - OLECMDID_SETPRINTTEMPLATE = $00000033; - OLECMDID_GETPRINTTEMPLATE = $00000034; - OLECMDID_PAGEACTIONBLOCKED = $00000037; - OLECMDID_PAGEACTIONUIQUERY = $00000038; - OLECMDID_FOCUSVIEWCONTROLS = $00000039; - OLECMDID_FOCUSVIEWCONTROLSQUERY = $0000003A; - OLECMDID_SHOWPAGEACTIONMENU = $0000003B; - //New IE7 Values - OLECMDID_ADDTRAVELENTRY = $0000003C; - OLECMDID_UPDATETRAVELENTRY = $0000003D; - OLECMDID_UPDATEBACKFORWARDSTATE = $0000003E; - OLECMDID_OPTICAL_ZOOM = $0000003F; - OLECMDID_OPTICAL_GETZOOMRANGE = $00000040; - OLECMDID_WINDOWSTATECHANGED = $00000041; - //New IE8 Values - OLECMDID_ACTIVEXINSTALLSCOPE = $00000042; - OLECMDID_UPDATETRAVELENTRY_DATARECOVERY = $00000043; - -// Constants for enum OLECMDF -type - OLECMDF = TOleEnum; -const - OLECMDF_SUPPORTED = $00000001; - OLECMDF_ENABLED = $00000002; - OLECMDF_LATCHED = $00000004; - OLECMDF_NINCHED = $00000008; - OLECMDF_INVISIBLE = $00000010; - OLECMDF_DEFHIDEONCTXTMENU = $00000020; - OLECMDIDF_WINDOWSTATE_USERVISIBLE = $00000001; - OLECMDIDF_WINDOWSTATE_ENABLED = $00000002; - OLECMDIDF_WINDOWSTATE_USERVISIBLE_VALID = $00010000; - OLECMDIDF_WINDOWSTATE_ENABLED_VALID = $00020000; - -// Constants for enum OLECMDEXECOPT -type - OLECMDEXECOPT = TOleEnum; -const - OLECMDEXECOPT_DODEFAULT = $00000000; - OLECMDEXECOPT_PROMPTUSER = $00000001; - OLECMDEXECOPT_DONTPROMPTUSER = $00000002; - OLECMDEXECOPT_SHOWHELP = $00000003; - -// Constants for enum tagREADYSTATE -type - tagREADYSTATE = TOleEnum; -const - READYSTATE_UNINITIALIZED = $00000000; - READYSTATE_LOADING = $00000001; - READYSTATE_LOADED = $00000002; - READYSTATE_INTERACTIVE = $00000003; - READYSTATE_COMPLETE = $00000004; - -// Constants for enum SecureLockIconConstants -type - SecureLockIconConstants = TOleEnum; -const - secureLockIconUnsecure = $00000000; - secureLockIconMixed = $00000001; - secureLockIconSecureUnknownBits = $00000002; - secureLockIconSecure40Bit = $00000003; - secureLockIconSecure56Bit = $00000004; - secureLockIconSecureFortezza = $00000005; - secureLockIconSecure128Bit = $00000006; - -// Constants for enum NewProcessCauseConstants -type - NewProcessCauseConstants = TOleEnum; -const - ProtectedModeRedirect = $00000001; - -// Constants for enum ShellWindowTypeConstants -type - ShellWindowTypeConstants = TOleEnum; -const - SWC_EXPLORER = $00000000; - SWC_BROWSER = $00000001; - SWC_3RDPARTY = $00000002; - SWC_CALLBACK = $00000004; - SWC_DESKTOP = $00000008; - -// Constants for enum ShellWindowFindWindowOptions -type - ShellWindowFindWindowOptions = TOleEnum; -const - SWFO_NEEDDISPATCH = $00000001; - SWFO_INCLUDEPENDING = $00000002; - SWFO_COOKIEPASSED = $00000004; - -type - RefreshConstants = TOleEnum; -const - REFRESH_NORMAL = 0; - REFRESH_IFEXPIRED = 1; - REFRESH_CONTINUE = 2; - REFRESH_COMPLETELY = 3; - -type - -// *********************************************************************// -// Forward declaration of types defined in TypeLibrary -// *********************************************************************// - IWebBrowser = interface; - IWebBrowserDisp = dispinterface; - DWebBrowserEvents = dispinterface; - IWebBrowserApp = interface; - IWebBrowserAppDisp = dispinterface; - IWebBrowser2 = interface; - IWebBrowser2Disp = dispinterface; - DWebBrowserEvents2 = dispinterface; - DShellWindowsEvents = dispinterface; - IShellWindows = interface; - IShellWindowsDisp = dispinterface; - IShellUIHelper = interface; - IShellUIHelperDisp = dispinterface; - IShellUIHelper2 = interface; - IShellUIHelper2Disp = dispinterface; - IShellUIHelper3 = interface; - IShellUIHelper3Disp = dispinterface; - DShellNameSpaceEvents = dispinterface; - IShellFavoritesNameSpace = interface; - IShellFavoritesNameSpaceDisp = dispinterface; - IShellNameSpace = interface; - IShellNameSpaceDisp = dispinterface; - IScriptErrorList = interface; - IScriptErrorListDisp = dispinterface; - -// *********************************************************************// -// Declaration of CoClasses defined in Type Library -// (NOTE: Here we map each CoClass to its Default Interface) -// *********************************************************************// - WebBrowser_V1 = IWebBrowser; - WebBrowser = IWebBrowser2; - InternetExplorer = IWebBrowser2; - ShellBrowserWindow = IWebBrowser2; - ShellWindows = IShellWindows; - ShellUIHelper = IShellUIHelper3; - ShellNameSpace = IShellNameSpace; - ShellShellNameSpace = IShellNameSpace; - CScriptErrorList = IScriptErrorList; - -// *********************************************************************// -// Declaration of structures, unions and aliases. -// *********************************************************************// - POleVariant1 = ^OleVariant; {*} - -// *********************************************************************// -// Interface: IWebBrowser -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {EAB22AC1-30C1-11CF-A7EB-0000C05BAE0B} -// *********************************************************************// - IWebBrowser = interface(IDispatch) - ['{EAB22AC1-30C1-11CF-A7EB-0000C05BAE0B}'] - procedure GoBack; safecall; - procedure GoForward; safecall; - procedure GoHome; safecall; - procedure GoSearch; safecall; - { procedure Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); safecall; } - - // D2009: - procedure Navigate(const URL: WideString; const Flags: OleVariant; - const TargetFrameName: OleVariant; var PostData: OleVariant; - const Headers: OleVariant); safecall; - - procedure Refresh; safecall; - procedure Refresh2(var Level: OleVariant); safecall; - procedure Stop; safecall; - function Get_Application: IDispatch; safecall; - function Get_Parent: IDispatch; safecall; - function Get_Container: IDispatch; safecall; - function Get_Document: IDispatch; safecall; - function Get_TopLevelContainer: WordBool; safecall; - function Get_type_: WideString; safecall; - function Get_Left: Integer; safecall; - procedure Set_Left(pl: Integer); safecall; - function Get_Top: Integer; safecall; - procedure Set_Top(pl: Integer); safecall; - function Get_Width: Integer; safecall; - procedure Set_Width(pl: Integer); safecall; - function Get_Height: Integer; safecall; - procedure Set_Height(pl: Integer); safecall; - function Get_LocationName: WideString; safecall; - function Get_LocationURL: WideString; safecall; - function Get_Busy: WordBool; safecall; - property Application: IDispatch read Get_Application; - property Parent: IDispatch read Get_Parent; - property Container: IDispatch read Get_Container; - property Document: IDispatch read Get_Document; - property TopLevelContainer: WordBool read Get_TopLevelContainer; - property type_: WideString read Get_type_; - property Left: Integer read Get_Left write Set_Left; - property Top: Integer read Get_Top write Set_Top; - property Width: Integer read Get_Width write Set_Width; - property Height: Integer read Get_Height write Set_Height; - property LocationName: WideString read Get_LocationName; - property LocationURL: WideString read Get_LocationURL; - property Busy: WordBool read Get_Busy; - end; - -// *********************************************************************// -// DispIntf: IWebBrowserDisp -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {EAB22AC1-30C1-11CF-A7EB-0000C05BAE0B} -// *********************************************************************// - IWebBrowserDisp = dispinterface - ['{EAB22AC1-30C1-11CF-A7EB-0000C05BAE0B}'] - procedure GoBack; dispid 100; - procedure GoForward; dispid 101; - procedure GoHome; dispid 102; - procedure GoSearch; dispid 103; - procedure Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); dispid 104; - procedure Refresh; dispid - 550; - procedure Refresh2(var Level: OleVariant); dispid 105; - procedure Stop; dispid 106; - property Application: IDispatch readonly dispid 200; - property Parent: IDispatch readonly dispid 201; - property Container: IDispatch readonly dispid 202; - property Document: IDispatch readonly dispid 203; - property TopLevelContainer: WordBool readonly dispid 204; - property type_: WideString readonly dispid 205; - property Left: Integer dispid 206; - property Top: Integer dispid 207; - property Width: Integer dispid 208; - property Height: Integer dispid 209; - property LocationName: WideString readonly dispid 210; - property LocationURL: WideString readonly dispid 211; - property Busy: WordBool readonly dispid 212; - end; - -// *********************************************************************// -// DispIntf: DWebBrowserEvents -// Flags: (4112) Hidden Dispatchable -// GUID: {EAB22AC2-30C1-11CF-A7EB-0000C05BAE0B} -// *********************************************************************// - DWebBrowserEvents = dispinterface - ['{EAB22AC2-30C1-11CF-A7EB-0000C05BAE0B}'] - procedure BeforeNavigate(const URL: WideString; Flags: Integer; - const TargetFrameName: WideString; var PostData: OleVariant; - const Headers: WideString; var Cancel: WordBool); dispid 100; - procedure NavigateComplete(const URL: WideString); dispid 101; - procedure StatusTextChange(const Text: WideString); dispid 102; - procedure ProgressChange(Progress: Integer; ProgressMax: Integer); dispid 108; - procedure DownloadComplete; dispid 104; - procedure CommandStateChange(Command: Integer; Enable: WordBool); dispid 105; - procedure DownloadBegin; dispid 106; - procedure NewWindow(const URL: WideString; Flags: Integer; const TargetFrameName: WideString; - var PostData: OleVariant; const Headers: WideString; var Processed: WordBool); dispid 107; - procedure TitleChange(const Text: WideString); dispid 113; - procedure FrameBeforeNavigate(const URL: WideString; Flags: Integer; - const TargetFrameName: WideString; var PostData: OleVariant; - const Headers: WideString; var Cancel: WordBool); dispid 200; - procedure FrameNavigateComplete(const URL: WideString); dispid 201; - procedure FrameNewWindow(const URL: WideString; Flags: Integer; - const TargetFrameName: WideString; var PostData: OleVariant; - const Headers: WideString; var Processed: WordBool); dispid 204; - procedure Quit(var Cancel: WordBool); dispid 103; - procedure WindowMove; dispid 109; - procedure WindowResize; dispid 110; - procedure WindowActivate; dispid 111; - procedure PropertyChange(const Property_: WideString); dispid 112; - end; - -// *********************************************************************// -// Interface: IWebBrowserApp -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {0002DF05-0000-0000-C000-000000000046} -// *********************************************************************// - IWebBrowserApp = interface(IWebBrowser) - ['{0002DF05-0000-0000-C000-000000000046}'] - procedure Quit; safecall; - procedure ClientToWindow(var pcx: SYSINT; var pcy: SYSINT); safecall; - procedure PutProperty(const Property_: WideString; vtValue: OleVariant); safecall; - function GetProperty(const Property_: WideString): OleVariant; safecall; - function Get_Name: WideString; safecall; - function Get_HWND: Integer; safecall; - function Get_FullName: WideString; safecall; - function Get_Path: WideString; safecall; - function Get_Visible: WordBool; safecall; - procedure Set_Visible(pBool: WordBool); safecall; - function Get_StatusBar: WordBool; safecall; - procedure Set_StatusBar(pBool: WordBool); safecall; - function Get_StatusText: WideString; safecall; - procedure Set_StatusText(const StatusText: WideString); safecall; - function Get_ToolBar: SYSINT; safecall; - procedure Set_ToolBar(Value: SYSINT); safecall; - function Get_MenuBar: WordBool; safecall; - procedure Set_MenuBar(Value: WordBool); safecall; - function Get_FullScreen: WordBool; safecall; - procedure Set_FullScreen(pbFullScreen: WordBool); safecall; - property Name: WideString read Get_Name; - property HWND: Integer read Get_HWND; - property FullName: WideString read Get_FullName; - property Path: WideString read Get_Path; - property Visible: WordBool read Get_Visible write Set_Visible; - property StatusBar: WordBool read Get_StatusBar write Set_StatusBar; - property StatusText: WideString read Get_StatusText write Set_StatusText; - property ToolBar: SYSINT read Get_ToolBar write Set_ToolBar; - property MenuBar: WordBool read Get_MenuBar write Set_MenuBar; - property FullScreen: WordBool read Get_FullScreen write Set_FullScreen; - end; - -// *********************************************************************// -// DispIntf: IWebBrowserAppDisp -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {0002DF05-0000-0000-C000-000000000046} -// *********************************************************************// - IWebBrowserAppDisp = dispinterface - ['{0002DF05-0000-0000-C000-000000000046}'] - procedure Quit; dispid 300; - procedure ClientToWindow(var pcx: SYSINT; var pcy: SYSINT); dispid 301; - procedure PutProperty(const Property_: WideString; vtValue: OleVariant); dispid 302; - function GetProperty(const Property_: WideString): OleVariant; dispid 303; - property Name: WideString readonly dispid 0; - property HWND: Integer readonly dispid - 515; - property FullName: WideString readonly dispid 400; - property Path: WideString readonly dispid 401; - property Visible: WordBool dispid 402; - property StatusBar: WordBool dispid 403; - property StatusText: WideString dispid 404; - property ToolBar: SYSINT dispid 405; - property MenuBar: WordBool dispid 406; - property FullScreen: WordBool dispid 407; - procedure GoBack; dispid 100; - procedure GoForward; dispid 101; - procedure GoHome; dispid 102; - procedure GoSearch; dispid 103; - procedure Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); dispid 104; - procedure Refresh; dispid - 550; - procedure Refresh2(var Level: OleVariant); dispid 105; - procedure Stop; dispid 106; - property Application: IDispatch readonly dispid 200; - property Parent: IDispatch readonly dispid 201; - property Container: IDispatch readonly dispid 202; - property Document: IDispatch readonly dispid 203; - property TopLevelContainer: WordBool readonly dispid 204; - property type_: WideString readonly dispid 205; - property Left: Integer dispid 206; - property Top: Integer dispid 207; - property Width: Integer dispid 208; - property Height: Integer dispid 209; - property LocationName: WideString readonly dispid 210; - property LocationURL: WideString readonly dispid 211; - property Busy: WordBool readonly dispid 212; - end; - -// *********************************************************************// -// Interface: IWebBrowser2 -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {D30C1661-CDAF-11D0-8A3E-00C04FC9E26E} -// *********************************************************************// - IWebBrowser2 = interface(IWebBrowserApp) - ['{D30C1661-CDAF-11D0-8A3E-00C04FC9E26E}'] - procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); safecall; - function QueryStatusWB(cmdID: OLECMDID): OLECMDF; safecall; - procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleVariant; - var pvaOut: OleVariant); safecall; - procedure ShowBrowserBar(var pvaClsid: OleVariant; var pvarShow: OleVariant; - var pvarSize: OleVariant); safecall; - function Get_ReadyState: tagREADYSTATE; safecall; - function Get_Offline: WordBool; safecall; - procedure Set_Offline(pbOffline: WordBool); safecall; - function Get_Silent: WordBool; safecall; - procedure Set_Silent(pbSilent: WordBool); safecall; - function Get_RegisterAsBrowser: WordBool; safecall; - procedure Set_RegisterAsBrowser(pbRegister: WordBool); safecall; - function Get_RegisterAsDropTarget: WordBool; safecall; - procedure Set_RegisterAsDropTarget(pbRegister: WordBool); safecall; - function Get_TheaterMode: WordBool; safecall; - procedure Set_TheaterMode(pbRegister: WordBool); safecall; - function Get_AddressBar: WordBool; safecall; - procedure Set_AddressBar(Value: WordBool); safecall; - function Get_Resizable: WordBool; safecall; - procedure Set_Resizable(Value: WordBool); safecall; - property ReadyState: tagREADYSTATE read Get_ReadyState; - property Offline: WordBool read Get_Offline write Set_Offline; - property Silent: WordBool read Get_Silent write Set_Silent; - property RegisterAsBrowser: WordBool read Get_RegisterAsBrowser write Set_RegisterAsBrowser; - property RegisterAsDropTarget: WordBool read Get_RegisterAsDropTarget write Set_RegisterAsDropTarget; - property TheaterMode: WordBool read Get_TheaterMode write Set_TheaterMode; - property AddressBar: WordBool read Get_AddressBar write Set_AddressBar; - property Resizable: WordBool read Get_Resizable write Set_Resizable; - end; - -// *********************************************************************// -// DispIntf: IWebBrowser2Disp -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {D30C1661-CDAF-11D0-8A3E-00C04FC9E26E} -// *********************************************************************// - IWebBrowser2Disp = dispinterface - ['{D30C1661-CDAF-11D0-8A3E-00C04FC9E26E}'] - procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); dispid 500; - function QueryStatusWB(cmdID: OLECMDID): OLECMDF; dispid 501; - procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleVariant; - var pvaOut: OleVariant); dispid 502; - procedure ShowBrowserBar(var pvaClsid: OleVariant; var pvarShow: OleVariant; - var pvarSize: OleVariant); dispid 503; - property ReadyState: tagREADYSTATE readonly dispid - 525; - property Offline: WordBool dispid 550; - property Silent: WordBool dispid 551; - property RegisterAsBrowser: WordBool dispid 552; - property RegisterAsDropTarget: WordBool dispid 553; - property TheaterMode: WordBool dispid 554; - property AddressBar: WordBool dispid 555; - property Resizable: WordBool dispid 556; - procedure Quit; dispid 300; - procedure ClientToWindow(var pcx: SYSINT; var pcy: SYSINT); dispid 301; - procedure PutProperty(const Property_: WideString; vtValue: OleVariant); dispid 302; - function GetProperty(const Property_: WideString): OleVariant; dispid 303; - property Name: WideString readonly dispid 0; - property HWND: Integer readonly dispid - 515; - property FullName: WideString readonly dispid 400; - property Path: WideString readonly dispid 401; - property Visible: WordBool dispid 402; - property StatusBar: WordBool dispid 403; - property StatusText: WideString dispid 404; - property ToolBar: SYSINT dispid 405; - property MenuBar: WordBool dispid 406; - property FullScreen: WordBool dispid 407; - procedure GoBack; dispid 100; - procedure GoForward; dispid 101; - procedure GoHome; dispid 102; - procedure GoSearch; dispid 103; - procedure Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); dispid 104; - procedure Refresh; dispid - 550; - procedure Refresh2(var Level: OleVariant); dispid 105; - procedure Stop; dispid 106; - property Application: IDispatch readonly dispid 200; - property Parent: IDispatch readonly dispid 201; - property Container: IDispatch readonly dispid 202; - property Document: IDispatch readonly dispid 203; - property TopLevelContainer: WordBool readonly dispid 204; - property type_: WideString readonly dispid 205; - property Left: Integer dispid 206; - property Top: Integer dispid 207; - property Width: Integer dispid 208; - property Height: Integer dispid 209; - property LocationName: WideString readonly dispid 210; - property LocationURL: WideString readonly dispid 211; - property Busy: WordBool readonly dispid 212; - end; - -// *********************************************************************// -// DispIntf: DWebBrowserEvents2 -// Flags: (4112) Hidden Dispatchable -// GUID: {34A715A0-6587-11D0-924A-0020AFC7AC4D} -// *********************************************************************// - DWebBrowserEvents2 = dispinterface - ['{34A715A0-6587-11D0-924A-0020AFC7AC4D}'] - procedure StatusTextChange(const Text: WideString); dispid 102; - procedure ProgressChange(Progress: Integer; ProgressMax: Integer); dispid 108; - procedure CommandStateChange(Command: Integer; Enable: WordBool); dispid 105; - procedure DownloadBegin; dispid 106; - procedure DownloadComplete; dispid 104; - procedure TitleChange(const Text: WideString); dispid 113; - procedure PropertyChange(const szProperty: WideString); dispid 112; - procedure BeforeNavigate2(const pDisp: IDispatch; var URL: OleVariant; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant; var Cancel: WordBool); dispid 250; - procedure NewWindow2(var ppDisp: IDispatch; var Cancel: WordBool); dispid 251; - procedure NavigateComplete2(const pDisp: IDispatch; var URL: OleVariant); dispid 252; - procedure DocumentComplete(const pDisp: IDispatch; var URL: OleVariant); dispid 259; - procedure OnQuit; dispid 253; - procedure OnVisible(Visible: WordBool); dispid 254; - procedure OnToolBar(ToolBar: WordBool); dispid 255; - procedure OnMenuBar(MenuBar: WordBool); dispid 256; - procedure OnStatusBar(StatusBar: WordBool); dispid 257; - procedure OnFullScreen(FullScreen: WordBool); dispid 258; - procedure OnTheaterMode(TheaterMode: WordBool); dispid 260; - procedure OnAddressBar(AddressBar: WordBool); dispid 261; - procedure WindowSetResizable(Resizable: WordBool); dispid 262; - procedure WindowSetLeft(Left: Integer); dispid 264; - procedure WindowSetTop(Top: Integer); dispid 265; - procedure WindowSetWidth(Width: Integer); dispid 266; - procedure WindowSetHeight(Height: Integer); dispid 267; - procedure WindowClosing(IsChildWindow: WordBool; var Cancel: WordBool); dispid 263; - procedure ClientToHostWindow(var CX: Integer; var CY: Integer); dispid 268; - procedure SetSecureLockIcon(SecureLockIcon: Integer); dispid 269; - // procedure FileDownload(var Cancel: WordBool); dispid 270; - procedure FileDownload(ActiveDocument: WordBool; var Cancel: WordBool); dispid 270; - procedure NavigateError(const pDisp: IDispatch; var URL: OleVariant; var Frame: OleVariant; - var StatusCode: OleVariant; var Cancel: WordBool); dispid 271; - procedure PrintTemplateInstantiation(const pDisp: IDispatch); dispid 225; - procedure PrintTemplateTeardown(const pDisp: IDispatch); dispid 226; - procedure UpdatePageStatus(const pDisp: IDispatch; var nPage: OleVariant; var fDone: OleVariant); dispid 227; - procedure PrivacyImpactedStateChange(bImpacted: WordBool); dispid 272; - procedure NewWindow3(var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: LongWord; - const bstrUrlContext: WideString; const bstrUrl: WideString); dispid 273; - procedure SetPhishingFilterStatus(PhishingFilterStatus: Integer); dispid 282; -// procedure WindowStateChanged(dwWindowStateFlags: LongWord; dwValidFlagsMask: LongWord); dispid 283; - procedure NewProcess(lCauseFlag: Integer; const pWB2: IDispatch; var Cancel: WordBool); dispid 284; - procedure ThirdPartyUrlBlocked(var URL: OleVariant; dwCount: LongWord); dispid 285; - end; - -// *********************************************************************// -// DispIntf: DShellWindowsEvents -// Flags: (4096) Dispatchable -// GUID: {FE4106E0-399A-11D0-A48C-00A0C90A8F39} -// *********************************************************************// - DShellWindowsEvents = dispinterface - ['{FE4106E0-399A-11D0-A48C-00A0C90A8F39}'] - procedure WindowRegistered(lCookie: Integer); dispid 200; - procedure WindowRevoked(lCookie: Integer); dispid 201; - end; - -// *********************************************************************// -// Interface: IShellWindows -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {85CB6900-4D95-11CF-960C-0080C7F4EE85} -// *********************************************************************// - IShellWindows = interface(IDispatch) - ['{85CB6900-4D95-11CF-960C-0080C7F4EE85}'] - function Get_Count: Integer; safecall; - function Item(index: OleVariant): IDispatch; safecall; - function _NewEnum: IUnknown; safecall; - procedure Register(const pid: IDispatch; HWND: Integer; swClass: SYSINT; out plCookie: Integer); safecall; - procedure RegisterPending(lThreadId: Integer; var pvarloc: OleVariant; - var pvarlocRoot: OleVariant; swClass: SYSINT; out plCookie: Integer); safecall; - procedure Revoke(lCookie: Integer); safecall; - procedure OnNavigate(lCookie: Integer; var pvarloc: OleVariant); safecall; - procedure OnActivated(lCookie: Integer; fActive: WordBool); safecall; - function FindWindowSW(var pvarloc: OleVariant; var pvarlocRoot: OleVariant; swClass: SYSINT; - out pHWND: Integer; swfwOptions: SYSINT): IDispatch; safecall; - procedure OnCreated(lCookie: Integer; const punk: IUnknown); safecall; - procedure ProcessAttachDetach(fAttach: WordBool); safecall; - property Count: Integer read Get_Count; - end; - -// *********************************************************************// -// DispIntf: IShellWindowsDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {85CB6900-4D95-11CF-960C-0080C7F4EE85} -// *********************************************************************// - IShellWindowsDisp = dispinterface - ['{85CB6900-4D95-11CF-960C-0080C7F4EE85}'] - property Count: Integer readonly dispid 1610743808; - function Item(index: OleVariant): IDispatch; dispid 0; - function _NewEnum: IUnknown; dispid - 4; - procedure Register(const pid: IDispatch; HWND: Integer; swClass: SYSINT; out plCookie: Integer); dispid 1610743811; - procedure RegisterPending(lThreadId: Integer; var pvarloc: OleVariant; - var pvarlocRoot: OleVariant; swClass: SYSINT; out plCookie: Integer); dispid 1610743812; - procedure Revoke(lCookie: Integer); dispid 1610743813; - procedure OnNavigate(lCookie: Integer; var pvarloc: OleVariant); dispid 1610743814; - procedure OnActivated(lCookie: Integer; fActive: WordBool); dispid 1610743815; - function FindWindowSW(var pvarloc: OleVariant; var pvarlocRoot: OleVariant; swClass: SYSINT; - out pHWND: Integer; swfwOptions: SYSINT): IDispatch; dispid 1610743816; - procedure OnCreated(lCookie: Integer; const punk: IUnknown); dispid 1610743817; - procedure ProcessAttachDetach(fAttach: WordBool); dispid 1610743818; - end; - -// *********************************************************************// -// Interface: IShellUIHelper -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {729FE2F8-1EA8-11D1-8F85-00C04FC2FBE1} -// *********************************************************************// - IShellUIHelper = interface(IDispatch) - ['{729FE2F8-1EA8-11D1-8F85-00C04FC2FBE1}'] - procedure ResetFirstBootMode; safecall; - procedure ResetSafeMode; safecall; - procedure RefreshOfflineDesktop; safecall; - procedure AddFavorite(const URL: WideString; var Title: OleVariant); safecall; - procedure AddChannel(const URL: WideString); safecall; - procedure AddDesktopComponent(const URL: WideString; const Type_: WideString; - var Left: OleVariant; var Top: OleVariant; var Width: OleVariant; - var Height: OleVariant); safecall; - function IsSubscribed(const URL: WideString): WordBool; safecall; - procedure NavigateAndFind(const URL: WideString; const strQuery: WideString; - var varTargetFrame: OleVariant); safecall; - procedure ImportExportFavorites(fImport: WordBool; const strImpExpPath: WideString); safecall; - procedure AutoCompleteSaveForm(var Form: OleVariant); safecall; - procedure AutoScan(const strSearch: WideString; const strFailureUrl: WideString; - var pvarTargetFrame: OleVariant); safecall; - procedure AutoCompleteAttach(var Reserved: OleVariant); safecall; - function ShowBrowserUI(const bstrName: WideString; var pvarIn: OleVariant): OleVariant; safecall; - end; - -// *********************************************************************// -// DispIntf: IShellUIHelperDisp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {729FE2F8-1EA8-11D1-8F85-00C04FC2FBE1} -// *********************************************************************// - IShellUIHelperDisp = dispinterface - ['{729FE2F8-1EA8-11D1-8F85-00C04FC2FBE1}'] - procedure ResetFirstBootMode; dispid 1; - procedure ResetSafeMode; dispid 2; - procedure RefreshOfflineDesktop; dispid 3; - procedure AddFavorite(const URL: WideString; var Title: OleVariant); dispid 4; - procedure AddChannel(const URL: WideString); dispid 5; - procedure AddDesktopComponent(const URL: WideString; const Type_: WideString; - var Left: OleVariant; var Top: OleVariant; var Width: OleVariant; - var Height: OleVariant); dispid 6; - function IsSubscribed(const URL: WideString): WordBool; dispid 7; - procedure NavigateAndFind(const URL: WideString; const strQuery: WideString; - var varTargetFrame: OleVariant); dispid 8; - procedure ImportExportFavorites(fImport: WordBool; const strImpExpPath: WideString); dispid 9; - procedure AutoCompleteSaveForm(var Form: OleVariant); dispid 10; - procedure AutoScan(const strSearch: WideString; const strFailureUrl: WideString; - var pvarTargetFrame: OleVariant); dispid 11; - procedure AutoCompleteAttach(var Reserved: OleVariant); dispid 12; - function ShowBrowserUI(const bstrName: WideString; var pvarIn: OleVariant): OleVariant; dispid 13; - end; - -//*********************************************************************// -// Interface: IShellUIHelper2 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {A7FE6EDA-1932-4281-B881-87B31B8BC52C} -// *********************************************************************// - IShellUIHelper2 = interface(IShellUIHelper) - ['{A7FE6EDA-1932-4281-B881-87B31B8BC52C}'] - procedure AddSearchProvider(const URL: WideString); safecall; - procedure RunOnceShown; safecall; - procedure SkipRunOnce; safecall; - procedure CustomizeSettings(fSQM: WordBool; fPhishing: WordBool; const bstrLocale: WideString); safecall; - function SqmEnabled: WordBool; safecall; - function PhishingEnabled: WordBool; safecall; - function BrandImageUri: WideString; safecall; - procedure SkipTabsWelcome; safecall; - procedure DiagnoseConnection; safecall; - procedure CustomizeClearType(fSet: WordBool); safecall; - function IsSearchProviderInstalled(const URL: WideString): LongWord; safecall; - function IsSearchMigrated: WordBool; safecall; - function DefaultSearchProvider: WideString; safecall; - procedure RunOnceRequiredSettingsComplete(fComplete: WordBool); safecall; - function RunOnceHasShown: WordBool; safecall; - function SearchGuideUrl: WideString; safecall; - end; - -// *********************************************************************// -// DispIntf: IShellUIHelper2Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {A7FE6EDA-1932-4281-B881-87B31B8BC52C} -// *********************************************************************// - IShellUIHelper2Disp = dispinterface - ['{A7FE6EDA-1932-4281-B881-87B31B8BC52C}'] - procedure AddSearchProvider(const URL: WideString); dispid 14; - procedure RunOnceShown; dispid 15; - procedure SkipRunOnce; dispid 16; - procedure CustomizeSettings(fSQM: WordBool; fPhishing: WordBool; const bstrLocale: WideString); dispid 17; - function SqmEnabled: WordBool; dispid 18; - function PhishingEnabled: WordBool; dispid 19; - function BrandImageUri: WideString; dispid 20; - procedure SkipTabsWelcome; dispid 21; - procedure DiagnoseConnection; dispid 22; - procedure CustomizeClearType(fSet: WordBool); dispid 23; - function IsSearchProviderInstalled(const URL: WideString): LongWord; dispid 24; - function IsSearchMigrated: WordBool; dispid 25; - function DefaultSearchProvider: WideString; dispid 26; - procedure RunOnceRequiredSettingsComplete(fComplete: WordBool); dispid 27; - function RunOnceHasShown: WordBool; dispid 28; - function SearchGuideUrl: WideString; dispid 29; - procedure ResetFirstBootMode; dispid 1; - procedure ResetSafeMode; dispid 2; - procedure RefreshOfflineDesktop; dispid 3; - procedure AddFavorite(const URL: WideString; var Title: OleVariant); dispid 4; - procedure AddChannel(const URL: WideString); dispid 5; - procedure AddDesktopComponent(const URL: WideString; const Type_: WideString; - var Left: OleVariant; var Top: OleVariant; var Width: OleVariant; - var Height: OleVariant); dispid 6; - function IsSubscribed(const URL: WideString): WordBool; dispid 7; - procedure NavigateAndFind(const URL: WideString; const strQuery: WideString; - var varTargetFrame: OleVariant); dispid 8; - procedure ImportExportFavorites(fImport: WordBool; const strImpExpPath: WideString); dispid 9; - procedure AutoCompleteSaveForm(var Form: OleVariant); dispid 10; - procedure AutoScan(const strSearch: WideString; const strFailureUrl: WideString; - var pvarTargetFrame: OleVariant); dispid 11; - procedure AutoCompleteAttach(var Reserved: OleVariant); dispid 12; - function ShowBrowserUI(const bstrName: WideString; var pvarIn: OleVariant): OleVariant; dispid 13; - end; - -// *********************************************************************// -// Interface: IShellUIHelper3 -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {B7FCA399-7F15-42DF-A51C-E39C1A4F32DE} -// *********************************************************************// - IShellUIHelper3 = interface(IShellUIHelper2) - ['{B7FCA399-7F15-42DF-A51C-E39C1A4F32DE}'] - procedure AddService(const URL: WideString); safecall; - procedure AddInPrivateSubscription(const URL: WideString; const bstrFilterName: WideString); safecall; - function IsServiceInstalled(const URL: WideString; const Verb: WideString): LongWord; safecall; - procedure AddToFavoritesBar(const URL: WideString; const Title: WideString; - var Type_: OleVariant); safecall; - procedure BuildNewTabPage; safecall; - procedure SetRecentlyClosedVisible(fVisible: WordBool); safecall; - procedure SetActivitiesVisible(fVisible: WordBool); safecall; - procedure ContentDiscoveryReset; safecall; - function IsSuggestedSitesEnabled: WordBool; safecall; - procedure EnableSuggestedSites(fEnable: WordBool); safecall; - procedure NavigateToSuggestedSites(const bstrRelativeUrl: WideString); safecall; - procedure ShowTabsHelp; safecall; - procedure ShowInPrivateHelp; safecall; - end; - -// *********************************************************************// -// DispIntf: IShellUIHelper3Disp -// Flags: (4416) Dual OleAutomation Dispatchable -// GUID: {B7FCA399-7F15-42DF-A51C-E39C1A4F32DE} -// *********************************************************************// - IShellUIHelper3Disp = dispinterface - ['{B7FCA399-7F15-42DF-A51C-E39C1A4F32DE}'] - procedure AddService(const URL: WideString); dispid 30; - procedure AddInPrivateSubscription(const URL: WideString; const bstrFilterName: WideString); dispid 37; - function IsServiceInstalled(const URL: WideString; const Verb: WideString): LongWord; dispid 31; - procedure AddToFavoritesBar(const URL: WideString; const Title: WideString; - var Type_: OleVariant); dispid 32; - procedure BuildNewTabPage; dispid 33; - procedure SetRecentlyClosedVisible(fVisible: WordBool); dispid 34; - procedure SetActivitiesVisible(fVisible: WordBool); dispid 35; - procedure ContentDiscoveryReset; dispid 36; - function IsSuggestedSitesEnabled: WordBool; dispid 38; - procedure EnableSuggestedSites(fEnable: WordBool); dispid 39; - procedure NavigateToSuggestedSites(const bstrRelativeUrl: WideString); dispid 40; - procedure ShowTabsHelp; dispid 41; - procedure ShowInPrivateHelp; dispid 42; - procedure AddSearchProvider(const URL: WideString); dispid 14; - procedure RunOnceShown; dispid 15; - procedure SkipRunOnce; dispid 16; - procedure CustomizeSettings(fSQM: WordBool; fPhishing: WordBool; const bstrLocale: WideString); dispid 17; - function SqmEnabled: WordBool; dispid 18; - function PhishingEnabled: WordBool; dispid 19; - function BrandImageUri: WideString; dispid 20; - procedure SkipTabsWelcome; dispid 21; - procedure DiagnoseConnection; dispid 22; - procedure CustomizeClearType(fSet: WordBool); dispid 23; - function IsSearchProviderInstalled(const URL: WideString): LongWord; dispid 24; - function IsSearchMigrated: WordBool; dispid 25; - function DefaultSearchProvider: WideString; dispid 26; - procedure RunOnceRequiredSettingsComplete(fComplete: WordBool); dispid 27; - function RunOnceHasShown: WordBool; dispid 28; - function SearchGuideUrl: WideString; dispid 29; - procedure ResetFirstBootMode; dispid 1; - procedure ResetSafeMode; dispid 2; - procedure RefreshOfflineDesktop; dispid 3; - procedure AddFavorite(const URL: WideString; var Title: OleVariant); dispid 4; - procedure AddChannel(const URL: WideString); dispid 5; - procedure AddDesktopComponent(const URL: WideString; const Type_: WideString; - var Left: OleVariant; var Top: OleVariant; var Width: OleVariant; - var Height: OleVariant); dispid 6; - function IsSubscribed(const URL: WideString): WordBool; dispid 7; - procedure NavigateAndFind(const URL: WideString; const strQuery: WideString; - var varTargetFrame: OleVariant); dispid 8; - procedure ImportExportFavorites(fImport: WordBool; const strImpExpPath: WideString); dispid 9; - procedure AutoCompleteSaveForm(var Form: OleVariant); dispid 10; - procedure AutoScan(const strSearch: WideString; const strFailureUrl: WideString; - var pvarTargetFrame: OleVariant); dispid 11; - procedure AutoCompleteAttach(var Reserved: OleVariant); dispid 12; - function ShowBrowserUI(const bstrName: WideString; var pvarIn: OleVariant): OleVariant; dispid 13; - end; - -// *********************************************************************// -// DispIntf: DShellNameSpaceEvents -// Flags: (4096) Dispatchable -// GUID: {55136806-B2DE-11D1-B9F2-00A0C98BC547} -// *********************************************************************// - DShellNameSpaceEvents = dispinterface - ['{55136806-B2DE-11D1-B9F2-00A0C98BC547}'] - procedure FavoritesSelectionChange(cItems: Integer; hItem: Integer; const strName: WideString; - const strUrl: WideString; cVisits: Integer; - const strDate: WideString; fAvailableOffline: Integer); dispid 1; - procedure SelectionChange; dispid 2; - procedure DoubleClick; dispid 3; - procedure Initialized; dispid 4; - end; - -// *********************************************************************// -// Interface: IShellFavoritesNameSpace -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {55136804-B2DE-11D1-B9F2-00A0C98BC547} -// *********************************************************************// - IShellFavoritesNameSpace = interface(IDispatch) - ['{55136804-B2DE-11D1-B9F2-00A0C98BC547}'] - procedure MoveSelectionUp; safecall; - procedure MoveSelectionDown; safecall; - procedure ResetSort; safecall; - procedure NewFolder; safecall; - procedure Synchronize; safecall; - procedure Import; safecall; - procedure Export; safecall; - procedure InvokeContextMenuCommand(const strCommand: WideString); safecall; - procedure MoveSelectionTo; safecall; - function Get_SubscriptionsEnabled: WordBool; safecall; - function CreateSubscriptionForSelection: WordBool; safecall; - function DeleteSubscriptionForSelection: WordBool; safecall; - procedure SetRoot(const bstrFullPath: WideString); safecall; - property SubscriptionsEnabled: WordBool read Get_SubscriptionsEnabled; - end; - -// *********************************************************************// -// DispIntf: IShellFavoritesNameSpaceDisp -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {55136804-B2DE-11D1-B9F2-00A0C98BC547} -// *********************************************************************// - IShellFavoritesNameSpaceDisp = dispinterface - ['{55136804-B2DE-11D1-B9F2-00A0C98BC547}'] - procedure MoveSelectionUp; dispid 1; - procedure MoveSelectionDown; dispid 2; - procedure ResetSort; dispid 3; - procedure NewFolder; dispid 4; - procedure Synchronize; dispid 5; - procedure Import; dispid 6; - procedure Export; dispid 7; - procedure InvokeContextMenuCommand(const strCommand: WideString); dispid 8; - procedure MoveSelectionTo; dispid 9; - property SubscriptionsEnabled: WordBool readonly dispid 10; - function CreateSubscriptionForSelection: WordBool; dispid 11; - function DeleteSubscriptionForSelection: WordBool; dispid 12; - procedure SetRoot(const bstrFullPath: WideString); dispid 13; - end; - -// *********************************************************************// -// Interface: IShellNameSpace -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {E572D3C9-37BE-4AE2-825D-D521763E3108} -// *********************************************************************// - IShellNameSpace = interface(IShellFavoritesNameSpace) - ['{E572D3C9-37BE-4AE2-825D-D521763E3108}'] - function Get_EnumOptions: Integer; safecall; - procedure Set_EnumOptions(pgrfEnumFlags: Integer); safecall; - function Get_SelectedItem: IDispatch; safecall; - procedure Set_SelectedItem(const pItem: IDispatch); safecall; - function Get_Root: OleVariant; safecall; - procedure Set_Root(pvar: OleVariant); safecall; - function Get_Depth: SYSINT; safecall; - procedure Set_Depth(piDepth: SYSINT); safecall; - function Get_Mode: SYSUINT; safecall; - procedure Set_Mode(puMode: SYSUINT); safecall; - function Get_Flags: LongWord; safecall; - procedure Set_Flags(pdwFlags: LongWord); safecall; - procedure Set_TVFlags(dwFlags: LongWord); safecall; - function Get_TVFlags: LongWord; safecall; - function Get_Columns: WideString; safecall; - procedure Set_Columns(const bstrColumns: WideString); safecall; - function Get_CountViewTypes: SYSINT; safecall; - procedure SetViewType(iType: SYSINT); safecall; - function SelectedItems: IDispatch; safecall; - procedure Expand(var_: OleVariant; iDepth: SYSINT); safecall; - procedure UnselectAll; safecall; - property EnumOptions: Integer read Get_EnumOptions write Set_EnumOptions; - property SelectedItem: IDispatch read Get_SelectedItem write Set_SelectedItem; - property Root: OleVariant read Get_Root write Set_Root; - property Depth: SYSINT read Get_Depth write Set_Depth; - property Mode: SYSUINT read Get_Mode write Set_Mode; - property Flags: LongWord read Get_Flags write Set_Flags; - property TVFlags: LongWord read Get_TVFlags write Set_TVFlags; - property Columns: WideString read Get_Columns write Set_Columns; - property CountViewTypes: SYSINT read Get_CountViewTypes; - end; - -// *********************************************************************// -// DispIntf: IShellNameSpaceDisp -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {E572D3C9-37BE-4AE2-825D-D521763E3108} -// *********************************************************************// - IShellNameSpaceDisp = dispinterface - ['{E572D3C9-37BE-4AE2-825D-D521763E3108}'] - property EnumOptions: Integer dispid 14; - property SelectedItem: IDispatch dispid 15; - property Root: OleVariant dispid 16; - property Depth: SYSINT dispid 17; - property Mode: SYSUINT dispid 18; - property Flags: LongWord dispid 19; - property TVFlags: LongWord dispid 20; - property Columns: WideString dispid 21; - property CountViewTypes: SYSINT readonly dispid 22; - procedure SetViewType(iType: SYSINT); dispid 23; - function SelectedItems: IDispatch; dispid 24; - procedure Expand(var_: OleVariant; iDepth: SYSINT); dispid 25; - procedure UnselectAll; dispid 26; - procedure MoveSelectionUp; dispid 1; - procedure MoveSelectionDown; dispid 2; - procedure ResetSort; dispid 3; - procedure NewFolder; dispid 4; - procedure Synchronize; dispid 5; - procedure Import; dispid 6; - procedure Export; dispid 7; - procedure InvokeContextMenuCommand(const strCommand: WideString); dispid 8; - procedure MoveSelectionTo; dispid 9; - property SubscriptionsEnabled: WordBool readonly dispid 10; - function CreateSubscriptionForSelection: WordBool; dispid 11; - function DeleteSubscriptionForSelection: WordBool; dispid 12; - procedure SetRoot(const bstrFullPath: WideString); dispid 13; - end; - -// *********************************************************************// -// Interface: IScriptErrorList -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {F3470F24-15FD-11D2-BB2E-00805FF7EFCA} -// *********************************************************************// - IScriptErrorList = interface(IDispatch) - ['{F3470F24-15FD-11D2-BB2E-00805FF7EFCA}'] - procedure advanceError; safecall; - procedure retreatError; safecall; - function canAdvanceError: Integer; safecall; - function canRetreatError: Integer; safecall; - function getErrorLine: Integer; safecall; - function getErrorChar: Integer; safecall; - function getErrorCode: Integer; safecall; - function getErrorMsg: WideString; safecall; - function getErrorUrl: WideString; safecall; - function getAlwaysShowLockState: Integer; safecall; - function getDetailsPaneOpen: Integer; safecall; - procedure setDetailsPaneOpen(fDetailsPaneOpen: Integer); safecall; - function getPerErrorDisplay: Integer; safecall; - procedure setPerErrorDisplay(fPerErrorDisplay: Integer); safecall; - end; - -// *********************************************************************// -// DispIntf: IScriptErrorListDisp -// Flags: (4432) Hidden Dual OleAutomation Dispatchable -// GUID: {F3470F24-15FD-11D2-BB2E-00805FF7EFCA} -// *********************************************************************// - IScriptErrorListDisp = dispinterface - ['{F3470F24-15FD-11D2-BB2E-00805FF7EFCA}'] - procedure advanceError; dispid 10; - procedure retreatError; dispid 11; - function canAdvanceError: Integer; dispid 12; - function canRetreatError: Integer; dispid 13; - function getErrorLine: Integer; dispid 14; - function getErrorChar: Integer; dispid 15; - function getErrorCode: Integer; dispid 16; - function getErrorMsg: WideString; dispid 17; - function getErrorUrl: WideString; dispid 18; - function getAlwaysShowLockState: Integer; dispid 23; - function getDetailsPaneOpen: Integer; dispid 19; - procedure setDetailsPaneOpen(fDetailsPaneOpen: Integer); dispid 20; - function getPerErrorDisplay: Integer; dispid 21; - procedure setPerErrorDisplay(fPerErrorDisplay: Integer); dispid 22; - end; - -// *********************************************************************// -// OLE Control Proxy class declaration -// Control Name : TEWB_V1 -// Help String : WebBrowser Control -// Default Interface: IWebBrowser -// Def. Intf. DISP? : No -// Event Interface: DWebBrowserEvents -// TypeFlags : (34) CanCreate Control -// *********************************************************************// - TEWB_V1BeforeNavigate = procedure(ASender: TObject; const URL: WideString; Flags: Integer; - const TargetFrameName: WideString; - var PostData: OleVariant; - const Headers: WideString; - var Cancel: WordBool) of object; - TEWB_V1NavigateComplete = procedure(ASender: TObject; const URL: WideString) of object; - TEWB_V1StatusTextChange = procedure(ASender: TObject; const Text: WideString) of object; - TEWB_V1ProgressChange = procedure(ASender: TObject; Progress: Integer; ProgressMax: Integer) of object; - TEWB_V1CommandStateChange = procedure(ASender: TObject; Command: Integer; Enable: WordBool) of object; - TEWB_V1NewWindow = procedure(ASender: TObject; const URL: WideString; Flags: Integer; - const TargetFrameName: WideString; - var PostData: OleVariant; - const Headers: WideString; - var Processed: WordBool) of object; - TEWB_V1TitleChange = procedure(ASender: TObject; const Text: WideString) of object; - TEWB_V1FrameBeforeNavigate = procedure(ASender: TObject; const URL: WideString; - Flags: Integer; - const TargetFrameName: WideString; - var PostData: OleVariant; - const Headers: WideString; - var Cancel: WordBool) of object; - TEWB_V1FrameNavigateComplete = procedure(ASender: TObject; const URL: WideString) of object; - TEWB_V1FrameNewWindow = procedure(ASender: TObject; const URL: WideString; Flags: Integer; - const TargetFrameName: WideString; - var PostData: OleVariant; - const Headers: WideString; - var Processed: WordBool) of object; - TEWB_V1Quit = procedure(ASender: TObject; var Cancel: WordBool) of object; - TEWB_V1PropertyChange = procedure(ASender: TObject; const Property_: WideString) of object; - - TEWB_V1 = class(TOleControl) - private - FOnBeforeNavigate: TEWB_V1BeforeNavigate; - FOnNavigateComplete: TEWB_V1NavigateComplete; - FOnStatusTextChange: TEWB_V1StatusTextChange; - FOnProgressChange: TEWB_V1ProgressChange; - FOnDownloadComplete: TNotifyEvent; - FOnCommandStateChange: TEWB_V1CommandStateChange; - FOnDownloadBegin: TNotifyEvent; - FOnNewWindow: TEWB_V1NewWindow; - FOnTitleChange: TEWB_V1TitleChange; - FOnFrameBeforeNavigate: TEWB_V1FrameBeforeNavigate; - FOnFrameNavigateComplete: TEWB_V1FrameNavigateComplete; - FOnFrameNewWindow: TEWB_V1FrameNewWindow; - FOnQuit: TEWB_V1Quit; - FOnWindowMove: TNotifyEvent; - FOnWindowResize: TNotifyEvent; - FOnWindowActivate: TNotifyEvent; - FOnPropertyChange: TEWB_V1PropertyChange; - FIntf: IWebBrowser; - function GetControlInterface: IWebBrowser; - protected - procedure CreateControl; - procedure InitControlData; override; - function Get_Application: IDispatch; - function Get_Parent: IDispatch; - function Get_Container: IDispatch; - function Get_Document: IDispatch; - public - procedure GoBack; - procedure GoForward; - procedure GoHome; - procedure GoSearch; - procedure Navigate(const URL: WideString); overload; - procedure Navigate(const URL: WideString; var Flags: OleVariant); overload; - procedure Navigate(const URL: WideString; var Flags: OleVariant; var TargetFrameName: OleVariant); overload; - procedure Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant); overload; - procedure Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); overload; - procedure Refresh; - procedure Refresh2; overload; - procedure Refresh2(var Level: OleVariant); overload; - procedure Stop; - property ControlInterface: IWebBrowser read GetControlInterface; - property DefaultInterface: IWebBrowser read GetControlInterface; - property Application: IDispatch index 200 read GetIDispatchProp; - property Parent: IDispatch index 201 read GetIDispatchProp; - property Container: IDispatch index 202 read GetIDispatchProp; - property Document: IDispatch index 203 read GetIDispatchProp; - property TopLevelContainer: WordBool index 204 read GetWordBoolProp; - property type_: WideString index 205 read GetWideStringProp; - property LocationName: WideString index 210 read GetWideStringProp; - property LocationURL: WideString index 211 read GetWideStringProp; - property Busy: WordBool index 212 read GetWordBoolProp; - published - property Anchors; - property TabStop; - property Align; - property DragCursor; - property DragMode; - property ParentShowHint; - property PopupMenu; - property ShowHint; - property TabOrder; - property Visible; - property OnDragDrop; - property OnDragOver; - property OnEndDrag; - property OnEnter; - property OnExit; - property OnStartDrag; - property OnBeforeNavigate: TEWB_V1BeforeNavigate read FOnBeforeNavigate write FOnBeforeNavigate; - property OnNavigateComplete: TEWB_V1NavigateComplete read FOnNavigateComplete write FOnNavigateComplete; - property OnStatusTextChange: TEWB_V1StatusTextChange read FOnStatusTextChange write FOnStatusTextChange; - property OnProgressChange: TEWB_V1ProgressChange read FOnProgressChange write FOnProgressChange; - property OnDownloadComplete: TNotifyEvent read FOnDownloadComplete write FOnDownloadComplete; - property OnCommandStateChange: TEWB_V1CommandStateChange read FOnCommandStateChange write FOnCommandStateChange; - property OnDownloadBegin: TNotifyEvent read FOnDownloadBegin write FOnDownloadBegin; - property OnNewWindow: TEWB_V1NewWindow read FOnNewWindow write FOnNewWindow; - property OnTitleChange: TEWB_V1TitleChange read FOnTitleChange write FOnTitleChange; - property OnFrameBeforeNavigate: TEWB_V1FrameBeforeNavigate read FOnFrameBeforeNavigate write FOnFrameBeforeNavigate; - property OnFrameNavigateComplete: TEWB_V1FrameNavigateComplete read FOnFrameNavigateComplete write FOnFrameNavigateComplete; - property OnFrameNewWindow: TEWB_V1FrameNewWindow read FOnFrameNewWindow write FOnFrameNewWindow; - property OnQuit: TEWB_V1Quit read FOnQuit write FOnQuit; - property OnWindowMove: TNotifyEvent read FOnWindowMove write FOnWindowMove; - property OnWindowResize: TNotifyEvent read FOnWindowResize write FOnWindowResize; - property OnWindowActivate: TNotifyEvent read FOnWindowActivate write FOnWindowActivate; - property OnPropertyChange: TEWB_V1PropertyChange read FOnPropertyChange write FOnPropertyChange; - end; - -// *********************************************************************// -// OLE Control Proxy class declaration -// Control Name : TEWB -// Help String : WebBrowser Control -// Default Interface: IWebBrowser2 -// Def. Intf. DISP? : No -// Event Interface: DWebBrowserEvents2 -// TypeFlags : (34) CanCreate Control -// *********************************************************************// - TEWBStatusTextChange = procedure(ASender: TObject; const Text: WideString) of object; - TEWBProgressChange = procedure(ASender: TObject; Progress: Integer; ProgressMax: Integer) of object; - TEWBCommandStateChange = procedure(ASender: TObject; Command: Integer; Enable: WordBool) of object; - TEWBTitleChange = procedure(ASender: TObject; const Text: WideString) of object; - TEWBPropertyChange = procedure(ASender: TObject; const szProperty: WideString) of object; - TEWBBeforeNavigate2 = procedure(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant; - var Flags: OleVariant; - var TargetFrameName: OleVariant; - var PostData: OleVariant; - var Headers: OleVariant; - var Cancel: WordBool) of object; - TEWBNewWindow2 = procedure(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool) of object; - TEWBNavigateComplete2 = procedure(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant) of object; - TEWBDocumentComplete = procedure(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant) of object; - TEWBOnVisible = procedure(ASender: TObject; Visible: WordBool) of object; - TEWBOnToolBar = procedure(ASender: TObject; ToolBar: WordBool) of object; - TEWBOnMenuBar = procedure(ASender: TObject; MenuBar: WordBool) of object; - TEWBOnStatusBar = procedure(ASender: TObject; StatusBar: WordBool) of object; - TEWBOnFullScreen = procedure(ASender: TObject; FullScreen: WordBool) of object; - TEWBOnTheaterMode = procedure(ASender: TObject; TheaterMode: WordBool) of object; - TEWBOnAddressBar = procedure(ASender: TObject; AddressBar: WordBool) of object; - TEWBWindowSetResizable = procedure(ASender: TObject; Resizable: WordBool) of object; - TEWBWindowSetLeft = procedure(ASender: TObject; Left: Integer) of object; - TEWBWindowSetTop = procedure(ASender: TObject; Top: Integer) of object; - TEWBWindowSetWidth = procedure(ASender: TObject; Width: Integer) of object; - TEWBWindowSetHeight = procedure(ASender: TObject; Height: Integer) of object; - TEWBWindowClosing = procedure(ASender: TObject; IsChildWindow: WordBool; - var Cancel: WordBool) of object; - TEWBClientToHostWindow = procedure(ASender: TObject; var CX: Integer; var CY: Integer) of object; - TEWBSetSecureLockIcon = procedure(ASender: TObject; SecureLockIcon: Integer) of object; - TEWBFileDownload = procedure(ASender: TObject; var Cancel: WordBool) of object; - TEWBNavigateError = procedure(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant; - var Frame: OleVariant; - var StatusCode: OleVariant; - var Cancel: WordBool) of object; - TEWBPrintTemplateInstantiation = procedure(ASender: TObject; const pDisp: IDispatch) of object; - TEWBPrintTemplateTeardown = procedure(ASender: TObject; const pDisp: IDispatch) of object; - TEWBUpdatePageStatus = procedure(ASender: TObject; const pDisp: IDispatch; - var nPage: OleVariant; - var fDone: OleVariant) of object; - TEWBPrivacyImpactedStateChange = procedure(ASender: TObject; bImpacted: WordBool) of object; - TEWBNewWindow3 = procedure(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool; - dwFlags: LongWord; - const bstrUrlContext: WideString; - const bstrUrl: WideString) of object; - - TEWB = class(TOleControl) - private - FOnStatusTextChange: TEWBStatusTextChange; - FOnProgressChange: TEWBProgressChange; - FOnCommandStateChange: TEWBCommandStateChange; - FOnDownloadBegin: TNotifyEvent; - FOnDownloadComplete: TNotifyEvent; - FOnTitleChange: TEWBTitleChange; - FOnPropertyChange: TEWBPropertyChange; - FOnBeforeNavigate2: TEWBBeforeNavigate2; - FOnNewWindow2: TEWBNewWindow2; - FOnNavigateComplete2: TEWBNavigateComplete2; - FOnDocumentComplete: TEWBDocumentComplete; - FOnQuit: TNotifyEvent; - FOnVisible: TEWBOnVisible; - FOnToolBar: TEWBOnToolBar; - FOnMenuBar: TEWBOnMenuBar; - FOnStatusBar: TEWBOnStatusBar; - FOnFullScreen: TEWBOnFullScreen; - FOnTheaterMode: TEWBOnTheaterMode; - FOnAddressBar: TEWBOnAddressBar; - FOnWindowSetResizable: TEWBWindowSetResizable; - FOnWindowSetLeft: TEWBWindowSetLeft; - FOnWindowSetTop: TEWBWindowSetTop; - FOnWindowSetWidth: TEWBWindowSetWidth; - FOnWindowSetHeight: TEWBWindowSetHeight; - FOnWindowClosing: TEWBWindowClosing; - FOnClientToHostWindow: TEWBClientToHostWindow; - FOnSetSecureLockIcon: TEWBSetSecureLockIcon; - FOnFileDownload: TEWBFileDownload; - FOnNavigateError: TEWBNavigateError; - FOnPrintTemplateInstantiation: TEWBPrintTemplateInstantiation; - FOnPrintTemplateTeardown: TEWBPrintTemplateTeardown; - FOnUpdatePageStatus: TEWBUpdatePageStatus; - FOnPrivacyImpactedStateChange: TEWBPrivacyImpactedStateChange; - FOnNewWindow3: TEWBNewWindow3; - FIntf: IWebBrowser2; - function GetControlInterface: IWebBrowser2; - protected - procedure CreateControl; - procedure InitControlData; override; - function Get_Application: IDispatch; - function Get_Parent: IDispatch; - function Get_Container: IDispatch; - function Get_Document: IDispatch; - public - procedure GoBack; - procedure GoForward; - procedure GoHome; - procedure GoSearch; - procedure Navigate(const URL: WideString); overload; - procedure Navigate(const URL: WideString; var Flags: OleVariant); overload; - procedure Navigate(const URL: WideString; var Flags: OleVariant; var TargetFrameName: OleVariant); overload; - procedure Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant); overload; - procedure Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); overload; - procedure Refresh; - procedure Refresh2; overload; - procedure Refresh2(var Level: OleVariant); overload; - procedure Stop; - procedure Quit; - procedure ClientToWindow(var pcx: SYSINT; var pcy: SYSINT); - procedure PutProperty(const Property_: WideString; vtValue: OleVariant); - function GetProperty(const Property_: WideString): OleVariant; - procedure Navigate2(var URL: OleVariant); overload; - procedure Navigate2(var URL: OleVariant; var Flags: OleVariant); overload; - procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; var TargetFrameName: OleVariant); overload; - procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant); overload; - procedure Navigate2(var URL: OleVariant; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); overload; - function QueryStatusWB(cmdID: OLECMDID): OLECMDF; - procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT); overload; - procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleVariant); overload; - procedure ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleVariant; - var pvaOut: OleVariant); overload; - procedure ShowBrowserBar(var pvaClsid: OleVariant); overload; - procedure ShowBrowserBar(var pvaClsid: OleVariant; var pvarShow: OleVariant); overload; - procedure ShowBrowserBar(var pvaClsid: OleVariant; var pvarShow: OleVariant; - var pvarSize: OleVariant); overload; - property ControlInterface: IWebBrowser2 read GetControlInterface; - property DefaultInterface: IWebBrowser2 read GetControlInterface; - property Application: IDispatch index 200 read GetIDispatchProp; - property Parent: IDispatch index 201 read GetIDispatchProp; - property Container: IDispatch index 202 read GetIDispatchProp; - property Document: IDispatch index 203 read GetIDispatchProp; - property TopLevelContainer: WordBool index 204 read GetWordBoolProp; - property type_: WideString index 205 read GetWideStringProp; - property LocationName: WideString index 210 read GetWideStringProp; - property LocationURL: WideString index 211 read GetWideStringProp; - property Busy: WordBool index 212 read GetWordBoolProp; - property Name: WideString index 0 read GetWideStringProp; - property HWND: Integer index - 515 read GetIntegerProp; - property FullName: WideString index 400 read GetWideStringProp; - property Path: WideString index 401 read GetWideStringProp; - property ReadyState: TOleEnum index - 525 read GetTOleEnumProp; - published - property Anchors; - property TabStop; - property Align; - property DragCursor; - property DragMode; - property ParentShowHint; - property PopupMenu; - property ShowHint; - property TabOrder; - property OnDragDrop; - property OnDragOver; - property OnEndDrag; - property OnEnter; - property OnExit; - property OnStartDrag; - property Visible: WordBool index 402 read GetWordBoolProp write SetWordBoolProp stored False; - property StatusBar: WordBool index 403 read GetWordBoolProp write SetWordBoolProp stored False; - property StatusText: WideString index 404 read GetWideStringProp write SetWideStringProp stored False; - property ToolBar: Integer index 405 read GetIntegerProp write SetIntegerProp stored False; - property MenuBar: WordBool index 406 read GetWordBoolProp write SetWordBoolProp stored False; - property FullScreen: WordBool index 407 read GetWordBoolProp write SetWordBoolProp stored False; - property Offline: WordBool index 550 read GetWordBoolProp write SetWordBoolProp stored False; - property Silent: WordBool index 551 read GetWordBoolProp write SetWordBoolProp stored False; - property RegisterAsBrowser: WordBool index 552 read GetWordBoolProp write SetWordBoolProp stored False; - property RegisterAsDropTarget: WordBool index 553 read GetWordBoolProp write SetWordBoolProp stored False; - property TheaterMode: WordBool index 554 read GetWordBoolProp write SetWordBoolProp stored False; - property AddressBar: WordBool index 555 read GetWordBoolProp write SetWordBoolProp stored False; - property Resizable: WordBool index 556 read GetWordBoolProp write SetWordBoolProp stored False; - property OnStatusTextChange: TEWBStatusTextChange read FOnStatusTextChange write FOnStatusTextChange; - property OnProgressChange: TEWBProgressChange read FOnProgressChange write FOnProgressChange; - property OnCommandStateChange: TEWBCommandStateChange read FOnCommandStateChange write FOnCommandStateChange; - property OnDownloadBegin: TNotifyEvent read FOnDownloadBegin write FOnDownloadBegin; - property OnDownloadComplete: TNotifyEvent read FOnDownloadComplete write FOnDownloadComplete; - property OnTitleChange: TEWBTitleChange read FOnTitleChange write FOnTitleChange; - property OnPropertyChange: TEWBPropertyChange read FOnPropertyChange write FOnPropertyChange; - property OnBeforeNavigate2: TEWBBeforeNavigate2 read FOnBeforeNavigate2 write FOnBeforeNavigate2; - property OnNewWindow2: TEWBNewWindow2 read FOnNewWindow2 write FOnNewWindow2; - property OnNavigateComplete2: TEWBNavigateComplete2 read FOnNavigateComplete2 write FOnNavigateComplete2; - property OnDocumentComplete: TEWBDocumentComplete read FOnDocumentComplete write FOnDocumentComplete; - property OnQuit: TNotifyEvent read FOnQuit write FOnQuit; - property OnVisible: TEWBOnVisible read FOnVisible write FOnVisible; - property OnToolBar: TEWBOnToolBar read FOnToolBar write FOnToolBar; - property OnMenuBar: TEWBOnMenuBar read FOnMenuBar write FOnMenuBar; - property OnStatusBar: TEWBOnStatusBar read FOnStatusBar write FOnStatusBar; - property OnFullScreen: TEWBOnFullScreen read FOnFullScreen write FOnFullScreen; - property OnTheaterMode: TEWBOnTheaterMode read FOnTheaterMode write FOnTheaterMode; - property OnAddressBar: TEWBOnAddressBar read FOnAddressBar write FOnAddressBar; - property OnWindowSetResizable: TEWBWindowSetResizable read FOnWindowSetResizable write FOnWindowSetResizable; - property OnWindowSetLeft: TEWBWindowSetLeft read FOnWindowSetLeft write FOnWindowSetLeft; - property OnWindowSetTop: TEWBWindowSetTop read FOnWindowSetTop write FOnWindowSetTop; - property OnWindowSetWidth: TEWBWindowSetWidth read FOnWindowSetWidth write FOnWindowSetWidth; - property OnWindowSetHeight: TEWBWindowSetHeight read FOnWindowSetHeight write FOnWindowSetHeight; - property OnWindowClosing: TEWBWindowClosing read FOnWindowClosing write FOnWindowClosing; - property OnClientToHostWindow: TEWBClientToHostWindow read FOnClientToHostWindow write FOnClientToHostWindow; - property OnSetSecureLockIcon: TEWBSetSecureLockIcon read FOnSetSecureLockIcon write FOnSetSecureLockIcon; - property OnFileDownload: TEWBFileDownload read FOnFileDownload write FOnFileDownload; - property OnNavigateError: TEWBNavigateError read FOnNavigateError write FOnNavigateError; - property OnPrintTemplateInstantiation: TEWBPrintTemplateInstantiation read FOnPrintTemplateInstantiation write FOnPrintTemplateInstantiation; - property OnPrintTemplateTeardown: TEWBPrintTemplateTeardown read FOnPrintTemplateTeardown write FOnPrintTemplateTeardown; - property OnUpdatePageStatus: TEWBUpdatePageStatus read FOnUpdatePageStatus write FOnUpdatePageStatus; - property OnPrivacyImpactedStateChange: TEWBPrivacyImpactedStateChange read FOnPrivacyImpactedStateChange write FOnPrivacyImpactedStateChange; - property OnNewWindow3: TEWBNewWindow3 read FOnNewWindow3 write FOnNewWindow3; - end; - -// *********************************************************************// -// The Class CoInternetExplorer provides a Create and CreateRemote method to -// create instances of the default interface IWebBrowser2 exposed by -// the CoClass InternetExplorer. The functions are intended to be used by -// clients wishing to automate the CoClass objects exposed by the -// server of this typelibrary. -// *********************************************************************// - CoInternetExplorer = class - class function Create: IWebBrowser2; - class function CreateRemote(const MachineName: string): IWebBrowser2; - end; - -// *********************************************************************// -// The Class CoShellBrowserWindow provides a Create and CreateRemote method to -// create instances of the default interface IWebBrowser2 exposed by -// the CoClass ShellBrowserWindow. The functions are intended to be used by -// clients wishing to automate the CoClass objects exposed by the -// server of this typelibrary. -// *********************************************************************// - CoShellBrowserWindow = class - class function Create: IWebBrowser2; - class function CreateRemote(const MachineName: string): IWebBrowser2; - end; - -// *********************************************************************// -// The Class CoShellWindows provides a Create and CreateRemote method to -// create instances of the default interface IShellWindows exposed by -// the CoClass ShellWindows. The functions are intended to be used by -// clients wishing to automate the CoClass objects exposed by the -// server of this typelibrary. -// *********************************************************************// - CoShellWindows = class - class function Create: IShellWindows; - class function CreateRemote(const MachineName: string): IShellWindows; - end; - -// *********************************************************************// -// The Class CoShellUIHelper provides a Create and CreateRemote method to -// create instances of the default interface IShellUIHelper3 exposed by -// the CoClass ShellUIHelper. The functions are intended to be used by -// clients wishing to automate the CoClass objects exposed by the -// server of this typelibrary. -// *********************************************************************// - CoShellUIHelper = class - class function Create: IShellUIHelper3; - class function CreateRemote(const MachineName: string): IShellUIHelper3; - end; - -// *********************************************************************// -// The Class CoShellNameSpace provides a Create and CreateRemote method to -// create instances of the default interface IShellNameSpace exposed by -// the CoClass ShellNameSpace. The functions are intended to be used by -// clients wishing to automate the CoClass objects exposed by the -// server of this typelibrary. -// *********************************************************************// - CoShellNameSpace = class - class function Create: IShellNameSpace; - class function CreateRemote(const MachineName: string): IShellNameSpace; - end; - -// *********************************************************************// -// The Class CoShellShellNameSpace provides a Create and CreateRemote method to -// create instances of the default interface IShellNameSpace exposed by -// the CoClass ShellShellNameSpace. The functions are intended to be used by -// clients wishing to automate the CoClass objects exposed by the -// server of this typelibrary. -// *********************************************************************// - CoShellShellNameSpace = class - class function Create: IShellNameSpace; - class function CreateRemote(const MachineName: string): IShellNameSpace; - end; - -// *********************************************************************// -// The Class CoCScriptErrorList provides a Create and CreateRemote method to -// create instances of the default interface IScriptErrorList exposed by -// the CoClass CScriptErrorList. The functions are intended to be used by -// clients wishing to automate the CoClass objects exposed by the -// server of this typelibrary. -// *********************************************************************// - CoCScriptErrorList = class - class function Create: IScriptErrorList; - class function CreateRemote(const MachineName: string): IScriptErrorList; - end; - - -implementation - -uses ComObj; - -var - VarEmptyParam: OleVariant; - -procedure TEWB_V1.InitControlData; -const - CEventDispIDs: array[0..16] of DWORD = ( - $00000064, $00000065, $00000066, $0000006C, $00000068, $00000069, - $0000006A, $0000006B, $00000071, $000000C8, $000000C9, $000000CC, - $00000067, $0000006D, $0000006E, $0000006F, $00000070); - CControlData: TControlData2 = ( - ClassID: '{EAB22AC3-30C1-11CF-A7EB-0000C05BAE0B}'; - EventIID: '{EAB22AC2-30C1-11CF-A7EB-0000C05BAE0B}'; - EventCount: 17; - EventDispIDs: @CEventDispIDs; - LicenseKey: nil (*HR:$80040111*); - Flags: $00000000; - Version: 401); -begin - ControlData := @CControlData; - TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnBeforeNavigate) - Cardinal(Self); -end; - -procedure TEWB_V1.CreateControl; - - procedure DoCreate; - begin - FIntf := IUnknown(OleObject) as IWebBrowser; - end; - -begin - if FIntf = nil then - DoCreate; -end; - -function TEWB_V1.GetControlInterface: IWebBrowser; -begin - CreateControl; - Result := FIntf; -end; - -function TEWB_V1.Get_Application: IDispatch; -begin - Result := DefaultInterface.Application; -end; - -function TEWB_V1.Get_Parent: IDispatch; -begin - Result := DefaultInterface.Parent; -end; - -function TEWB_V1.Get_Container: IDispatch; -begin - Result := DefaultInterface.Container; -end; - -function TEWB_V1.Get_Document: IDispatch; -begin - Result := DefaultInterface.Document; -end; - -procedure TEWB_V1.GoBack; -begin - DefaultInterface.GoBack; -end; - -procedure TEWB_V1.GoForward; -begin - DefaultInterface.GoForward; -end; - -procedure TEWB_V1.GoHome; -begin - DefaultInterface.GoHome; -end; - -procedure TEWB_V1.GoSearch; -begin - DefaultInterface.GoSearch; -end; - -procedure TEWB_V1.Navigate(const URL: WideString); -begin - DefaultInterface.Navigate(URL, EmptyParam, EmptyParam, VarEmptyParam, EmptyParam); -end; - -procedure TEWB_V1.Navigate(const URL: WideString; var Flags: OleVariant); -begin - DefaultInterface.Navigate(URL, Flags, EmptyParam, VarEmptyParam, EmptyParam); -end; - -procedure TEWB_V1.Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant); -begin - DefaultInterface.Navigate(URL, Flags, TargetFrameName, VarEmptyParam, EmptyParam); -end; - -procedure TEWB_V1.Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant); -begin - DefaultInterface.Navigate(URL, Flags, TargetFrameName, VarEmptyParam, EmptyParam); -end; - -procedure TEWB_V1.Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); -begin - DefaultInterface.Navigate(URL, Flags, TargetFrameName, PostData, Headers); -end; - -procedure TEWB_V1.Refresh; -begin - DefaultInterface.Refresh; -end; - -procedure TEWB_V1.Refresh2; -var - Level: OleVariant; -begin - Level := EmptyParam; - DefaultInterface.Refresh2(Level); -end; - -procedure TEWB_V1.Refresh2(var Level: OleVariant); -begin - DefaultInterface.Refresh2(Level); -end; - -procedure TEWB_V1.Stop; -begin - DefaultInterface.Stop; -end; - -procedure TEWB.InitControlData; -const - CEventDispIDs: array[0..33] of DWORD = ( - $00000066, $0000006C, $00000069, $0000006A, $00000068, $00000071, - $00000070, $000000FA, $000000FB, $000000FC, $00000103, $000000FD, - $000000FE, $000000FF, $00000100, $00000101, $00000102, $00000104, $00000105, - $00000106, $00000108, $00000109, $0000010A, $0000010B, $00000107, - $0000010C, $0000010D, $0000010E, $0000010F, $000000E1, $000000E2, - $000000E3, $00000110, $00000111); - CControlData: TControlData2 = ( - ClassID: '{8856F961-340A-11D0-A96B-00C04FD705A2}'; - EventIID: '{34A715A0-6587-11D0-924A-0020AFC7AC4D}'; - EventCount: 34; - EventDispIDs: @CEventDispIDs; - LicenseKey: nil (*HR:$80040111*); - Flags: $00000000; - Version: 401); -begin - ControlData := @CControlData; - TControlData2(CControlData).FirstEventOfs := Cardinal(@@FOnStatusTextChange) - Cardinal(Self); -end; - -procedure TEWB.CreateControl; - - procedure DoCreate; - begin - FIntf := IUnknown(OleObject) as IWebBrowser2; - end; - -begin - if not Assigned(FIntf) then - DoCreate; -end; - -function TEWB.GetControlInterface: IWebBrowser2; -begin - CreateControl; - Result := FIntf; -end; - -function TEWB.Get_Application: IDispatch; -begin - Result := DefaultInterface.Application; -end; - -function TEWB.Get_Parent: IDispatch; -begin - Result := DefaultInterface.Parent; -end; - -function TEWB.Get_Container: IDispatch; -begin - Result := DefaultInterface.Container; -end; - -function TEWB.Get_Document: IDispatch; -begin - Result := DefaultInterface.Document; -end; - -procedure TEWB.GoBack; -begin - DefaultInterface.GoBack; -end; - -procedure TEWB.GoForward; -begin - DefaultInterface.GoForward; -end; - -procedure TEWB.GoHome; -begin - DefaultInterface.GoHome; -end; - -procedure TEWB.GoSearch; -begin - DefaultInterface.GoSearch; -end; - -procedure TEWB.Navigate(const URL: WideString); -begin - DefaultInterface.Navigate(URL, EmptyParam, EmptyParam, VarEmptyParam, EmptyParam); -end; - -procedure TEWB.Navigate(const URL: WideString; var Flags: OleVariant); -begin - DefaultInterface.Navigate(URL, Flags, EmptyParam, VarEmptyParam, EmptyParam); -end; - -procedure TEWB.Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant); -begin - DefaultInterface.Navigate(URL, Flags, TargetFrameName, VarEmptyParam, EmptyParam); -end; - -procedure TEWB.Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant); -begin - DefaultInterface.Navigate(URL, Flags, TargetFrameName, PostData, EmptyParam); -end; - -procedure TEWB.Navigate(const URL: WideString; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); -begin - DefaultInterface.Navigate(URL, Flags, TargetFrameName, PostData, Headers); -end; - -procedure TEWB.Refresh; -begin - DefaultInterface.Refresh; -end; - -procedure TEWB.Refresh2; -begin - DefaultInterface.Refresh2(VarEmptyParam); -end; - -procedure TEWB.Refresh2(var Level: OleVariant); -begin - DefaultInterface.Refresh2(Level); -end; - -procedure TEWB.Stop; -begin - DefaultInterface.Stop; -end; - -procedure TEWB.Quit; -begin - DefaultInterface.Quit; -end; - -procedure TEWB.ClientToWindow(var pcx: SYSINT; var pcy: SYSINT); -begin - DefaultInterface.ClientToWindow(pcx, pcy); -end; - -procedure TEWB.PutProperty(const Property_: WideString; vtValue: OleVariant); -begin - DefaultInterface.PutProperty(Property_, vtValue); -end; - -function TEWB.GetProperty(const Property_: WideString): OleVariant; -begin - Result := DefaultInterface.GetProperty(Property_); -end; - -procedure TEWB.Navigate2(var URL: OleVariant); -begin - DefaultInterface.Navigate2(URL, VarEmptyParam, VarEmptyParam, VarEmptyParam, VarEmptyParam); -end; - -procedure TEWB.Navigate2(var URL: OleVariant; var Flags: OleVariant); -begin - DefaultInterface.Navigate2(URL, Flags, VarEmptyParam, VarEmptyParam, VarEmptyParam); -end; - -procedure TEWB.Navigate2(var URL: OleVariant; var Flags: OleVariant; - var TargetFrameName: OleVariant); -begin - DefaultInterface.Navigate2(URL, Flags, TargetFrameName, VarEmptyParam, VarEmptyParam); -end; - -procedure TEWB.Navigate2(var URL: OleVariant; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant); -begin - DefaultInterface.Navigate2(URL, Flags, TargetFrameName, PostData, VarEmptyParam); -end; - -procedure TEWB.Navigate2(var URL: OleVariant; var Flags: OleVariant; - var TargetFrameName: OleVariant; var PostData: OleVariant; - var Headers: OleVariant); -begin - DefaultInterface.Navigate2(URL, Flags, TargetFrameName, PostData, Headers); -end; - -function TEWB.QueryStatusWB(cmdID: OLECMDID): OLECMDF; -begin - Result := DefaultInterface.QueryStatusWB(cmdID); -end; - -procedure TEWB.ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT); -begin - DefaultInterface.ExecWB(cmdID, cmdexecopt, VarEmptyParam, VarEmptyParam); -end; - -procedure TEWB.ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleVariant); -begin - DefaultInterface.ExecWB(cmdID, cmdexecopt, pvaIn, VarEmptyParam); -end; - -procedure TEWB.ExecWB(cmdID: OLECMDID; cmdexecopt: OLECMDEXECOPT; var pvaIn: OleVariant; - var pvaOut: OleVariant); -begin - DefaultInterface.ExecWB(cmdID, cmdexecopt, pvaIn, pvaOut); -end; - -procedure TEWB.ShowBrowserBar(var pvaClsid: OleVariant); -begin - DefaultInterface.ShowBrowserBar(pvaClsid, VarEmptyParam, VarEmptyParam); -end; - -procedure TEWB.ShowBrowserBar(var pvaClsid: OleVariant; var pvarShow: OleVariant); -begin - DefaultInterface.ShowBrowserBar(pvaClsid, pvarShow, VarEmptyParam); -end; - -procedure TEWB.ShowBrowserBar(var pvaClsid: OleVariant; var pvarShow: OleVariant; - var pvarSize: OleVariant); -begin - DefaultInterface.ShowBrowserBar(pvaClsid, pvarShow, pvarSize); -end; - -class function CoInternetExplorer.Create: IWebBrowser2; -begin - Result := CreateComObject(CLASS_InternetExplorer) as IWebBrowser2; -end; - -class function CoInternetExplorer.CreateRemote(const MachineName: string): IWebBrowser2; -begin - Result := CreateRemoteComObject(MachineName, CLASS_InternetExplorer) as IWebBrowser2; -end; - -class function CoShellBrowserWindow.Create: IWebBrowser2; -begin - Result := CreateComObject(CLASS_ShellBrowserWindow) as IWebBrowser2; -end; - -class function CoShellBrowserWindow.CreateRemote(const MachineName: string): IWebBrowser2; -begin - Result := CreateRemoteComObject(MachineName, CLASS_ShellBrowserWindow) as IWebBrowser2; -end; - -class function CoShellWindows.Create: IShellWindows; -begin - Result := CreateComObject(CLASS_ShellWindows) as IShellWindows; -end; - -class function CoShellWindows.CreateRemote(const MachineName: string): IShellWindows; -begin - Result := CreateRemoteComObject(MachineName, CLASS_ShellWindows) as IShellWindows; -end; - -class function CoShellUIHelper.Create: IShellUIHelper3; -begin - Result := CreateComObject(CLASS_ShellUIHelper) as IShellUIHelper3; -end; - -class function CoShellUIHelper.CreateRemote(const MachineName: string): IShellUIHelper3; -begin - Result := CreateRemoteComObject(MachineName, CLASS_ShellUIHelper) as IShellUIHelper3; -end; - -class function CoShellNameSpace.Create: IShellNameSpace; -begin - Result := CreateComObject(CLASS_ShellNameSpace) as IShellNameSpace; -end; - -class function CoShellNameSpace.CreateRemote(const MachineName: string): IShellNameSpace; -begin - Result := CreateRemoteComObject(MachineName, CLASS_ShellNameSpace) as IShellNameSpace; -end; - -class function CoShellShellNameSpace.Create: IShellNameSpace; -begin - Result := CreateComObject(CLASS_ShellShellNameSpace) as IShellNameSpace; -end; - -class function CoShellShellNameSpace.CreateRemote(const MachineName: string): IShellNameSpace; -begin - Result := CreateRemoteComObject(MachineName, CLASS_ShellShellNameSpace) as IShellNameSpace; -end; - -class function CoCScriptErrorList.Create: IScriptErrorList; -begin - Result := CreateComObject(CLASS_CScriptErrorList) as IScriptErrorList; -end; - -class function CoCScriptErrorList.CreateRemote(const MachineName: string): IScriptErrorList; -begin - Result := CreateRemoteComObject(MachineName, CLASS_CScriptErrorList) as IScriptErrorList; -end; - - - -end. diff --git a/windows/src/ext/embeddedwb/Source/SecurityManager.pas b/windows/src/ext/embeddedwb/Source/SecurityManager.pas deleted file mode 100644 index 080908d707..0000000000 --- a/windows/src/ext/embeddedwb/Source/SecurityManager.pas +++ /dev/null @@ -1,402 +0,0 @@ -//************************************************************** -// * -// SecurityManager * * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Per Linds Larsen * -// per.lindsoe@larsen.dk * -// * -// Contributions: * -// Eran Bodankin (bsalsa) bsalsa@gmail.com * -// - D2005 update * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: SecurityManager.pas,v 1.2 2006/11/15 21:01:44 sergev Exp $ - -unit SecurityManager; - -interface - -{$I EWB.inc} - -uses - Activex, UrlMon, Windows, SysUtils, Classes, EwbIEConst; - -const - DefaultActions: array[0..24] of DWORD = ( - $00001001, $00001004, $00001200, $00001201, $00001400, $00001402, - $00001405, $00001406, $00001407, $00001601, $00001604, $00001605, - $00001606, $00001607, $00001800, $00001802, $00001803, $00001804, - $00001805, $00001A00, $00001A02, $00001A03, $00001A04, $00001C00, - $00001E05); - -type - TJavaPolicyOption = (Prohibited, High, Medium, Low, Custom); - TAllowDisAllowPolicyOption = (Allow, Disallow); - -const - JavaPolicyValues: array[0..4] of Cardinal = - (URLPOLICY_JAVA_PROHIBIT, - URLPOLICY_JAVA_HIGH, - URLPOLICY_JAVA_MEDIUM, - URLPOLICY_JAVA_LOW, - URLPOLICY_JAVA_CUSTOM); - AllowDisallowValues: array[0..1] of Cardinal = (URLPOLICY_ALLOW, URLPOLICY_DISALLOW); - -type - TActiveXOptions = TAllowDisAllowPolicyOption; - TJavaPermissionsOptions = TJavaPolicyOption; - TScriptOptions = TAllowDisallowPolicyOption; - TSubmitFormsOptions = TAllowDisallowPolicyOption; - TCrossDomainDataOptions = TAllowDisallowPolicyOption; - - TUrlPolicyOptions = class(TPersistent) - private - FActiveX: TActiveXOptions; - FCrossDomainData: TCrossDomainDataOptions; - FJavaPermissions: TJavaPermissionsOptions; - FSubmitForms: TSubmitFormsOptions; - FScriptOptions: TScriptOptions; - published - property ActiveX: TActiveXOptions read FActiveX write FActiveX; - property CrossDomainData: TCrossDomainDataOptions read FCrossDomainData write FCrossDomainData; - property SubmitForms: TSubmitFormsOptions read FSubmitForms write FSubmitForms; - property JavaPermissions: TJavaPermissionsOptions read FJavaPermissions write FJavaPermissions; - property Scripts: TScriptOptions read FScriptOptions write FScriptOptions; - end; - TSetSecuritySiteEvent = function(Site: IInternetSecurityMgrSite): HResult of object; - TGetSecuritySiteEvent = function(out Site: IInternetSecurityMgrSite): HResult of object; - TMapUrlToZoneEvent = function(pwszUrl: LPCWSTR; out dwZone: DWORD; - dwFlags: DWORD): HResult of object; - TGetSecurityIdEvent = function(pwszUrl: LPCWSTR; pbSecurityId: Pointer; - var cbSecurityId: DWORD; dwReserved: DWORD): HResult of object; - TProcessUrlActionEvent = function(pwszUrl: LPCWSTR; dwAction: DWORD; - pPolicy: Pointer; cbPolicy: DWORD; pContext: Pointer; cbContext: DWORD; - dwFlags, dwReserved: DWORD): HResult of object; - TQueryCustomPolicyEvent = function(pwszUrl: LPCWSTR; const guidKey: TGUID; - out pPolicy: Pointer; out cbPolicy: DWORD; pContext: Pointer; cbContext: DWORD; - dwReserved: DWORD): HResult of object; - TSetZoneMappingEvent = function(dwZone: DWORD; lpszPattern: LPCWSTR; - dwFlags: DWORD): HResult of object; - TGetZoneMappingsEvent = function(dwZone: DWORD; out enumString: IEnumString; - dwFlags: DWORD): HResult of object; - TSecurityManager = class(TComponent, IInternetSecurityManager) - private - { Private declarations } - FSetSecuritySite: TSetSecuritySiteEvent; - FGetSecuritySite: TGetSecuritySiteEvent; - FMapUrlToZone: TMapUrlToZoneEvent; - FGetSecurityID: TGetSecurityIDEvent; - FProcessUrlAction: TProcessUrlActionEvent; - FQueryCustomPolicy: TQueryCustomPolicyEvent; - FSetZoneMapping: TSetZoneMappingEvent; - FGetZoneMappings: TGetZoneMappingsEvent; - FUrlPolicyOptions: TUrlPolicyOptions; - protected - { Protected declarations } - public - { Public declarations } - function QueryInterface(const IID: TGUID; out Obj): HResult; override; - function SetSecuritySite(Site: IInternetSecurityMgrSite): HResult; stdcall; - function GetSecuritySite(out Site: IInternetSecurityMgrSite): HResult; stdcall; - function MapUrlToZone(pwszUrl: LPCWSTR; out dwZone: DWORD; - dwFlags: DWORD): HResult; stdcall; - function GetSecurityId(pwszUrl: LPCWSTR; pbSecurityId: Pointer; - var cbSecurityId: DWORD; dwReserved: DWORD): HResult; stdcall; - function ProcessUrlAction(pwszUrl: LPCWSTR; dwAction: DWORD; - pPolicy: Pointer; cbPolicy: DWORD; pContext: Pointer; cbContext: DWORD; - dwFlags, dwReserved: DWORD): HResult; stdcall; - function QueryCustomPolicy(pwszUrl: LPCWSTR; const guidKey: TGUID; - out pPolicy: Pointer; out cbPolicy: DWORD; pContext: Pointer; cbContext: DWORD; - dwReserved: DWORD): HResult; stdcall; - function SetZoneMapping(dwZone: DWORD; lpszPattern: LPCWSTR; - dwFlags: DWORD): HResult; stdcall; - function GetZoneMappings(dwZone: DWORD; out enumString: IEnumString; - dwFlags: DWORD): HResult; stdcall; - constructor Create(Owner: TComponent); override; - destructor Destroy; override; - - published - { Published declarations } - property OnSetSecuritySite: TSetSecuritySiteEvent read FSetSecuritySite write FSetSecuritySite; - property OnGetSecuritySite: TGetSecuritySiteEvent read FGetSecuritySite write FGetSecuritySite; - property OnMapUrlToZone: TMapUrlToZoneEvent read FMapUrlToZone write FMapUrlToZone; - property OnGetSecurityID: TGetSecurityIDEvent read FGetSecurityID write FGetSecurityID; - property OnProcessUrlAction: TProcessUrlActionEvent read FProcessUrlAction write FProcessUrlAction; - property OnQueryCustomPolicy: TQueryCustomPolicyEvent read FQueryCustomPolicy write FQueryCustomPolicy; - property OnSetZoneMapping: TSetZoneMappingEvent read FSetZoneMapping write FSetZoneMapping; - property OnGetZoneMappings: TGetZoneMappingsEvent read FGetZoneMappings write FGetZoneMappings; - property UrlPolicy: TUrlPolicyOptions read FUrlPolicyOptions write FUrlPolicyOptions; - end; - -function DisplayAction(UrlAction: DWORD): string; -function DisplayPolicy(UrlAction, UrlPolicy: DWORD): string; - -implementation - -// Helper/debug function - -function DisplayPolicy(UrlAction, UrlPolicy: DWORD): string; -begin - case UrlPolicy of - URLPOLICY_ALLOW: Result := 'URLPOLICY_ALLOW'; - URLPOLICY_DISALLOW: Result := 'URLPOLICY_DISALLOW'; - URLPOLICY_QUERY: Result := 'URLPOLICY_QUERY'; - URLPOLICY_ACTIVEX_CHECK_LIST: Result := 'URLPOLICY_ACTIVEX_CHECK_LIST'; - URLPOLICY_MASK_PERMISSIONS: Result := 'URLPOLICY_MASK_PERMISSIONS'; - URLPOLICY_LOG_ON_DISALLOW: Result := 'URLPOLICY_LOG_ON_DISALLOW'; - URLPOLICY_LOG_ON_ALLOW: Result := 'URLPOLICY_LOG_ON_ALLOW'; - URLPOLICY_NOTIFY_ON_DISALLOW: Result := 'URLPOLICY_NOTIFY_ON_DISALLOW'; - URLPOLICY_NOTIFY_ON_ALLOW: Result := 'URLPOLICY_NOTIFY_ON_ALLOW'; - end; - if UrlAction = URLACTION_CREDENTIALS_USE then - begin - if UrlPolicy = URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY then - Result := 'URLPOLICY_CREDENTIALS_ANONYMOUS_ONLY' - else - if UrlPolicy = URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT then - Result := 'URLPOLICY_CREDENTIALS_CONDITIONAL_PROMPT' - else - if UrlPolicy = URLPOLICY_CREDENTIALS_MUST_PROMPT_USER then - Result := 'URLPOLICY_CREDENTIALS_MUST_PROMPT_USER' - else - if UrlPolicy = URLPOLICY_CREDENTIALS_SILENT_LOGON_OK then - Result := 'URLPOLICY_CREDENTIALS_SILENT_LOGON_OK'; - end - else - if UrlAction = URLACTION_CHANNEL_SOFTDIST_PERMISSIONS then - begin - if UrlPolicy = URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL then - Result := 'URLPOLICY_CHANNEL_SOFTDIST_AUTOINSTALL' - else - if UrlPolicy = URLPOLICY_CHANNEL_SOFTDIST_PRECACHE then - Result := 'URLPOLICY_CHANNEL_SOFTDIST_PRECACHE' - else - if UrlPolicy = URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT then - Result := 'URLPOLICY_CHANNEL_SOFTDIST_PROHIBIT' - else - end - else - if UrlAction = URLACTION_JAVA_PERMISSIONS then - begin - if UrlPolicy = URLPOLICY_JAVA_CUSTOM then - Result := 'URLPOLICY_JAVA_CUSTOM' - else - if UrlPolicy = URLPOLICY_JAVA_MEDIUM then - Result := 'URLPOLICY_JAVA_MEDIUM' - else - if UrlPolicy = URLPOLICY_JAVA_LOW then - Result := 'URLPOLICY_JAVA_LOW' - else - if UrlPolicy = URLPOLICY_JAVA_HIGH then - Result := 'URLPOLICY_JAVA_HIGH' - else - if UrlPolicy = URLPOLICY_JAVA_PROHIBIT then - Result := 'URLPOLICY_JAVA_PROHIBIT'; - end; -end; - -// Helper/debug function - -function DisplayAction(UrlAction: DWORD): string; -begin - case - UrlAction of - URLACTION_DOWNLOAD_SIGNED_ACTIVEX: Result := 'URLACTION_DOWNLOAD_SIGNED_ACTIVEX'; - URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX: Result := 'URLACTION_DOWNLOAD_UNSIGNED_ACTIVEX'; - URLACTION_ACTIVEX_RUN: Result := 'URLACTION_ACTIVEX_RUN'; - URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY: Result := 'URLACTION_ACTIVEX_OVERRIDE_OBJECT_SAFETY'; - URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY: Result := 'URLACTION_ACTIVEX_OVERRIDE_DATA_SAFETY'; - URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY: Result := 'URLACTION_ACTIVEX_OVERRIDE_SCRIPT_SAFETY'; - URLACTION_SCRIPT_OVERRIDE_SAFETY: Result := 'URLACTION_SCRIPT_OVERRIDE_SAFETY'; - URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY: Result := 'URLACTION_ACTIVEX_CONFIRM_NOOBJECTSAFETY'; - URLACTION_ACTIVEX_TREATASUNTRUSTED: Result := 'URLACTION_ACTIVEX_TREATASUNTRUSTED'; - URLACTION_CROSS_DOMAIN_DATA: Result := 'URLACTION_CROSS_DOMAIN_DATA'; - URLACTION_HTML_SUBFRAME_NAVIGATE: Result := 'URLACTION_HTML_SUBFRAME_NAVIGATE'; - URLACTION_HTML_USERDATA_SAVE: Result := 'URLACTION_HTML_USERDATA_SAVE'; - URLACTION_COOKIES: Result := 'URLACTION_COOKIES'; - URLACTION_COOKIES_SESSION: Result := 'URLACTION_COOKIES_SESSION'; - URLACTION_SCRIPT_PASTE: Result := 'URLACTION_SCRIPT_PASTE'; - URLACTION_SCRIPT_RUN: Result := 'URLACTION_SCRIPT_RUN'; - URLACTION_SCRIPT_JAVA_USE: Result := 'URLACTION_SCRIPT_JAVA_USE'; - URLACTION_SCRIPT_SAFE_ACTIVEX: Result := 'URLACTION_SCRIPT_SAFE_ACTIVEX'; - URLACTION_HTML_SUBMIT_FORMS: Result := 'URLACTION_HTML_SUBMIT_FORMS'; - URLACTION_HTML_SUBMIT_FORMS_FROM: Result := 'URLACTION_HTML_SUBMIT_FORMS_FROM'; - URLACTION_HTML_SUBMIT_FORMS_TO: Result := 'URLACTION_HTML_SUBMIT_FORMS_TO'; - URLACTION_HTML_FONT_DOWNLOAD: Result := 'URLACTION_HTML_FONT_DOWNLOAD'; - URLACTION_HTML_JAVA_RUN: Result := 'URLACTION_HTML_JAVA_RUN'; - URLACTION_SHELL_INSTALL_DTITEMS: Result := 'URLACTION_SHELL_INSTALL_DTITEMS'; - URLACTION_SHELL_MOVE_OR_COPY: Result := 'URLACTION_SHELL_MOVE_OR_COPY'; - URLACTION_SHELL_FILE_DOWNLOAD: Result := 'URLACTION_SHELL_FILE_DOWNLOAD'; - URLACTION_SHELL_VERB: Result := 'URLACTION_SHELL_VERB'; - URLACTION_SHELL_WEBVIEW_VERB: Result := 'URLACTION_SHELL_WEBVIEW_VERB'; - URLACTION_CREDENTIALS_USE: Result := 'URLACTION_CREDENTIALS_USE'; - URLACTION_CLIENT_CERT_PROMPT: Result := 'URLACTION_CLIENT_CERT_PROMPT'; - URLACTION_AUTHENTICATE_CLIENT: Result := 'URLACTION_AU:TICATE_CLIENT'; - URLACTION_JAVA_PERMISSIONS: Result := 'URLACTION_JAVA_PERMISSIONS'; - URLACTION_INFODELIVERY_NO_ADDING_CHANNELS: Result := 'URLACTION_INFODELIVERY_NO_ADDING_CHANNELS'; - URLACTION_INFODELIVERY_NO_EDITING_CHANNELS: Result := 'URLACTION_INFODELIVERY_NO_EDITING_CHANNELS'; - URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS: Result := 'URLACTION_INFODELIVERY_NO_REMOVING_CHANNELS'; - URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS: Result := 'URLACTION_INFODELIVERY_NO_ADDING_SUBSCRIPTIONS'; - URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS: Result := 'URLACTION_INFODELIVERY_NO_EDITING_SUBSCRIPTIONS'; - URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS: Result := 'URLACTION_INFODELIVERY_NO_REMOVING_SUBSCRIPTIONS'; - URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING: Result := 'URLACTION_INFODELIVERY_NO_CHANNEL_LOGGING'; - URLACTION_CHANNEL_SOFTDIST_PERMISSIONS: Result := 'URLACTION_CHANNEL_SOFTDIST_PERMISSIONS'; - end; -end; - -{ TSecurityManager } - -constructor TSecurityManager.Create(Owner: TComponent); -begin - inherited; - FUrlPolicyOptions := TUrlPolicyOptions.Create; -end; - -destructor TSecurityManager.Destroy; -begin - FUrlPolicyOptions.Free; - inherited; -end; - -function TSecurityManager.GetSecurityId(pwszUrl: LPCWSTR; - pbSecurityId: Pointer; var cbSecurityId: DWORD; - dwReserved: DWORD): HResult; -begin - if Assigned(FGetSecurityID) then - Result := FGetSecurityID(pwszUrl, pbSecurityID, cbSecurityID, dwReserved) - else - Result := INET_E_DEFAULT_ACTION; -end; - -function TSecurityManager.GetSecuritySite( - out Site: IInternetSecurityMgrSite): HResult; -begin - if Assigned(FGetSecuritySite) then - Result := FGetSecuritySite(site) - else - Result := INET_E_DEFAULT_ACTION; -end; - -function TSecurityManager.GetZoneMappings(dwZone: DWORD; - out enumString: IEnumString; dwFlags: DWORD): HResult; -begin - if Assigned(FGetZoneMappings) then - Result := FGetZoneMappings(dwZone, enumString, dwFlags) - else - Result := INET_E_DEFAULT_ACTION; -end; - -function TSecurityManager.MapUrlToZone(pwszUrl: LPCWSTR; out dwZone: DWORD; - dwFlags: DWORD): HResult; -begin - if Assigned(FMapUrlToZone) then - Result := FMapUrlToZone(pwszUrl, dwZone, dwFlags) - else - Result := INET_E_DEFAULT_ACTION; -end; - -function TSecurityManager.ProcessUrlAction(pwszUrl: LPCWSTR; - dwAction: DWORD; pPolicy: Pointer; cbPolicy: DWORD; pContext: Pointer; - cbContext, dwFlags, dwReserved: DWORD): HResult; -var - dwPolicy: DWORD; -begin - if Assigned(FProcessUrlAction) then - Result := FProcessUrlAction(pwszUrl, dwAction, pPolicy, cbPolicy, pContext, cbContext, dwFlags, dwReserved) - else - begin - Result := S_FALSE; - dwPolicy := URLPOLICY_ALLOW; - if (dwAction <= URLACTION_ACTIVEX_MAX) and (dwAction >= URLACTION_ACTIVEX_MIN) - then - dwPolicy := AllowDisallowValues[Ord(FUrlPolicyOptions.FActiveX)] - else - - if ((dwAction <= URLACTION_JAVA_MAX) and (dwAction >= URLACTION_JAVA_MIN)) or - (dwAction = URLACTION_HTML_JAVA_RUN) then - dwPolicy := JavaPolicyValues[Ord(FUrlPolicyOptions.FJavaPermissions)] - else - - if ((dwAction = URLACTION_HTML_SUBMIT_FORMS_TO) or (dwAction = URLACTION_HTML_SUBMIT_FORMS_FROM)) then - dwPolicy := AllowDisallowValues[Ord(FUrlPolicyOptions.FSubmitforms)] - else - - if (dwAction = URLACTION_CROSS_DOMAIN_DATA) then - dwPolicy := AllowDisallowValues[Ord(FUrlPolicyOptions.FCrossDomainData)] - else - - if (dwAction <= URLACTION_SCRIPT_MAX) and (dwAction >= URLACTION_SCRIPT_MIN) then - dwPolicy := AllowDisallowValues[Ord(FUrlPolicyOptions.FScriptOptions)] - else - - Result := INET_E_DEFAULT_ACTION; - if (Result = S_FALSE) and (cbPolicy >= SizeOf(DWORD)) then - begin - Dword(ppolicy^) := dwpolicy; - Result := S_OK; - end; - end; -end; - -function TSecurityManager.QueryCustomPolicy(pwszUrl: LPCWSTR; - const guidKey: TGUID; out pPolicy: Pointer; out cbPolicy: DWORD; - pContext: Pointer; cbContext, dwReserved: DWORD): HResult; -begin - if Assigned(FQueryCustomPolicy) then - Result := FQueryCustomPolicy(pwszUrl, guidKey, pPolicy, cbPolicy, pContext, cbContext, dwReserved) - else - Result := INET_E_DEFAULT_ACTION; -end; - -function TSecurityManager.QueryInterface(const IID: TGUID; - out Obj): HResult; -begin - Result := inherited QueryInterface(iid, obj); -end; - -function TSecurityManager.SetSecuritySite( - Site: IInternetSecurityMgrSite): HResult; -begin - if Assigned(FSetSecuritySite) then - Result := FSetSecuritySite(site) - else - Result := INET_E_DEFAULT_ACTION; -end; - -function TSecurityManager.SetZoneMapping(dwZone: DWORD; - lpszPattern: LPCWSTR; dwFlags: DWORD): HResult; -begin - if Assigned(FSetZoneMapping) then - Result := FSetZoneMapping(dwZone, lpszPattern, dwFlags) - else - Result := INET_E_DEFAULT_ACTION; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/SendMail_For_Ewb.pas b/windows/src/ext/embeddedwb/Source/SendMail_For_Ewb.pas deleted file mode 100644 index ca7543d9bc..0000000000 --- a/windows/src/ext/embeddedwb/Source/SendMail_For_Ewb.pas +++ /dev/null @@ -1,518 +0,0 @@ -{ I got Permission to add the SendMail component and to change the code - by my needs from Mike Shkolnik - We thank him for that. - You can find Mike's full components package at http://www.scalabium.com. - bsalsa - -Copyright (C) 1998-2004, written by Mike Shkolnik, Scalabium Software - E-Mail: mshkolnik@scalabium.com - WEB: http://www.scalabium.com - tel: 380-/44/-552-10-29 -} - -unit SendMail_For_Ewb; - -interface - -{$I EWB.inc} - -uses - Classes, Dialogs, Controls, Messages, MAPI; - -type - TEwbMapiMail = class; - - TSendMailThread = class(TThread) - private - EwbMapiMail: TEwbMapiMail; - public - procedure Execute; override; - constructor Create(AMapiMail: TEwbMapiMail); - end; - - TEwbMapiMail = class(TComponent) - private - { Private declarations } - FLastError: Integer; - - FSubject: string; - FBody: string; - - FSenderName: string; - FSenderAddress: string; - - FRecipients: TStrings; - FAttachments: TStrings; - FAttachmentNames: TStrings; - - FEditDialog: Boolean; - FResolveNames: Boolean; - FRequestReceipt: Boolean; - - procedure SetRecipients(Value: TStrings); - procedure SetAttachments(Value: TStrings); - procedure SetAttachmentNames(Value: TStrings); - protected - { Protected declarations } - public - { Public declarations } - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - - function Send: Boolean; - - property LastError: Integer read FLastError; - published - { Published declarations } - property Subject: string read FSubject write FSubject; - property Body: string read FBody write FBody; - - property Recipients: TStrings read FRecipients write SetRecipients; - property Attachments: TStrings read FAttachments write SetAttachments; - property AttachmentNames: TStrings read FAttachmentNames write - SetAttachmentNames; - - property EditDialog: Boolean read FEditDialog write FEditDialog; - property ResolveNames: Boolean read FResolveNames write FResolveNames; - property RequestReceipt: Boolean read FRequestReceipt write FRequestReceipt; - - property SenderName: string read FSenderName write FSenderName; - property SenderAddress: string read FSenderAddress write FSenderAddress; - end; - -{$IFDEF UNICODE} -function SendEMailByMAPI(SenderName, SenderAddress, Subject, Body: string; - Recipients, Attachments, AttachmentNames: TStrings; WithOpenMessage, - ResolveNames, NeedReceipt: Boolean; intMAPISession: - Integer): Integer; overload; -{$ENDIF UNICODE} -function SendEMailByMAPI(SenderName, SenderAddress, Subject, Body: Ansistring; - Recipients, Attachments, AttachmentNames: TStrings; WithOpenMessage, - ResolveNames, NeedReceipt: Boolean; intMAPISession: - Integer): Integer; overload; - -function MAPIErrorDescription(intErrorCode: Integer): string; - -implementation - -uses -{$IFDEF UNICODE} - AnsiStrings, -{$ENDIF UNICODE} - Windows, SysUtils, Registry, Forms; - -function MAPIErrorDescription(intErrorCode: Integer): string; -begin - case intErrorCode of - MAPI_E_USER_ABORT: Result := 'User cancelled request'; - MAPI_E_FAILURE: Result := 'General MAPI failure'; - MAPI_E_LOGON_FAILURE: Result := 'Logon failure'; - MAPI_E_DISK_FULL: Result := 'Disk full'; - MAPI_E_INSUFFICIENT_MEMORY: Result := 'Insufficient memory'; - MAPI_E_ACCESS_DENIED: Result := 'Access denied'; - MAPI_E_TOO_MANY_SESSIONS: Result := 'Too many sessions'; - MAPI_E_TOO_MANY_FILES: Result := 'Too many files open'; - MAPI_E_TOO_MANY_RECIPIENTS: Result := 'Too many recipients'; - MAPI_E_ATTACHMENT_NOT_FOUND: Result := 'Attachment not found'; - MAPI_E_ATTACHMENT_OPEN_FAILURE: Result := 'Failed to open attachment'; - MAPI_E_ATTACHMENT_WRITE_FAILURE: Result := 'Failed to write attachment'; - MAPI_E_UNKNOWN_RECIPIENT: Result := 'Unknown recipient'; - MAPI_E_BAD_RECIPTYPE: Result := 'Invalid recipient type'; - MAPI_E_NO_MESSAGES: Result := 'No messages'; - MAPI_E_INVALID_MESSAGE: Result := 'Invalid message'; - MAPI_E_TEXT_TOO_LARGE: Result := 'Text too large.'; - MAPI_E_INVALID_SESSION: Result := 'Invalid session'; - MAPI_E_TYPE_NOT_SUPPORTED: Result := 'Type not supported'; - MAPI_E_AMBIGUOUS_RECIPIENT: Result := 'Ambiguous recipient'; - MAPI_E_MESSAGE_IN_USE: Result := 'Message in use'; - MAPI_E_NETWORK_FAILURE: Result := 'Network failure'; - MAPI_E_INVALID_EDITFIELDS: Result := 'Invalid edit fields'; - MAPI_E_INVALID_RECIPS: Result := 'Invalid recipients'; - MAPI_E_NOT_SUPPORTED: Result := 'Not supported'; - else - Result := 'Unknown Error Code: ' + IntToStr(intErrorCode); - end; -end; - -function GetDefaultLogon(var strDefaultLogon: AnsiString): Boolean; -const - KEYNAME1 = 'Software\Microsoft\Windows Messaging Subsystem\Profiles'; - KEYNAME2 = - 'Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles'; - VALUESTR = 'DefaultProfile'; -begin - Result := False; - strDefaultLogon := ''; - with TRegistry.Create do - try - RootKey := HKEY_CURRENT_USER; - if OpenKey(KEYNAME1, False) then - begin - try - strDefaultLogon := AnsiString(ReadString(VALUESTR)); - Result := True; - except - end; - CloseKey; - end - else if OpenKey(KEYNAME2, False) then - begin - try - strDefaultLogon := AnsiString(ReadString(VALUESTR)); - Result := True; - except - end; - CloseKey; - end - else - finally - Free; - end; -end; - -function SendEMailByMAPI(SenderName, SenderAddress, Subject, Body: AnsiString; - Recipients, Attachments, AttachmentNames: TStrings; WithOpenMessage, - ResolveNames, NeedReceipt: Boolean; intMAPISession: - Integer): Integer; -const - RECIP_MAX = MaxInt div SizeOf(TMapiRecipDesc); - ATTACH_MAX = MaxInt div SizeOf(TMapiFileDesc); -type - TRecipAccessArray = array[0..(RECIP_MAX - 1)] of TMapiRecipDesc; - TlpRecipArray = ^TRecipAccessArray; - - TAttachAccessArray = array[0..(ATTACH_MAX - 1)] of TMapiFileDesc; - TlpAttachArray = ^TAttachAccessArray; - - TszRecipName = array[0..256] of AnsiChar; - TlpszRecipName = ^TszRecipName; - - TszPathName = array[0..256] of AnsiChar; - TlpszPathname = ^TszPathname; - - TszFileName = array[0..256] of AnsiChar; - TlpszFileName = ^TszFileName; - -var - i: Integer; - - Message: TMapiMessage; - lpRecipArray: TlpRecipArray; - lpAttachArray: TlpAttachArray; - - function CheckRecipient(strRecipient: Ansistring): Integer; - var - lpRecip: PMapiRecipDesc; - begin - try - Result := MapiResolveName(0, 0, PAnsiChar(strRecipient), 0, 0, lpRecip); - - if (Result in [MAPI_E_AMBIGUOUS_RECIPIENT, - MAPI_E_UNKNOWN_RECIPIENT]) then - Result := MapiResolveName(0, 0, PAnsiChar(strRecipient), MAPI_DIALOG, 0, - lpRecip); - - AnsiStrings.StrCopy(PAnsiChar(new(TlpszRecipName)), lpRecip^.lpszName); - - if Result = SUCCESS_SUCCESS then - begin - strRecipient := AnsiStrings.StrPas(lpRecip^.lpszName); - with lpRecipArray^[i] do - begin - if lpRecip^.lpszAddress = nil then - begin - lpszAddress := AnsiStrings.StrCopy(new(TlpszRecipName)^, - lpRecip^.lpszName); - end - else - begin - lpszAddress := AnsiStrings.StrCopy(new(TlpszRecipName)^, - lpRecip^.lpszAddress); - end; - ulEIDSize := lpRecip^.ulEIDSize; - lpEntryID := lpRecip^.lpEntryID; - MapiFreeBuffer(lpRecip); - end - end; - finally - end; - end; - - function SendMess: Integer; - const - arrMAPIFlag: array[Boolean] of Word = (0, MAPI_DIALOG); - arrReceipt: array[Boolean] of Word = (0, MAPI_RECEIPT_REQUESTED); - arrLogon: array[Boolean] of Word = (0, MAPI_LOGON_UI or MAPI_NEW_SESSION); - begin - try - Result := MAPISendMail(0, Application.Handle {0}, Message, - arrReceipt[NeedReceipt] or - arrMAPIFlag[WithOpenMessage] or - MAPI_LOGON_UI {or MAPI_NEW_SESSION} or - arrLogon[{True}intMAPISession = 0], - 0); - finally - end; - end; - -var - lpSender: TMapiRecipDesc; - strDefaultProfile, s: AnsiString; -begin - Result := 0; - lpRecipArray := nil; - lpAttachArray := nil; - FillChar(Message, SizeOf(Message), 0); - with Message do - begin - strDefaultProfile := ''; - if GetDefaultLogon(strDefaultProfile) then - begin - try - { try to logon with default profile } - Result := MapiLogOn(0, PAnsiChar(strDefaultProfile), nil, - MAPI_NEW_SESSION, 0, @intMAPISession); - finally - if (Result <> SUCCESS_SUCCESS) then - begin - intMAPISession := 0; - raise Exception.CreateFmt('MAPI Error %d: %s', [Result, - MAPIErrorDescription(Result)]); - end; - end - end; - - if (SenderAddress <> '') then - begin - lpSender.ulRecipClass := MAPI_ORIG; - if (SenderName <> '') then - lpSender.lpszName := PAnsiChar(SenderAddress) - else - lpSender.lpszName := PAnsiChar(SenderName); - lpSender.lpszAddress := PAnsiChar(SenderAddress); - lpSender.ulReserved := 0; - lpSender.ulEIDSize := 0; - lpSender.lpEntryID := nil; - lpOriginator := @lpSender; - end; - - lpszSubject := PAnsiChar(Subject); - lpszNoteText := PAnsiChar(Body); - - if Assigned(Attachments) and (Attachments.Count > 0) then - begin - nFileCount := Attachments.Count; - -{$IFDEF UNICODE} - lpAttachArray := TlpAttachArray(AnsiStrings.AnsiStrAlloc(nFileCount * - SizeOf(TMapiFileDesc))); -{$ELSE} - lpAttachArray := TlpAttachArray(StrAlloc(nFileCount * - SizeOf(TMapiFileDesc))); -{$ENDIF UNICODE} - FillChar(lpAttachArray^, AnsiStrings.StrBufSize(PAnsiChar(lpAttachArray)), 0); - for i := 0 to nFileCount - 1 do - begin - lpAttachArray^[i].nPosition := Cardinal(-1); - //Cardinal($FFFFFFFF); //ULONG(-1); - lpAttachArray^[i].lpszPathName := AnsiStrings.StrPCopy(new(TlpszPathname)^, - AnsiString(Attachments[i])); - if i < AttachmentNames.Count then - begin - lpAttachArray^[i].lpszFileName := - AnsiStrings.StrPCopy(new(TlpszFileName)^, - AnsiString(AttachmentNames[i])) - end - else - begin - lpAttachArray^[i].lpszFileName := - AnsiStrings.StrPCopy(new(TlpszFileName)^, - AnsiString(ExtractFileName(Attachments[i]))); - end; - end; - lpFiles := @lpAttachArray^ - end - else - nFileCount := 0; - end; - - if Assigned(Recipients) and (Recipients.Count > 0) then - begin -{$IFDEF UNICODE} - lpRecipArray := TlpRecipArray(AnsiStrings.AnsiStrAlloc(Recipients.Count * - SizeOf(TMapiRecipDesc))); -{$ELSE} - lpRecipArray := TlpRecipArray(StrAlloc(Recipients.Count * - SizeOf(TMapiRecipDesc))); -{$ENDIF UNICODE} - FillChar(lpRecipArray^, AnsiStrings.StrBufSize(PAnsiChar(lpRecipArray)), 0); - for i := 0 to Recipients.Count - 1 do - begin - s := AnsiString(Recipients[i]); - if (UpperCase(Copy(s, 1, 3)) = 'CC:') then - begin - lpRecipArray^[i].ulRecipClass := MAPI_CC; - Delete(s, 1, 3); - end - else if (UpperCase(Copy(s, 1, 4)) = 'BCC:') then - begin - lpRecipArray^[i].ulRecipClass := MAPI_BCC; - Delete(s, 1, 4); - end - else - lpRecipArray^[i].ulRecipClass := MAPI_TO; - - if ResolveNames then - CheckRecipient(s) - else - begin - lpRecipArray^[i].lpszName := AnsiStrings.StrCopy(new(TlpszRecipName)^, - PAnsiChar(s)); - lpRecipArray^[i].lpszAddress := AnsiStrings.StrCopy(new(TlpszRecipName)^, - PAnsiChar(s)); - end; - end; - Message.nRecipCount := Recipients.Count; - Message.lpRecips := @lpRecipArray^; - end - else - Message.nRecipCount := 0; - - Result := SendMess; - - if Assigned(Attachments) and (Message.nFileCount > 0) then - begin - for i := 0 to Message.nFileCount - 1 do - begin - Dispose(lpAttachArray^[i].lpszPathname); - Dispose(lpAttachArray^[i].lpszFileName); - end; - AnsiStrings.StrDispose(PAnsiChar(lpAttachArray)); - end; - - if Assigned(Recipients) and (Recipients.Count > 0) then - begin - for i := 0 to Message.nRecipCount - 1 do - begin - if Assigned(lpRecipArray^[i].lpszName) then - Dispose(lpRecipArray^[i].lpszName); - - if Assigned(lpRecipArray^[i].lpszAddress) then - Dispose(lpRecipArray^[i].lpszAddress); - end; - AnsiStrings.StrDispose(PAnsiChar(lpRecipArray)); - end; - - if intMAPISession <> 0 then - try - MapiLogOff(intMAPISession, 0, 0, 0); - except - end; -end; - -{$IFDEF UNICODE} - -function SendEMailByMAPI(SenderName, SenderAddress, Subject, Body: string; - Recipients, Attachments, AttachmentNames: TStrings; WithOpenMessage, - ResolveNames, NeedReceipt: Boolean; intMAPISession: - Integer): Integer; -begin - Result := SendEMailByMAPI(AnsiString(SenderName), AnsiString(SenderAddress), - AnsiString(Subject), - AnsiString(Body), Recipients, Attachments, AttachmentNames, WithOpenMessage, - ResolveNames, NeedReceipt, - intMAPISession); -end; -{$ENDIF UNICODE} - -{ TEwbMapiMail } - -constructor TEwbMapiMail.Create(AOwner: TComponent); -begin - inherited Create(AOwner); - EditDialog := True; - FRecipients := TStringList.Create; - FAttachments := TStringList.Create; - FAttachmentNames := TStringList.Create; -end; - -destructor TEwbMapiMail.Destroy; -begin - FRecipients.Free; - Attachments.Free; - AttachmentNames.Free; - inherited Destroy; -end; - -procedure TEwbMapiMail.SetRecipients(Value: TStrings); -begin - FRecipients.Assign(Value) -end; - -procedure TEwbMapiMail.SetAttachments(Value: TStrings); -begin - Attachments.Assign(Value) -end; - -procedure TEwbMapiMail.SetAttachmentNames(Value: TStrings); -begin - AttachmentNames.Assign(Value) -end; - -function TEwbMapiMail.Send: Boolean; -var - SendThread: TSendMailThread; -begin - SendThread := TSendMailThread.Create(Self); - SendThread.FreeOnTerminate := True; - {$IFDEF DELPHI2010_UP} - SendThread.Start; - {$ELSE} - SendThread.Resume; - {$ENDIF} - Result := True; - // FLastError := SendThread.WaitFor; - // FLastError := SendEMailByMAPI(SenderName, SenderAddress, Subject, Body, Recipients, Attachments, AttachmentNames, EditDialog, ResolveNames, RequestReceipt, 0); - // if FLastError = MAPI_E_FAILURE then - // PostMessage(TWinControl(Owner).Handle, WM_SendMail, 0, 0); - // Result := (LastError = SUCCESS_SUCCESS); -end; - -{ TSendMailThread } - -constructor TSendMailThread.Create(AMapiMail: TEwbMapiMail); -begin - inherited Create(True); - EwbMapiMail := AMapiMail; -end; - -procedure TSendMailThread.Execute; -const - WM_SendMail = WM_USER + $100; -var - i: Integer; -begin - with EwbMapiMail do - begin - try - ReturnValue := SendEMailByMAPI(SenderName, SenderAddress, Subject, Body, - Recipients, Attachments, AttachmentNames, EditDialog, ResolveNames, - RequestReceipt, 0); - case ReturnValue of - MAPI_E_FAILURE: - begin - PostMessage(TWinControl(Owner).Handle, WM_SendMail, 0, 0); - end; - end; - finally - for i := 0 to EwbMapiMail.Attachments.Count - 1 do - begin - DeleteFile(EwbMapiMail.Attachments[i]); - end; - end; - end; - EwbMapiMail.Free; - Terminate; -end; - -end. diff --git a/windows/src/ext/embeddedwb/Source/UI_Less.pas b/windows/src/ext/embeddedwb/Source/UI_Less.pas deleted file mode 100644 index 874600396e..0000000000 --- a/windows/src/ext/embeddedwb/Source/UI_Less.pas +++ /dev/null @@ -1,341 +0,0 @@ -{ *********************************************************** -// TUILess - UI_Less parser * -// For Delphi * -// * -// Freeware Component * -// by * -// Per Linds Larsen * // per.lindsoe@larsen.dk * -// Developing Team: * -// bsalsa - bsalsa.com * -// Documentation and updated versions: * -// * -// http://www.bsalsa.com * -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} -//$Id: UI_Less.pas,v 1.3 2006/11/17 12:43:54 bsalsa Exp $ - -unit UI_Less; - -interface - -uses - MsHtml_EWB, UrlMon, ActiveX, Windows, Messages, Classes; - -type - TInvokeEvent = function(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params: TagDispParams; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT of object; - - TUILess = class(TComponent, IUnknown, IDispatch, IPropertyNotifySink, IOleClientSite) - private - FOnInvoke: TInvokeEvent; - FAbout: string; - FEnabled: Boolean; - procedure SetAbout(Value: string); - protected - // IDispatch: http://msdn.microsoft.com/en-us/library/ms221608.aspx - function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT; stdcall; - // IPropertyNotifySink: http://msdn.microsoft.com/en-us/library/ms692638(VS.85).aspx - function OnChanged(dispid: TDispID): HRESULT; stdcall; - function OnRequestEdit(dispid: TDispID): HRESULT; stdcall; - // IOleClientSite: http://msdn.microsoft.com/en-us/library/ms693706.aspx - function SaveObject: HRESULT; stdcall; - function GetMoniker(dwAssign: Longint; dwWhichMoniker: Longint; - out mk: IMoniker): HRESULT; stdcall; - function GetContainer(out container: IOleContainer): HRESULT; stdcall; - function ShowObject: HRESULT; stdcall; - function OnShowWindow(fShow: BOOL): HRESULT; stdcall; - function RequestNewObjectLayout: HRESULT; stdcall; - // - function LoadUrlFromMoniker: HRESULT; - function LoadUrlFromFile: HRESULT; -// * We only use LoadUrlFromMoniker, but we could use LoadUrlFromFile instead. - public - HTMLElementCollection: IHTMLElementCollection; - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function Go(URL: WideString): IHTMLELEMENTCollection; - procedure GetImageList(ImagesList: TStrings); - procedure GetAnchorList(Anchorlist: TStrings); overload; - procedure GetLinkList(LinkList: TStrings); overload; - published - property OnInvoke: TInvokeEvent read FOnInvoke write FOnInvoke; - property Enabled: Boolean read FEnabled write FEnabled default True; - property About: string read fAbout write SetAbout; - end; - -implementation - -uses - EwbIEConst; - -var - Doc: IhtmlDocument2; - _URL: WideString; - -/// CORE ---->>>>>>>>> - -constructor TUILess.Create; -begin - FAbout := 'TUILess parser - ' + WEB_SITE; - FEnabled := True; - inherited; -end; - -destructor TUILess.Destroy; -begin - inherited; -end; - -function TUILess.Go(URL: WideString): IHtmlElementCollection; -const - WM_USER_STARTWALKING = WM_USER + 1; -var - Cookie: Integer; - CP: IConnectionPoint; - OleObject: IOleObject; - OleControl: IOleControl; - CPC: IConnectionPointContainer; - Msg: TMsg; - hr: HRESULT; -begin - if not FEnabled then - Result := nil - else - begin - _URL := Url; - if Succeeded(CoCreateInstance(CLASS_HTMLDocument, nil, CLSCTX_INPROC_SERVER, IID_IHTMLDocument2, Doc)) then - begin - OleObject := Doc as IOleObject; - OleObject.SetClientSite(Self); - OleControl := Doc as IOleControl; - OleControl.OnAmbientPropertyChange(DISPID_AMBIENT_DLCONTROL); - CPC := Doc as IConnectionPointContainer; - if CPC.FindConnectionPoint(IpropertyNotifySink, CP) = S_OK then - begin - if CP.Advise(Self, Cookie) = S_OK then - begin - HR := LoadUrlFromMoniker; // alternative: Hr:= LoadUrlFromFile; - if Succeeded(HR) {or (HR = E_PENDING)} then - while (GetMessage(msg, 0, 0, 0)) do - if ((msg.message = WM_USER_STARTWALKING) and (msg.hwnd = 0)) then - begin - PostQuitMessage(0); - HtmlElementCollection := Doc.Get_all; - Result := HtmlElementCollection; - end - else - DispatchMessage(msg); - end; - end; - end; - end; -end; - -function TUILess.Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HRESULT; -const - DLCTL_NO_SCRIPTS = $00000080; - DLCTL_NO_JAVA = $00000100; - DLCTL_NO_RUNACTIVEXCTLS = $00000200; - DLCTL_NO_DLACTIVEXCTLS = $00000400; - DLCTL_DOWNLOADONLY = $00000800; -var - I: Integer; -begin - Result := E_Fail; - if FEnabled then - begin - if DISPID_AMBIENT_DLCONTROL = DispID then - begin - I := DLCTL_DOWNLOADONLY + DLCTL_NO_SCRIPTS + - DLCTL_NO_JAVA + DLCTL_NO_DLACTIVEXCTLS + - DLCTL_NO_RUNACTIVEXCTLS; - PVariant(VarResult)^ := I; - Result := S_OK; - if Assigned(FOnInvoke) then - FOnInvoke(DispID, IID, LocaleID, Flags, TagDispParams(Params), - VarResult, ExcepInfo, ArgErr) - end - else - Result := DISP_E_MEMBERNOTFOUND; - end; -end; - -function TUILess.OnChanged(dispid: TDispID): HRESULT; -const - WM_USER_STARTWALKING = WM_USER + 1; - READYSTATE_COMPLETE = $00000004; -var - dp: TDispParams; - vResult: OleVariant; -begin - Result := E_Fail; - if FEnabled then - begin - if (DISPID_READYSTATE = Dispid) then - begin - if Succeeded((Doc as IHTMLDocument2).Invoke(DISPID_READYSTATE, GUID_null, - LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYGET, dp, @vresult, nil, nil)) then - if Integer(vResult) = READYSTATE_COMPLETE then - PostThreadMessage(GetCurrentThreadId(), WM_USER_STARTWALKING, 0, 0); - end; - end; -end; - -function TUILess.LoadUrlFromMoniker: HRESULT; -var - Moniker: IMoniker; - BindCtx: IBindCTX; - PM: IPersistMoniker; -begin - Result := E_Fail; - if FEnabled then - begin - if Succeeded(CreateURLMoniker(nil, PWideChar(_URL), Moniker)) then - begin - CreateBindCtx(0, BindCtx); - PM := Doc as IPersistMoniker; - Result := PM.Load(LongBool(0), Moniker, BindCtx, STGM_READ); - end; - end; -end; - -function TUILess.LoadUrlFromFile: HRESULT; -var - PF: IPersistFile; -begin - Result := E_Fail; - if FEnabled then - begin - PF := Doc as IPersistFile; - Result := PF.Load(PWideChar(_URL), 0); - end; -end; - -/// UTILITIES ---------- >>>>>>>>>>>>>>>>>>>>> - -procedure TUILess.GetImageList(ImagesList: TStrings); -var - ImageElement: IHTMLImgElement; - Disp: IDispatch; - i: Integer; -begin - if HtmlElementCollection <> nil then - begin - for i := 0 to HTMLElementCollection.length - 1 do - begin - Disp := HtmlElementCollection.item(i, 0); - if Succeeded(Disp.QueryInterface(IHTMLImgElement, ImageElement)) - then - ImagesList.Add(ImageElement.src); - end; - end; -end; - -procedure TUILess.GetAnchorList(Anchorlist: TStrings); -var - Anchor: IHTMLAnchorElement; - Disp: IDispatch; - x: Integer; -begin - if HTMLElementCollection <> nil then - begin - for x := 0 to HTMLElementCollection.length - 1 do - begin - Disp := HTMLElementCollection.item(x, 0); - if Succeeded(Disp.QueryInterface(IHTMLAnchorElement, Anchor)) - and (anchor.href <> '') then - Anchorlist.Add(Anchor.href); - end; - end; -end; - -procedure TUILess.GetLinkList(LinkList: TStrings); -var - Anchor: IHTMLAnchorElement; - Link: IHTMLElement; - Disp: IDispatch; - i: Integer; -begin - if HTMLElementCollection <> nil then - begin - for i := 0 to HTMLElementCollection.length - 1 do - begin - Disp := HTMLElementCollection.item(i, 0); - if Succeeded(Disp.QueryInterface(IHTMLElement, Link)) and - (Link.innerText <> '') then - begin - if Succeeded(Disp.QueryInterface(IHTMLAnchorElement, Anchor)) - and (Anchor.href <> '') then - LinkList.Add(Link.innerText); - end; - end; - end; -end; - -/// Don't Care ------>>>>>>>>>>> - -procedure TUILess.SetAbout(Value: string); -begin - Exit; -end; - -function TUILess.OnRequestEdit(dispid: TDispID): HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TUILess.SaveObject: HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TUILess.GetMoniker(dwAssign: Longint; dwWhichMoniker: Longint; - out mk: IMoniker): HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TUILess.GetContainer(out container: IOleContainer): HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TUILess.ShowObject: HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TUILess.OnShowWindow(fShow: BOOL): HRESULT; -begin - Result := E_NOTIMPL; -end; - -function TUILess.RequestNewObjectLayout: HRESULT; -begin - Result := E_NOTIMPL; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Source/UrlHistory.pas b/windows/src/ext/embeddedwb/Source/UrlHistory.pas deleted file mode 100644 index b7ae120d55..0000000000 --- a/windows/src/ext/embeddedwb/Source/UrlHistory.pas +++ /dev/null @@ -1,330 +0,0 @@ -//************************************************************** -// * -// UrlHistory * * -// For Delphi 5 to XE * -// Freeware Component * -// by * -// Per Linds Larsen * -// per.lindsoe@larsen.dk * -// * -// Contributions: * -// Eran Bodankin (bsalsa) bsalsa@gmail.com * -// * -// Updated versions: * -// http://www.bsalsa.com * -//************************************************************** - -{*******************************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use, change or modify the component under 4 conditions: -1. In your website, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@gmail.com) any code change in the unit - for the benefit of the other users. -4. Please consider donation in our web site! -{*******************************************************************************} -//$Id: UrlHistory.pas,v 1.2 2006/11/15 21:01:44 sergev Exp $ - -unit UrlHistory; - -interface - -{$I EWB.inc} - -uses - Windows, SysUtils, Classes, ActiveX, ComObj, EwbAcc; - - -type - TSortDirectionOption = (sdAscending, sdDescending); - TSortFieldOption = (sfTitle, sfURL, sfLastVisited, sfLastUpdated, sfExpires); - TSearchFieldOption = (seBoth, seTitle, seURL); - -type - - TOnAcceptEvent = procedure(Title, Url: string; LastVisited, LastUpdated, Expires: TDateTime; - var Accept: Boolean) of object; - - TOnDeleteEvent = procedure(Title, Url: string; LastVisited, LastUpdated, Expires: TDateTime; - var Delete: Boolean) of object; - - TUrlHistory = class(TComponent) - private - { Private declarations } - FSearch: string; - FAccept: Boolean; - FDelete: Boolean; - FOnDelete: TOnDeleteEvent; - FOnAccept: TOnAcceptEvent; - FSortDirection: TSortDirectionOption; - FSortField: TSortFieldOption; - FSearchField: TSearchFieldOption; - Stg: IUrlHistoryStg2; - Enum: IEnumStatUrl; - protected - { Protected declarations } - procedure ClearList; - procedure Accept(Title, Url: string; LastVisited, LastUpdated, Expires: TDateTime; - var Accept: Boolean); - procedure Delete(Title, Url: string; LastVisited, LastUpdated, Expires: TDateTime; - var Delete: Boolean); - procedure Loaded; override; - public - Items: TList; - { Public declarations } - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; - function Enumerate: Integer; - function DeleteEntries: Integer; - function AddUrl(Url: PWideChar; Title: PWideChar): HRESULT; - function DeleteUrl(Url: PWideChar): HRESULT; - function QueryUrl(Url: PWideChar; var Entry: TEntry): HRESULT; - function ClearHistory: HRESULT; - - published - { Published declarations } - property OnAccept: TOnAcceptEvent read FOnAccept write FOnAccept; - property OnDelete: TOnDeleteEvent read FOnDelete write FOnDelete; - property SortField: TSortFieldOption read FSortField write FSortField; - property SearchField: TSearchFieldOption read FSearchField write FSearchField; - property Search: string read FSearch write FSearch; - property SortDirection: TSortDirectionOption read FSortDirection write FSortDirection; - end; - -implementation - -var - Ascending: Boolean; - -function TitleSortFunc(Item1, Item2: Pointer): Integer; -begin - if ((PEntry(Item1).Title < PEntry(Item2).Title) and Ascending) - or ((PEntry(Item1).Title > PEntry(Item2).Title) and not Ascending) then - Result := -1 - else - if PEntry(Item1).Title = PEntry(Item2).Title then - Result := 0 - else - Result := 1; -end; - -function UrlSortFunc(Item1, Item2: Pointer): Integer; -begin - if ((PEntry(Item1).Url < PEntry(Item2).Url) and Ascending) - or ((PEntry(Item1).Url > PEntry(Item2).Url) and not Ascending) then - Result := -1 - else - if PEntry(Item1).Url = PEntry(Item2).Url then - Result := 0 - else - Result := 1; -end; - -function LastVisitedSortFunc(Item1, Item2: Pointer): Integer; -begin - if ((PEntry(Item1).LastVisited < PEntry(Item2).LastVisited) and Ascending) - or ((PEntry(Item1).LastVisited > PEntry(Item2).LastVisited) and not Ascending) - then - Result := -1 - else - if PEntry(Item1).LastVisited = PEntry(Item2).LastVisited then - Result := 0 - else - Result := 1; -end; - -function LastUpdatedSortFunc(Item1, Item2: Pointer): Integer; -begin - if ((PEntry(Item1).LastUpdated < PEntry(Item2).LastUpdated) and Ascending) - or ((PEntry(Item1).LastUpdated > PEntry(Item2).LastUpdated) and not Ascending) then - Result := -1 - else - if PEntry(Item1).LastUpdated = PEntry(Item2).LastUpdated then - Result := 0 - else - Result := 1; -end; - -function ExpiresSortFunc(Item1, Item2: Pointer): Integer; -begin - if ((PEntry(Item1).Expires < PEntry(Item2).Expires) and Ascending) - or ((PEntry(Item1).Expires > PEntry(Item2).Expires) and not Ascending) then - Result := -1 - else - if PEntry(Item1).Expires = PEntry(Item2).Expires then - Result := 0 - else - Result := 1; -end; - -function FileTimeToDt(Ft: TFileTime): TDateTime; -var - l: Integer; - lft: TFileTime; -begin - FileTimeToLocalFiletime(Ft, lft); - if FileTimeToDosDateTime(lft, Longrec(l).Hi, Longrec(l).Lo) then - Result := FileDateToDatetime(l) - else - Result := 0; -end; - -{ TUrlHistory } - -function TUrlHistory.AddUrl(Url, Title: PWideChar): HRESULT; -begin - Result := Stg.AddUrl(Url, Title, 0); -end; - -function TUrlHistory.ClearHistory: HRESULT; -begin - Result := Stg.ClearHistory; -end; - -constructor TUrlHistory.Create(AOwner: TComponent); -begin - inherited; -end; - -function TUrlHistory.DeleteUrl(Url: PWideChar): HRESULT; -begin - Result := stg.DeleteUrl(Url, 0); -end; - -procedure TUrlHistory.ClearList; -var - I: Integer; -begin - if Items <> nil then - begin - for I := 0 to Pred(Items.Count) do - Dispose(PEntry(Items[i])); - Items.Clear; - end; -end; - -function TUrlHistory.Enumerate: Integer; -var - staturl: TStaturl; - title, Url: string; - Entry: PEntry; - Fetched: Integer; -begin - ClearList; - Stg.EnumUrls(Enum); - while Enum.Next(1, StatUrl, @Fetched) = S_OK do - begin - Url := PWideChar(Pointer(Staturl.pwcsUrl)); - Title := PWideChar(Pointer(Staturl.pwcsTitle)); - if FSearch <> '' then - if ((FSearchField = seUrl) and (Pos(FSearch, Url) = 0)) or - ((FSearchField = seTitle) and (Pos(FSearch, Title) = 0)) or - ((FSearchField = seBoth) and ((Pos(FSearch, Url) = 0)) or (Pos(FSearch, Title) = 0)) then - Continue; - Entry := New(PEntry); - Entry.Url := Url; - Entry.Title := Title; - Entry.Lastvisited := FileTimeToDt(Staturl.ftLastVisited); - Entry.LastUpdated := FileTimeToDt(Staturl.ftLastUpdated); - Entry.Expires := FileTimeToDt(Staturl.ftExpires); - FAccept := True; - if Assigned(FOnAccept) then - FOnAccept(Entry.Title, Entry.Url, Entry.LastVisited, Entry.LastUpdated, Entry.Expires, FAccept); - if FAccept then - Items.Add(Entry); - end; - Ascending := BOOL(FSortDirection = sdAscending); - case FSortField of - sfTitle: Items.Sort(TitleSortFunc); - sfUrl: Items.Sort(UrlSortFunc); - sfLastVisited: Items.Sort(LastVisitedSortFunc); - sfLastUpdated: Items.Sort(LastUpdatedSortFunc); - sfExpires: Items.Sort(ExpiresSortFunc); - end; - Result := Items.Count; -end; - -procedure TUrlHistory.Loaded; -const - CLSID_CUrlHistory: TGUID = '{3C374A40-BAE4-11CF-BF7D-00AA006946EE}'; -begin - inherited; - Items := TList.Create; - Stg := CreateComObject(CLSID_CUrlHistory) as IUrlHistoryStg2; -end; - -destructor TUrlHistory.Destroy; -begin - Clearlist; - if Items <> nil then - Items.Free; - inherited; -end; - -procedure TUrlHistory.Accept(Title, Url: string; LastVisited, LastUpdated, - Expires: TDateTime; var Accept: Boolean); -begin -// -end; - -procedure TUrlHistory.Delete(Title, Url: string; LastVisited, LastUpdated, - Expires: TDateTime; var Delete: Boolean); -begin -// -end; - -function TUrlHistory.DeleteEntries: Integer; -var - StatUrl: TStatUrl; - Fetched: Integer; -begin - Result := 0; - Stg.EnumUrls(Enum); - while enum.Next(1, StatUrl, @Fetched) = S_OK do - begin - FDelete := False; - if Assigned(FOnDelete) then - FOnDelete(PWideChar(Pointer(Staturl.pwcsUrl)), - PWideChar(Pointer(Staturl.pwcsTitle)), - FileTimeToDt(Staturl.ftLastVisited), - FileTimeToDt(Staturl.ftLastUpdated), - FileTimeToDt(Staturl.ftExpires), - FDelete); - if FDelete then - begin - Stg.DeleteUrl(PWideChar(Pointer(Staturl.pwcsUrl)), 0); - Inc(Result); - end; - end; -end; - -function TUrlHistory.QueryUrl(Url: PWideChar; var Entry: TEntry): HRESULT; -var - StatUrl: TSTATURL; -begin - Result := Stg.QueryUrl(Url, 0, StatUrl); - if Result = S_OK then - begin - Entry.Url := PWideChar(Pointer(Staturl.pwcsUrl)); - Entry.Title := PWideChar(Pointer(Staturl.pwcsTitle)); - Entry.LastVisited := FileTimeToDt(Staturl.ftLastVisited); - Entry.LastUpdated := FileTimeToDt(Staturl.ftLastUpdated); - Entry.Expires := FileTimeToDt(Staturl.ftExpires); - end; -end; - -end. - diff --git a/windows/src/ext/embeddedwb/Source/Wcrypt2.pas b/windows/src/ext/embeddedwb/Source/Wcrypt2.pas deleted file mode 100644 index 42c1ae46fc..0000000000 --- a/windows/src/ext/embeddedwb/Source/Wcrypt2.pas +++ /dev/null @@ -1,7870 +0,0 @@ -{******************************************************************} -{ } -{ Borland Delphi Runtime Library } -{ Cryptographic API interface unit } -{ } -{ Portions created by Microsoft are } -{ Copyright (C) 1993-1998 Microsoft Corporation. } -{ All Rights Reserved. } -{ } -{ The original file is: wincrypt.h, 1992 - 1997 } -{ The original Pascal code is: wcrypt2.pas, released 01 Jan 1998 } -{ The initial developer of the Pascal code is } -{ Massimo Maria Ghisalberti (nissl@dada.it) } -{ } -{ Portions created by Massimo Maria Ghisalberti are } -{ Copyright (C) 1997-1998 Massimo Maria Ghisalberti } -{ } -{ Contributor(s): } -{ Peter Tang (peter.tang@citicorp.com) } -{ Phil Shrimpton (phil@shrimpton.co.uk) } -{ } -{ Obtained through: } -{ } -{ Joint Endeavour of Delphi Innovators (Project JEDI) } -{ } -{ You may retrieve the latest version of this file at the Project } -{ JEDI home page, located at http://delphi-jedi.org } -{ } -{ The contents of this file are used with permission, subject to } -{ the Mozilla Public License Version 1.1 (the "License"); you may } -{ not use this file except in compliance with the License. You may } -{ obtain a copy of the License at } -{ http://www.mozilla.org/MPL/MPL-1.1.html } -{ } -{ 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. } -{ } -{******************************************************************} -//$Id: Wcrypt2.pas,v 1.2 2006/11/15 21:01:44 sergev Exp $ - -unit wcrypt2; - -{.DEFINE NT5} - -{$ALIGN ON} - -{$IFNDEF VER90} -{$WEAKPACKAGEUNIT} -{$ENDIF} - -interface - -uses - Windows -{$IFDEF VER90} - , Ole2 -{$ENDIF}; - -const - ADVAPI32 = 'advapi32.dll'; - CRYPT32 = 'crypt32.dll'; - SOFTPUB = 'softpub.dll'; -{$IFDEF NT5} - ADVAPI32NT5 = 'advapi32.dll'; -{$ENDIF} - -{Support Type} - -type - PVOID = Pointer; - LONG = DWORD; -{$IFDEF UNICODE} - LPAWSTR = PWideChar; -{$ELSE} - LPAWSTR = PAnsiChar; -{$ENDIF} - -//----------------------------------------------------------------------------- - // Type support for a pointer to an array of pointer (type **name) - PLPSTR = Pointer; // type for a pointer to Array of pointer a type - PPCERT_INFO = Pointer; // type for a pointer to Array of pointer a type - PPVOID = Pointer; // type for a pointer to Array of pointer a type - PPCCERT_CONTEXT = Pointer; // type for a pointer to Array of pointer a type - PPCCTL_CONTEXT = Pointer; // type for a pointer to Array of pointer a type - PPCCRL_CONTEXT = Pointer; // type for a pointer to Array of pointer a type -//----------------------------------------------------------------------------- - -//+--------------------------------------------------------------------------- -// -// Microsoft Windows -// Copyright (C) Microsoft Corporation, 1992 - 1997. -// -// File: wincrypt.h -// -// Contents: Cryptographic API Prototypes and Definitions -// -//---------------------------------------------------------------------------- - - -// -// Algorithm IDs and Flags -// - -// ALG_ID crackers -function GET_ALG_CLASS(x: integer): integer; -function GET_ALG_TYPE(x: integer): integer; -function GET_ALG_SID(x: integer): integer; - -const - // Algorithm classes - ALG_CLASS_ANY = 0; - ALG_CLASS_SIGNATURE = (1 shl 13); - ALG_CLASS_MSG_ENCRYPT = (2 shl 13); - ALG_CLASS_DATA_ENCRYPT = (3 shl 13); - ALG_CLASS_HASH = (4 shl 13); - ALG_CLASS_KEY_EXCHANGE = (5 shl 13); - - // Algorithm types - ALG_TYPE_ANY = 0; - ALG_TYPE_DSS = (1 shl 9); - ALG_TYPE_RSA = (2 shl 9); - ALG_TYPE_BLOCK = (3 shl 9); - ALG_TYPE_STREAM = (4 shl 9); - ALG_TYPE_DH = (5 shl 9); - ALG_TYPE_SECURECHANNEL = (6 shl 9); - - // Generic sub-ids - ALG_SID_ANY = 0; - - // Some RSA sub-ids - ALG_SID_RSA_ANY = 0; - ALG_SID_RSA_PKCS = 1; - ALG_SID_RSA_MSATWORK = 2; - ALG_SID_RSA_ENTRUST = 3; - ALG_SID_RSA_PGP = 4; - - // Some DSS sub-ids - ALG_SID_DSS_ANY = 0; - ALG_SID_DSS_PKCS = 1; - ALG_SID_DSS_DMS = 2; - - // Block cipher sub ids - // DES sub_ids - ALG_SID_DES = 1; - ALG_SID_3DES = 3; - ALG_SID_DESX = 4; - ALG_SID_IDEA = 5; - ALG_SID_CAST = 6; - ALG_SID_SAFERSK64 = 7; - ALD_SID_SAFERSK128 = 8; - ALG_SID_SAFERSK128 = 8; - ALG_SID_3DES_112 = 9; - ALG_SID_CYLINK_MEK = 12; - ALG_SID_RC5 = 13; - - // Fortezza sub-ids - ALG_SID_SKIPJACK = 10; - ALG_SID_TEK = 11; - - // KP_MODE - CRYPT_MODE_CBCI = 6; {ANSI CBC Interleaved} - CRYPT_MODE_CFBP = 7; {ANSI CFB Pipelined} - CRYPT_MODE_OFBP = 8; {ANSI OFB Pipelined} - CRYPT_MODE_CBCOFM = 9; {ANSI CBC + OF Masking} - CRYPT_MODE_CBCOFMI = 10; {ANSI CBC + OFM Interleaved} - - // RC2 sub-ids - ALG_SID_RC2 = 2; - - // Stream cipher sub-ids - ALG_SID_RC4 = 1; - ALG_SID_SEAL = 2; - - // Diffie-Hellman sub-ids - ALG_SID_DH_SANDF = 1; - ALG_SID_DH_EPHEM = 2; - ALG_SID_AGREED_KEY_ANY = 3; - ALG_SID_KEA = 4; - - // Hash sub ids - ALG_SID_MD2 = 1; - ALG_SID_MD4 = 2; - ALG_SID_MD5 = 3; - ALG_SID_SHA = 4; - ALG_SID_SHA1 = 4; - ALG_SID_MAC = 5; - ALG_SID_RIPEMD = 6; - ALG_SID_RIPEMD160 = 7; - ALG_SID_SSL3SHAMD5 = 8; - ALG_SID_HMAC = 9; - - // secure channel sub ids - ALG_SID_SSL3_MASTER = 1; - ALG_SID_SCHANNEL_MASTER_HASH = 2; - ALG_SID_SCHANNEL_MAC_KEY = 3; - ALG_SID_PCT1_MASTER = 4; - ALG_SID_SSL2_MASTER = 5; - ALG_SID_TLS1_MASTER = 6; - ALG_SID_SCHANNEL_ENC_KEY = 7; - - // Our silly example sub-id - ALG_SID_EXAMPLE = 80; - -{$IFNDEF ALGIDDEF} -{$DEFINE ALGIDDEF} -type ALG_ID = ULONG; -{$ENDIF} - -// algorithm identifier definitions -const - CALG_MD2 = (ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_MD2); - CALG_MD4 = (ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_MD4); - CALG_MD5 = (ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_MD5); - CALG_SHA = (ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_SHA); - CALG_SHA1 = (ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_SHA1); - CALG_MAC = (ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_MAC); - CALG_RSA_SIGN = (ALG_CLASS_SIGNATURE or ALG_TYPE_RSA or ALG_SID_RSA_ANY); - CALG_DSS_SIGN = (ALG_CLASS_SIGNATURE or ALG_TYPE_DSS or ALG_SID_DSS_ANY); - CALG_RSA_KEYX = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_RSA or ALG_SID_RSA_ANY); - CALG_DES = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_DES); - CALG_3DES_112 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_3DES_112); - CALG_3DES = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_3DES); - CALG_RC2 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_RC2); - CALG_RC4 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_STREAM or ALG_SID_RC4); - CALG_SEAL = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_STREAM or ALG_SID_SEAL); - CALG_DH_SF = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_DH or ALG_SID_DH_SANDF); - CALG_DH_EPHEM = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_DH or ALG_SID_DH_EPHEM); - CALG_AGREEDKEY_ANY = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_DH or ALG_SID_AGREED_KEY_ANY); - CALG_KEA_KEYX = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_DH or ALG_SID_KEA); - CALG_HUGHES_MD5 = (ALG_CLASS_KEY_EXCHANGE or ALG_TYPE_ANY or ALG_SID_MD5); - CALG_SKIPJACK = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_SKIPJACK); - CALG_TEK = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_TEK); - CALG_CYLINK_MEK = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_CYLINK_MEK); - CALG_SSL3_SHAMD5 = (ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_SSL3SHAMD5); - CALG_SSL3_MASTER = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SSL3_MASTER); - CALG_SCHANNEL_MASTER_HASH = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SCHANNEL_MASTER_HASH); - CALG_SCHANNEL_MAC_KEY = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SCHANNEL_MAC_KEY); - CALG_SCHANNEL_ENC_KEY = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SCHANNEL_ENC_KEY); - CALG_PCT1_MASTER = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_PCT1_MASTER); - CALG_SSL2_MASTER = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_SSL2_MASTER); - CALG_TLS1_MASTER = (ALG_CLASS_MSG_ENCRYPT or ALG_TYPE_SECURECHANNEL or ALG_SID_TLS1_MASTER); - CALG_RC5 = (ALG_CLASS_DATA_ENCRYPT or ALG_TYPE_BLOCK or ALG_SID_RC5); - CALG_HMAC = (ALG_CLASS_HASH or ALG_TYPE_ANY or ALG_SID_HMAC); - -type - PVTableProvStruc = ^VTableProvStruc; - VTableProvStruc = record - Version: DWORD; - FuncVerifyImage: TFarProc; - FuncReturnhWnd: TFarProc; - dwProvType: DWORD; - pbContextInfo: PBYTE; - cbContextInfo: DWORD; - end; - -//type HCRYPTPROV = ULONG; -//type HCRYPTKEY = ULONG; -//type HCRYPTHASH = ULONG; - - -const - // dwFlags definitions for CryptAcquireContext - CRYPT_VERIFYCONTEXT = $F0000000; - CRYPT_NEWKEYSET = $00000008; - CRYPT_DELETEKEYSET = $00000010; - CRYPT_MACHINE_KEYSET = $00000020; - - // dwFlag definitions for CryptGenKey - CRYPT_EXPORTABLE = $00000001; - CRYPT_USER_PROTECTED = $00000002; - CRYPT_CREATE_SALT = $00000004; - CRYPT_UPDATE_KEY = $00000008; - CRYPT_NO_SALT = $00000010; - CRYPT_PREGEN = $00000040; - CRYPT_RECIPIENT = $00000010; - CRYPT_INITIATOR = $00000040; - CRYPT_ONLINE = $00000080; - CRYPT_SF = $00000100; - CRYPT_CREATE_IV = $00000200; - CRYPT_KEK = $00000400; - CRYPT_DATA_KEY = $00000800; - - // dwFlags definitions for CryptDeriveKey - CRYPT_SERVER = $00000400; - - KEY_LENGTH_MASK = $FFFF0000; - - // dwFlag definitions for CryptExportKey - CRYPT_Y_ONLY = $00000001; - CRYPT_SSL2_SLUMMING = $00000002; - - // dwFlags definitions for CryptHashSessionKey - CRYPT_LITTLE_ENDIAN = $00000001; - - // dwFlag definitions for CryptSetProviderEx and CryptGetDefaultProvider - CRYPT_MACHINE_DEFAULT = $00000001; - CRYPT_USER_DEFAULT = $00000002; - CRYPT_DELETE_DEFAULT = $00000004; - - // exported key blob definitions - SIMPLEBLOB = $1; - PUBLICKEYBLOB = $6; - PRIVATEKEYBLOB = $7; - PLAINTEXTKEYBLOB = $8; - AT_KEYEXCHANGE = 1; - AT_SIGNATURE = 2; - CRYPT_USERDATA = 1; - - // dwParam - KP_IV = 1; // Initialization vector - KP_SALT = 2; // Salt value - KP_PADDING = 3; // Padding values - KP_MODE = 4; // Mode of the cipher - KP_MODE_BITS = 5; // Number of bits to feedback - KP_PERMISSIONS = 6; // Key permissions DWORD - KP_ALGID = 7; // Key algorithm - KP_BLOCKLEN = 8; // Block size of the cipher - KP_KEYLEN = 9; // Length of key in bits - KP_SALT_EX = 10; // Length of salt in bytes - KP_P = 11; // DSS/Diffie-Hellman P value - KP_G = 12; // DSS/Diffie-Hellman G value - KP_Q = 13; // DSS Q value - KP_X = 14; // Diffie-Hellman X value - KP_Y = 15; // Y value - KP_RA = 16; // Fortezza RA value - KP_RB = 17; // Fortezza RB value - KP_INFO = 18; // for putting information into an RSA envelope - KP_EFFECTIVE_KEYLEN = 19; // setting and getting RC2 effective key length - KP_SCHANNEL_ALG = 20; // for setting the Secure Channel algorithms - KP_CLIENT_RANDOM = 21; // for setting the Secure Channel client random data - KP_SERVER_RANDOM = 22; // for setting the Secure Channel server random data - KP_RP = 23; - KP_PRECOMP_MD5 = 24; - KP_PRECOMP_SHA = 25; - KP_CERTIFICATE = 26; // for setting Secure Channel certificate data (PCT1) - KP_CLEAR_KEY = 27; // for setting Secure Channel clear key data (PCT1) - KP_PUB_EX_LEN = 28; - KP_PUB_EX_VAL = 29; - - // KP_PADDING - PKCS5_PADDING = 1; {PKCS 5 (sec 6.2) padding method} - RANDOM_PADDING = 2; - ZERO_PADDING = 3; - - // KP_MODE - CRYPT_MODE_CBC = 1; // Cipher block chaining - CRYPT_MODE_ECB = 2; // Electronic code book - CRYPT_MODE_OFB = 3; // Output feedback mode - CRYPT_MODE_CFB = 4; // Cipher feedback mode - CRYPT_MODE_CTS = 5; // Ciphertext stealing mode - - // KP_PERMISSIONS - CRYPT_ENCRYPT = $0001; // Allow encryption - CRYPT_DECRYPT = $0002; // Allow decryption - CRYPT_EXPORT = $0004; // Allow key to be exported - CRYPT_READ = $0008; // Allow parameters to be read - CRYPT_WRITE = $0010; // Allow parameters to be set - CRYPT_MAC = $0020; // Allow MACs to be used with key - CRYPT_EXPORT_KEY = $0040; // Allow key to be used for exporting keys - CRYPT_IMPORT_KEY = $0080; // Allow key to be used for importing keys - - HP_ALGID = $0001; // Hash algorithm - HP_HASHVAL = $0002; // Hash value - HP_HASHSIZE = $0004; // Hash value size - - HP_HMAC_INFO = $0005; // information for creating an HMAC - - CRYPT_FAILED = FALSE; - CRYPT_SUCCEED = TRUE; - -function RCRYPT_SUCCEEDED(rt: BOOL): BOOL; -function RCRYPT_FAILED(rt: BOOL): BOOL; - -const - // CryptGetProvParam - PP_ENUMALGS = 1; - PP_ENUMCONTAINERS = 2; - PP_IMPTYPE = 3; - PP_NAME = 4; - PP_VERSION = 5; - PP_CONTAINER = 6; - PP_CHANGE_PASSWORD = 7; - PP_KEYSET_SEC_DESCR = 8; // get/set security descriptor of keyset - PP_CERTCHAIN = 9; // for retrieving certificates from tokens - PP_KEY_TYPE_SUBTYPE = 10; - PP_PROVTYPE = 16; - PP_KEYSTORAGE = 17; - PP_APPLI_CERT = 18; - PP_SYM_KEYSIZE = 19; - PP_SESSION_KEYSIZE = 20; - PP_UI_PROMPT = 21; - PP_ENUMALGS_EX = 22; - CRYPT_FIRST = 1; - CRYPT_NEXT = 2; - CRYPT_IMPL_HARDWARE = 1; - CRYPT_IMPL_SOFTWARE = 2; - CRYPT_IMPL_MIXED = 3; - CRYPT_IMPL_UNKNOWN = 4; - - // key storage flags - CRYPT_SEC_DESCR = $00000001; - CRYPT_PSTORE = $00000002; - CRYPT_UI_PROMPT = $00000004; - - // protocol flags - CRYPT_FLAG_PCT1 = $0001; - CRYPT_FLAG_SSL2 = $0002; - CRYPT_FLAG_SSL3 = $0004; - CRYPT_FLAG_TLS1 = $0008; - - // CryptSetProvParam - PP_CLIENT_HWND = 1; - PP_CONTEXT_INFO = 11; - PP_KEYEXCHANGE_KEYSIZE = 12; - PP_SIGNATURE_KEYSIZE = 13; - PP_KEYEXCHANGE_ALG = 14; - PP_SIGNATURE_ALG = 15; - PP_DELETEKEY = 24; - - PROV_RSA_FULL = 1; - PROV_RSA_SIG = 2; - PROV_DSS = 3; - PROV_FORTEZZA = 4; - PROV_MS_EXCHANGE = 5; - PROV_SSL = 6; - - PROV_RSA_SCHANNEL = 12; - PROV_DSS_DH = 13; - PROV_EC_ECDSA_SIG = 14; - PROV_EC_ECNRA_SIG = 15; - PROV_EC_ECDSA_FULL = 16; - PROV_EC_ECNRA_FULL = 17; - PROV_SPYRUS_LYNKS = 20; - - - // STT defined Providers - PROV_STT_MER = 7; - PROV_STT_ACQ = 8; - PROV_STT_BRND = 9; - PROV_STT_ROOT = 10; - PROV_STT_ISS = 11; - - // Provider friendly names - MS_DEF_PROV_A = 'Microsoft Base Cryptographic Provider v1.0'; -{$IFNDEF VER90} - MS_DEF_PROV_W = WideString('Microsoft Base Cryptographic Provider v1.0'); -{$ELSE} - MS_DEF_PROV_W = ('Microsoft Base Cryptographic Provider v1.0'); -{$ENDIF} - -{$IFDEF UNICODE} - MS_DEF_PROV = MS_DEF_PROV_W; -{$ELSE} - MS_DEF_PROV = MS_DEF_PROV_A; -{$ENDIF} - - MS_ENHANCED_PROV_A = 'Microsoft Enhanced Cryptographic Provider v1.0'; -{$IFNDEF VER90} - MS_ENHANCED_PROV_W = WideString('Microsoft Enhanced Cryptographic Provider v1.0'); -{$ELSE} - MS_ENHANCED_PROV_W = ('Microsoft Enhanced Cryptographic Provider v1.0'); -{$ENDIF} - -{$IFDEF UNICODE} - MS_ENHANCED_PROV = MS_ENHANCED_PROV_W; -{$ELSE} - MS_ENHANCED_PROV = MS_ENHANCED_PROV_A; -{$ENDIF} - - MS_DEF_RSA_SIG_PROV_A = 'Microsoft RSA Signature Cryptographic Provider'; -{$IFNDEF VER90} - MS_DEF_RSA_SIG_PROV_W = WideString('Microsoft RSA Signature Cryptographic Provider'); -{$ELSE} - MS_DEF_RSA_SIG_PROV_W = ('Microsoft RSA Signature Cryptographic Provider'); -{$ENDIF} - -{$IFDEF UNICODE} - MS_DEF_RSA_SIG_PROV = MS_DEF_RSA_SIG_PROV_W; -{$ELSE} - MS_DEF_RSA_SIG_PROV = MS_DEF_RSA_SIG_PROV_A; -{$ENDIF} - - MS_DEF_RSA_SCHANNEL_PROV_A = 'Microsoft Base RSA SChannel Cryptographic Provider'; -{$IFNDEF VER90} - MS_DEF_RSA_SCHANNEL_PROV_W = WideString('Microsoft Base RSA SChannel Cryptographic Provider'); -{$ELSE} - MS_DEF_RSA_SCHANNEL_PROV_W = ('Microsoft Base RSA SChannel Cryptographic Provider'); -{$ENDIF} - - -{$IFDEF UNICODE} - MS_DEF_RSA_SCHANNEL_PROV = MS_DEF_RSA_SCHANNEL_PROV_W; -{$ELSE} - MS_DEF_RSA_SCHANNEL_PROV = MS_DEF_RSA_SCHANNEL_PROV_A; -{$ENDIF} - - MS_ENHANCED_RSA_SCHANNEL_PROV_A = 'Microsoft Enhanced RSA SChannel Cryptographic Provider'; -{$IFNDEF VER90} - MS_ENHANCED_RSA_SCHANNEL_PROV_W = WideString('Microsoft Enhanced RSA SChannel Cryptographic Provider'); -{$ELSE} - MS_ENHANCED_RSA_SCHANNEL_PROV_W = ('Microsoft Enhanced RSA SChannel Cryptographic Provider'); -{$ENDIF} - -{$IFDEF UNICODE} - MS_ENHANCED_RSA_SCHANNEL_PROV = MS_ENHANCED_RSA_SCHANNEL_PROV_W; -{$ELSE} - MS_ENHANCED_RSA_SCHANNEL_PROV = MS_ENHANCED_RSA_SCHANNEL_PROV_A; -{$ENDIF} - - MS_DEF_DSS_PROV_A = 'Microsoft Base DSS Cryptographic Provider'; -{$IFNDEF VER90} - MS_DEF_DSS_PROV_W = WideString('Microsoft Base DSS Cryptographic Provider'); -{$ELSE} - MS_DEF_DSS_PROV_W = ('Microsoft Base DSS Cryptographic Provider'); -{$ENDIF} - -{$IFDEF UNICODE} - MS_DEF_DSS_PROV = MS_DEF_DSS_PROV_W; -{$ELSE} - MS_DEF_DSS_PROV = MS_DEF_DSS_PROV_A; -{$ENDIF} - - MS_DEF_DSS_DH_PROV_A = 'Microsoft Base DSS and Diffie-Hellman Cryptographic Provider'; -{$IFNDEF VER90} - MS_DEF_DSS_DH_PROV_W = WideString('Microsoft Base DSS and Diffie-Hellman Cryptographic Provider'); -{$ELSE} - MS_DEF_DSS_DH_PROV_W = ('Microsoft Base DSS and Diffie-Hellman Cryptographic Provider'); -{$ENDIF} - -{$IFDEF UNICODE} - MS_DEF_DSS_DH_PROV = MS_DEF_DSS_DH_PROV_W; -{$ELSE} - MS_DEF_DSS_DH_PROV = MS_DEF_DSS_DH_PROV_A; -{$ENDIF} - - MAXUIDLEN = 64; - CUR_BLOB_VERSION = 2; - -{structure for use with CryptSetHashParam with CALG_HMAC} -type - PHMAC_INFO = ^HMAC_INFO; - HMAC_INFO = record - HashAlgid: ALG_ID; - pbInnerString: PBYTE; - cbInnerString: DWORD; - pbOuterString: PBYTE; - cbOuterString: DWORD; - end; - -// structure for use with CryptSetHashParam with CALG_HMAC -type - PSCHANNEL_ALG = ^SCHANNEL_ALG; - SCHANNEL_ALG = record - dwUse: DWORD; - Algid: ALG_ID; - cBits: DWORD; - end; - -// uses of algortihms for SCHANNEL_ALG structure -const - SCHANNEL_MAC_KEY = $00000000; - SCHANNEL_ENC_KEY = $00000001; - -type - PPROV_ENUMALGS = ^PROV_ENUMALGS; - PROV_ENUMALGS = record - aiAlgid: ALG_ID; - dwBitLen: DWORD; - dwNameLen: DWORD; - szName: array[0..20 - 1] of Char; - end; - -type - PPROV_ENUMALGS_EX = ^PROV_ENUMALGS_EX; - PROV_ENUMALGS_EX = record - aiAlgid: ALG_ID; - dwDefaultLen: DWORD; - dwMinLen: DWORD; - dwMaxLen: DWORD; - dwProtocols: DWORD; - dwNameLen: DWORD; - szName: array[0..20 - 1] of Char; - dwLongNameLen: DWORD; - szLongName: array[0..40 - 1] of Char; - end; - -type - PPUBLICKEYSTRUC = ^PUBLICKEYSTRUC; - PUBLICKEYSTRUC = record - bType: BYTE; - bVersion: BYTE; - reserved: Word; - aiKeyAlg: ALG_ID; - end; - -type - BLOBHEADER = PUBLICKEYSTRUC; - PBLOBHEADER = ^BLOBHEADER; - -type - PRSAPUBKEY = ^RSAPUBKEY; - RSAPUBKEY = record - magic: DWORD; // Has to be RSA1 - bitlen: DWORD; // # of bits in modulus - pubexp: DWORD; // public exponent - // Modulus data follows - end; - -type - PPUBKEY = ^PUBKEY; - PUBKEY = record - magic: DWORD; - bitlen: DWORD; // # of bits in modulus - end; - -type - DHPUBKEY = PUBKEY; - DSSPUBKEY = PUBKEY; - KEAPUBKEY = PUBKEY; - TEKPUBKEY = PUBKEY; - - -type - PDSSSEED = ^DSSSEED; - DSSSEED = record - counter: DWORD; - seed: array[0..20 - 1] of BYTE; - end; - -type - PKEY_TYPE_SUBTYPE = ^KEY_TYPE_SUBTYPE; - KEY_TYPE_SUBTYPE = record - dwKeySpec: DWORD; - Type_: TGUID; {conflict with base Delphi type: original name 'Type'} - Subtype: TGUID; - end; - -type - HCRYPTPROV = ULONG; - PHCRYPTPROV = ^HCRYPTPROV; - HCRYPTKEY = ULONG; - PHCRYPTKEY = ^HCRYPTKEY; - HCRYPTHASH = ULONG; - PHCRYPTHASH = ^HCRYPTHASH; - -function CryptAcquireContextA(phProv: PHCRYPTPROV; - pszContainer: PAnsiChar; - pszProvider: PAnsiChar; - dwProvType: DWORD; - dwFlags: DWORD): BOOL; stdcall; - -function CryptAcquireContext(phProv: PHCRYPTPROV; - pszContainer: LPAWSTR; - pszProvider: LPAWSTR; - dwProvType: DWORD; - dwFlags: DWORD): BOOL; stdcall; - -function CryptAcquireContextW(phProv: PHCRYPTPROV; - pszContainer: PWideChar; - pszProvider: PWideChar; - dwProvType: DWORD; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptReleaseContext(hProv: HCRYPTPROV; - dwFlags: DWORD): BOOL; stdcall; - - - -function CryptGenKey(hProv: HCRYPTPROV; - Algid: ALG_ID; - dwFlags: DWORD; - phKey: PHCRYPTKEY): BOOL; stdcall; - - -function CryptDeriveKey(hProv: HCRYPTPROV; - Algid: ALG_ID; - hBaseData: HCRYPTHASH; - dwFlags: DWORD; - phKey: PHCRYPTKEY): BOOL; stdcall; - - - -function CryptDestroyKey(hKey: HCRYPTKEY): BOOL; stdcall; - - -function CryptSetKeyParam(hKey: HCRYPTKEY; - dwParam: DWORD; - pbData: PBYTE; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptGetKeyParam(hKey: HCRYPTKEY; - dwParam: DWORD; - pbData: PBYTE; - pdwDataLen: PDWORD; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptSetHashParam(hHash: HCRYPTHASH; - dwParam: DWORD; - pbData: PBYTE; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptGetHashParam(hHash: HCRYPTHASH; - dwParam: DWORD; - pbData: PBYTE; - pdwDataLen: PDWORD; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptSetProvParam(hProv: HCRYPTPROV; - dwParam: DWORD; - pbData: PBYTE; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptGetProvParam(hProv: HCRYPTPROV; - dwParam: DWORD; - pbData: PBYTE; - pdwDataLen: PDWORD; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptGenRandom(hProv: HCRYPTPROV; - dwLen: DWORD; - pbBuffer: PBYTE): BOOL; stdcall; - - -function CryptGetUserKey(hProv: HCRYPTPROV; - dwKeySpec: DWORD; - phUserKey: PHCRYPTKEY): BOOL; stdcall; - - -function CryptExportKey(hKey: HCRYPTKEY; - hExpKey: HCRYPTKEY; - dwBlobType: DWORD; - dwFlags: DWORD; - pbData: PBYTE; - pdwDataLen: PDWORD): BOOL; stdcall; - - -function CryptImportKey(hProv: HCRYPTPROV; - pbData: PBYTE; - dwDataLen: DWORD; - hPubKey: HCRYPTKEY; - dwFlags: DWORD; - phKey: PHCRYPTKEY): BOOL; stdcall; - - -function CryptEncrypt(hKey: HCRYPTKEY; - hHash: HCRYPTHASH; - Final: BOOL; - dwFlags: DWORD; - pbData: PBYTE; - pdwDataLen: PDWORD; - dwBufLen: DWORD): BOOL; stdcall; - - -function CryptDecrypt(hKey: HCRYPTKEY; - hHash: HCRYPTHASH; - Final: BOOL; - dwFlags: DWORD; - pbData: PBYTE; - pdwDataLen: PDWORD): BOOL; stdcall; - - -function CryptCreateHash(hProv: HCRYPTPROV; - Algid: ALG_ID; - hKey: HCRYPTKEY; - dwFlags: DWORD; - phHash: PHCRYPTHASH): BOOL; stdcall; - - -function CryptHashData(hHash: HCRYPTHASH; - const pbData: PBYTE; - dwDataLen: DWORD; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptHashSessionKey(hHash: HCRYPTHASH; - hKey: HCRYPTKEY; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptDestroyHash(hHash: HCRYPTHASH): BOOL; stdcall; - - -function CryptSignHashA(hHash: HCRYPTHASH; - dwKeySpec: DWORD; - sDescription: PAnsiChar; - dwFlags: DWORD; - pbSignature: PBYTE; - pdwSigLen: PDWORD): BOOL; stdcall; - - -function CryptSignHash(hHash: HCRYPTHASH; - dwKeySpec: DWORD; - sDescription: LPAWSTR; - dwFlags: DWORD; - pbSignature: PBYTE; - pdwSigLen: PDWORD): BOOL; stdcall; - -function CryptSignHashW(hHash: HCRYPTHASH; - dwKeySpec: DWORD; - sDescription: PWideChar; - dwFlags: DWORD; - pbSignature: PBYTE; - pdwSigLen: PDWORD): BOOL; stdcall; - -function CryptSignHashU(hHash: HCRYPTHASH; - dwKeySpec: DWORD; - sDescription: PWideChar; - dwFlags: DWORD; - pbSignature: PBYTE; - pdwSigLen: PDWORD): BOOL; stdcall; - -function CryptVerifySignatureA(hHash: HCRYPTHASH; - const pbSignature: PBYTE; - dwSigLen: DWORD; - hPubKey: HCRYPTKEY; - sDescription: PAnsiChar; - dwFlags: DWORD): BOOL; stdcall; - -function CryptVerifySignature(hHash: HCRYPTHASH; - const pbSignature: PBYTE; - dwSigLen: DWORD; - hPubKey: HCRYPTKEY; - sDescription: LPAWSTR; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptVerifySignatureW(hHash: HCRYPTHASH; - const pbSignature: PBYTE; - dwSigLen: DWORD; - hPubKey: HCRYPTKEY; - sDescription: PWideChar; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptSetProviderA(pszProvName: PAnsiChar; - dwProvType: DWORD): BOOL; stdcall; - -function CryptSetProvider(pszProvName: LPAWSTR; - dwProvType: DWORD): BOOL; stdcall; - -function CryptSetProviderW(pszProvName: PWideChar; - dwProvType: DWORD): BOOL; stdcall; - -function CryptSetProviderU(pszProvName: PWideChar; - dwProvType: DWORD): BOOL; stdcall; - -{$IFDEF NT5} - -function CryptSetProviderExA(pszProvName: LPCSTR; - dwProvType: DWORD; - pdwReserved: PDWORD; - dwFlags: DWORD): BOOL; stdcall; - -function CryptSetProviderExW(pszProvName: LPCWSTR; - dwProvType: DWORD; - pdwReserved: PDWORD; - dwFlags: DWORD): BOOL; stdcall; - -function CryptSetProviderEx(pszProvName: LPAWSTR; - dwProvType: DWORD; - pdwReserved: PDWORD; - dwFlags: DWORD): BOOL; stdcall; - - -function CryptGetDefaultProviderA(dwProvType: DWORD; - pdwReserved: DWORD; - dwFlags: DWORD; - pszProvName: LPSTR; - pcbProvName: PDWORD): BOOL; stdcall; - -function CryptGetDefaultProviderW(dwProvType: DWORD; - pdwReserved: DWORD; - dwFlags: DWORD; - pszProvName: LPWSTR; - pcbProvName: PDWORD): BOOL; stdcall; - -function CryptGetDefaultProvider(dwProvType: DWORD; - pdwReserved: DWORD; - dwFlags: DWORD; - pszProvName: LPAWSTR; - pcbProvName: PDWORD): BOOL; stdcall; - -function CryptEnumProviderTypesA(dwIndex: DWORD; - pdwReserved: PDWORD; - dwFlags: DWORD; - pdwProvType: PDWORD; - pszTypeName: LPSTR; - pcbTypeName: PDWORD): BOOL; stdcall; - -function CryptEnumProviderTypesW(dwIndex: DWORD; - pdwReserved: PDWORD; - dwFlags: DWORD; - pdwProvType: PDWORD; - pszTypeName: LPWSTR; - pcbTypeName: PDWORD): BOOL; stdcall; - -function CryptEnumProviderTypes(dwIndex: DWORD; - pdwReserved: PDWORD; - dwFlags: DWORD; - pdwProvType: PDWORD; - pszTypeName: LPAWSTR; - pcbTypeName: PDWORD): BOOL; stdcall; - -function CryptEnumProvidersA(dwIndex: DWORD; - pdwReserved: PDWORD; - dwFlags: DWORD; - pdwProvType: PDWORD; - pszProvName: LPSTR; - pcbProvName: PDWORD): BOOL; stdcall; - -function CryptEnumProvidersW(dwIndex: DWORD; - pdwReserved: PDWORD; - dwFlags: DWORD; - pdwProvType: PDWORD; - pszProvName: LPWSTR; - pcbProvName: PDWORD): BOOL; stdcall; - -function CryptEnumProviders(dwIndex: DWORD; - pdwReserved: PDWORD; - dwFlags: DWORD; - pdwProvType: PDWORD; - pszProvName: LPAWSTR; - pcbProvName: PDWORD): BOOL; stdcall; - -function CryptContextAddRef(hProv: HCRYPTPROV; - pdwReserved: PDWORD; - dwFlags: DWORD): BOOL; stdcall; - -function CryptDuplicateKey(hKey: HCRYPTKEY; - pdwReserved: PDWORD; - dwFlags: DWORD; - phKey: PHCRYPTKEY): BOOL; stdcall; - -function CryptDuplicateHash(hHash: HCRYPTHASH; - pdwReserved: PDWORD; - dwFlags: DWORD; - phHash: PHCRYPTHASH): BOOL; stdcall; - -{$ENDIF NT5} - -function CryptEnumProvidersU(dwIndex: DWORD; - pdwReserved: PDWORD; - dwFlags: DWORD; - pdwProvType: PDWORD; - pszProvName: LPWSTR; - pcbProvName: PDWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// CRYPTOAPI BLOB definitions -//-------------------------------------------------------------------------- - -type - PCRYPTOAPI_BLOB = ^CRYPTOAPI_BLOB; - CRYPTOAPI_BLOB = record - cbData: DWORD; - pbData: PBYTE; - end; - -type - CRYPT_INTEGER_BLOB = CRYPTOAPI_BLOB; - PCRYPT_INTEGER_BLOB = ^CRYPT_INTEGER_BLOB; - CRYPT_UINT_BLOB = CRYPTOAPI_BLOB; - PCRYPT_UINT_BLOB = ^CRYPT_UINT_BLOB; - CRYPT_OBJID_BLOB = CRYPTOAPI_BLOB; - PCRYPT_OBJID_BLOB = ^CRYPT_OBJID_BLOB; - CERT_NAME_BLOB = CRYPTOAPI_BLOB; - PCERT_NAME_BLOB = ^CERT_NAME_BLOB; - CERT_RDN_VALUE_BLOB = CRYPTOAPI_BLOB; - PCERT_RDN_VALUE_BLOB = ^CERT_RDN_VALUE_BLOB; - CERT_BLOB = CRYPTOAPI_BLOB; - PCERT_BLOB = ^CERT_BLOB; - CRL_BLOB = CRYPTOAPI_BLOB; - PCRL_BLOB = ^CRL_BLOB; - DATA_BLOB = CRYPTOAPI_BLOB; - PDATA_BLOB = ^DATA_BLOB; // JEFFJEFF temporary (too generic) - CRYPT_DATA_BLOB = CRYPTOAPI_BLOB; - PCRYPT_DATA_BLOB = ^CRYPT_DATA_BLOB; - CRYPT_HASH_BLOB = CRYPTOAPI_BLOB; - PCRYPT_HASH_BLOB = ^CRYPT_HASH_BLOB; - CRYPT_DIGEST_BLOB = CRYPTOAPI_BLOB; - PCRYPT_DIGEST_BLOB = ^CRYPT_DIGEST_BLOB; - CRYPT_DER_BLOB = CRYPTOAPI_BLOB; - PCRYPT_DER_BLOB = ^CRYPT_DER_BLOB; - CRYPT_ATTR_BLOB = CRYPTOAPI_BLOB; - PCRYPT_ATTR_BLOB = ^CRYPT_ATTR_BLOB; - -//+------------------------------------------------------------------------- -// In a CRYPT_BIT_BLOB the last byte may contain 0-7 unused bits. Therefore, the -// overall bit length is cbData * 8 - cUnusedBits. -//-------------------------------------------------------------------------- - -type - PCRYPT_BIT_BLOB = ^CRYPT_BIT_BLOB; - CRYPT_BIT_BLOB = record - cbData: DWORD; - pbData: PBYTE; - cUnusedBits: DWORD; - end; - -//+------------------------------------------------------------------------- -// Type used for any algorithm -// -// Where the Parameters CRYPT_OBJID_BLOB is in its encoded representation. For most -// algorithm types, the Parameters CRYPT_OBJID_BLOB is NULL (Parameters.cbData = 0). -//-------------------------------------------------------------------------- - -type - PCRYPT_ALGORITHM_IDENTIFIER = ^CRYPT_ALGORITHM_IDENTIFIER; - CRYPT_ALGORITHM_IDENTIFIER = record - pszObjId: LPSTR; - Parameters: CRYPT_OBJID_BLOB; - end; - -// Following are the definitions of various algorithm object identifiers -// RSA -const - szOID_RSA = '1.2.840.113549'; - szOID_PKCS = '1.2.840.113549.1'; - szOID_RSA_HASH = '1.2.840.113549.2'; - szOID_RSA_ENCRYPT = '1.2.840.113549.3'; - - szOID_PKCS_1 = '1.2.840.113549.1.1'; - szOID_PKCS_2 = '1.2.840.113549.1.2'; - szOID_PKCS_3 = '1.2.840.113549.1.3'; - szOID_PKCS_4 = '1.2.840.113549.1.4'; - szOID_PKCS_5 = '1.2.840.113549.1.5'; - szOID_PKCS_6 = '1.2.840.113549.1.6'; - szOID_PKCS_7 = '1.2.840.113549.1.7'; - szOID_PKCS_8 = '1.2.840.113549.1.8'; - szOID_PKCS_9 = '1.2.840.113549.1.9'; - szOID_PKCS_10 = '1.2.840.113549.1.10'; - - szOID_RSA_RSA = '1.2.840.113549.1.1.1'; - szOID_RSA_MD2RSA = '1.2.840.113549.1.1.2'; - szOID_RSA_MD4RSA = '1.2.840.113549.1.1.3'; - szOID_RSA_MD5RSA = '1.2.840.113549.1.1.4'; - szOID_RSA_SHA1RSA = '1.2.840.113549.1.1.5'; - szOID_RSA_SETOAEP_RSA = '1.2.840.113549.1.1.6'; - - szOID_RSA_data = '1.2.840.113549.1.7.1'; - szOID_RSA_signedData = '1.2.840.113549.1.7.2'; - szOID_RSA_envelopedData = '1.2.840.113549.1.7.3'; - szOID_RSA_signEnvData = '1.2.840.113549.1.7.4'; - szOID_RSA_digestedData = '1.2.840.113549.1.7.5'; - szOID_RSA_hashedData = '1.2.840.113549.1.7.5'; - szOID_RSA_encryptedData = '1.2.840.113549.1.7.6'; - - szOID_RSA_emailAddr = '1.2.840.113549.1.9.1'; - szOID_RSA_unstructName = '1.2.840.113549.1.9.2'; - szOID_RSA_contentType = '1.2.840.113549.1.9.3'; - szOID_RSA_messageDigest = '1.2.840.113549.1.9.4'; - szOID_RSA_signingTime = '1.2.840.113549.1.9.5'; - szOID_RSA_counterSign = '1.2.840.113549.1.9.6'; - szOID_RSA_challengePwd = '1.2.840.113549.1.9.7'; - szOID_RSA_unstructAddr = '1.2.840.113549.1.9.8'; - szOID_RSA_extCertAttrs = '1.2.840.113549.1.9.9'; - szOID_RSA_SMIMECapabilities = '1.2.840.113549.1.9.15'; - szOID_RSA_preferSignedData = '1.2.840.113549.1.9.15.1'; - - szOID_RSA_MD2 = '1.2.840.113549.2.2'; - szOID_RSA_MD4 = '1.2.840.113549.2.4'; - szOID_RSA_MD5 = '1.2.840.113549.2.5'; - - szOID_RSA_RC2CBC = '1.2.840.113549.3.2'; - szOID_RSA_RC4 = '1.2.840.113549.3.4'; - szOID_RSA_DES_EDE3_CBC = '1.2.840.113549.3.7'; - szOID_RSA_RC5_CBCPad = '1.2.840.113549.3.9'; - -// ITU-T UsefulDefinitions - szOID_DS = '2.5'; - szOID_DSALG = '2.5.8'; - szOID_DSALG_CRPT = '2.5.8.1'; - szOID_DSALG_HASH = '2.5.8.2'; - szOID_DSALG_SIGN = '2.5.8.3'; - szOID_DSALG_RSA = '2.5.8.1.1'; - -// NIST OSE Implementors' Workshop (OIW) -// http://nemo.ncsl.nist.gov/oiw/agreements/stable/OSI/12s_9506.w51 -// http://nemo.ncsl.nist.gov/oiw/agreements/working/OSI/12w_9503.w51 - szOID_OIW = '1.3.14'; -// NIST OSE Implementors' Workshop (OIW) Security SIG algorithm identifiers - szOID_OIWSEC = '1.3.14.3.2'; - szOID_OIWSEC_md4RSA = '1.3.14.3.2.2'; - szOID_OIWSEC_md5RSA = '1.3.14.3.2.3'; - szOID_OIWSEC_md4RSA2 = '1.3.14.3.2.4'; - szOID_OIWSEC_desECB = '1.3.14.3.2.6'; - szOID_OIWSEC_desCBC = '1.3.14.3.2.7'; - szOID_OIWSEC_desOFB = '1.3.14.3.2.8'; - szOID_OIWSEC_desCFB = '1.3.14.3.2.9'; - szOID_OIWSEC_desMAC = '1.3.14.3.2.10'; - szOID_OIWSEC_rsaSign = '1.3.14.3.2.11'; - szOID_OIWSEC_dsa = '1.3.14.3.2.12'; - szOID_OIWSEC_shaDSA = '1.3.14.3.2.13'; - szOID_OIWSEC_mdc2RSA = '1.3.14.3.2.14'; - szOID_OIWSEC_shaRSA = '1.3.14.3.2.15'; - szOID_OIWSEC_dhCommMod = '1.3.14.3.2.16'; - szOID_OIWSEC_desEDE = '1.3.14.3.2.17'; - szOID_OIWSEC_sha = '1.3.14.3.2.18'; - szOID_OIWSEC_mdc2 = '1.3.14.3.2.19'; - szOID_OIWSEC_dsaComm = '1.3.14.3.2.20'; - szOID_OIWSEC_dsaCommSHA = '1.3.14.3.2.21'; - szOID_OIWSEC_rsaXchg = '1.3.14.3.2.22'; - szOID_OIWSEC_keyHashSeal = '1.3.14.3.2.23'; - szOID_OIWSEC_md2RSASign = '1.3.14.3.2.24'; - szOID_OIWSEC_md5RSASign = '1.3.14.3.2.25'; - szOID_OIWSEC_sha1 = '1.3.14.3.2.26'; - szOID_OIWSEC_dsaSHA1 = '1.3.14.3.2.27'; - szOID_OIWSEC_dsaCommSHA1 = '1.3.14.3.2.28'; - szOID_OIWSEC_sha1RSASign = '1.3.14.3.2.29'; -// NIST OSE Implementors' Workshop (OIW) Directory SIG algorithm identifiers - szOID_OIWDIR = '1.3.14.7.2'; - szOID_OIWDIR_CRPT = '1.3.14.7.2.1'; - szOID_OIWDIR_HASH = '1.3.14.7.2.2'; - szOID_OIWDIR_SIGN = '1.3.14.7.2.3'; - szOID_OIWDIR_md2 = '1.3.14.7.2.2.1'; - szOID_OIWDIR_md2RSA = '1.3.14.7.2.3.1'; - - -// INFOSEC Algorithms -// joint-iso-ccitt(2) country(16) us(840) organization(1) us-government(101) dod(2) id-infosec(1) - szOID_INFOSEC = '2.16.840.1.101.2.1'; - szOID_INFOSEC_sdnsSignature = '2.16.840.1.101.2.1.1.1'; - szOID_INFOSEC_mosaicSignature = '2.16.840.1.101.2.1.1.2'; - szOID_INFOSEC_sdnsConfidentiality = '2.16.840.1.101.2.1.1.3'; - szOID_INFOSEC_mosaicConfidentiality = '2.16.840.1.101.2.1.1.4'; - szOID_INFOSEC_sdnsIntegrity = '2.16.840.1.101.2.1.1.5'; - szOID_INFOSEC_mosaicIntegrity = '2.16.840.1.101.2.1.1.6'; - szOID_INFOSEC_sdnsTokenProtection = '2.16.840.1.101.2.1.1.7'; - szOID_INFOSEC_mosaicTokenProtection = '2.16.840.1.101.2.1.1.8'; - szOID_INFOSEC_sdnsKeyManagement = '2.16.840.1.101.2.1.1.9'; - szOID_INFOSEC_mosaicKeyManagement = '2.16.840.1.101.2.1.1.10'; - szOID_INFOSEC_sdnsKMandSig = '2.16.840.1.101.2.1.1.11'; - szOID_INFOSEC_mosaicKMandSig = '2.16.840.1.101.2.1.1.12'; - szOID_INFOSEC_SuiteASignature = '2.16.840.1.101.2.1.1.13'; - szOID_INFOSEC_SuiteAConfidentiality = '2.16.840.1.101.2.1.1.14'; - szOID_INFOSEC_SuiteAIntegrity = '2.16.840.1.101.2.1.1.15'; - szOID_INFOSEC_SuiteATokenProtection = '2.16.840.1.101.2.1.1.16'; - szOID_INFOSEC_SuiteAKeyManagement = '2.16.840.1.101.2.1.1.17'; - szOID_INFOSEC_SuiteAKMandSig = '2.16.840.1.101.2.1.1.18'; - szOID_INFOSEC_mosaicUpdatedSig = '2.16.840.1.101.2.1.1.19'; - szOID_INFOSEC_mosaicKMandUpdSig = '2.16.840.1.101.2.1.1.20'; - szOID_INFOSEC_mosaicUpdatedInteg = '2.16.840.1.101.2.1.1.21'; - -type - PCRYPT_OBJID_TABLE = ^CRYPT_OBJID_TABLE; - CRYPT_OBJID_TABLE = record - dwAlgId: DWORD; - pszObjId: LPCSTR; - end; - -//+------------------------------------------------------------------------- -// PKCS #1 HashInfo (DigestInfo) -//-------------------------------------------------------------------------- - -type - PCRYPT_HASH_INFO = ^CRYPT_HASH_INFO; - CRYPT_HASH_INFO = record - HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - Hash: CRYPT_HASH_BLOB; - end; - -//+------------------------------------------------------------------------- -// Type used for an extension to an encoded content -// -// Where the Value's CRYPT_OBJID_BLOB is in its encoded representation. -//-------------------------------------------------------------------------- - -type - PCERT_EXTENSION = ^CERT_EXTENSION; - CERT_EXTENSION = record - pszObjId: LPSTR; - fCritical: BOOL; - Value: CRYPT_OBJID_BLOB; - end; - -//+------------------------------------------------------------------------- -// AttributeTypeValue -// -// Where the Value's CRYPT_OBJID_BLOB is in its encoded representation. -//-------------------------------------------------------------------------- - -type - PCRYPT_ATTRIBUTE_TYPE_VALUE = ^CRYPT_ATTRIBUTE_TYPE_VALUE; - CRYPT_ATTRIBUTE_TYPE_VALUE = record - pszObjId: LPSTR; - Value: CRYPT_OBJID_BLOB; - end; - -//+------------------------------------------------------------------------- -// Attributes -// -// Where the Value's PATTR_BLOBs are in their encoded representation. -//-------------------------------------------------------------------------- - -type - PCRYPT_ATTRIBUTE = ^CRYPT_ATTRIBUTE; - CRYPT_ATTRIBUTE = record - pszObjId: LPSTR; - cValue: DWORD; - rgValue: PCRYPT_ATTR_BLOB; - end; - -type - PCRYPT_ATTRIBUTES = ^CRYPT_ATTRIBUTES; - CRYPT_ATTRIBUTES = record - cAttr: DWORD; {IN} - rgAttr: PCRYPT_ATTRIBUTE; {IN} - end; - -//+------------------------------------------------------------------------- -// Attributes making up a Relative Distinguished Name (CERT_RDN) -// -// The interpretation of the Value depends on the dwValueType. -// See below for a list of the types. -//-------------------------------------------------------------------------- - -type - PCERT_RDN_ATTR = ^CERT_RDN_ATTR; - CERT_RDN_ATTR = record - pszObjId: LPSTR; - dwValueType: DWORD; - Value: CERT_RDN_VALUE_BLOB; - end; - -//+------------------------------------------------------------------------- -// CERT_RDN attribute Object Identifiers -//-------------------------------------------------------------------------- -// Labeling attribute types: -const - szOID_COMMON_NAME = '2.5.4.3'; // case-ignore string - szOID_SUR_NAME = '2.5.4.4'; // case-ignore string - szOID_DEVICE_SERIAL_NUMBER = '2.5.4.5'; // printable string - -// Geographic attribute types: - szOID_COUNTRY_NAME = '2.5.4.6'; // printable 2char string - szOID_LOCALITY_NAME = '2.5.4.7'; // case-ignore string - szOID_STATE_OR_PROVINCE_NAME = '2.5.4.8'; // case-ignore string - szOID_STREET_ADDRESS = '2.5.4.9'; // case-ignore string - -// Organizational attribute types: - szOID_ORGANIZATION_NAME = '2.5.4.10'; // case-ignore string - szOID_ORGANIZATIONAL_UNIT_NAME = '2.5.4.11'; // case-ignore string - szOID_TITLE = '2.5.4.12'; // case-ignore string - -// Explanatory attribute types: - szOID_DESCRIPTION = '2.5.4.13'; // case-ignore string - szOID_SEARCH_GUIDE = '2.5.4.14'; - szOID_BUSINESS_CATEGORY = '2.5.4.15'; // case-ignore string - -// Postal addressing attribute types: - szOID_POSTAL_ADDRESS = '2.5.4.16'; - szOID_POSTAL_CODE = '2.5.4.17'; // case-ignore string - szOID_POST_OFFICE_BOX = '2.5.4.18'; // case-ignore string - szOID_PHYSICAL_DELIVERY_OFFICE_NAME = '2.5.4.19'; // case-ignore string - -// Telecommunications addressing attribute types: - szOID_TELEPHONE_NUMBER = '2.5.4.20'; // telephone number - szOID_TELEX_NUMBER = '2.5.4.21'; - szOID_TELETEXT_TERMINAL_IDENTIFIER = '2.5.4.22'; - szOID_FACSIMILE_TELEPHONE_NUMBER = '2.5.4.23'; - szOID_X21_ADDRESS = '2.5.4.24'; // numeric string - szOID_INTERNATIONAL_ISDN_NUMBER = '2.5.4.25'; // numeric string - szOID_REGISTERED_ADDRESS = '2.5.4.26'; - szOID_DESTINATION_INDICATOR = '2.5.4.27'; // printable string - -// Preference attribute types: - szOID_PREFERRED_DELIVERY_METHOD = '2.5.4.28'; - -// OSI application attribute types: - szOID_PRESENTATION_ADDRESS = '2.5.4.29'; - szOID_SUPPORTED_APPLICATION_CONTEXT = '2.5.4.30'; - -// Relational application attribute types: - szOID_MEMBER = '2.5.4.31'; - szOID_OWNER = '2.5.4.32'; - szOID_ROLE_OCCUPANT = '2.5.4.33'; - szOID_SEE_ALSO = '2.5.4.34'; - -// Security attribute types: - szOID_USER_PASSWORD = '2.5.4.35'; - szOID_USER_CERTIFICATE = '2.5.4.36'; - szOID_CA_CERTIFICATE = '2.5.4.37'; - szOID_AUTHORITY_REVOCATION_LIST = '2.5.4.38'; - szOID_CERTIFICATE_REVOCATION_LIST = '2.5.4.39'; - szOID_CROSS_CERTIFICATE_PAIR = '2.5.4.40'; - -// Undocumented attribute types??? -//#define szOID_??? '2.5.4.41' - szOID_GIVEN_NAME = '2.5.4.42'; // case-ignore string - szOID_INITIALS = '2.5.4.43'; // case-ignore string - -// Pilot user attribute types: - szOID_DOMAIN_COMPONENT = '0.9.2342.19200300.100.1.25'; // IA5 string - -//+------------------------------------------------------------------------- -// CERT_RDN Attribute Value Types -// -// For RDN_ENCODED_BLOB, the Value's CERT_RDN_VALUE_BLOB is in its encoded -// representation. Otherwise, its an array of bytes. -// -// For all CERT_RDN types, Value.cbData is always the number of bytes, not -// necessarily the number of elements in the string. For instance, -// RDN_UNIVERSAL_STRING is an array of ints (cbData == intCnt * 4) and -// RDN_BMP_STRING is an array of unsigned shorts (cbData == ushortCnt * 2). -// -// For CertDecodeName, two 0 bytes are always appended to the end of the -// string (ensures a CHAR or WCHAR string is null terminated). -// These added 0 bytes are't included in the BLOB.cbData. -//-------------------------------------------------------------------------- - -const - CERT_RDN_ANY_TYPE = 0; - CERT_RDN_ENCODED_BLOB = 1; - CERT_RDN_OCTET_STRING = 2; - CERT_RDN_NUMERIC_STRING = 3; - CERT_RDN_PRINTABLE_STRING = 4; - CERT_RDN_TELETEX_STRING = 5; - CERT_RDN_T61_STRING = 5; - CERT_RDN_VIDEOTEX_STRING = 6; - CERT_RDN_IA5_STRING = 7; - CERT_RDN_GRAPHIC_STRING = 8; - CERT_RDN_VISIBLE_STRING = 9; - CERT_RDN_ISO646_STRING = 9; - CERT_RDN_GENERAL_STRING = 10; - CERT_RDN_UNIVERSAL_STRING = 11; - CERT_RDN_INT4_STRING = 11; - CERT_RDN_BMP_STRING = 12; - CERT_RDN_UNICODE_STRING = 12; - - -// Macro to check that the dwValueType is a character string and not an -// encoded blob or octet string -function IS_CERT_RDN_CHAR_STRING(X: DWORD): BOOL; - -//+------------------------------------------------------------------------- -// A CERT_RDN consists of an array of the above attributes -//-------------------------------------------------------------------------- - -type - PCERT_RDN = ^CERT_RDN; - CERT_RDN = record - cRDNAttr: DWORD; - rgRDNAttr: PCERT_RDN_ATTR; - end; - -//+------------------------------------------------------------------------- -// Information stored in a subject's or issuer's name. The information -// is represented as an array of the above RDNs. -//-------------------------------------------------------------------------- - -type - PCERT_NAME_INFO = ^CERT_NAME_INFO; - CERT_NAME_INFO = record - cRDN: DWORD; - rgRDN: PCERT_RDN; - end; - -//+------------------------------------------------------------------------- -// Name attribute value without the Object Identifier -// -// The interpretation of the Value depends on the dwValueType. -// See above for a list of the types. -//-------------------------------------------------------------------------- - -type - PCERT_NAME_VALUE = ^CERT_NAME_VALUE; - CERT_NAME_VALUE = record - dwValueType: DWORD; - Value: CERT_RDN_VALUE_BLOB; - end; - -//+------------------------------------------------------------------------- -// Public Key Info -// -// The PublicKey is the encoded representation of the information as it is -// stored in the bit string -//-------------------------------------------------------------------------- - -type - PCERT_PUBLIC_KEY_INFO = ^CERT_PUBLIC_KEY_INFO; - CERT_PUBLIC_KEY_INFO = record - Algorithm: CRYPT_ALGORITHM_IDENTIFIER; - PublicKey: CRYPT_BIT_BLOB; - end; - -const - CERT_RSA_PUBLIC_KEY_OBJID = szOID_RSA_RSA; - CERT_DEFAULT_OID_PUBLIC_KEY_SIGN = szOID_RSA_RSA; - CERT_DEFAULT_OID_PUBLIC_KEY_XCHG = szOID_RSA_RSA; - -//+------------------------------------------------------------------------- -// Information stored in a certificate -// -// The Issuer, Subject, Algorithm, PublicKey and Extension BLOBs are the -// encoded representation of the information. -//-------------------------------------------------------------------------- - -type - PCERT_INFO = ^CERT_INFO; - CERT_INFO = record - dwVersion: DWORD; - SerialNumber: CRYPT_INTEGER_BLOB; - SignatureAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - Issuer: CERT_NAME_BLOB; - NotBefore: TFILETIME; - NotAfter: TFILETIME; - Subject: CERT_NAME_BLOB; - SubjectPublicKeyInfo: CERT_PUBLIC_KEY_INFO; - IssuerUniqueId: CRYPT_BIT_BLOB; - SubjectUniqueId: CRYPT_BIT_BLOB; - cExtension: DWORD; - rgExtension: PCERT_EXTENSION; - end; - -//+------------------------------------------------------------------------- -// Certificate versions -//-------------------------------------------------------------------------- -const - CERT_V1 = 0; - CERT_V2 = 1; - CERT_V3 = 2; - -//+------------------------------------------------------------------------- -// Certificate Information Flags -//-------------------------------------------------------------------------- - - CERT_INFO_VERSION_FLAG = 1; - CERT_INFO_SERIAL_NUMBER_FLAG = 2; - CERT_INFO_SIGNATURE_ALGORITHM_FLAG = 3; - CERT_INFO_ISSUER_FLAG = 4; - CERT_INFO_NOT_BEFORE_FLAG = 5; - CERT_INFO_NOT_AFTER_FLAG = 6; - CERT_INFO_SUBJECT_FLAG = 7; - CERT_INFO_SUBJECT_PUBLIC_KEY_INFO_FLAG = 8; - CERT_INFO_ISSUER_UNIQUE_ID_FLAG = 9; - CERT_INFO_SUBJECT_UNIQUE_ID_FLAG = 10; - CERT_INFO_EXTENSION_FLAG = 11; - -//+------------------------------------------------------------------------- -// An entry in a CRL -// -// The Extension BLOBs are the encoded representation of the information. -//-------------------------------------------------------------------------- - -type - PCRL_ENTRY = ^CRL_ENTRY; - CRL_ENTRY = record - SerialNumber: CRYPT_INTEGER_BLOB; - RevocationDate: TFILETIME; - cExtension: DWORD; - rgExtension: PCERT_EXTENSION; - end; - -//+------------------------------------------------------------------------- -// Information stored in a CRL -// -// The Issuer, Algorithm and Extension BLOBs are the encoded -// representation of the information. -//-------------------------------------------------------------------------- - -type - PCRL_INFO = ^CRL_INFO; - CRL_INFO = record - dwVersion: DWORD; - SignatureAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - Issuer: CERT_NAME_BLOB; - ThisUpdate: TFILETIME; - NextUpdate: TFILETIME; - cCRLEntry: DWORD; - rgCRLEntry: PCRL_ENTRY; - cExtension: DWORD; - rgExtension: PCERT_EXTENSION; - end; - -//+------------------------------------------------------------------------- -// CRL versions -//-------------------------------------------------------------------------- -const - CRL_V1 = 0; - CRL_V2 = 1; - -//+------------------------------------------------------------------------- -// Information stored in a certificate request -// -// The Subject, Algorithm, PublicKey and Attribute BLOBs are the encoded -// representation of the information. -//-------------------------------------------------------------------------- - -type - PCERT_REQUEST_INFO = ^CERT_REQUEST_INFO; - CERT_REQUEST_INFO = record - dwVersion: DWORD; - Subject: CERT_NAME_BLOB; - SubjectPublicKeyInfo: CERT_PUBLIC_KEY_INFO; - cAttribute: DWORD; - rgAttribute: PCRYPT_ATTRIBUTE; - end; - -//+------------------------------------------------------------------------- -// Certificate Request versions -//-------------------------------------------------------------------------- -const CERT_REQUEST_V1 = 0; - -//+------------------------------------------------------------------------- -// Information stored in Netscape's Keygen request -//-------------------------------------------------------------------------- -type - PCERT_KEYGEN_REQUEST_INFO = ^CERT_KEYGEN_REQUEST_INFO; - CERT_KEYGEN_REQUEST_INFO = record - dwVersion: DWORD; - SubjectPublicKeyInfo: CERT_PUBLIC_KEY_INFO; - pwszChallengeString: LPWSTR; // encoded as IA5 - end; - -const - CERT_KEYGEN_REQUEST_V1 = 0; - - -//+------------------------------------------------------------------------- -// Certificate, CRL, Certificate Request or Keygen Request Signed Content -// -// The "to be signed" encoded content plus its signature. The ToBeSigned -// is the encoded CERT_INFO, CRL_INFO, CERT_REQUEST_INFO or -// CERT_KEYGEN_REQUEST_INFO. -//-------------------------------------------------------------------------- -type - PCERT_SIGNED_CONTENT_INFO = ^CERT_SIGNED_CONTENT_INFO; - CERT_SIGNED_CONTENT_INFO = record - ToBeSigned: CRYPT_DER_BLOB; - SignatureAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - Signature: CRYPT_BIT_BLOB; - end; - -//+------------------------------------------------------------------------- -// Certificate Trust List (CTL) -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CTL Usage. Also used for EnhancedKeyUsage extension. -//-------------------------------------------------------------------------- - -type - PCTL_USAGE = ^CTL_USAGE; - CTL_USAGE = record - cUsageIdentifier: DWORD; - rgpszUsageIdentifier: PLPSTR; // array of pszObjId - end; - -type - CERT_ENHKEY_USAGE = CTL_USAGE; - PCERT_ENHKEY_USAGE = ^CERT_ENHKEY_USAGE; - - -//+------------------------------------------------------------------------- -// An entry in a CTL -//-------------------------------------------------------------------------- -type - PCTL_ENTRY = ^CTL_ENTRY; - CTL_ENTRY = record - SubjectIdentifier: CRYPT_DATA_BLOB; // For example, its hash - cAttribute: DWORD; - rgAttribute: PCRYPT_ATTRIBUTE; // OPTIONAL - end; - -//+------------------------------------------------------------------------- -// Information stored in a CTL -//-------------------------------------------------------------------------- -type - PCTL_INFO = ^CTL_INFO; - CTL_INFO = record - dwVersion: DWORD; - SubjectUsage: CTL_USAGE; - ListIdentifier: CRYPT_DATA_BLOB; // OPTIONAL - SequenceNumber: CRYPT_INTEGER_BLOB; // OPTIONAL - ThisUpdate: TFILETIME; - NextUpdate: TFILETIME; // OPTIONAL - SubjectAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - cCTLEntry: DWORD; - rgCTLEntry: PCTL_ENTRY; // OPTIONAL - cExtension: DWORD; - rgExtension: PCERT_EXTENSION; // OPTIONAL - end; - -//+------------------------------------------------------------------------- -// CTL versions -//-------------------------------------------------------------------------- -const - CTL_V1 = 0; - -//+------------------------------------------------------------------------- -// TimeStamp Request -// -// The pszTimeStamp is the OID for the Time type requested -// The pszContentType is the Content Type OID for the content, usually DATA -// The Content is a un-decoded blob -//-------------------------------------------------------------------------- - -type - PCRYPT_TIME_STAMP_REQUEST_INFO = ^CRYPT_TIME_STAMP_REQUEST_INFO; - CRYPT_TIME_STAMP_REQUEST_INFO = record - pszTimeStampAlgorithm: LPSTR; // pszObjId - pszContentType: LPSTR; // pszObjId - Content: CRYPT_OBJID_BLOB; - cAttribute: DWORD; - rgAttribute: PCRYPT_ATTRIBUTE; - end; - -//+------------------------------------------------------------------------- -// Certificate and Message encoding types -// -// The encoding type is a DWORD containing both the certificate and message -// encoding types. The certificate encoding type is stored in the LOWORD. -// The message encoding type is stored in the HIWORD. Some functions or -// structure fields require only one of the encoding types. The following -// naming convention is used to indicate which encoding type(s) are -// required: -// dwEncodingType (both encoding types are required) -// dwMsgAndCertEncodingType (both encoding types are required) -// dwMsgEncodingType (only msg encoding type is required) -// dwCertEncodingType (only cert encoding type is required) -// -// Its always acceptable to specify both. -//-------------------------------------------------------------------------- - -const - CERT_ENCODING_TYPE_MASK = $0000FFFF; - CMSG_ENCODING_TYPE_MASK = $FFFF0000; - -//#define GET_CERT_ENCODING_TYPE(X) (X & CERT_ENCODING_TYPE_MASK) -//#define GET_CMSG_ENCODING_TYPE(X) (X & CMSG_ENCODING_TYPE_MASK) -function GET_CERT_ENCODING_TYPE(X: DWORD): DWORD; -function GET_CMSG_ENCODING_TYPE(X: DWORD): DWORD; - -const - CRYPT_ASN_ENCODING = $00000001; - CRYPT_NDR_ENCODING = $00000002; - X509_ASN_ENCODING = $00000001; - X509_NDR_ENCODING = $00000002; - PKCS_7_ASN_ENCODING = $00010000; - PKCS_7_NDR_ENCODING = $00020000; - -//+------------------------------------------------------------------------- -// format the specified data structure according to the certificate -// encoding type. -// -//-------------------------------------------------------------------------- - -function CryptFormatObject(dwCertEncodingType: DWORD; - dwFormatType: DWORD; - dwFormatStrType: DWORD; - pFormatStruct: PVOID; - lpszStructType: LPCSTR; - const pbEncoded: PBYTE; - cbEncoded: DWORD; - pbFormat: PVOID; - pcbFormat: PDWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Encode / decode the specified data structure according to the certificate -// encoding type. -// -// See below for a list of the predefined data structures. -//-------------------------------------------------------------------------- - -function CryptEncodeObject(dwCertEncodingType: DWORD; - lpszStructType: LPCSTR; - const pvStructInfo: PVOID; - pbEncoded: PBYTE; - pcbEncoded: PDWORD): BOOL; stdcall; - -function CryptDecodeObject(dwCertEncodingType: DWORD; - lpszStructType: LPCSTR; - const pbEncoded: PBYTE; - cbEncoded: DWORD; - dwFlags: DWORD; - pvStructInfo: PVOID; - pcbStructInfo: PDWORD): BOOL; stdcall; - -// When the following flag is set the nocopy optimization is enabled. -// This optimization where appropriate, updates the pvStructInfo fields -// to point to content residing within pbEncoded instead of making a copy -// of and appending to pvStructInfo. -// -// Note, when set, pbEncoded can't be freed until pvStructInfo is freed. -const - CRYPT_DECODE_NOCOPY_FLAG = $1; - -//+------------------------------------------------------------------------- -// Predefined X509 certificate data structures that can be encoded / decoded. -//-------------------------------------------------------------------------- - CRYPT_ENCODE_DECODE_NONE = 0; - X509_CERT = (LPCSTR(1)); - X509_CERT_TO_BE_SIGNED = (LPCSTR(2)); - X509_CERT_CRL_TO_BE_SIGNED = (LPCSTR(3)); - X509_CERT_REQUEST_TO_BE_SIGNED = (LPCSTR(4)); - X509_EXTENSIONS = (LPCSTR(5)); - X509_NAME_VALUE = (LPCSTR(6)); - X509_NAME = (LPCSTR(7)); - X509_PUBLIC_KEY_INFO = (LPCSTR(8)); - -//+------------------------------------------------------------------------- -// Predefined X509 certificate extension data structures that can be -// encoded / decoded. -//-------------------------------------------------------------------------- - X509_AUTHORITY_KEY_ID = (LPCSTR(9)); - X509_KEY_ATTRIBUTES = (LPCSTR(10)); - X509_KEY_USAGE_RESTRICTION = (LPCSTR(11)); - X509_ALTERNATE_NAME = (LPCSTR(12)); - X509_BASIC_CONSTRAINTS = (LPCSTR(13)); - X509_KEY_USAGE = (LPCSTR(14)); - X509_BASIC_CONSTRAINTS2 = (LPCSTR(15)); - X509_CERT_POLICIES = (LPCSTR(16)); - -//+------------------------------------------------------------------------- -// Additional predefined data structures that can be encoded / decoded. -//-------------------------------------------------------------------------- - PKCS_UTC_TIME = (LPCSTR(17)); - PKCS_TIME_REQUEST = (LPCSTR(18)); - RSA_CSP_PUBLICKEYBLOB = (LPCSTR(19)); - X509_UNICODE_NAME = (LPCSTR(20)); - - X509_KEYGEN_REQUEST_TO_BE_SIGNED = (LPCSTR(21)); - PKCS_ATTRIBUTE = (LPCSTR(22)); - PKCS_CONTENT_INFO_SEQUENCE_OF_ANY = (LPCSTR(23)); - -//+------------------------------------------------------------------------- -// Predefined primitive data structures that can be encoded / decoded. -//-------------------------------------------------------------------------- - X509_UNICODE_NAME_VALUE = (LPCSTR(24)); - X509_ANY_STRING = X509_NAME_VALUE; - X509_UNICODE_ANY_STRING = X509_UNICODE_NAME_VALUE; - X509_OCTET_STRING = (LPCSTR(25)); - X509_BITS = (LPCSTR(26)); - X509_INTEGER = (LPCSTR(27)); - X509_MULTI_BYTE_INTEGER = (LPCSTR(28)); - X509_ENUMERATED = (LPCSTR(29)); - X509_CHOICE_OF_TIME = (LPCSTR(30)); - -//+------------------------------------------------------------------------- -// More predefined X509 certificate extension data structures that can be -// encoded / decoded. -//-------------------------------------------------------------------------- - - X509_AUTHORITY_KEY_ID2 = (LPCSTR(31)); -// X509_AUTHORITY_INFO_ACCESS (LPCSTR(32)); - X509_CRL_REASON_CODE = X509_ENUMERATED; - PKCS_CONTENT_INFO = (LPCSTR(33)); - X509_SEQUENCE_OF_ANY = (LPCSTR(34)); - X509_CRL_DIST_POINTS = (LPCSTR(35)); - X509_ENHANCED_KEY_USAGE = (LPCSTR(36)); - PKCS_CTL = (LPCSTR(37)); - - X509_MULTI_BYTE_UINT = (LPCSTR(38)); - X509_DSS_PUBLICKEY = X509_MULTI_BYTE_UINT; - X509_DSS_PARAMETERS = (LPCSTR(39)); - X509_DSS_SIGNATURE = (LPCSTR(40)); - PKCS_RC2_CBC_PARAMETERS = (LPCSTR(41)); - PKCS_SMIME_CAPABILITIES = (LPCSTR(42)); - -//+------------------------------------------------------------------------- -// Predefined PKCS #7 data structures that can be encoded / decoded. -//-------------------------------------------------------------------------- - PKCS7_SIGNER_INFO = (LPCSTR(500)); - -//+------------------------------------------------------------------------- -// Predefined Software Publishing Credential (SPC) data structures that -// can be encoded / decoded. -// -// Predefined values: 2000 .. 2999 -// -// See spc.h for value and data structure definitions. -//-------------------------------------------------------------------------- -//+------------------------------------------------------------------------- -// Extension Object Identifiers -//-------------------------------------------------------------------------- -const - szOID_AUTHORITY_KEY_IDENTIFIER = '2.5.29.1'; - szOID_KEY_ATTRIBUTES = '2.5.29.2'; - szOID_KEY_USAGE_RESTRICTION = '2.5.29.4'; - szOID_SUBJECT_ALT_NAME = '2.5.29.7'; - szOID_ISSUER_ALT_NAME = '2.5.29.8'; - szOID_BASIC_CONSTRAINTS = '2.5.29.10'; - szOID_KEY_USAGE = '2.5.29.15'; - szOID_BASIC_CONSTRAINTS2 = '2.5.29.19'; - szOID_CERT_POLICIES = '2.5.29.32'; - - szOID_AUTHORITY_KEY_IDENTIFIER2 = '2.5.29.35'; - szOID_SUBJECT_KEY_IDENTIFIER = '2.5.29.14'; - szOID_SUBJECT_ALT_NAME2 = '2.5.29.17'; - szOID_ISSUER_ALT_NAME2 = '2.5.29.18'; - szOID_CRL_REASON_CODE = '2.5.29.21'; - szOID_CRL_DIST_POINTS = '2.5.29.31'; - szOID_ENHANCED_KEY_USAGE = '2.5.29.37'; - - -// Internet Public Key Infrastructure - szOID_PKIX = '1.3.6.1.5.5.7'; - szOID_AUTHORITY_INFO_ACCESS = '1.3.6.1.5.5.7.2'; - -// Microsoft extensions or attributes - szOID_CERT_EXTENSIONS = '1.3.6.1.4.1.311.2.1.14'; - szOID_NEXT_UPDATE_LOCATION = '1.3.6.1.4.1.311.10.2'; - -// Microsoft PKCS #7 ContentType Object Identifiers - szOID_CTL = '1.3.6.1.4.1.311.10.1'; - -//+------------------------------------------------------------------------- -// Extension Object Identifiers (currently not implemented) -//-------------------------------------------------------------------------- - szOID_POLICY_MAPPINGS = '2.5.29.5'; - szOID_SUBJECT_DIR_ATTRS = '2.5.29.9'; - -//+------------------------------------------------------------------------- -// Enhanced Key Usage (Purpose) Object Identifiers -//-------------------------------------------------------------------------- -const szOID_PKIX_KP = '1.3.6.1.5.5.7.3'; - -// Consistent key usage bits: DIGITAL_SIGNATURE, KEY_ENCIPHERMENT -// or KEY_AGREEMENT - szOID_PKIX_KP_SERVER_AUTH = '1.3.6.1.5.5.7.3.1'; - -// Consistent key usage bits: DIGITAL_SIGNATURE - szOID_PKIX_KP_CLIENT_AUTH = '1.3.6.1.5.5.7.3.2'; - -// Consistent key usage bits: DIGITAL_SIGNATURE - szOID_PKIX_KP_CODE_SIGNING = '1.3.6.1.5.5.7.3.3'; - -// Consistent key usage bits: DIGITAL_SIGNATURE, NON_REPUDIATION and/or -// (KEY_ENCIPHERMENT or KEY_AGREEMENT) - szOID_PKIX_KP_EMAIL_PROTECTION = '1.3.6.1.5.5.7.3.4'; - -//+------------------------------------------------------------------------- -// Microsoft Enhanced Key Usage (Purpose) Object Identifiers -//+------------------------------------------------------------------------- - -// Signer of CTLs - szOID_KP_CTL_USAGE_SIGNING = '1.3.6.1.4.1.311.10.3.1'; - -// Signer of TimeStamps - szOID_KP_TIME_STAMP_SIGNING = '1.3.6.1.4.1.311.10.3.2'; - -//+------------------------------------------------------------------------- -// Microsoft Attribute Object Identifiers -//+------------------------------------------------------------------------- - szOID_YESNO_TRUST_ATTR = '1.3.6.1.4.1.311.10.4.1'; - -//+------------------------------------------------------------------------- -// X509_CERT -// -// The "to be signed" encoded content plus its signature. The ToBeSigned -// content is the CryptEncodeObject() output for one of the following: -// X509_CERT_TO_BE_SIGNED, X509_CERT_CRL_TO_BE_SIGNED or -// X509_CERT_REQUEST_TO_BE_SIGNED. -// -// pvStructInfo points to CERT_SIGNED_CONTENT_INFO. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_CERT_TO_BE_SIGNED -// -// pvStructInfo points to CERT_INFO. -// -// For CryptDecodeObject(), the pbEncoded is the "to be signed" plus its -// signature (output of a X509_CERT CryptEncodeObject()). -// -// For CryptEncodeObject(), the pbEncoded is just the "to be signed". -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_CERT_CRL_TO_BE_SIGNED -// -// pvStructInfo points to CRL_INFO. -// -// For CryptDecodeObject(), the pbEncoded is the "to be signed" plus its -// signature (output of a X509_CERT CryptEncodeObject()). -// -// For CryptEncodeObject(), the pbEncoded is just the "to be signed". -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_CERT_REQUEST_TO_BE_SIGNED -// -// pvStructInfo points to CERT_REQUEST_INFO. -// -// For CryptDecodeObject(), the pbEncoded is the "to be signed" plus its -// signature (output of a X509_CERT CryptEncodeObject()). -// -// For CryptEncodeObject(), the pbEncoded is just the "to be signed". -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_EXTENSIONS -// szOID_CERT_EXTENSIONS -// -// pvStructInfo points to following CERT_EXTENSIONS. -//-------------------------------------------------------------------------- -type - PCERT_EXTENSIONS = ^CERT_EXTENSIONS; - CERT_EXTENSIONS = record - cExtension: DWORD; - rgExtension: PCERT_EXTENSION; - end; - -//+------------------------------------------------------------------------- -// X509_NAME_VALUE -// X509_ANY_STRING -// -// pvStructInfo points to CERT_NAME_VALUE. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_UNICODE_NAME_VALUE -// X509_UNICODE_ANY_STRING -// -// pvStructInfo points to CERT_NAME_VALUE. -// -// The name values are unicode strings. -// -// For CryptEncodeObject: -// Value.pbData points to the unicode string. -// If Value.cbData = 0, then, the unicode string is NULL terminated. -// Otherwise, Value.cbData is the unicode string byte count. The byte count -// is twice the character count. -// -// If the unicode string contains an invalid character for the specified -// dwValueType, then, *pcbEncoded is updated with the unicode character -// index of the first invalid character. LastError is set to: -// CRYPT_E_INVALID_NUMERIC_STRING, CRYPT_E_INVALID_PRINTABLE_STRING or -// CRYPT_E_INVALID_IA5_STRING. -// -// The unicode string is converted before being encoded according to -// the specified dwValueType. If dwValueType is set to 0, LastError -// is set to E_INVALIDARG. -// -// If the dwValueType isn't one of the character strings (its a -// CERT_RDN_ENCODED_BLOB or CERT_RDN_OCTET_STRING), then, CryptEncodeObject -// will return FALSE with LastError set to CRYPT_E_NOT_CHAR_STRING. -// -// For CryptDecodeObject: -// Value.pbData points to a NULL terminated unicode string. Value.cbData -// contains the byte count of the unicode string excluding the NULL -// terminator. dwValueType contains the type used in the encoded object. -// Its not forced to CERT_RDN_UNICODE_STRING. The encoded value is -// converted to the unicode string according to the dwValueType. -// -// If the encoded object isn't one of the character string types, then, -// CryptDecodeObject will return FALSE with LastError set to -// CRYPT_E_NOT_CHAR_STRING. For a non character string, decode using -// X509_NAME_VALUE or X509_ANY_STRING. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_NAME -// -// pvStructInfo points to CERT_NAME_INFO. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_UNICODE_NAME -// -// pvStructInfo points to CERT_NAME_INFO. -// -// The RDN attribute values are unicode strings except for the dwValueTypes of -// CERT_RDN_ENCODED_BLOB or CERT_RDN_OCTET_STRING. These dwValueTypes are -// the same as for a X509_NAME. Their values aren't converted to/from unicode. -// -// For CryptEncodeObject: -// Value.pbData points to the unicode string. -// If Value.cbData = 0, then, the unicode string is NULL terminated. -// Otherwise, Value.cbData is the unicode string byte count. The byte count -// is twice the character count. -// -// If dwValueType = 0 (CERT_RDN_ANY_TYPE), the pszObjId is used to find -// an acceptable dwValueType. If the unicode string contains an -// invalid character for the found or specified dwValueType, then, -// *pcbEncoded is updated with the error location of the invalid character. -// See below for details. LastError is set to: -// CRYPT_E_INVALID_NUMERIC_STRING, CRYPT_E_INVALID_PRINTABLE_STRING or -// CRYPT_E_INVALID_IA5_STRING. -// -// The unicode string is converted before being encoded according to -// the specified or ObjId matching dwValueType. -// -// For CryptDecodeObject: -// Value.pbData points to a NULL terminated unicode string. Value.cbData -// contains the byte count of the unicode string excluding the NULL -// terminator. dwValueType contains the type used in the encoded object. -// Its not forced to CERT_RDN_UNICODE_STRING. The encoded value is -// converted to the unicode string according to the dwValueType. -// -// If the dwValueType of the encoded value isn't a character string -// type, then, it isn't converted to UNICODE. Use the -// IS_CERT_RDN_CHAR_STRING() macro on the dwValueType to check -// that Value.pbData points to a converted unicode string. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// Unicode Name Value Error Location Definitions -// -// Error location is returned in *pcbEncoded by -// CryptEncodeObject(X509_UNICODE_NAME) -// -// Error location consists of: -// RDN_INDEX - 10 bits << 22 -// ATTR_INDEX - 6 bits << 16 -// VALUE_INDEX - 16 bits (unicode character index) -//-------------------------------------------------------------------------- -const - CERT_UNICODE_RDN_ERR_INDEX_MASK = $3FF; - CERT_UNICODE_RDN_ERR_INDEX_SHIFT = 22; - CERT_UNICODE_ATTR_ERR_INDEX_MASK = $003F; - CERT_UNICODE_ATTR_ERR_INDEX_SHIFT = 16; - CERT_UNICODE_VALUE_ERR_INDEX_MASK = $0000FFFF; - CERT_UNICODE_VALUE_ERR_INDEX_SHIFT = 0; - -{#define GET_CERT_UNICODE_RDN_ERR_INDEX(X) \ - ((X >> CERT_UNICODE_RDN_ERR_INDEX_SHIFT) & CERT_UNICODE_RDN_ERR_INDEX_MASK)} -function GET_CERT_UNICODE_RDN_ERR_INDEX(X: integer): integer; -{#define GET_CERT_UNICODE_ATTR_ERR_INDEX(X) \ - ((X >> CERT_UNICODE_ATTR_ERR_INDEX_SHIFT) & CERT_UNICODE_ATTR_ERR_INDEX_MASK)} -function GET_CERT_UNICODE_ATTR_ERR_INDEX(X: integer): integer; -{#define GET_CERT_UNICODE_VALUE_ERR_INDEX(X) \ - (X & CERT_UNICODE_VALUE_ERR_INDEX_MASK)} -function GET_CERT_UNICODE_VALUE_ERR_INDEX(X: integer): integer; - -//+------------------------------------------------------------------------- -// X509_PUBLIC_KEY_INFO -// -// pvStructInfo points to CERT_PUBLIC_KEY_INFO. -//-------------------------------------------------------------------------- - - -//+------------------------------------------------------------------------- -// X509_AUTHORITY_KEY_ID -// szOID_AUTHORITY_KEY_IDENTIFIER -// -// pvStructInfo points to following CERT_AUTHORITY_KEY_ID_INFO. -//-------------------------------------------------------------------------- -type - PCERT_AUTHORITY_KEY_ID_INFO = ^CERT_AUTHORITY_KEY_ID_INFO; - CERT_AUTHORITY_KEY_ID_INFO = record - KeyId: CRYPT_DATA_BLOB; - CertIssuer: CERT_NAME_BLOB; - CertSerialNumber: CRYPT_INTEGER_BLOB; - end; - -//+------------------------------------------------------------------------- -// X509_KEY_ATTRIBUTES -// szOID_KEY_ATTRIBUTES -// -// pvStructInfo points to following CERT_KEY_ATTRIBUTES_INFO. -//-------------------------------------------------------------------------- -type - PCERT_PRIVATE_KEY_VALIDITY = ^CERT_PRIVATE_KEY_VALIDITY; - CERT_PRIVATE_KEY_VALIDITY = record - NotBefore: TFILETIME; - NotAfter: TFILETIME; - end; - -type - PCERT_KEY_ATTRIBUTES_INFO = ^CERT_KEY_ATTRIBUTES_INFO; - CERT_KEY_ATTRIBUTES_INFO = record - KeyId: CRYPT_DATA_BLOB; - IntendedKeyUsage: CRYPT_BIT_BLOB; - pPrivateKeyUsagePeriod: PCERT_PRIVATE_KEY_VALIDITY; // OPTIONAL - end; - -const - CERT_DIGITAL_SIGNATURE_KEY_USAGE = $80; - CERT_NON_REPUDIATION_KEY_USAGE = $40; - CERT_KEY_ENCIPHERMENT_KEY_USAGE = $20; - CERT_DATA_ENCIPHERMENT_KEY_USAGE = $10; - CERT_KEY_AGREEMENT_KEY_USAGE = $08; - CERT_KEY_CERT_SIGN_KEY_USAGE = $04; - CERT_OFFLINE_CRL_SIGN_KEY_USAGE = $02; - - CERT_CRL_SIGN_KEY_USAGE = $02; - -//+------------------------------------------------------------------------- -// X509_KEY_USAGE_RESTRICTION -// szOID_KEY_USAGE_RESTRICTION -// -// pvStructInfo points to following CERT_KEY_USAGE_RESTRICTION_INFO. -//-------------------------------------------------------------------------- -type - PCERT_POLICY_ID = ^CERT_POLICY_ID; - CERT_POLICY_ID = record - cCertPolicyElementId: DWORD; - rgpszCertPolicyElementId: PLPSTR; // pszObjId - end; - -type - PCERT_KEY_USAGE_RESTRICTION_INFO = ^CERT_KEY_USAGE_RESTRICTION_INFO; - CERT_KEY_USAGE_RESTRICTION_INFO = record - cCertPolicyId: DWORD; - rgCertPolicyId: PCERT_POLICY_ID; - RestrictedKeyUsage: CRYPT_BIT_BLOB; - end; - -// See CERT_KEY_ATTRIBUTES_INFO for definition of the RestrictedKeyUsage bits - -//+------------------------------------------------------------------------- -// X509_ALTERNATE_NAME -// szOID_SUBJECT_ALT_NAME -// szOID_ISSUER_ALT_NAME -// szOID_SUBJECT_ALT_NAME2 -// szOID_ISSUER_ALT_NAME2 -// -// pvStructInfo points to following CERT_ALT_NAME_INFO. -//-------------------------------------------------------------------------- - -type - PCERT_ALT_NAME_ENTRY = ^CERT_ALT_NAME_ENTRY; - CERT_ALT_NAME_ENTRY = record - dwAltNameChoice: DWORD; - case integer of - {1}0: ({OtherName :Not implemented}); - {2}1: (pwszRfc822Name: LPWSTR); //(encoded IA5) - {3}2: (pwszDNSName: LPWSTR); //(encoded IA5) - {4}3: ({x400Address :Not implemented}); - {5}4: (DirectoryName: CERT_NAME_BLOB); - {6}5: ({pEdiPartyName :Not implemented}); - {7}6: (pwszURL: LPWSTR); //(encoded IA5) - {8}7: (IPAddress: CRYPT_DATA_BLOB); //(Octet String) - {9}8: (pszRegisteredID: LPSTR); //(Octet String) - end; - -const - CERT_ALT_NAME_OTHER_NAME = 1; - CERT_ALT_NAME_RFC822_NAME = 2; - CERT_ALT_NAME_DNS_NAME = 3; - CERT_ALT_NAME_X400_ADDRESS = 4; - CERT_ALT_NAME_DIRECTORY_NAME = 5; - CERT_ALT_NAME_EDI_PARTY_NAME = 6; - CERT_ALT_NAME_URL = 7; - CERT_ALT_NAME_IP_ADDRESS = 8; - CERT_ALT_NAME_REGISTERED_ID = 9; - -type - PCERT_ALT_NAME_INFO = ^CERT_ALT_NAME_INFO; - CERT_ALT_NAME_INFO = record - cAltEntry: DWORD; - rgAltEntry: PCERT_ALT_NAME_ENTRY; - end; - -//+------------------------------------------------------------------------- -// Alternate name IA5 Error Location Definitions for -// CRYPT_E_INVALID_IA5_STRING. -// -// Error location is returned in *pcbEncoded by -// CryptEncodeObject(X509_ALTERNATE_NAME) -// -// Error location consists of: -// ENTRY_INDEX - 8 bits << 16 -// VALUE_INDEX - 16 bits (unicode character index) -//-------------------------------------------------------------------------- - -const - CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK = $FF; - CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT = 16; - CERT_ALT_NAME_VALUE_ERR_INDEX_MASK = $0000FFFF; - CERT_ALT_NAME_VALUE_ERR_INDEX_SHIFT = 0; - -{#define GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(X) \ - ((X >> CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT) & \ - CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK)} -function GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(X: DWORD): DWORD; - -{#define GET_CERT_ALT_NAME_VALUE_ERR_INDEX(X) \ - (X & CERT_ALT_NAME_VALUE_ERR_INDEX_MASK)} -function GET_CERT_ALT_NAME_VALUE_ERR_INDEX(X: DWORD): DWORD; - -//+------------------------------------------------------------------------- -// X509_BASIC_CONSTRAINTS -// szOID_BASIC_CONSTRAINTS -// -// pvStructInfo points to following CERT_BASIC_CONSTRAINTS_INFO. -//-------------------------------------------------------------------------- - -type - PCERT_BASIC_CONSTRAINTS_INFO = ^CERT_BASIC_CONSTRAINTS_INFO; - CERT_BASIC_CONSTRAINTS_INFO = record - SubjectType: CRYPT_BIT_BLOB; - fPathLenConstraint: BOOL; - dwPathLenConstraint: DWORD; - cSubtreesConstraint: DWORD; - rgSubtreesConstraint: PCERT_NAME_BLOB; - end; - -const - CERT_CA_SUBJECT_FLAG = $80; - CERT_END_ENTITY_SUBJECT_FLAG = $40; - -//+------------------------------------------------------------------------- -// X509_BASIC_CONSTRAINTS2 -// szOID_BASIC_CONSTRAINTS2 -// -// pvStructInfo points to following CERT_BASIC_CONSTRAINTS2_INFO. -//-------------------------------------------------------------------------- - -type - PCERT_BASIC_CONSTRAINTS2_INFO = ^CERT_BASIC_CONSTRAINTS2_INFO; - CERT_BASIC_CONSTRAINTS2_INFO = record - fCA: BOOL; - fPathLenConstraint: BOOL; - dwPathLenConstraint: DWORD; - end; - -//+------------------------------------------------------------------------- -// X509_KEY_USAGE -// szOID_KEY_USAGE -// -// pvStructInfo points to a CRYPT_BIT_BLOB. Has same bit definitions as -// CERT_KEY_ATTRIBUTES_INFO's IntendedKeyUsage. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_CERT_POLICIES -// szOID_CERT_POLICIES -// -// pvStructInfo points to following CERT_POLICIES_INFO. -//-------------------------------------------------------------------------- - -type - PCERT_POLICY_QUALIFIER_INFO = ^CERT_POLICY_QUALIFIER_INFO; - CERT_POLICY_QUALIFIER_INFO = record - pszPolicyQualifierId: LPSTR; // pszObjId - Qualifier: CRYPT_OBJID_BLOB; // optional - end; - -type - PCERT_POLICY_INFO = ^CERT_POLICY_INFO; - CERT_POLICY_INFO = record - pszPolicyIdentifier: LPSTR; // pszObjId - cPolicyQualifier: DWORD; // optional - rgPolicyQualifier: PCERT_POLICY_QUALIFIER_INFO; - end; - -type - PCERT_POLICIES_INFO = ^CERT_POLICIES_INFO; - CERT_POLICIES_INFO = record - cPolicyInfo: DWORD; - rgPolicyInfo: PCERT_POLICY_INFO; - end; - -//+------------------------------------------------------------------------- -// RSA_CSP_PUBLICKEYBLOB -// -// pvStructInfo points to a PUBLICKEYSTRUC immediately followed by a -// RSAPUBKEY and the modulus bytes. -// -// CryptExportKey outputs the above StructInfo for a dwBlobType of -// PUBLICKEYBLOB. CryptImportKey expects the above StructInfo when -// importing a public key. -// -// For dwCertEncodingType = X509_ASN_ENCODING, the RSA_CSP_PUBLICKEYBLOB is -// encoded as a PKCS #1 RSAPublicKey consisting of a SEQUENCE of a -// modulus INTEGER and a publicExponent INTEGER. The modulus is encoded -// as being a unsigned integer. When decoded, if the modulus was encoded -// as unsigned integer with a leading 0 byte, the 0 byte is removed before -// converting to the CSP modulus bytes. -// -// For decode, the aiKeyAlg field of PUBLICKEYSTRUC is always set to -// CALG_RSA_KEYX. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_KEYGEN_REQUEST_TO_BE_SIGNED -// -// pvStructInfo points to CERT_KEYGEN_REQUEST_INFO. -// -// For CryptDecodeObject(), the pbEncoded is the "to be signed" plus its -// signature (output of a X509_CERT CryptEncodeObject()). -// -// For CryptEncodeObject(), the pbEncoded is just the "to be signed". -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// PKCS_ATTRIBUTE data structure -// -// pvStructInfo points to a CRYPT_ATTRIBUTE. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// PKCS_CONTENT_INFO_SEQUENCE_OF_ANY data structure -// -// pvStructInfo points to following CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY. -// -// For X509_ASN_ENCODING: encoded as a PKCS#7 ContentInfo structure wrapping -// a sequence of ANY. The value of the contentType field is pszObjId, -// while the content field is the following structure: -// SequenceOfAny ::= SEQUENCE OF ANY -// -// The CRYPT_DER_BLOBs point to the already encoded ANY content. -//-------------------------------------------------------------------------- - -type - PCRYPT_CONTENT_INFO_SEQUENCE_OF_ANY = ^CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY; - CRYPT_CONTENT_INFO_SEQUENCE_OF_ANY = record - pszObjId: LPSTR; - cValue: DWORD; - rgValue: PCRYPT_DER_BLOB; - end; - -//+------------------------------------------------------------------------- -// PKCS_CONTENT_INFO data structure -// -// pvStructInfo points to following CRYPT_CONTENT_INFO. -// -// For X509_ASN_ENCODING: encoded as a PKCS#7 ContentInfo structure. -// The CRYPT_DER_BLOB points to the already encoded ANY content. -//-------------------------------------------------------------------------- - -type - PCRYPT_CONTENT_INFO = ^CRYPT_CONTENT_INFO; - CRYPT_CONTENT_INFO = record - pszObjId: LPSTR; - Content: CRYPT_DER_BLOB; - end; - - -//+------------------------------------------------------------------------- -// X509_OCTET_STRING data structure -// -// pvStructInfo points to a CRYPT_DATA_BLOB. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_BITS data structure -// -// pvStructInfo points to a CRYPT_BIT_BLOB. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_INTEGER data structure -// -// pvStructInfo points to an int. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_MULTI_BYTE_INTEGER data structure -// -// pvStructInfo points to a CRYPT_INTEGER_BLOB. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_ENUMERATED data structure -// -// pvStructInfo points to an int containing the enumerated value -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_CHOICE_OF_TIME data structure -// -// pvStructInfo points to a FILETIME. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_SEQUENCE_OF_ANY data structure -// -// pvStructInfo points to following CRYPT_SEQUENCE_OF_ANY. -// -// The CRYPT_DER_BLOBs point to the already encoded ANY content. -//-------------------------------------------------------------------------- - -type - PCRYPT_SEQUENCE_OF_ANY = ^CRYPT_SEQUENCE_OF_ANY; - CRYPT_SEQUENCE_OF_ANY = record - cValue: DWORD; - rgValue: PCRYPT_DER_BLOB; - end; - -//+------------------------------------------------------------------------- -// X509_AUTHORITY_KEY_ID2 -// szOID_AUTHORITY_KEY_IDENTIFIER2 -// -// pvStructInfo points to following CERT_AUTHORITY_KEY_ID2_INFO. -// -// For CRYPT_E_INVALID_IA5_STRING, the error location is returned in -// *pcbEncoded by CryptEncodeObject(X509_AUTHORITY_KEY_ID2) -// -// See X509_ALTERNATE_NAME for error location defines. -//-------------------------------------------------------------------------- - -type - PCERT_AUTHORITY_KEY_ID2_INFO = ^CERT_AUTHORITY_KEY_ID2_INFO; - CERT_AUTHORITY_KEY_ID2_INFO = record - KeyId: CRYPT_DATA_BLOB; - AuthorityCertIssuer: CERT_ALT_NAME_INFO; // Optional, set cAltEntry to 0 to omit. - AuthorityCertSerialNumber: CRYPT_INTEGER_BLOB; - end; - -//+------------------------------------------------------------------------- -// szOID_SUBJECT_KEY_IDENTIFIER -// -// pvStructInfo points to a CRYPT_DATA_BLOB. -//-------------------------------------------------------------------------- - - -//+------------------------------------------------------------------------- -// X509_CRL_REASON_CODE -// szOID_CRL_REASON_CODE -// -// pvStructInfo points to an int which can be set to one of the following -// enumerated values: -//-------------------------------------------------------------------------- - -const - CRL_REASON_UNSPECIFIED = 0; - CRL_REASON_KEY_COMPROMISE = 1; - CRL_REASON_CA_COMPROMISE = 2; - CRL_REASON_AFFILIATION_CHANGED = 3; - CRL_REASON_SUPERSEDED = 4; - CRL_REASON_CESSATION_OF_OPERATION = 5; - CRL_REASON_CERTIFICATE_HOLD = 6; - CRL_REASON_REMOVE_FROM_CRL = 8; - -//+------------------------------------------------------------------------- -// X509_CRL_DIST_POINTS -// szOID_CRL_DIST_POINTS -// -// pvStructInfo points to following CRL_DIST_POINTS_INFO. -// -// For CRYPT_E_INVALID_IA5_STRING, the error location is returned in -// *pcbEncoded by CryptEncodeObject(X509_CRL_DIST_POINTS) -// -// Error location consists of: -// CRL_ISSUER_BIT - 1 bit << 31 (0 for FullName, 1 for CRLIssuer) -// POINT_INDEX - 7 bits << 24 -// ENTRY_INDEX - 8 bits << 16 -// VALUE_INDEX - 16 bits (unicode character index) -// -// See X509_ALTERNATE_NAME for ENTRY_INDEX and VALUE_INDEX error location -// defines. -//-------------------------------------------------------------------------- - -type - PCRL_DIST_POINT_NAME = ^CRL_DIST_POINT_NAME; - CRL_DIST_POINT_NAME = record - dwDistPointNameChoice: DWORD; - case integer of - 0: (FullName: CERT_ALT_NAME_INFO); {1} - 1: ({IssuerRDN :Not implemented}); {2} - end; - -const - CRL_DIST_POINT_NO_NAME = 0; - CRL_DIST_POINT_FULL_NAME = 1; - CRL_DIST_POINT_ISSUER_RDN_NAME = 2; - -type - PCRL_DIST_POINT = ^CRL_DIST_POINT; - CRL_DIST_POINT = record - DistPointName: CRL_DIST_POINT_NAME; // OPTIONAL - ReasonFlags: CRYPT_BIT_BLOB; // OPTIONAL - CRLIssuer: CERT_ALT_NAME_INFO; // OPTIONAL - end; - -const - CRL_REASON_UNUSED_FLAG = $80; - CRL_REASON_KEY_COMPROMISE_FLAG = $40; - CRL_REASON_CA_COMPROMISE_FLAG = $20; - CRL_REASON_AFFILIATION_CHANGED_FLAG = $10; - CRL_REASON_SUPERSEDED_FLAG = $08; - CRL_REASON_CESSATION_OF_OPERATION_FLAG = $04; - CRL_REASON_CERTIFICATE_HOLD_FLAG = $02; - -type - PCRL_DIST_POINTS_INFO = ^CRL_DIST_POINTS_INFO; - CRL_DIST_POINTS_INFO = record - cDistPoint: DWORD; - rgDistPoint: PCRL_DIST_POINT; - end; - -const - CRL_DIST_POINT_ERR_INDEX_MASK = $7F; - CRL_DIST_POINT_ERR_INDEX_SHIFT = 24; - -{#define GET_CRL_DIST_POINT_ERR_INDEX(X) \ - ((X >> CRL_DIST_POINT_ERR_INDEX_SHIFT) & CRL_DIST_POINT_ERR_INDEX_MASK)} -function GET_CRL_DIST_POINT_ERR_INDEX(X: DWORD): DWORD; -const CRL_DIST_POINT_ERR_CRL_ISSUER_BIT = (DWORD($80000000)); - -{#define IS_CRL_DIST_POINT_ERR_CRL_ISSUER(X) \ - (0 != (X & CRL_DIST_POINT_ERR_CRL_ISSUER_BIT))} -function IS_CRL_DIST_POINT_ERR_CRL_ISSUER(X: DWORD): BOOL; - -//+------------------------------------------------------------------------- -// X509_ENHANCED_KEY_USAGE -// szOID_ENHANCED_KEY_USAGE -// -// pvStructInfo points to a CERT_ENHKEY_USAGE, CTL_USAGE. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// szOID_NEXT_UPDATE_LOCATION -// -// pvStructInfo points to a CERT_ALT_NAME_INFO. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// PKCS_CTL -// szOID_CTL -// -// pvStructInfo points to a CTL_INFO. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_MULTI_BYTE_UINT -// -// pvStructInfo points to a CRYPT_UINT_BLOB. Before encoding, inserts a -// leading 0x00. After decoding, removes a leading 0x00. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_DSS_PUBLICKEY -// -// pvStructInfo points to a CRYPT_UINT_BLOB. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// X509_DSS_PARAMETERS -// -// pvStructInfo points to following CERT_DSS_PARAMETERS data structure. -//-------------------------------------------------------------------------- - -type - PCERT_DSS_PARAMETERS = ^CERT_DSS_PARAMETERS; - CERT_DSS_PARAMETERS = record - p: CRYPT_UINT_BLOB; - q: CRYPT_UINT_BLOB; - g: CRYPT_UINT_BLOB; - end; - -//+------------------------------------------------------------------------- -// X509_DSS_SIGNATURE -// -// pvStructInfo is a BYTE rgbSignature[CERT_DSS_SIGNATURE_LEN]. The -// bytes are ordered as output by the DSS CSP's CryptSignHash(). -//-------------------------------------------------------------------------- - -const - CERT_DSS_R_LEN = 20; - CERT_DSS_S_LEN = 20; - CERT_DSS_SIGNATURE_LEN = (CERT_DSS_R_LEN + CERT_DSS_S_LEN); - -// Sequence of 2 unsigned integers (the extra +1 is for a potential leading -// 0x00 to make the integer unsigned) - CERT_MAX_ASN_ENCODED_DSS_SIGNATURE_LEN = (2 + 2 * (2 + 20 + 1)); - -//+------------------------------------------------------------------------- -// PKCS_RC2_CBC_PARAMETERS -// szOID_RSA_RC2CBC -// -// pvStructInfo points to following CRYPT_RC2_CBC_PARAMETERS data structure. -//-------------------------------------------------------------------------- - -type - PCRYPT_RC2_CBC_PARAMETERS = ^CRYPT_RC2_CBC_PARAMETERS; - CRYPT_RC2_CBC_PARAMETERS = record - dwVersion: DWORD; - fIV: BOOL; // set if has following IV - rgbIV: array[0..8 - 1] of BYTE; - end; - -const - CRYPT_RC2_40BIT_VERSION = 160; - CRYPT_RC2_64BIT_VERSION = 120; - CRYPT_RC2_128BIT_VERSION = 58; - - -//+------------------------------------------------------------------------- -// PKCS_SMIME_CAPABILITIES -// szOID_RSA_SMIMECapabilities -// -// pvStructInfo points to following CRYPT_SMIME_CAPABILITIES data structure. -// -// Note, for CryptEncodeObject(X509_ASN_ENCODING), Parameters.cbData == 0 -// causes the encoded parameters to be omitted and not encoded as a NULL -// (05 00) as is done when encoding a CRYPT_ALGORITHM_IDENTIFIER. This -// is per the SMIME specification for encoding capabilities. -//-------------------------------------------------------------------------- - -type - PCRYPT_SMIME_CAPABILITY = ^CRYPT_SMIME_CAPABILITY; - CRYPT_SMIME_CAPABILITY = record - pszObjId: LPSTR; - Parameters: CRYPT_OBJID_BLOB; - end; - -type - PCRYPT_SMIME_CAPABILITIES = ^CRYPT_SMIME_CAPABILITIES; - CRYPT_SMIME_CAPABILITIES = record - cCapability: DWORD; - rgCapability: PCRYPT_SMIME_CAPABILITY; - end; - - -//+------------------------------------------------------------------------- -// PKCS7_SIGNER_INFO -// -// pvStructInfo points to CMSG_SIGNER_INFO. -//-------------------------------------------------------------------------- - - -//+------------------------------------------------------------------------- -// Netscape Certificate Extension Object Identifiers -//-------------------------------------------------------------------------- - -const - szOID_NETSCAPE = '2.16.840.1.113730'; - szOID_NETSCAPE_CERT_EXTENSION = '2.16.840.1.113730.1'; - szOID_NETSCAPE_CERT_TYPE = '2.16.840.1.113730.1.1'; - szOID_NETSCAPE_BASE_URL = '2.16.840.1.113730.1.2'; - szOID_NETSCAPE_REVOCATION_URL = '2.16.840.1.113730.1.3'; - szOID_NETSCAPE_CA_REVOCATION_URL = '2.16.840.1.113730.1.4'; - szOID_NETSCAPE_CERT_RENEWAL_URL = '2.16.840.1.113730.1.7'; - szOID_NETSCAPE_CA_POLICY_URL = '2.16.840.1.113730.1.8'; - szOID_NETSCAPE_SSL_SERVER_NAME = '2.16.840.1.113730.1.12'; - szOID_NETSCAPE_COMMENT = '2.16.840.1.113730.1.13'; - -//+------------------------------------------------------------------------- -// Netscape Certificate Data Type Object Identifiers -//-------------------------------------------------------------------------- - -const - szOID_NETSCAPE_DATA_TYPE = '2.16.840.1.113730.2'; - szOID_NETSCAPE_CERT_SEQUENCE = '2.16.840.1.113730.2.5'; - -//+------------------------------------------------------------------------- -// szOID_NETSCAPE_CERT_TYPE extension -// -// Its value is a bit string. CryptDecodeObject/CryptEncodeObject using -// X509_BITS. -// -// The following bits are defined: -//-------------------------------------------------------------------------- - -const - NETSCAPE_SSL_CLIENT_AUTH_CERT_TYPE = $80; - NETSCAPE_SSL_SERVER_AUTH_CERT_TYPE = $40; - NETSCAPE_SSL_CA_CERT_TYPE = $04; - -//+------------------------------------------------------------------------- -// szOID_NETSCAPE_BASE_URL extension -// -// Its value is an IA5_STRING. CryptDecodeObject/CryptEncodeObject using -// X509_ANY_STRING or X509_UNICODE_ANY_STRING, where, -// dwValueType = CERT_RDN_IA5_STRING. -// -// When present this string is added to the beginning of all relative URLs -// in the certificate. This extension can be considered an optimization -// to reduce the size of the URL extensions. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// szOID_NETSCAPE_REVOCATION_URL extension -// -// Its value is an IA5_STRING. CryptDecodeObject/CryptEncodeObject using -// X509_ANY_STRING or X509_UNICODE_ANY_STRING, where, -// dwValueType = CERT_RDN_IA5_STRING. -// -// It is a relative or absolute URL that can be used to check the -// revocation status of a certificate. The revocation check will be -// performed as an HTTP GET method using a url that is the concatenation of -// revocation-url and certificate-serial-number. -// Where the certificate-serial-number is encoded as a string of -// ascii hexadecimal digits. For example, if the netscape-base-url is -// https://www.certs-r-us.com/, the netscape-revocation-url is -// cgi-bin/check-rev.cgi?, and the certificate serial number is 173420, -// the resulting URL would be: -// https://www.certs-r-us.com/cgi-bin/check-rev.cgi?02a56c -// -// The server should return a document with a Content-Type of -// application/x-netscape-revocation. The document should contain -// a single ascii digit, '1' if the certificate is not curently valid, -// and '0' if it is curently valid. -// -// Note: for all of the URLs that include the certificate serial number, -// the serial number will be encoded as a string which consists of an even -// number of hexadecimal digits. If the number of significant digits is odd, -// the string will have a single leading zero to ensure an even number of -// digits is generated. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// szOID_NETSCAPE_CA_REVOCATION_URL extension -// -// Its value is an IA5_STRING. CryptDecodeObject/CryptEncodeObject using -// X509_ANY_STRING or X509_UNICODE_ANY_STRING, where, -// dwValueType = CERT_RDN_IA5_STRING. -// -// It is a relative or absolute URL that can be used to check the -// revocation status of any certificates that are signed by the CA that -// this certificate belongs to. This extension is only valid in CA -// certificates. The use of this extension is the same as the above -// szOID_NETSCAPE_REVOCATION_URL extension. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// szOID_NETSCAPE_CERT_RENEWAL_URL extension -// -// Its value is an IA5_STRING. CryptDecodeObject/CryptEncodeObject using -// X509_ANY_STRING or X509_UNICODE_ANY_STRING, where, -// dwValueType = CERT_RDN_IA5_STRING. -// -// It is a relative or absolute URL that points to a certificate renewal -// form. The renewal form will be accessed with an HTTP GET method using a -// url that is the concatenation of renewal-url and -// certificate-serial-number. Where the certificate-serial-number is -// encoded as a string of ascii hexadecimal digits. For example, if the -// netscape-base-url is https://www.certs-r-us.com/, the -// netscape-cert-renewal-url is cgi-bin/check-renew.cgi?, and the -// certificate serial number is 173420, the resulting URL would be: -// https://www.certs-r-us.com/cgi-bin/check-renew.cgi?02a56c -// The document returned should be an HTML form that will allow the user -// to request a renewal of their certificate. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// szOID_NETSCAPE_CA_POLICY_URL extension -// -// Its value is an IA5_STRING. CryptDecodeObject/CryptEncodeObject using -// X509_ANY_STRING or X509_UNICODE_ANY_STRING, where, -// dwValueType = CERT_RDN_IA5_STRING. -// -// It is a relative or absolute URL that points to a web page that -// describes the policies under which the certificate was issued. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// szOID_NETSCAPE_SSL_SERVER_NAME extension -// -// Its value is an IA5_STRING. CryptDecodeObject/CryptEncodeObject using -// X509_ANY_STRING or X509_UNICODE_ANY_STRING, where, -// dwValueType = CERT_RDN_IA5_STRING. -// -// It is a "shell expression" that can be used to match the hostname of the -// SSL server that is using this certificate. It is recommended that if -// the server's hostname does not match this pattern the user be notified -// and given the option to terminate the SSL connection. If this extension -// is not present then the CommonName in the certificate subject's -// distinguished name is used for the same purpose. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// szOID_NETSCAPE_COMMENT extension -// -// Its value is an IA5_STRING. CryptDecodeObject/CryptEncodeObject using -// X509_ANY_STRING or X509_UNICODE_ANY_STRING, where, -// dwValueType = CERT_RDN_IA5_STRING. -// -// It is a comment that may be displayed to the user when the certificate -// is viewed. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// szOID_NETSCAPE_CERT_SEQUENCE -// -// Its value is a PKCS#7 ContentInfo structure wrapping a sequence of -// certificates. The value of the contentType field is -// szOID_NETSCAPE_CERT_SEQUENCE, while the content field is the following -// structure: -// CertificateSequence ::= SEQUENCE OF Certificate. -// -// CryptDecodeObject/CryptEncodeObject using -// PKCS_CONTENT_INFO_SEQUENCE_OF_ANY, where, -// pszObjId = szOID_NETSCAPE_CERT_SEQUENCE and the CRYPT_DER_BLOBs point -// to encoded X509 certificates. -//-------------------------------------------------------------------------- - - -//+========================================================================= -// Object IDentifier (OID) Installable Functions: Data Structures and APIs -//========================================================================== - -type - HCRYPTOIDFUNCSET = procedure; - HCRYPTOIDFUNCADDR = procedure; - -// Predefined OID Function Names -const - CRYPT_OID_ENCODE_OBJECT_FUNC = 'CryptDllEncodeObject'; - CRYPT_OID_DECODE_OBJECT_FUNC = 'CryptDllDecodeObject'; - CRYPT_OID_CREATE_COM_OBJECT_FUNC = 'CryptDllCreateCOMObject'; - CRYPT_OID_VERIFY_REVOCATION_FUNC = 'CertDllVerifyRevocation'; - CRYPT_OID_VERIFY_CTL_USAGE_FUNC = 'CertDllVerifyCTLUsage'; - CRYPT_OID_FORMAT_OBJECT_FUNC = 'CryptDllFormatObject'; - CRYPT_OID_FIND_OID_INFO_FUNC = 'CryptDllFindOIDInfo'; - -// CryptDllEncodeObject has same function signature as CryptEncodeObject. - -// CryptDllDecodeObject has same function signature as CryptDecodeObject. - -// CryptDllCreateCOMObject has the following signature: -// BOOL WINAPI CryptDllCreateCOMObject( -// IN DWORD dwEncodingType, -// IN LPCSTR pszOID, -// IN PCRYPT_DATA_BLOB pEncodedContent, -// IN DWORD dwFlags, -// IN REFIID riid, -// OUT void **ppvObj); - -// CertDllVerifyRevocation has the same signature as CertVerifyRevocation -// (See CertVerifyRevocation for details on when called) - -// CertDllVerifyCTLUsage has the same signature as CertVerifyCTLUsage - -// CryptDllFindOIDInfo currently is only used to store values used by -// CryptFindOIDInfo. See CryptFindOIDInfo() for more details. - -// Example of a complete OID Function Registry Name: -// HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\OID -// Encoding Type 1\CryptDllEncodeObject\1.2.3 -// -// The key's L"Dll" value contains the name of the Dll. -// The key's L"FuncName" value overrides the default function name - -const - CRYPT_OID_REGPATH = 'Software\\Microsoft\\Cryptography\\OID'; - CRYPT_OID_REG_ENCODING_TYPE_PREFIX = 'EncodingType '; -{$IFNDEF VER90} - CRYPT_OID_REG_DLL_VALUE_NAME = WideString('Dll'); - CRYPT_OID_REG_FUNC_NAME_VALUE_NAME = WideString('FuncName'); -{$ELSE} - CRYPT_OID_REG_DLL_VALUE_NAME = ('Dll'); - CRYPT_OID_REG_FUNC_NAME_VALUE_NAME = ('FuncName'); -{$ENDIF} - CRYPT_OID_REG_FUNC_NAME_VALUE_NAME_A = 'FuncName'; - -// OID used for Default OID functions - CRYPT_DEFAULT_OID = 'DEFAULT'; - -type - PCRYPT_OID_FUNC_ENTRY = ^CRYPT_OID_FUNC_ENTRY; - CRYPT_OID_FUNC_ENTRY = record - pszOID: LPCSTR; - pvFuncAddr: PVOID; - end; - -const - CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG = 1; - -//+------------------------------------------------------------------------- -// Install a set of callable OID function addresses. -// -// By default the functions are installed at end of the list. -// Set CRYPT_INSTALL_OID_FUNC_BEFORE_FLAG to install at beginning of list. -// -// hModule should be updated with the hModule passed to DllMain to prevent -// the Dll containing the function addresses from being unloaded by -// CryptGetOIDFuncAddress/CryptFreeOIDFunctionAddress. This would be the -// case when the Dll has also regsvr32'ed OID functions via -// CryptRegisterOIDFunction. -// -// DEFAULT functions are installed by setting rgFuncEntry[].pszOID = -// CRYPT_DEFAULT_OID. -//-------------------------------------------------------------------------- - -function CryptInstallOIDFunctionAddress(hModule: HMODULE; // hModule passed to DllMain - dwEncodingType: DWORD; - pszFuncName: LPCSTR; - cFuncEntry: DWORD; - const rgFuncEntry: array of CRYPT_OID_FUNC_ENTRY; - dwFlags: DWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Initialize and return handle to the OID function set identified by its -// function name. -// -// If the set already exists, a handle to the existing set is returned. -//-------------------------------------------------------------------------- - -function CryptInitOIDFunctionSet(pszFuncName: LPCSTR; - dwFlags: DWORD): HCRYPTOIDFUNCSET; stdcall; -//+------------------------------------------------------------------------- -// Search the list of installed functions for an encoding type and OID match. -// If not found, search the registry. -// -// For success, returns TRUE with *ppvFuncAddr updated with the function's -// address and *phFuncAddr updated with the function address's handle. -// The function's handle is AddRef'ed. CryptFreeOIDFunctionAddress needs to -// be called to release it. -// -// For a registry match, the Dll containing the function is loaded. -//-------------------------------------------------------------------------- - -function CryptGetOIDFunctionAddress(hFuncSet: HCRYPTOIDFUNCSET; - dwEncodingType: DWORD; - pszOID: LPCSTR; - dwFlags: DWORD; - var ppvFuncAddr: array of PVOID; - var phFuncAddr: HCRYPTOIDFUNCADDR): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Get the list of registered default Dll entries for the specified -// function set and encoding type. -// -// The returned list consists of none, one or more null terminated Dll file -// names. The list is terminated with an empty (L"\0") Dll file name. -// For example: L"first.dll" L"\0" L"second.dll" L"\0" L"\0" -//-------------------------------------------------------------------------- - -function CryptGetDefaultOIDDllList(hFuncSet: HCRYPTOIDFUNCSET; - dwEncodingType: DWORD; - pwszDllList: LPWSTR; - pcchDllList: PDWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Either: get the first or next installed DEFAULT function OR -// load the Dll containing the DEFAULT function. -// -// If pwszDll is NULL, search the list of installed DEFAULT functions. -// *phFuncAddr must be set to NULL to get the first installed function. -// Successive installed functions are returned by setting *phFuncAddr -// to the hFuncAddr returned by the previous call. -// -// If pwszDll is NULL, the input *phFuncAddr -// is always CryptFreeOIDFunctionAddress'ed by this function, even for -// an error. -// -// If pwszDll isn't NULL, then, attempts to load the Dll and the DEFAULT -// function. *phFuncAddr is ignored upon entry and isn't -// CryptFreeOIDFunctionAddress'ed. -// -// For success, returns TRUE with *ppvFuncAddr updated with the function's -// address and *phFuncAddr updated with the function address's handle. -// The function's handle is AddRef'ed. CryptFreeOIDFunctionAddress needs to -// be called to release it or CryptGetDefaultOIDFunctionAddress can also -// be called for a NULL pwszDll. -//-------------------------------------------------------------------------- - -function CryptGetDefaultOIDFunctionAddress(hFuncSet: HCRYPTOIDFUNCSET; - dwEncodingType: DWORD; - pwszDll: DWORD; - dwFlags: LPCWSTR; - var ppvFuncAddr: array of PVOID; - var phFuncAddr: HCRYPTOIDFUNCADDR): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Releases the handle AddRef'ed and returned by CryptGetOIDFunctionAddress -// or CryptGetDefaultOIDFunctionAddress. -// -// If a Dll was loaded for the function its unloaded. However, before doing -// the unload, the DllCanUnloadNow function exported by the loaded Dll is -// called. It should return S_FALSE to inhibit the unload or S_TRUE to enable -// the unload. If the Dll doesn't export DllCanUnloadNow, the Dll is unloaded. -// -// DllCanUnloadNow has the following signature: -// STDAPI DllCanUnloadNow(void); -//-------------------------------------------------------------------------- - -function CryptFreeOIDFunctionAddress(hFuncAddr: HCRYPTOIDFUNCADDR; - dwFlags: DWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Register the Dll containing the function to be called for the specified -// encoding type, function name and OID. -// -// pwszDll may contain environment-variable strings -// which are ExpandEnvironmentStrings()'ed before loading the Dll. -// -// In addition to registering the DLL, you may override the -// name of the function to be called. For example, -// pszFuncName = "CryptDllEncodeObject", -// pszOverrideFuncName = "MyEncodeXyz". -// This allows a Dll to export multiple OID functions for the same -// function name without needing to interpose its own OID dispatcher function. -//-------------------------------------------------------------------------- - -function CryptRegisterOIDFunction(dwEncodingType: DWORD; - pszFuncName: LPCSTR; - pszOID: LPCSTR; //OPTIONAL - pwszDll: LPCWSTR; //OPTIONAL - pszOverrideFuncName: LPCSTR): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Unregister the Dll containing the function to be called for the specified -// encoding type, function name and OID. -//-------------------------------------------------------------------------- - -function CryptUnregisterOIDFunction(dwEncodingType: DWORD; - pszFuncName: LPCSTR; - pszOID: LPCSTR): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Register the Dll containing the default function to be called for the -// specified encoding type and function name. -// -// Unlike CryptRegisterOIDFunction, you can't override the function name -// needing to be exported by the Dll. -// -// The Dll is inserted before the entry specified by dwIndex. -// dwIndex == 0, inserts at the beginning. -// dwIndex == CRYPT_REGISTER_LAST_INDEX, appends at the end. -// -// pwszDll may contain environment-variable strings -// which are ExpandEnvironmentStrings()'ed before loading the Dll. -//-------------------------------------------------------------------------- - -function CryptRegisterDefaultOIDFunction(dwEncodingType: DWORD; - pszFuncName: LPCSTR; - dwIndex: DWORD; - pwszDll: LPCWSTR): BOOL; stdcall; - -const - CRYPT_REGISTER_FIRST_INDEX = 0; - CRYPT_REGISTER_LAST_INDEX = $FFFFFFFF; - -//+------------------------------------------------------------------------- -// Unregister the Dll containing the default function to be called for -// the specified encoding type and function name. -//-------------------------------------------------------------------------- - -function CryptUnregisterDefaultOIDFunction(dwEncodingType: DWORD; - pszFuncName: LPCSTR; - pwszDll: LPCWSTR): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Set the value for the specified encoding type, function name, OID and -// value name. -// -// See RegSetValueEx for the possible value types. -// -// String types are UNICODE. -//-------------------------------------------------------------------------- - -function CryptSetOIDFunctionValue(dwEncodingType: DWORD; - pszFuncName: LPCSTR; - pszOID: LPCSTR; - pwszValueName: LPCWSTR; - dwValueType: DWORD; - const pbValueData: PBYTE; - cbValueData: DWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Get the value for the specified encoding type, function name, OID and -// value name. -// -// See RegEnumValue for the possible value types. -// -// String types are UNICODE. -//-------------------------------------------------------------------------- - -function CryptGetOIDFunctionValue(dwEncodingType: DWORD; - pszFuncName: LPCSTR; - pwszValueName: LPCSTR; - pszOID: LPCWSTR; - pdwValueType: PDWORD; - pbValueData: PBYTE; - pcbValueData: PDWORD): BOOL; stdcall; - -type - PFN_CRYPT_ENUM_OID_FUNC = function(dwEncodingType: DWORD; - pszFuncName: LPCSTR; - pszOID: LPCSTR; - cValue: DWORD; - const rgdwValueType: array of DWORD; - const rgpwszValueName: array of LPCWSTR; - const rgpbValueData: array of PBYTE; - const rgcbValueData: array of DWORD; - pvArg: PVOID): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Enumerate the OID functions identified by their encoding type, -// function name and OID. -// -// pfnEnumOIDFunc is called for each registry key matching the input -// parameters. Setting dwEncodingType to CRYPT_MATCH_ANY_ENCODING_TYPE matches -// any. Setting pszFuncName or pszOID to NULL matches any. -// -// Set pszOID == CRYPT_DEFAULT_OID to restrict the enumeration to only the -// DEFAULT functions -// -// String types are UNICODE. -//-------------------------------------------------------------------------- - -function CryptEnumOIDFunction(dwEncodingType: DWORD; - pszFuncName: LPCSTR; //OPTIONAL - pszOID: LPCSTR; //OPTIONAL - dwFlags: DWORD; - pvArg: PVOID; - pfnEnumOIDFunc: PFN_CRYPT_ENUM_OID_FUNC): BOOL; stdcall; - -const - CRYPT_MATCH_ANY_ENCODING_TYPE = $FFFFFFFF; - -//+========================================================================= -// Object IDentifier (OID) Information: Data Structures and APIs -//========================================================================== - -//+------------------------------------------------------------------------- -// OID Information -//-------------------------------------------------------------------------- - -type - PCRYPT_OID_INFO = ^CRYPT_OID_INFO; - CRYPT_OID_INFO = record - cbSize: DWORD; - pszOID: LPCSTR; - pwszName: LPCWSTR; - dwGroupId: DWORD; - EnumValue: record {type EnumValue for the union part of the original struct --max--} - case integer of - 0: (dwValue: DWORD); - 1: (Algid: ALG_ID); - 2: (dwLength: DWORD); - end; - ExtraInfo: CRYPT_DATA_BLOB; - end; - -type - CCRYPT_OID_INFO = CRYPT_OID_INFO; - PCCRYPT_OID_INFO = ^CCRYPT_OID_INFO; - -//+------------------------------------------------------------------------- -// OID Group IDs -//-------------------------------------------------------------------------- - -const - CRYPT_HASH_ALG_OID_GROUP_ID = 1; - CRYPT_ENCRYPT_ALG_OID_GROUP_ID = 2; - CRYPT_PUBKEY_ALG_OID_GROUP_ID = 3; - CRYPT_SIGN_ALG_OID_GROUP_ID = 4; - CRYPT_RDN_ATTR_OID_GROUP_ID = 5; - CRYPT_EXT_OR_ATTR_OID_GROUP_ID = 6; - CRYPT_ENHKEY_USAGE_OID_GROUP_ID = 7; - CRYPT_POLICY_OID_GROUP_ID = 8; - CRYPT_LAST_OID_GROUP_ID = 8; - - CRYPT_FIRST_ALG_OID_GROUP_ID = CRYPT_HASH_ALG_OID_GROUP_ID; - CRYPT_LAST_ALG_OID_GROUP_ID = CRYPT_SIGN_ALG_OID_GROUP_ID; - - -// The CRYPT_*_ALG_OID_GROUP_ID's have an Algid. The CRYPT_RDN_ATTR_OID_GROUP_ID -// has a dwLength. The CRYPT_EXT_OR_ATTR_OID_GROUP_ID, -// CRYPT_ENHKEY_USAGE_OID_GROUP_ID or CRYPT_POLICY_OID_GROUP_ID don't have a -// dwValue. - -// CRYPT_PUBKEY_ALG_OID_GROUP_ID has the following optional ExtraInfo: -// DWORD[0] - Flags. CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG can be set to -// inhibit the reformatting of the signature before -// CryptVerifySignature is called or after CryptSignHash -// is called. CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG can -// be set to include the public key algorithm's parameters -// in the PKCS7's digestEncryptionAlgorithm's parameters. - - CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG = $1; - CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG = $2; - -// CRYPT_SIGN_ALG_OID_GROUP_ID has the following optional ExtraInfo: -// DWORD[0] - Public Key Algid. -// DWORD[1] - Flags. Same as above for CRYPT_PUBKEY_ALG_OID_GROUP_ID. - -// CRYPT_RDN_ATTR_OID_GROUP_ID has the following optional ExtraInfo: -// Array of DWORDs: -// [0 ..] - Null terminated list of acceptable RDN attribute -// value types. An empty list implies CERT_RDN_PRINTABLE_STRING, -// CERT_RDN_T61_STRING, 0. - -//+------------------------------------------------------------------------- -// Find OID information. Returns NULL if unable to find any information -// for the specified key and group. Note, returns a pointer to a constant -// data structure. The returned pointer MUST NOT be freed. -// -// dwKeyType's: -// CRYPT_OID_INFO_OID_KEY, pvKey points to a szOID -// CRYPT_OID_INFO_NAME_KEY, pvKey points to a wszName -// CRYPT_OID_INFO_ALGID_KEY, pvKey points to an ALG_ID -// CRYPT_OID_INFO_SIGN_KEY, pvKey points to an array of two ALG_ID's: -// ALG_ID[0] - Hash Algid -// ALG_ID[1] - PubKey Algid -// -// Setting dwGroupId to 0, searches all groups according to the dwKeyType. -// Otherwise, only the dwGroupId is searched. -//-------------------------------------------------------------------------- - -function CryptFindOIDInfo(dwKeyType: DWORD; - pvKey: PVOID; - dwGroupId: DWORD): PCCRYPT_OID_INFO; stdcall; - -const - CRYPT_OID_INFO_OID_KEY = 1; - CRYPT_OID_INFO_NAME_KEY = 2; - CRYPT_OID_INFO_ALGID_KEY = 3; - CRYPT_OID_INFO_SIGN_KEY = 4; - -//+------------------------------------------------------------------------- -// Register OID information. The OID information specified in the -// CCRYPT_OID_INFO structure is persisted to the registry. -// -// crypt32.dll contains information for the commonly known OIDs. This function -// allows applications to augment crypt32.dll's OID information. During -// CryptFindOIDInfo's first call, the registered OID information is installed. -// -// By default the registered OID information is installed after crypt32.dll's -// OID entries. Set CRYPT_INSTALL_OID_INFO_BEFORE_FLAG to install before. -//-------------------------------------------------------------------------- - -function CryptRegisterOIDInfo(pInfo: PCCRYPT_OID_INFO; - dwFlags: DWORD): BOOL; stdcall; - -const - CRYPT_INSTALL_OID_INFO_BEFORE_FLAG = 1; - -//+------------------------------------------------------------------------- -// Unregister OID information. Only the pszOID and dwGroupId fields are -// used to identify the OID information to be unregistered. -//-------------------------------------------------------------------------- - -function CryptUnregisterOIDInfo(pInfo: PCCRYPT_OID_INFO): BOOL; stdcall; - -//+========================================================================= -// Low Level Cryptographic Message Data Structures and APIs -//========================================================================== - -type - HCRYPTMSG = Pointer; - -const - szOID_PKCS_7_DATA = '1.2.840.113549.1.7.1'; - szOID_PKCS_7_SIGNED = '1.2.840.113549.1.7.2'; - szOID_PKCS_7_ENVELOPED = '1.2.840.113549.1.7.3'; - szOID_PKCS_7_SIGNEDANDENVELOPED = '1.2.840.113549.1.7.4'; - szOID_PKCS_7_DIGESTED = '1.2.840.113549.1.7.5'; - szOID_PKCS_7_ENCRYPTED = '1.2.840.113549.1.7.6'; - - szOID_PKCS_9_CONTENT_TYPE = '1.2.840.113549.1.9.3'; - szOID_PKCS_9_MESSAGE_DIGEST = '1.2.840.113549.1.9.4'; - -//+------------------------------------------------------------------------- -// Message types -//-------------------------------------------------------------------------- - -const - CMSG_DATA = 1; - CMSG_SIGNED = 2; - CMSG_ENVELOPED = 3; - CMSG_SIGNED_AND_ENVELOPED = 4; - CMSG_HASHED = 5; - CMSG_ENCRYPTED = 6; - -//+------------------------------------------------------------------------- -// Message Type Bit Flags -//-------------------------------------------------------------------------- - - CMSG_ALL_FLAGS = (not ULONG(0)); - CMSG_DATA_FLAG = (1 shl CMSG_DATA); - CMSG_SIGNED_FLAG = (1 shl CMSG_SIGNED); - CMSG_ENVELOPED_FLAG = (1 shl CMSG_ENVELOPED); - CMSG_SIGNED_AND_ENVELOPED_FLAG = (1 shl CMSG_SIGNED_AND_ENVELOPED); - CMSG_HASHED_FLAG = (1 shl CMSG_HASHED); - CMSG_ENCRYPTED_FLAG = (1 shl CMSG_ENCRYPTED); - -//+------------------------------------------------------------------------- -// The message encode information (pvMsgEncodeInfo) is message type dependent -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_DATA: pvMsgEncodeInfo = NULL -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_SIGNED -// -// The pCertInfo in the CMSG_SIGNER_ENCODE_INFO provides the Issuer, SerialNumber -// and PublicKeyInfo.Algorithm. The PublicKeyInfo.Algorithm implicitly -// specifies the HashEncryptionAlgorithm to be used. -// -// The hCryptProv and dwKeySpec specify the private key to use. If dwKeySpec -// == 0, then, defaults to AT_SIGNATURE. -// -// pvHashAuxInfo currently isn't used and must be set to NULL. -//-------------------------------------------------------------------------- - -type - PCMSG_SIGNER_ENCODE_INFO = ^CMSG_SIGNER_ENCODE_INFO; - CMSG_SIGNER_ENCODE_INFO = record - cbSize: DWORD; - pCertInfo: PCERT_INFO; - hCryptProv: HCRYPTPROV; - dwKeySpec: DWORD; - HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - pvHashAuxInfo: PVOID; - cAuthAttr: DWORD; - rgAuthAttr: PCRYPT_ATTRIBUTE; - cUnauthAttr: DWORD; - rgUnauthAttr: PCRYPT_ATTRIBUTE; - end; - -type - PCMSG_SIGNED_ENCODE_INFO = ^CMSG_SIGNED_ENCODE_INFO; - CMSG_SIGNED_ENCODE_INFO = record - cbSize: DWORD; - cSigners: DWORD; - rgSigners: PCMSG_SIGNER_ENCODE_INFO; - cCertEncoded: DWORD; - rgCertEncoded: PCERT_BLOB; - cCrlEncoded: DWORD; - rgCrlEncoded: PCRL_BLOB; - end; - -//+------------------------------------------------------------------------- -// CMSG_ENVELOPED -// -// The PCERT_INFO for the rgRecipients provides the Issuer, SerialNumber -// and PublicKeyInfo. The PublicKeyInfo.Algorithm implicitly -// specifies the KeyEncryptionAlgorithm to be used. -// -// The PublicKeyInfo.PublicKey in PCERT_INFO is used to encrypt the content -// encryption key for the recipient. -// -// hCryptProv is used to do the content encryption, recipient key encryption -// and export. The hCryptProv's private keys aren't used. -// -// Note: CAPI currently doesn't support more than one KeyEncryptionAlgorithm -// per provider. This will need to be fixed. -// -// pvEncryptionAuxInfo currently isn't used and must be set to NULL. -//-------------------------------------------------------------------------- - -type - PCMSG_ENVELOPED_ENCODE_INFO = ^CMSG_ENVELOPED_ENCODE_INFO; - CMSG_ENVELOPED_ENCODE_INFO = record - cbSize: DWORD; - hCryptProv: HCRYPTPROV; - ContentEncryptionAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - pvEncryptionAuxInfo: PVOID; - cRecipients: DWORD; - rgpRecipients: PPCERT_INFO; // pointer to array of PCERT_INFO - end; - -//+------------------------------------------------------------------------- -// CMSG_SIGNED_AND_ENVELOPED -// -// For PKCS #7, a signed and enveloped message doesn't have the -// signer's authenticated or unauthenticated attributes. Otherwise, a -// combination of the CMSG_SIGNED_ENCODE_INFO and CMSG_ENVELOPED_ENCODE_INFO. -//-------------------------------------------------------------------------- - -type - PCMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO = ^CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO; - CMSG_SIGNED_AND_ENVELOPED_ENCODE_INFO = record - cbSize: DWORD; - SignedInfo: CMSG_SIGNED_ENCODE_INFO; - EnvelopedInfo: CMSG_ENVELOPED_ENCODE_INFO; - end; - -//+------------------------------------------------------------------------- -// CMSG_HASHED -// -// hCryptProv is used to do the hash. Doesn't need to use a private key. -// -// If fDetachedHash is set, then, the encoded message doesn't contain -// any content (its treated as NULL Data) -// -// pvHashAuxInfo currently isn't used and must be set to NULL. -//-------------------------------------------------------------------------- - -type - PCMSG_HASHED_ENCODE_INFO = ^CMSG_HASHED_ENCODE_INFO; - CMSG_HASHED_ENCODE_INFO = record - cbSize: DWORD; - hCryptProv: HCRYPTPROV; - HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - pvHashAuxInfo: PVOID; - end; - -//+------------------------------------------------------------------------- -// CMSG_ENCRYPTED -// -// The key used to encrypt the message is identified outside of the message -// content (for example, password). -// -// The content input to CryptMsgUpdate has already been encrypted. -// -// pvEncryptionAuxInfo currently isn't used and must be set to NULL. -//-------------------------------------------------------------------------- - -type - PCMSG_ENCRYPTED_ENCODE_INFO = ^CMSG_ENCRYPTED_ENCODE_INFO; - CMSG_ENCRYPTED_ENCODE_INFO = record - cbSize: DWORD; - ContentEncryptionAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - pvEncryptionAuxInfo: PVOID; - end; - -//+------------------------------------------------------------------------- -// This parameter allows messages to be of variable length with streamed -// output. -// -// By default, messages are of a definite length and -// CryptMsgGetParam(CMSG_CONTENT_PARAM) is -// called to get the cryptographically processed content. Until closed, -// the handle keeps a copy of the processed content. -// -// With streamed output, the processed content can be freed as its streamed. -// -// If the length of the content to be updated is known at the time of the -// open, then, ContentLength should be set to that length. Otherwise, it -// should be set to CMSG_INDEFINITE_LENGTH. -//-------------------------------------------------------------------------- - -type - PFN_CMSG_STREAM_OUTPUT = function( - const pvArg: PVOID; - pbData: PBYTE; - cbData: DWORD; - fFinal: BOOL): BOOL; stdcall; - -const - CMSG_INDEFINITE_LENGTH = ($FFFFFFFF); - -type - PCMSG_STREAM_INFO = ^CMSG_STREAM_INFO; - CMSG_STREAM_INFO = record - cbContent: DWORD; - pfnStreamOutput: PFN_CMSG_STREAM_OUTPUT; - pvArg: PVOID; - end; - -//+------------------------------------------------------------------------- -// Open dwFlags -//-------------------------------------------------------------------------- - -const - CMSG_BARE_CONTENT_FLAG = $00000001; - CMSG_LENGTH_ONLY_FLAG = $00000002; - CMSG_DETACHED_FLAG = $00000004; - CMSG_AUTHENTICATED_ATTRIBUTES_FLAG = $00000008; - CMSG_CONTENTS_OCTETS_FLAG = $00000010; - CMSG_MAX_LENGTH_FLAG = $00000020; - -//+------------------------------------------------------------------------- -// Open a cryptographic message for encoding -// -// For PKCS #7: -// If the content to be passed to CryptMsgUpdate has already -// been message encoded (the input to CryptMsgUpdate is the streamed output -// from another message encode), then, the CMSG_ENCODED_CONTENT_INFO_FLAG should -// be set in dwFlags. If not set, then, the inner ContentType is Data and -// the input to CryptMsgUpdate is treated as the inner Data type's Content, -// a string of bytes. -// If CMSG_BARE_CONTENT_FLAG is specified for a streamed message, -// the streamed output will not have an outer ContentInfo wrapper. This -// makes it suitable to be streamed into an enclosing message. -// -// The pStreamInfo parameter needs to be set to stream the encoded message -// output. -//-------------------------------------------------------------------------- - -function CryptMsgOpenToEncode(dwMsgEncodingType: DWORD; - dwFlags: DWORD; - dwMsgType: DWORD; - pvMsgEncodeInfo: PVOID; - pszInnerContentObjID: LPSTR; //OPTIONAL - pStreamInfo: PCMSG_STREAM_INFO //OPTIONAL - ): HCRYPTMSG; stdcall; - -//+------------------------------------------------------------------------- -// Calculate the length of an encoded cryptographic message. -// -// Calculates the length of the encoded message given the -// message type, encoding parameters and total length of -// the data to be updated. Note, this might not be the exact length. However, -// it will always be greater than or equal to the actual length. -//-------------------------------------------------------------------------- - -function CryptMsgCalculateEncodedLength(dwMsgEncodingType: DWORD; - dwFlags: DWORD; - dwMsgType: DWORD; - pvMsgEncodeInfo: PVOID; - pszInnerContentObjID: LPSTR; //OPTIONAL - cbData: DWORD): DWORD; stdcall; - -//+------------------------------------------------------------------------- -// Open a cryptographic message for decoding -// -// For PKCS #7: if the inner ContentType isn't Data, then, the inner -// ContentInfo consisting of both ContentType and Content is output. -// To also enable ContentInfo output for the Data ContentType, then, -// the CMSG_ENCODED_CONTENT_INFO_FLAG should be set -// in dwFlags. If not set, then, only the content portion of the inner -// ContentInfo is output for the Data ContentType. -// -// To only calculate the length of the decoded message, set the -// CMSG_LENGTH_ONLY_FLAG in dwFlags. After the final CryptMsgUpdate get the -// MSG_CONTENT_PARAM. Note, this might not be the exact length. However, -// it will always be greater than or equal to the actual length. -// -// hCryptProv specifies the crypto provider to use for hashing and/or -// decrypting the message. For enveloped messages, hCryptProv also specifies -// the private exchange key to use. For signed messages, hCryptProv is used -// when CryptMsgVerifySigner is called. -// -// For enveloped messages, the pRecipientInfo contains the Issuer and -// SerialNumber identifying the RecipientInfo in the message. -// -// Note, the pRecipientInfo should correspond to the provider's private -// exchange key. -// -// If pRecipientInfo is NULL, then, the message isn't decrypted. To decrypt -// the message, CryptMsgControl(CMSG_CTRL_DECRYPT) is called after the final -// CryptMsgUpdate. -// -// The pStreamInfo parameter needs to be set to stream the decoded content -// output. Note, if pRecipientInfo is NULL, then, the streamed output isn't -// decrypted. -//-------------------------------------------------------------------------- - -function CryptMsgOpenToDecode(dwMsgEncodingType: DWORD; - dwFlags: DWORD; - dwMsgType: DWORD; - hCryptProv: HCRYPTPROV; - pRecipientInfo: PCERT_INFO; //OPTIONAL - pStreamInfo: PCMSG_STREAM_INFO //OPTIONAL - ): HCRYPTMSG; stdcall; - -//+------------------------------------------------------------------------- -// Close a cryptographic message handle -// -// LastError is preserved unless FALSE is returned. -//-------------------------------------------------------------------------- - -function CryptMsgClose(hCryptMsg: HCRYPTMSG): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Update the content of a cryptographic message. Depending on how the -// message was opened, the content is either encoded or decoded. -// -// This function is repetitively called to append to the message content. -// fFinal is set to identify the last update. On fFinal, the encode/decode -// is completed. The encoded/decoded content and the decoded parameters -// are valid until the open and all duplicated handles are closed. -//-------------------------------------------------------------------------- - -function CryptMsgUpdate(hCryptMsg: HCRYPTMSG; - const pbData: PBYTE; - cbData: DWORD; - fFinal: BOOL): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Perform a special "control" function after the final CryptMsgUpdate of a -// encoded/decoded cryptographic message. -// -// The dwCtrlType parameter specifies the type of operation to be performed. -// -// The pvCtrlPara definition depends on the dwCtrlType value. -// -// See below for a list of the control operations and their pvCtrlPara -// type definition. -//-------------------------------------------------------------------------- - -function CryptMsgControl(hCryptMsg: HCRYPTMSG; - dwFlags: DWORD; - dwCtrlType: DWORD; - pvCtrlPara: PVOID): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Message control types -//-------------------------------------------------------------------------- - -const - CMSG_CTRL_VERIFY_SIGNATURE = 1; - CMSG_CTRL_DECRYPT = 2; - CMSG_CTRL_VERIFY_HASH = 5; - CMSG_CTRL_ADD_SIGNER = 6; - CMSG_CTRL_DEL_SIGNER = 7; - CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR = 8; - CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR = 9; - CMSG_CTRL_ADD_CERT = 10; - CMSG_CTRL_DEL_CERT = 11; - CMSG_CTRL_ADD_CRL = 12; - CMSG_CTRL_DEL_CRL = 13; - -//+------------------------------------------------------------------------- -// CMSG_CTRL_VERIFY_SIGNATURE -// -// Verify the signature of a SIGNED or SIGNED_AND_ENVELOPED -// message after it has been decoded. -// -// For a SIGNED_AND_ENVELOPED message, called after -// CryptMsgControl(CMSG_CTRL_DECRYPT), if CryptMsgOpenToDecode was called -// with a NULL pRecipientInfo. -// -// pvCtrlPara points to a CERT_INFO struct. -// -// The CERT_INFO contains the Issuer and SerialNumber identifying -// the Signer of the message. The CERT_INFO also contains the -// PublicKeyInfo -// used to verify the signature. The cryptographic provider specified -// in CryptMsgOpenToDecode is used. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CTRL_DECRYPT -// -// Decrypt an ENVELOPED or SIGNED_AND_ENVELOPED message after it has been -// decoded. -// -// hCryptProv and dwKeySpec specify the private key to use. For dwKeySpec == -// 0, defaults to AT_KEYEXCHANGE. -// -// dwRecipientIndex is the index of the recipient in the message associated -// with the hCryptProv's private key. -// -// This control function needs to be called, if you don't know the appropriate -// recipient before calling CryptMsgOpenToDecode. After the final -// CryptMsgUpdate, the list of recipients is obtained by iterating through -// CMSG_RECIPIENT_INFO_PARAM. The recipient corresponding to a private -// key owned by the caller is selected and passed to this function to decrypt -// the message. -// -// Note, the message can only be decrypted once. -//-------------------------------------------------------------------------- - -type - PCMSG_CTRL_DECRYPT_PARA = ^CMSG_CTRL_DECRYPT_PARA; - CMSG_CTRL_DECRYPT_PARA = record - cbSize: DWORD; - hCryptProv: HCRYPTPROV; - dwKeySpec: DWORD; - dwRecipientIndex: DWORD; - end; - -//+------------------------------------------------------------------------- -// CMSG_CTRL_VERIFY_HASH -// -// Verify the hash of a HASHED message after it has been decoded. -// -// Only the hCryptMsg parameter is used, to specify the message whose -// hash is being verified. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CTRL_ADD_SIGNER -// -// Add a signer to a signed-data or signed-and-enveloped-data message. -// -// pvCtrlPara points to a CMSG_SIGNER_ENCODE_INFO. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CTRL_DEL_SIGNER -// -// Remove a signer from a signed-data or signed-and-enveloped-data message. -// -// pvCtrlPara points to a DWORD containing the 0-based index of the -// signer to be removed. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR -// -// Add an unauthenticated attribute to the SignerInfo of a signed-data or -// signed-and-enveloped-data message. -// -// The unauthenticated attribute is input in the form of an encoded blob. -//-------------------------------------------------------------------------- - -type - PCMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA = ^CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA; - CMSG_CTRL_ADD_SIGNER_UNAUTH_ATTR_PARA = record - cbSize: DWORD; - dwSignerIndex: DWORD; - blob: CRYPT_DATA_BLOB; - end; - -//+------------------------------------------------------------------------- -// CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR -// -// Delete an unauthenticated attribute from the SignerInfo of a signed-data -// or signed-and-enveloped-data message. -// -// The unauthenticated attribute to be removed is specified by -// a 0-based index. -//-------------------------------------------------------------------------- - -type - PCMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA = ^CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA; - CMSG_CTRL_DEL_SIGNER_UNAUTH_ATTR_PARA = record - cbSize: DWORD; - dwSignerIndex: DWORD; - dwUnauthAttrIndex: DWORD; - end; - -//+------------------------------------------------------------------------- -// CMSG_CTRL_ADD_CERT -// -// Add a certificate to a signed-data or signed-and-enveloped-data message. -// -// pvCtrlPara points to a CRYPT_DATA_BLOB containing the certificate's -// encoded bytes. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CTRL_DEL_CERT -// -// Delete a certificate from a signed-data or signed-and-enveloped-data -// message. -// -// pvCtrlPara points to a DWORD containing the 0-based index of the -// certificate to be removed. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CTRL_ADD_CRL -// -// Add a CRL to a signed-data or signed-and-enveloped-data message. -// -// pvCtrlPara points to a CRYPT_DATA_BLOB containing the CRL's -// encoded bytes. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CTRL_DEL_CRL -// -// Delete a CRL from a signed-data or signed-and-enveloped-data message. -// -// pvCtrlPara points to a DWORD containing the 0-based index of the CRL -// to be removed. -//-------------------------------------------------------------------------- - - -//+------------------------------------------------------------------------- -// Verify a countersignature, at the SignerInfo level. -// ie. verify that pbSignerInfoCountersignature contains the encrypted -// hash of the encryptedDigest field of pbSignerInfo. -// -// hCryptProv is used to hash the encryptedDigest field of pbSignerInfo. -// The only fields referenced from pciCountersigner are SerialNumber, Issuer, -// and SubjectPublicKeyInfo. -//-------------------------------------------------------------------------- - -function CryptMsgVerifyCountersignatureEncoded(hCryptProv: HCRYPTPROV; - dwEncodingType: DWORD; - pbSignerInfo: PBYTE; - cbSignerInfo: DWORD; - pbSignerInfoCountersignature: PBYTE; - cbSignerInfoCountersignature: DWORD; - pciCountersigner: PCERT_INFO): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Countersign an already-existing signature in a message -// -// dwIndex is a zero-based index of the SignerInfo to be countersigned. -//-------------------------------------------------------------------------- - -function CryptMsgCountersign(hCryptMsg: HCRYPTMSG; - dwIndex: DWORD; - cCountersigners: DWORD; - rgCountersigners: PCMSG_SIGNER_ENCODE_INFO): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Countersign an already-existing signature (encoded SignerInfo). -// Output an encoded SignerInfo blob, suitable for use as a countersignature -// attribute in the unauthenticated attributes of a signed-data or -// signed-and-enveloped-data message. -//-------------------------------------------------------------------------- - -function CryptMsgCountersignEncoded(dwEncodingType: DWORD; - pbSignerInfo: PBYTE; - cbSignerInfo: DWORD; - cCountersigners: DWORD; - rgCountersigners: PCMSG_SIGNER_ENCODE_INFO; - pbCountersignature: PBYTE; - pcbCountersignature: PDWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Get a parameter after encoding/decoding a cryptographic message. Called -// after the final CryptMsgUpdate. Only the CMSG_CONTENT_PARAM and -// CMSG_COMPUTED_HASH_PARAM are valid for an encoded message. -// -// For an encoded HASHED message, the CMSG_COMPUTED_HASH_PARAM can be got -// before any CryptMsgUpdates to get its length. -// -// The pvData type definition depends on the dwParamType value. -// -// Elements pointed to by fields in the pvData structure follow the -// structure. Therefore, *pcbData may exceed the size of the structure. -// -// Upon input, if *pcbData == 0, then, *pcbData is updated with the length -// of the data and the pvData parameter is ignored. -// -// Upon return, *pcbData is updated with the length of the data. -// -// The OBJID BLOBs returned in the pvData structures point to -// their still encoded representation. The appropriate functions -// must be called to decode the information. -// -// See below for a list of the parameters to get. -//-------------------------------------------------------------------------- - -function CryptMsgGetParam(hCryptMsg: HCRYPTMSG; - dwParamType: DWORD; - dwIndex: DWORD; - pvData: PVOID; - pcbData: PDWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Get parameter types and their corresponding data structure definitions. -//-------------------------------------------------------------------------- - -const - CMSG_TYPE_PARAM = 1; - CMSG_CONTENT_PARAM = 2; - CMSG_BARE_CONTENT_PARAM = 3; - CMSG_INNER_CONTENT_TYPE_PARAM = 4; - CMSG_SIGNER_COUNT_PARAM = 5; - CMSG_SIGNER_INFO_PARAM = 6; - CMSG_SIGNER_CERT_INFO_PARAM = 7; - CMSG_SIGNER_HASH_ALGORITHM_PARAM = 8; - CMSG_SIGNER_AUTH_ATTR_PARAM = 9; - CMSG_SIGNER_UNAUTH_ATTR_PARAM = 10; - CMSG_CERT_COUNT_PARAM = 11; - CMSG_CERT_PARAM = 12; - CMSG_CRL_COUNT_PARAM = 13; - CMSG_CRL_PARAM = 14; - CMSG_ENVELOPE_ALGORITHM_PARAM = 15; - CMSG_RECIPIENT_COUNT_PARAM = 17; - CMSG_RECIPIENT_INDEX_PARAM = 18; - CMSG_RECIPIENT_INFO_PARAM = 19; - CMSG_HASH_ALGORITHM_PARAM = 20; - CMSG_HASH_DATA_PARAM = 21; - CMSG_COMPUTED_HASH_PARAM = 22; - CMSG_ENCRYPT_PARAM = 26; - CMSG_ENCRYPTED_DIGEST = 27; - CMSG_ENCODED_SIGNER = 28; - CMSG_ENCODED_MESSAGE = 29; - -//+------------------------------------------------------------------------- -// CMSG_TYPE_PARAM -// -// The type of the decoded message. -// -// pvData points to a DWORD -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CONTENT_PARAM -// -// The encoded content of a cryptographic message. Depending on how the -// message was opened, the content is either the whole PKCS#7 -// message (opened to encode) or the inner content (opened to decode). -// In the decode case, the decrypted content is returned, if enveloped. -// If not enveloped, and if the inner content is of type DATA, the returned -// data is the contents octets of the inner content. -// -// pvData points to the buffer receiving the content bytes -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_BARE_CONTENT_PARAM -// -// The encoded content of an encoded cryptographic message, without the -// outer layer of ContentInfo. That is, only the encoding of the -// ContentInfo.content field is returned. -// -// pvData points to the buffer receiving the content bytes -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_INNER_CONTENT_TYPE_PARAM -// -// The type of the inner content of a decoded cryptographic message, -// in the form of a NULL-terminated object identifier string -// (eg. "1.2.840.113549.1.7.1"). -// -// pvData points to the buffer receiving the object identifier string -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_SIGNER_COUNT_PARAM -// -// Count of signers in a SIGNED or SIGNED_AND_ENVELOPED message -// -// pvData points to a DWORD -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_SIGNER_CERT_INFO_PARAM -// -// To get all the signers, repetitively call CryptMsgGetParam, with -// dwIndex set to 0 .. SignerCount - 1. -// -// pvData points to a CERT_INFO struct. -// -// Only the following fields have been updated in the CERT_INFO struct: -// Issuer and SerialNumber. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_SIGNER_INFO_PARAM -// -// To get all the signers, repetitively call CryptMsgGetParam, with -// dwIndex set to 0 .. SignerCount - 1. -// -// pvData points to a CMSG_SIGNER_INFO struct. -//-------------------------------------------------------------------------- - -type - PCMSG_SIGNER_INFO = ^CMSG_SIGNER_INFO; - CMSG_SIGNER_INFO = record - dwVersion: DWORD; - Issuer: CERT_NAME_BLOB; - SerialNumber: CRYPT_INTEGER_BLOB; - HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - HashEncryptionAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - EncryptedHash: CRYPT_DATA_BLOB; - AuthAttrs: CRYPT_ATTRIBUTES; - UnauthAttrs: CRYPT_ATTRIBUTES; - end; - -//+------------------------------------------------------------------------- -// CMSG_SIGNER_HASH_ALGORITHM_PARAM -// -// This parameter specifies the HashAlgorithm that was used for the signer. -// -// Set dwIndex to iterate through all the signers. -// -// pvData points to an CRYPT_ALGORITHM_IDENTIFIER struct. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_SIGNER_AUTH_ATTR_PARAM -// -// The authenticated attributes for the signer. -// -// Set dwIndex to iterate through all the signers. -// -// pvData points to a CMSG_ATTR struct. -//-------------------------------------------------------------------------- - -type - CMSG_ATTR = CRYPT_ATTRIBUTES; - PCMSG_ATTR = ^CRYPT_ATTRIBUTES; - -//+------------------------------------------------------------------------- -// CMSG_SIGNER_UNAUTH_ATTR_PARAM -// -// The unauthenticated attributes for the signer. -// -// Set dwIndex to iterate through all the signers. -// -// pvData points to a CMSG_ATTR struct. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CERT_COUNT_PARAM -// -// Count of certificates in a SIGNED or SIGNED_AND_ENVELOPED message. -// -// pvData points to a DWORD -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CERT_PARAM -// -// To get all the certificates, repetitively call CryptMsgGetParam, with -// dwIndex set to 0 .. CertCount - 1. -// -// pvData points to an array of the certificate's encoded bytes. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CRL_COUNT_PARAM -// -// Count of CRLs in a SIGNED or SIGNED_AND_ENVELOPED message. -// -// pvData points to a DWORD -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_CRL_PARAM -// -// To get all the CRLs, repetitively call CryptMsgGetParam, with -// dwIndex set to 0 .. CrlCount - 1. -// -// pvData points to an array of the CRL's encoded bytes. -//-------------------------------------------------------------------------- - - -//+------------------------------------------------------------------------- -// CMSG_ENVELOPE_ALGORITHM_PARAM -// -// The ContentEncryptionAlgorithm that was used in -// an ENVELOPED or SIGNED_AND_ENVELOPED message. -// -// pvData points to an CRYPT_ALGORITHM_IDENTIFIER struct. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_RECIPIENT_COUNT_PARAM -// -// Count of recipients in an ENVELOPED or SIGNED_AND_ENVELOPED message. -// -// pvData points to a DWORD -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_RECIPIENT_INDEX_PARAM -// -// Index of the recipient used to decrypt an ENVELOPED or SIGNED_AND_ENVELOPED -// message. -// -// pvData points to a DWORD -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_RECIPIENT_INFO_PARAM -// -// To get all the recipients, repetitively call CryptMsgGetParam, with -// dwIndex set to 0 .. RecipientCount - 1. -// -// pvData points to a CERT_INFO struct. -// -// Only the following fields have been updated in the CERT_INFO struct: -// Issuer, SerialNumber and PublicKeyAlgorithm. The PublicKeyAlgorithm -// specifies the KeyEncryptionAlgorithm that was used. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_HASH_ALGORITHM_PARAM -// -// The HashAlgorithm in a HASHED message. -// -// pvData points to an CRYPT_ALGORITHM_IDENTIFIER struct. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_HASH_DATA_PARAM -// -// The hash in a HASHED message. -// -// pvData points to an array of bytes. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_COMPUTED_HASH_PARAM -// -// The computed hash for a HASHED message. -// -// This may be called for either an encoded or decoded message. -// It also may be called before any encoded CryptMsgUpdates to get its length. -// -// pvData points to an array of bytes. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_ENCRYPT_PARAM -// -// The ContentEncryptionAlgorithm that was used in an ENCRYPTED message. -// -// pvData points to an CRYPT_ALGORITHM_IDENTIFIER struct. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CMSG_ENCODED_MESSAGE -// -// The full encoded message. This is useful in the case of a decoded -// message which has been modified (eg. a signed-data or -// signed-and-enveloped-data message which has been countersigned). -// -// pvData points to an array of the message's encoded bytes. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CryptMsg OID installable functions -//-------------------------------------------------------------------------- - -// If *phCryptProv is NULL upon entry, then, if supported, the installable -// function should acquire a default provider and return. Note, its up -// to the installable function to release at process detach. - -const - CMSG_OID_GEN_ENCRYPT_KEY_FUNC = 'CryptMsgDllGenEncryptKey'; - -type - PFN_CMSG_GEN_ENCRYPT_KEY = function(phCryptProv: PHCRYPTPROV; - paiEncrypt: PCRYPT_ALGORITHM_IDENTIFIER; - pvEncryptAuxInfo: PVOID; - pPublicKeyInfo: PCERT_PUBLIC_KEY_INFO; - phEncryptKey: PHCRYPTKEY - ): BOOL; stdcall; - -const - CMSG_OID_EXPORT_ENCRYPT_KEY_FUNC = 'CryptMsgDllExportEncryptKey'; - -type - PFN_CMSG_EXPORT_ENCRYPT_KEY = function(hCryptProv: HCRYPTPROV; - hEncryptKey: HCRYPTKEY; - pPublicKeyInfo: PCERT_PUBLIC_KEY_INFO; - pbData: PBYTE; - pcbData: PDWORD): BOOL; stdcall; - -const - CMSG_OID_IMPORT_ENCRYPT_KEY_FUNC = 'CryptMsgDllImportEncryptKey'; - -type - PFN_CMSG_IMPORT_ENCRYPT_KEY = function(hCryptProv: HCRYPTPROV; - dwKeySpec: DWORD; - paiEncrypt: PCRYPT_ALGORITHM_IDENTIFIER; - paiPubKey: PCRYPT_ALGORITHM_IDENTIFIER; - pbEncodedKey: PBYTE; - cbEncodedKey: DWORD; - phEncryptKey: PHCRYPTKEY - ): BOOL; stdcall; - -//+========================================================================= -// Certificate Store Data Structures and APIs -//========================================================================== - -//+------------------------------------------------------------------------- -// In its most basic implementation, a cert store is simply a -// collection of certificates and/or CRLs. This is the case when -// a cert store is opened with all of its certificates and CRLs -// coming from a PKCS #7 encoded cryptographic message. -// -// Nonetheless, all cert stores have the following properties: -// - A public key may have more than one certificate in the store. -// For example, a private/public key used for signing may have a -// certificate issued for VISA and another issued for -// Mastercard. Also, when a certificate is renewed there might -// be more than one certificate with the same subject and -// issuer. -// - However, each certificate in the store is uniquely -// identified by its Issuer and SerialNumber. -// - There's an issuer of subject certificate relationship. A -// certificate's issuer is found by doing a match of -// pSubjectCert->Issuer with pIssuerCert->Subject. -// The relationship is verified by using -// the issuer's public key to verify the subject certificate's -// signature. Note, there might be X.509 v3 extensions -// to assist in finding the issuer certificate. -// - Since issuer certificates might be renewed, a subject -// certificate might have more than one issuer certificate. -// - There's an issuer of CRL relationship. An -// issuer's CRL is found by doing a match of -// pIssuerCert->Subject with pCrl->Issuer. -// The relationship is verified by using -// the issuer's public key to verify the CRL's -// signature. Note, there might be X.509 v3 extensions -// to assist in finding the CRL. -// - Since some issuers might support the X.509 v3 delta CRL -// extensions, an issuer might have more than one CRL. -// - The store shouldn't have any redundant certificates or -// CRLs. There shouldn't be two certificates with the same -// Issuer and SerialNumber. There shouldn't be two CRLs with -// the same Issuer, ThisUpdate and NextUpdate. -// - The store has NO policy or trust information. No -// certificates are tagged as being "root". Its up to -// the application to maintain a list of CertIds (Issuer + -// SerialNumber) for certificates it trusts. -// - The store might contain bad certificates and/or CRLs. -// The issuer's signature of a subject certificate or CRL may -// not verify. Certificates or CRLs may not satisfy their -// time validity requirements. Certificates may be -// revoked. -// -// In addition to the certificates and CRLs, properties can be -// stored. There are two predefined property IDs for a user -// certificate: CERT_KEY_PROV_HANDLE_PROP_ID and -// CERT_KEY_PROV_INFO_PROP_ID. The CERT_KEY_PROV_HANDLE_PROP_ID -// is a HCRYPTPROV handle to the private key assoicated -// with the certificate. The CERT_KEY_PROV_INFO_PROP_ID contains -// information to be used to call -// CryptAcquireContext and CryptProvSetParam to get a handle -// to the private key associated with the certificate. -// -// There exists two more predefined property IDs for certificates -// and CRLs, CERT_SHA1_HASH_PROP_ID and CERT_MD5_HASH_PROP_ID. -// If these properties don't already exist, then, a hash of the -// content is computed. (CERT_HASH_PROP_ID maps to the default -// hash algorithm, currently, CERT_SHA1_HASH_PROP_ID). -// -// There are additional APIs for creating certificate and CRL -// contexts not in a store (CertCreateCertificateContext and -// CertCreateCRLContext). -// -//-------------------------------------------------------------------------- - -type - HCERTSTORE = PVOID; - -//+------------------------------------------------------------------------- -// Certificate context. -// -// A certificate context contains both the encoded and decoded representation -// of a certificate. A certificate context returned by a cert store function -// must be freed by calling the CertFreeCertificateContext function. The -// CertDuplicateCertificateContext function can be called to make a duplicate -// copy (which also must be freed by calling CertFreeCertificateContext). -//-------------------------------------------------------------------------- - -type - PCERT_CONTEXT = ^CERT_CONTEXT; - CERT_CONTEXT = record - dwCertEncodingType: DWORD; - pbCertEncoded: PBYTE; - cbCertEncoded: DWORD; - pCertInfo: PCERT_INFO; - hCertStore: HCERTSTORE; - end; - -type - PCCERT_CONTEXT = ^CERT_CONTEXT; - -//+------------------------------------------------------------------------- -// CRL context. -// -// A CRL context contains both the encoded and decoded representation -// of a CRL. A CRL context returned by a cert store function -// must be freed by calling the CertFreeCRLContext function. The -// CertDuplicateCRLContext function can be called to make a duplicate -// copy (which also must be freed by calling CertFreeCRLContext). -//-------------------------------------------------------------------------- - -type - PCRL_CONTEXT = ^CRL_CONTEXT; - CRL_CONTEXT = record - dwCertEncodingType: DWORD; - pbCrlEncoded: PBYTE; - cbCrlEncoded: DWORD; - pCrlInfo: PCRL_INFO; - hCertStore: HCERTSTORE; - end; - -type - PCCRL_CONTEXT = ^CRL_CONTEXT; - -//+------------------------------------------------------------------------- -// Certificate Trust List (CTL) context. -// -// A CTL context contains both the encoded and decoded representation -// of a CTL. Also contains an opened HCRYPTMSG handle to the decoded -// cryptographic signed message containing the CTL_INFO as its inner content. -// pbCtlContent is the encoded inner content of the signed message. -// -// The CryptMsg APIs can be used to extract additional signer information. -//-------------------------------------------------------------------------- - -type - PCTL_CONTEXT = ^CTL_CONTEXT; - CTL_CONTEXT = record - dwMsgAndCertEncodingType: DWORD; - pbCtlEncoded: PBYTE; - cbCtlEncoded: DWORD; - pCtlInfo: PCTL_INFO; - hCertStore: HCERTSTORE; - hCryptMsg: HCRYPTMSG; - pbCtlContent: PBYTE; - cbCtlContent: DWORD; - end; - -type - PCCTL_CONTEXT = ^CTL_CONTEXT; - -//+------------------------------------------------------------------------- -// Certificate, CRL and CTL property IDs -// -// See CertSetCertificateContextProperty or CertGetCertificateContextProperty -// for usage information. -//-------------------------------------------------------------------------- - -const - CERT_KEY_PROV_HANDLE_PROP_ID = 1; - CERT_KEY_PROV_INFO_PROP_ID = 2; - CERT_SHA1_HASH_PROP_ID = 3; - CERT_MD5_HASH_PROP_ID = 4; - CERT_HASH_PROP_ID = CERT_SHA1_HASH_PROP_ID; - CERT_KEY_CONTEXT_PROP_ID = 5; - CERT_KEY_SPEC_PROP_ID = 6; - CERT_IE30_RESERVED_PROP_ID = 7; - CERT_PUBKEY_HASH_RESERVED_PROP_ID = 8; - CERT_ENHKEY_USAGE_PROP_ID = 9; - CERT_CTL_USAGE_PROP_ID = CERT_ENHKEY_USAGE_PROP_ID; - CERT_NEXT_UPDATE_LOCATION_PROP_ID = 10; - CERT_FRIENDLY_NAME_PROP_ID = 11; - CERT_PVK_FILE_PROP_ID = 12; -// Note, 32 - 34 are reserved for the CERT, CRL and CTL file element IDs. - CERT_FIRST_RESERVED_PROP_ID = 13; - - CERT_LAST_RESERVED_PROP_ID = $00007FFF; - CERT_FIRST_USER_PROP_ID = $00008000; - CERT_LAST_USER_PROP_ID = $0000FFFF; - -function IS_CERT_HASH_PROP_ID(X: DWORD): BOOL; - -//+------------------------------------------------------------------------- -// Cryptographic Key Provider Information -// -// CRYPT_KEY_PROV_INFO defines the CERT_KEY_PROV_INFO_PROP_ID's pvData. -// -// The CRYPT_KEY_PROV_INFO fields are passed to CryptAcquireContext -// to get a HCRYPTPROV handle. The optional CRYPT_KEY_PROV_PARAM fields are -// passed to CryptProvSetParam to further initialize the provider. -// -// The dwKeySpec field identifies the private key to use from the container -// For example, AT_KEYEXCHANGE or AT_SIGNATURE. -//-------------------------------------------------------------------------- - -type - PCRYPT_KEY_PROV_PARAM = ^CRYPT_KEY_PROV_PARAM; - CRYPT_KEY_PROV_PARAM = record - dwParam: DWORD; - pbData: PBYTE; - cbData: DWORD; - dwFlags: DWORD; - end; - -type - PCRYPT_KEY_PROV_INFO = ^CRYPT_KEY_PROV_INFO; - CRYPT_KEY_PROV_INFO = record - pwszContainerName: LPWSTR; - pwszProvName: LPWSTR; - dwProvType: DWORD; - dwFlags: DWORD; - cProvParam: DWORD; - rgProvParam: PCRYPT_KEY_PROV_PARAM; - dwKeySpec: DWORD; - end; - -//+------------------------------------------------------------------------- -// The following flag should be set in the above dwFlags to enable -// a CertSetCertificateContextProperty(CERT_KEY_CONTEXT_PROP_ID) after a -// CryptAcquireContext is done in the Sign or Decrypt Message functions. -// -// The following define must not collide with any of the -// CryptAcquireContext dwFlag defines. -//-------------------------------------------------------------------------- - -const - CERT_SET_KEY_PROV_HANDLE_PROP_ID = $00000001; - CERT_SET_KEY_CONTEXT_PROP_ID = $00000001; - -//+------------------------------------------------------------------------- -// Certificate Key Context -// -// CERT_KEY_CONTEXT defines the CERT_KEY_CONTEXT_PROP_ID's pvData. -//-------------------------------------------------------------------------- - -type - PCERT_KEY_CONTEXT = ^CERT_KEY_CONTEXT; - CERT_KEY_CONTEXT = record - cbSize: DWORD; // sizeof(CERT_KEY_CONTEXT) - hCryptProv: HCRYPTPROV; - dwKeySpec: DWORD; - end; - -//+------------------------------------------------------------------------- -// Certificate Store Provider Types -//-------------------------------------------------------------------------- - -const - CERT_STORE_PROV_MSG = (LPCSTR(1)); - CERT_STORE_PROV_MEMORY = (LPCSTR(2)); - CERT_STORE_PROV_FILE = (LPCSTR(3)); - CERT_STORE_PROV_REG = (LPCSTR(4)); - - CERT_STORE_PROV_PKCS7 = (LPCSTR(5)); - CERT_STORE_PROV_SERIALIZED = (LPCSTR(6)); - CERT_STORE_PROV_FILENAME_A = (LPCSTR(7)); - CERT_STORE_PROV_FILENAME_W = (LPCSTR(8)); - CERT_STORE_PROV_FILENAME = CERT_STORE_PROV_FILENAME_W; - CERT_STORE_PROV_SYSTEM_A = (LPCSTR(9)); - CERT_STORE_PROV_SYSTEM_W = (LPCSTR(10)); - CERT_STORE_PROV_SYSTEM = CERT_STORE_PROV_SYSTEM_W; - - sz_CERT_STORE_PROV_MEMORY = 'Memory'; - sz_CERT_STORE_PROV_FILENAME_W = 'File'; - sz_CERT_STORE_PROV_FILENAME = sz_CERT_STORE_PROV_FILENAME_W; - sz_CERT_STORE_PROV_SYSTEM_W = 'System'; - sz_CERT_STORE_PROV_SYSTEM = sz_CERT_STORE_PROV_SYSTEM_W; - sz_CERT_STORE_PROV_PKCS7 = 'PKCS7'; - sz_CERT_STORE_PROV_SERIALIZED = 'Serialized'; - -//+------------------------------------------------------------------------- -// Certificate Store verify/results flags -//-------------------------------------------------------------------------- - - CERT_STORE_SIGNATURE_FLAG = $00000001; - CERT_STORE_TIME_VALIDITY_FLAG = $00000002; - CERT_STORE_REVOCATION_FLAG = $00000004; - CERT_STORE_NO_CRL_FLAG = $00010000; - CERT_STORE_NO_ISSUER_FLAG = $00020000; - -//+------------------------------------------------------------------------- -// Certificate Store open/property flags -//-------------------------------------------------------------------------- - - CERT_STORE_NO_CRYPT_RELEASE_FLAG = $00000001; - CERT_STORE_READONLY_FLAG = $00008000; - -//+------------------------------------------------------------------------- -// Certificate Store Provider flags are in the HiWord (0xFFFF0000) -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// Certificate System Store Flag Values -//-------------------------------------------------------------------------- -// Location of the system store in the registry: -// HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE - CERT_SYSTEM_STORE_LOCATION_MASK = $00030000; - CERT_SYSTEM_STORE_CURRENT_USER = $00010000; - CERT_SYSTEM_STORE_LOCAL_MACHINE = $00020000; - -//+------------------------------------------------------------------------- -// Open the cert store using the specified store provider. -// -// hCryptProv specifies the crypto provider to use to create the hash -// properties or verify the signature of a subject certificate or CRL. -// The store doesn't need to use a private -// key. If the CERT_STORE_NO_CRYPT_RELEASE_FLAG isn't set, hCryptProv is -// CryptReleaseContext'ed on the final CertCloseStore. -// -// Note, if the open fails, hCryptProv is released if it would have been -// released when the store was closed. -// -// If hCryptProv is zero, then, the default provider and container for the -// PROV_RSA_FULL provider type is CryptAcquireContext'ed with -// CRYPT_VERIFYCONTEXT access. The CryptAcquireContext is deferred until -// the first create hash or verify signature. In addition, once acquired, -// the default provider isn't released until process exit when crypt32.dll -// is unloaded. The acquired default provider is shared across all stores -// and threads. -// -// After initializing the store's data structures and optionally acquiring a -// default crypt provider, CertOpenStore calls CryptGetOIDFunctionAddress to -// get the address of the CRYPT_OID_OPEN_STORE_PROV_FUNC specified by -// lpszStoreProvider. Since a store can contain certificates with different -// encoding types, CryptGetOIDFunctionAddress is called with dwEncodingType -// set to 0 and not the dwEncodingType passed to CertOpenStore. -// PFN_CERT_DLL_OPEN_STORE_FUNC specifies the signature of the provider's -// open function. This provider open function is called to load the -// store's certificates and CRLs. Optionally, the provider may return an -// array of functions called before a certificate or CRL is added or deleted -// or has a property that is set. -// -// Use of the dwEncodingType parameter is provider dependent. The type -// definition for pvPara also depends on the provider. -// -// Store providers are installed or registered via -// CryptInstallOIDFunctionAddress or CryptRegisterOIDFunction, where, -// dwEncodingType is 0 and pszFuncName is CRYPT_OID_OPEN_STORE_PROV_FUNC. -// -// Here's a list of the predefined provider types (implemented in crypt32.dll): -// -// CERT_STORE_PROV_MSG: -// Gets the certificates and CRLs from the specified cryptographic message. -// dwEncodingType contains the message and certificate encoding types. -// The message's handle is passed in pvPara. Given, -// HCRYPTMSG hCryptMsg; pvPara = (const void *) hCryptMsg; -// -// CERT_STORE_PROV_MEMORY -// sz_CERT_STORE_PROV_MEMORY: -// Opens a store without any initial certificates or CRLs. pvPara -// isn't used. -// -// CERT_STORE_PROV_FILE: -// Reads the certificates and CRLs from the specified file. The file's -// handle is passed in pvPara. Given, -// HANDLE hFile; pvPara = (const void *) hFile; -// -// For a successful open, the file pointer is advanced past -// the certificates and CRLs and their properties read from the file. -// Note, only expects a serialized store and not a file containing -// either a PKCS #7 signed message or a single encoded certificate. -// -// The hFile isn't closed. -// -// CERT_STORE_PROV_REG: -// Reads the certificates and CRLs from the registry. The registry's -// key handle is passed in pvPara. Given, -// HKEY hKey; pvPara = (const void *) hKey; -// -// The input hKey isn't closed by the provider. Before returning, the -// provider opens/creates "Certificates" and "CRLs" subkeys. These -// subkeys remain open until the store is closed. -// -// If CERT_STORE_READONLY_FLAG is set, then, the registry subkeys are -// RegOpenKey'ed with KEY_READ_ACCESS. Otherwise, the registry subkeys -// are RegCreateKey'ed with KEY_ALL_ACCESS. -// -// This provider returns the array of functions for reading, writing, -// deleting and property setting certificates and CRLs. -// Any changes to the opened store are immediately pushed through to -// the registry. However, if CERT_STORE_READONLY_FLAG is set, then, -// writing, deleting or property setting results in a -// SetLastError(E_ACCESSDENIED). -// -// Note, all the certificates and CRLs are read from the registry -// when the store is opened. The opened store serves as a write through -// cache. However, the opened store isn't notified of other changes -// made to the registry. Note, RegNotifyChangeKeyValue is supported -// on NT but not supported on Windows95. -// -// CERT_STORE_PROV_PKCS7: -// sz_CERT_STORE_PROV_PKCS7: -// Gets the certificates and CRLs from the encoded PKCS #7 signed message. -// dwEncodingType specifies the message and certificate encoding types. -// The pointer to the encoded message's blob is passed in pvPara. Given, -// CRYPT_DATA_BLOB EncodedMsg; pvPara = (const void *) &EncodedMsg; -// -// Note, also supports the IE3.0 special version of a -// PKCS #7 signed message referred to as a "SPC" formatted message. -// -// CERT_STORE_PROV_SERIALIZED: -// sz_CERT_STORE_PROV_SERIALIZED: -// Gets the certificates and CRLs from memory containing a serialized -// store. The pointer to the serialized memory blob is passed in pvPara. -// Given, -// CRYPT_DATA_BLOB Serialized; pvPara = (const void *) &Serialized; -// -// CERT_STORE_PROV_FILENAME_A: -// CERT_STORE_PROV_FILENAME_W: -// CERT_STORE_PROV_FILENAME: -// sz_CERT_STORE_PROV_FILENAME_W: -// sz_CERT_STORE_PROV_FILENAME: -// Opens the file and first attempts to read as a serialized store. Then, -// as a PKCS #7 signed message. Finally, as a single encoded certificate. -// The filename is passed in pvPara. The filename is UNICODE for the -// "_W" provider and ASCII for the "_A" provider. For "_W": given, -// LPCWSTR pwszFilename; pvPara = (const void *) pwszFilename; -// For "_A": given, -// LPCSTR pszFilename; pvPara = (const void *) pszFilename; -// -// Note, the default (without "_A" or "_W") is unicode. -// -// Note, also supports the reading of the IE3.0 special version of a -// PKCS #7 signed message file referred to as a "SPC" formatted file. -// -// CERT_STORE_PROV_SYSTEM_A: -// CERT_STORE_PROV_SYSTEM_W: -// CERT_STORE_PROV_SYSTEM: -// sz_CERT_STORE_PROV_SYSTEM_W: -// sz_CERT_STORE_PROV_SYSTEM: -// Opens the specified "system" store. Currently, all the system -// stores are stored in the registry. The upper word of the dwFlags -// parameter is used to specify the location of the system store. It -// should be set to either CERT_SYSTEM_STORE_CURRENT_USER for -// HKEY_CURRENT_USER or CERT_SYSTEM_STORE_LOCAL_MACHINE for -// HKEY_LOCAL_MACHINE. -// -// After opening the registry key associated with the system name, -// the CERT_STORE_PROV_REG provider is called to complete the open. -// -// The system store name is passed in pvPara. The name is UNICODE for the -// "_W" provider and ASCII for the "_A" provider. For "_W": given, -// LPCWSTR pwszSystemName; pvPara = (const void *) pwszSystemName; -// For "_A": given, -// LPCSTR pszSystemName; pvPara = (const void *) pszSystemName; -// -// Note, the default (without "_A" or "_W") is UNICODE. -// -// If CERT_STORE_READONLY_FLAG is set, then, the registry is -// RegOpenKey'ed with KEY_READ_ACCESS. Otherwise, the registry is -// RegCreateKey'ed with KEY_ALL_ACCESS. -// -// The "root" store is treated differently from the other system -// stores. Before a certificate is added to or deleted from the "root" -// store, a pop up message box is displayed. The certificate's subject, -// issuer, serial number, time validity, sha1 and md5 thumbprints are -// displayed. The user is given the option to do the add or delete. -// If they don't allow the operation, LastError is set to E_ACCESSDENIED. -//-------------------------------------------------------------------------- - -function CertOpenStore(lpszStoreProvider: LPCSTR; - dwEncodingType: DWORD; - hCryptProv: HCRYPTPROV; - dwFlags: DWORD; - const pvPara: PVOID): HCERTSTORE; stdcall; - -//+------------------------------------------------------------------------- -// OID Installable Certificate Store Provider Data Structures -//-------------------------------------------------------------------------- - -// Handle returned by the store provider when opened. -type - HCERTSTOREPROV = PVOID; - -// Store Provider OID function's pszFuncName. -const - CRYPT_OID_OPEN_STORE_PROV_FUNC = 'CertDllOpenStoreProv'; - -// Note, the Store Provider OID function's dwEncodingType is always 0. - -// The following information is returned by the provider when opened. Its -// zeroed with cbSize set before the provider is called. If the provider -// doesn't need to be called again after the open it doesn't need to -// make any updates to the CERT_STORE_PROV_INFO. - -type - PCERT_STORE_PROV_INFO = ^CERT_STORE_PROV_INFO; - CERT_STORE_PROV_INFO = record - cbSize: DWORD; - cStoreProvFunc: DWORD; - rgpvStoreProvFunc: PPVOID; - hStoreProv: HCERTSTOREPROV; - dwStoreProvFlags: DWORD; - end; - -// Definition of the store provider's open function. -// -// *pStoreProvInfo has been zeroed before the call. -// -// Note, pStoreProvInfo->cStoreProvFunc should be set last. Once set, -// all subsequent store calls, such as CertAddSerializedElementToStore will -// call the appropriate provider callback function. - -type - PFN_CERT_DLL_OPEN_STORE_PROV_FUNC = function(lpszStoreProvider: LPCSTR; - dwEncodingType: DWORD; - hCryptProv: HCRYPTPROV; - dwFlags: DWORD; - const pvPara: PVOID; - hCertStore: HCERTSTORE; - pStoreProvInfo: PCERT_STORE_PROV_INFO - ): BOOL; stdcall; - -// Indices into the store provider's array of callback functions. -// -// The provider can implement any subset of the following functions. It -// sets pStoreProvInfo->cStoreProvFunc to the last index + 1 and any -// preceding not implemented functions to NULL. - -const - CERT_STORE_PROV_CLOSE_FUNC = 0; - CERT_STORE_PROV_READ_CERT_FUNC = 1; - CERT_STORE_PROV_WRITE_CERT_FUNC = 2; - CERT_STORE_PROV_DELETE_CERT_FUNC = 3; - CERT_STORE_PROV_SET_CERT_PROPERTY_FUNC = 4; - CERT_STORE_PROV_READ_CRL_FUNC = 5; - CERT_STORE_PROV_WRITE_CRL_FUNC = 6; - CERT_STORE_PROV_DELETE_CRL_FUNC = 7; - CERT_STORE_PROV_SET_CRL_PROPERTY_FUNC = 8; - CERT_STORE_PROV_READ_CTL_FUNC = 9; - CERT_STORE_PROV_WRITE_CTL_FUNC = 10; - CERT_STORE_PROV_DELETE_CTL_FUNC = 11; - CERT_STORE_PROV_SET_CTL_PROPERTY_FUNC = 12; - -// Called by CertCloseStore when the store's reference count is -// decremented to 0. - -type - PFN_CERT_STORE_PROV_CLOSE = procedure(hStoreProv: HCERTSTOREPROV; - dwFlags: DWORD); stdcall; - -// Currently not called directly by the store APIs. However, may be exported -// to support other providers based on it. -// -// Reads the provider's copy of the certificate context. If it exists, -// creates a new certificate context. - -type - PFN_CERT_STORE_PROV_READ_CERT = function(hStoreProv: HCERTSTOREPROV; - pStoreCertContext: PCCERT_CONTEXT; - dwFlags: DWORD; - var ppProvCertContext: PCCERT_CONTEXT - ): BOOL; stdcall; - -const - CERT_STORE_PROV_WRITE_ADD_FLAG = $1; - -// Called by CertAddEncodedCertificateToStore, -// CertAddCertificateContextToStore or CertAddSerializedElementToStore before -// adding to the store. The CERT_STORE_PROV_WRITE_ADD_FLAG is set. In -// addition to the encoded certificate, the added pCertContext might also -// have properties. -// -// Returns TRUE if its OK to update the the store. - -type - PFN_CERT_STORE_PROV_WRITE_CERT = function(hStoreProv: HCERTSTOREPROV; - pCertContext: PCCERT_CONTEXT; - dwFlags: DWORD): BOOL; stdcall; - -// Called by CertDeleteCertificateFromStore before deleting from the -// store. -// -// Returns TRUE if its OK to delete from the store. - -type - PFN_CERT_STORE_PROV_DELETE_CERT = function(hStoreProv: HCERTSTOREPROV; - pCertContext: PCCERT_CONTEXT; - dwFlags: DWORD): BOOL; stdcall; - -// Called by CertSetCertificateContextProperty before setting the -// certificate's property. Also called by CertGetCertificateContextProperty, -// when getting a hash property that needs to be created and then persisted -// via the set. -// -// Upon input, the property hasn't been set for the pCertContext parameter. -// -// Returns TRUE if its OK to set the property. - -type - PFN_CERT_STORE_PROV_SET_CERT_PROPERTY = function(hStoreProv: HCERTSTOREPROV; - pCertContext: PCCERT_CONTEXT; - dwPropId: DWORD; - dwFlags: DWORD; - const pvData: PVOID - ): BOOL; stdcall; - -// Currently not called directly by the store APIs. However, may be exported -// to support other providers based on it. -// -// Reads the provider's copy of the CRL context. If it exists, -// creates a new CRL context. - -type - PFN_CERT_STORE_PROV_READ_CRL = function(hStoreProv: HCERTSTOREPROV; - pStoreCrlContext: PCCRL_CONTEXT; - dwFlags: DWORD; - var ppProvCrlContext: PCCRL_CONTEXT - ): BOOL; stdcall; - -// Called by CertAddEncodedCRLToStore, -// CertAddCRLContextToStore or CertAddSerializedElementToStore before -// adding to the store. The CERT_STORE_PROV_WRITE_ADD_FLAG is set. In -// addition to the encoded CRL, the added pCertContext might also -// have properties. -// -// Returns TRUE if its OK to update the the store. - -type - PFN_CERT_STORE_PROV_WRITE_CRL = function(hStoreProv: HCERTSTOREPROV; - pCrlContext: PCCRL_CONTEXT; - dwFlags: DWORD): BOOL; stdcall; - -// Called by CertDeleteCRLFromStore before deleting from the store. -// -// Returns TRUE if its OK to delete from the store. - -type - PFN_CERT_STORE_PROV_DELETE_CRL = function(hStoreProv: HCERTSTOREPROV; - pCrlContext: PCCRL_CONTEXT; - dwFlags: DWORD): BOOL; stdcall; - -// Called by CertDeleteCRLFromStore before deleting from the store. -// -// Returns TRUE if its OK to delete from the store. - -type - PFN_CERT_STORE_PROV_SET_CRL_PROPERTY = function(hStoreProv: HCERTSTOREPROV; - pCrlContext: PCCRL_CONTEXT; - dwPropId: DWORD; - dwFlags: DWORD; - pvData: PVOID): BOOL; stdcall; - -// Currently not called directly by the store APIs. However, may be exported -// to support other providers based on it. -// -// Reads the provider's copy of the CTL context. If it exists, -// creates a new CTL context. - -type - PFN_CERT_STORE_PROV_READ_CTL = function(hStoreProv: HCERTSTOREPROV; - pStoreCtlContext: PCCTL_CONTEXT; - dwFlags: DWORD; - var ppProvCtlContext: PCCTL_CONTEXT - ): BOOL; stdcall; - -// Called by CertAddEncodedCTLToStore, -// CertAddCTLContextToStore or CertAddSerializedElementToStore before -// adding to the store. The CERT_STORE_PROV_WRITE_ADD_FLAG is set. In -// addition to the encoded CTL, the added pCertContext might also -// have properties. -// -// Returns TRUE if its OK to update the the store. - -type - PFN_CERT_STORE_PROV_WRITE_CTL = function(hStoreProv: HCERTSTOREPROV; - pCtlContext: PCCTL_CONTEXT; - dwFlags: DWORD): BOOL; stdcall; - -// Called by CertDeleteCTLFromStore before deleting from the store. -// -// Returns TRUE if its OK to delete from the store. - -type - PFN_CERT_STORE_PROV_DELETE_CTL = function(hStoreProv: HCERTSTOREPROV; - pCtlContext: PCCTL_CONTEXT; - dwFlags: DWORD): BOOL; stdcall; - -// Called by CertSetCTLContextProperty before setting the -// CTL's property. Also called by CertGetCTLContextProperty, -// when getting a hash property that needs to be created and then persisted -// via the set. -// -// Upon input, the property hasn't been set for the pCtlContext parameter. -// -// Returns TRUE if its OK to set the property. - -type - PFN_CERT_STORE_PROV_SET_CTL_PROPERTY = function(hStoreProv: HCERTSTOREPROV; - pCtlContext: PCCTL_CONTEXT; - dwPropId: DWORD; - dwFlags: DWORD; - const pvData: PVOID - ): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Duplicate a cert store handle -//-------------------------------------------------------------------------- - -function CertDuplicateStore(hCertStore: HCERTSTORE): HCERTSTORE; stdcall; - -const CERT_STORE_SAVE_AS_STORE = 1; -const CERT_STORE_SAVE_AS_PKCS7 = 2; - -const CERT_STORE_SAVE_TO_FILE = 1; -const CERT_STORE_SAVE_TO_MEMORY = 2; -const CERT_STORE_SAVE_TO_FILENAME_A = 3; -const CERT_STORE_SAVE_TO_FILENAME_W = 4; -const CERT_STORE_SAVE_TO_FILENAME = CERT_STORE_SAVE_TO_FILENAME_W; - -//+------------------------------------------------------------------------- -// Save the cert store. Extended version with lots of options. -// -// According to the dwSaveAs parameter, the store can be saved as a -// serialized store (CERT_STORE_SAVE_AS_STORE) containing properties in -// addition to encoded certificates, CRLs and CTLs or the store can be saved -// as a PKCS #7 signed message (CERT_STORE_SAVE_AS_PKCS7) which doesn't -// include the properties or CTLs. -// -// Note, the CERT_KEY_CONTEXT_PROP_ID property (and its -// CERT_KEY_PROV_HANDLE_PROP_ID or CERT_KEY_SPEC_PROP_ID) isn't saved into -// a serialized store. -// -// For CERT_STORE_SAVE_AS_PKCS7, the dwEncodingType specifies the message -// encoding type. The dwEncodingType parameter isn't used for -// CERT_STORE_SAVE_AS_STORE. -// -// The dwFlags parameter currently isn't used and should be set to 0. -// -// The dwSaveTo and pvSaveToPara parameters specify where to save the -// store as follows: -// CERT_STORE_SAVE_TO_FILE: -// Saves to the specified file. The file's handle is passed in -// pvSaveToPara. Given, -// HANDLE hFile; pvSaveToPara = (void *) hFile; -// -// For a successful save, the file pointer is positioned after the -// last write. -// -// CERT_STORE_SAVE_TO_MEMORY: -// Saves to the specified memory blob. The pointer to -// the memory blob is passed in pvSaveToPara. Given, -// CRYPT_DATA_BLOB SaveBlob; pvSaveToPara = (void *) &SaveBlob; -// Upon entry, the SaveBlob's pbData and cbData need to be initialized. -// Upon return, cbData is updated with the actual length. -// For a length only calculation, pbData should be set to NULL. If -// pbData is non-NULL and cbData isn't large enough, FALSE is returned -// with a last error of ERRROR_MORE_DATA. -// -// CERT_STORE_SAVE_TO_FILENAME_A: -// CERT_STORE_SAVE_TO_FILENAME_W: -// CERT_STORE_SAVE_TO_FILENAME: -// Opens the file and saves to it. The filename is passed in pvSaveToPara. -// The filename is UNICODE for the "_W" option and ASCII for the "_A" -// option. For "_W": given, -// LPCWSTR pwszFilename; pvSaveToPara = (void *) pwszFilename; -// For "_A": given, -// LPCSTR pszFilename; pvSaveToPara = (void *) pszFilename; -// -// Note, the default (without "_A" or "_W") is UNICODE. -// -//-------------------------------------------------------------------------- - -function CertSaveStore(hCertStore: HCERTSTORE; - dwEncodingType: DWORD; - dwSaveAs: DWORD; - dwSaveTo: DWORD; - pvSaveToPara: PVOID; - dwFlags: DWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Certificate Store close flags -//-------------------------------------------------------------------------- -const CERT_CLOSE_STORE_FORCE_FLAG = $00000001; -const CERT_CLOSE_STORE_CHECK_FLAG = $00000002; - -//+------------------------------------------------------------------------- -// Close a cert store handle. -// -// There needs to be a corresponding close for each open and duplicate. -// -// Even on the final close, the cert store isn't freed until all of its -// certificate and CRL contexts have also been freed. -// -// On the final close, the hCryptProv passed to CertStoreOpen is -// CryptReleaseContext'ed. -// -// To force the closure of the store with all of its memory freed, set the -// CERT_STORE_CLOSE_FORCE_FLAG. This flag should be set when the caller does -// its own reference counting and wants everything to vanish. -// -// To check if all the store's certificates and CRLs have been freed and that -// this is the last CertCloseStore, set the CERT_CLOSE_STORE_CHECK_FLAG. If -// set and certs, CRLs or stores still need to be freed/closed, FALSE is -// returned with LastError set to CRYPT_E_PENDING_CLOSE. Note, for FALSE, -// the store is still closed. This is a diagnostic flag. -// -// LastError is preserved unless CERT_CLOSE_STORE_CHECK_FLAG is set and FALSE -// is returned. -//-------------------------------------------------------------------------- - -function CertCloseStore(hCertStore: HCERTSTORE; dwFlags: DWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Get the subject certificate context uniquely identified by its Issuer and -// SerialNumber from the store. -// -// If the certificate isn't found, NULL is returned. Otherwise, a pointer to -// a read only CERT_CONTEXT is returned. CERT_CONTEXT must be freed by calling -// CertFreeCertificateContext. CertDuplicateCertificateContext can be called to make a -// duplicate. -// -// The returned certificate might not be valid. Normally, it would be -// verified when getting its issuer certificate (CertGetIssuerCertificateFromStore). -//-------------------------------------------------------------------------- - -function CertGetSubjectCertificateFromStore(hCertStore: HCERTSTORE; - dwCertEncodingType: DWORD; - pCertId: PCERT_INFO // Only the Issuer and SerialNumber - ): PCCERT_CONTEXT; stdcall; // fields are used - -//+------------------------------------------------------------------------- -// Enumerate the certificate contexts in the store. -// -// If a certificate isn't found, NULL is returned. -// Otherwise, a pointer to a read only CERT_CONTEXT is returned. CERT_CONTEXT -// must be freed by calling CertFreeCertificateContext or is freed when passed as the -// pPrevCertContext on a subsequent call. CertDuplicateCertificateContext -// can be called to make a duplicate. -// -// pPrevCertContext MUST BE NULL to enumerate the first -// certificate in the store. Successive certificates are enumerated by setting -// pPrevCertContext to the CERT_CONTEXT returned by a previous call. -// -// NOTE: a NON-NULL pPrevCertContext is always CertFreeCertificateContext'ed by -// this function, even for an error. -//-------------------------------------------------------------------------- - -function CertEnumCertificatesInStore(hCertStore: HCERTSTORE; - pPrevCertContext: PCCERT_CONTEXT - ): PCCERT_CONTEXT; stdcall; - -//+------------------------------------------------------------------------- -// Find the first or next certificate context in the store. -// -// The certificate is found according to the dwFindType and its pvFindPara. -// See below for a list of the find types and its parameters. -// -// Currently dwFindFlags is only used for CERT_FIND_SUBJECT_ATTR, -// CERT_FIND_ISSUER_ATTR or CERT_FIND_CTL_USAGE. Otherwise, must be set to 0. -// -// Usage of dwCertEncodingType depends on the dwFindType. -// -// If the first or next certificate isn't found, NULL is returned. -// Otherwise, a pointer to a read only CERT_CONTEXT is returned. CERT_CONTEXT -// must be freed by calling CertFreeCertificateContext or is freed when passed as the -// pPrevCertContext on a subsequent call. CertDuplicateCertificateContext -// can be called to make a duplicate. -// -// pPrevCertContext MUST BE NULL on the first -// call to find the certificate. To find the next certificate, the -// pPrevCertContext is set to the CERT_CONTEXT returned by a previous call. -// -// NOTE: a NON-NULL pPrevCertContext is always CertFreeCertificateContext'ed by -// this function, even for an error. -//-------------------------------------------------------------------------- - -function CertFindCertificateInStore(hCertStore: HCERTSTORE; - dwCertEncodingType: DWORD; - dwFindFlags: DWORD; - dwFindType: DWORD; - const pvFindPara: PVOID; - pPrevCertContext: PCCERT_CONTEXT - ): PCCERT_CONTEXT; stdcall; - -//+------------------------------------------------------------------------- -// Certificate comparison functions -//-------------------------------------------------------------------------- - -const CERT_COMPARE_SHIFT = 16; -const CERT_COMPARE_ANY = 0; -const CERT_COMPARE_SHA1_HASH = 1; -const CERT_COMPARE_NAME = 2; -const CERT_COMPARE_ATTR = 3; -const CERT_COMPARE_MD5_HASH = 4; -const CERT_COMPARE_PROPERTY = 5; -const CERT_COMPARE_PUBLIC_KEY = 6; -const CERT_COMPARE_HASH = CERT_COMPARE_SHA1_HASH; -const CERT_COMPARE_NAME_STR_A = 7; -const CERT_COMPARE_NAME_STR_W = 8; -const CERT_COMPARE_KEY_SPEC = 9; -const CERT_COMPARE_ENHKEY_USAGE = 10; -const CERT_COMPARE_CTL_USAGE = CERT_COMPARE_ENHKEY_USAGE; - -//+------------------------------------------------------------------------- -// dwFindType -// -// The dwFindType definition consists of two components: -// - comparison function -// - certificate information flag -//-------------------------------------------------------------------------- - -const CERT_FIND_ANY = (CERT_COMPARE_ANY shl CERT_COMPARE_SHIFT); -const CERT_FIND_SHA1_HASH = (CERT_COMPARE_SHA1_HASH shl CERT_COMPARE_SHIFT); -const CERT_FIND_MD5_HASH = (CERT_COMPARE_MD5_HASH shl CERT_COMPARE_SHIFT); -const CERT_FIND_HASH = CERT_FIND_SHA1_HASH; -const CERT_FIND_PROPERTY = (CERT_COMPARE_PROPERTY shl CERT_COMPARE_SHIFT); -const CERT_FIND_PUBLIC_KEY = (CERT_COMPARE_PUBLIC_KEY shl CERT_COMPARE_SHIFT); - -const CERT_FIND_SUBJECT_NAME = (CERT_COMPARE_NAME shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG); -const CERT_FIND_SUBJECT_ATTR = (CERT_COMPARE_ATTR shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG); -const CERT_FIND_ISSUER_NAME = (CERT_COMPARE_NAME shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG); -const CERT_FIND_ISSUER_ATTR = (CERT_COMPARE_ATTR shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG); -const CERT_FIND_SUBJECT_STR_A = (CERT_COMPARE_NAME_STR_A shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG); -const CERT_FIND_SUBJECT_STR_W = (CERT_COMPARE_NAME_STR_W shl CERT_COMPARE_SHIFT or CERT_INFO_SUBJECT_FLAG); -const CERT_FIND_SUBJECT_STR = CERT_FIND_SUBJECT_STR_W; -const CERT_FIND_ISSUER_STR_A = (CERT_COMPARE_NAME_STR_A shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG); -const CERT_FIND_ISSUER_STR_W = (CERT_COMPARE_NAME_STR_W shl CERT_COMPARE_SHIFT or CERT_INFO_ISSUER_FLAG); -const CERT_FIND_ISSUER_STR = CERT_FIND_ISSUER_STR_W; -const CERT_FIND_KEY_SPEC = (CERT_COMPARE_KEY_SPEC shl CERT_COMPARE_SHIFT); -const CERT_FIND_ENHKEY_USAGE = (CERT_COMPARE_ENHKEY_USAGE shl CERT_COMPARE_SHIFT); -const CERT_FIND_CTL_USAGE = CERT_FIND_ENHKEY_USAGE; - -//+------------------------------------------------------------------------- -// CERT_FIND_ANY -// -// Find any certificate. -// -// pvFindPara isn't used. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CERT_FIND_HASH -// -// Find a certificate with the specified hash. -// -// pvFindPara points to a CRYPT_HASH_BLOB. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CERT_FIND_PROPERTY -// -// Find a certificate having the specified property. -// -// pvFindPara points to a DWORD containing the PROP_ID -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CERT_FIND_PUBLIC_KEY -// -// Find a certificate matching the specified public key. -// -// pvFindPara points to a CERT_PUBLIC_KEY_INFO containing the public key -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CERT_FIND_SUBJECT_NAME -// CERT_FIND_ISSUER_NAME -// -// Find a certificate with the specified subject/issuer name. Does an exact -// match of the entire name. -// -// Restricts search to certificates matching the dwCertEncodingType. -// -// pvFindPara points to a CERT_NAME_BLOB. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CERT_FIND_SUBJECT_ATTR -// CERT_FIND_ISSUER_ATTR -// -// Find a certificate with the specified subject/issuer attributes. -// -// Compares the attributes in the subject/issuer name with the -// Relative Distinguished Name's (CERT_RDN) array of attributes specified in -// pvFindPara. The comparison iterates through the CERT_RDN attributes and looks -// for an attribute match in any of the subject/issuer's RDNs. -// -// The CERT_RDN_ATTR fields can have the following special values: -// pszObjId == NULL - ignore the attribute object identifier -// dwValueType == RDN_ANY_TYPE - ignore the value type -// Value.pbData == NULL - match any value -// -// Currently only an exact, case sensitive match is supported. -// -// CERT_UNICODE_IS_RDN_ATTRS_FLAG should be set in dwFindFlags if the RDN was -// initialized with unicode strings as for -// CryptEncodeObject(X509_UNICODE_NAME). -// -// Restricts search to certificates matching the dwCertEncodingType. -// -// pvFindPara points to a CERT_RDN (defined in wincert.h). -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CERT_FIND_SUBJECT_STR_A -// CERT_FIND_SUBJECT_STR_W | CERT_FIND_SUBJECT_STR -// CERT_FIND_ISSUER_STR_A -// CERT_FIND_ISSUER_STR_W | CERT_FIND_ISSUER_STR -// -// Find a certificate containing the specified subject/issuer name string. -// -// First, the certificate's subject/issuer is converted to a name string -// via CertNameToStrA/CertNameToStrW(CERT_SIMPLE_NAME_STR). Then, a -// case insensitive substring within string match is performed. -// -// Restricts search to certificates matching the dwCertEncodingType. -// -// For *_STR_A, pvFindPara points to a null terminated character string. -// For *_STR_W, pvFindPara points to a null terminated wide character string. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CERT_FIND_KEY_SPEC -// -// Find a certificate having a CERT_KEY_SPEC_PROP_ID property matching -// the specified KeySpec. -// -// pvFindPara points to a DWORD containing the KeySpec. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CERT_FIND_ENHKEY_USAGE -// -// Find a certificate having the szOID_ENHANCED_KEY_USAGE extension or -// the CERT_ENHKEY_USAGE_PROP_ID and matching the specified pszUsageIdentifers. -// -// pvFindPara points to a CERT_ENHKEY_USAGE data structure. If pvFindPara -// is NULL or CERT_ENHKEY_USAGE's cUsageIdentifier is 0, then, matches any -// certificate having enhanced key usage. -// -// The CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG can be set in dwFindFlags to -// also match a certificate without either the extension or property. -// -// If CERT_FIND_NO_ENHKEY_USAGE_FLAG is set in dwFindFlags, finds -// certificates without the key usage extension or property. Setting this -// flag takes precedence over pvFindPara being NULL. -// -// If the CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG is set, then, only does a match -// using the extension. If pvFindPara is NULL or cUsageIdentifier is set to -// 0, finds certificates having the extension. If -// CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG is set, also matches a certificate -// without the extension. If CERT_FIND_NO_ENHKEY_USAGE_FLAG is set, finds -// certificates without the extension. -// -// If the CERT_FIND_EXT_PROP_ENHKEY_USAGE_FLAG is set, then, only does a match -// using the property. If pvFindPara is NULL or cUsageIdentifier is set to -// 0, finds certificates having the property. If -// CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG is set, also matches a certificate -// without the property. If CERT_FIND_NO_ENHKEY_USAGE_FLAG is set, finds -// certificates without the property. -//-------------------------------------------------------------------------- - -const CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG = $1; -const CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG = $2; -const CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG = $4; -const CERT_FIND_NO_ENHKEY_USAGE_FLAG = $8; -const CERT_FIND_OPTIONAL_CTL_USAGE_FLAG = CERT_FIND_OPTIONAL_ENHKEY_USAGE_FLAG; -const CERT_FIND_EXT_ONLY_CTL_USAGE_FLAG = CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG; -const CERT_FIND_PROP_ONLY_CTL_USAGE_FLAG = CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG; -const CERT_FIND_NO_CTL_USAGE_FLAG = CERT_FIND_NO_ENHKEY_USAGE_FLAG; - -//+------------------------------------------------------------------------- -// Get the certificate context from the store for the first or next issuer -// of the specified subject certificate. Perform the enabled -// verification checks on the subject. (Note, the checks are on the subject -// using the returned issuer certificate.) -// -// If the first or next issuer certificate isn't found, NULL is returned. -// Otherwise, a pointer to a read only CERT_CONTEXT is returned. CERT_CONTEXT -// must be freed by calling CertFreeCertificateContext or is freed when passed as the -// pPrevIssuerContext on a subsequent call. CertDuplicateCertificateContext -// can be called to make a duplicate. -// -// For a self signed subject certificate, NULL is returned with LastError set -// to CERT_STORE_SELF_SIGNED. The enabled verification checks are still done. -// -// The pSubjectContext may have been obtained from this store, another store -// or created by the caller application. When created by the caller, the -// CertCreateCertificateContext function must have been called. -// -// An issuer may have multiple certificates. This may occur when the validity -// period is about to change. pPrevIssuerContext MUST BE NULL on the first -// call to get the issuer. To get the next certificate for the issuer, the -// pPrevIssuerContext is set to the CERT_CONTEXT returned by a previous call. -// -// NOTE: a NON-NULL pPrevIssuerContext is always CertFreeCertificateContext'ed by -// this function, even for an error. -// -// The following flags can be set in *pdwFlags to enable verification checks -// on the subject certificate context: -// CERT_STORE_SIGNATURE_FLAG - use the public key in the returned -// issuer certificate to verify the -// signature on the subject certificate. -// Note, if pSubjectContext->hCertStore == -// hCertStore, the store provider might -// be able to eliminate a redo of -// the signature verify. -// CERT_STORE_TIME_VALIDITY_FLAG - get the current time and verify that -// its within the subject certificate's -// validity period -// CERT_STORE_REVOCATION_FLAG - check if the subject certificate is on -// the issuer's revocation list -// -// If an enabled verification check fails, then, its flag is set upon return. -// If CERT_STORE_REVOCATION_FLAG was enabled and the issuer doesn't have a -// CRL in the store, then, CERT_STORE_NO_CRL_FLAG is set in addition to -// the CERT_STORE_REVOCATION_FLAG. -// -// If CERT_STORE_SIGNATURE_FLAG or CERT_STORE_REVOCATION_FLAG is set, then, -// CERT_STORE_NO_ISSUER_FLAG is set if it doesn't have an issuer certificate -// in the store. -// -// For a verification check failure, a pointer to the issuer's CERT_CONTEXT -// is still returned and SetLastError isn't updated. -//-------------------------------------------------------------------------- -function CertGetIssuerCertificateFromStore(hCertStore: HCERTSTORE; - pSubjectContext: PCCERT_CONTEXT; - pPrevIssuerContext: PCCERT_CONTEXT; //OPTIONAL - pdwFlags: PDWORD): PCCERT_CONTEXT; stdcall; -//+------------------------------------------------------------------------- -// Perform the enabled verification checks on the subject certificate -// using the issuer. Same checks and flags definitions as for the above -// CertGetIssuerCertificateFromStore. -// -// If you are only checking CERT_STORE_TIME_VALIDITY_FLAG, then, the -// issuer can be NULL. -// -// For a verification check failure, SUCCESS is still returned. -//-------------------------------------------------------------------------- - -function CertVerifySubjectCertificateContext(pSubject: PCCERT_CONTEXT; - pIssuer: PCCERT_CONTEXT; //OPTIONAL - pdwFlags: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Duplicate a certificate context -//-------------------------------------------------------------------------- - -function CertDuplicateCertificateContext(pCertContext: PCCERT_CONTEXT): PCCERT_CONTEXT; stdcall; -//+------------------------------------------------------------------------- -// Create a certificate context from the encoded certificate. The created -// context isn't put in a store. -// -// Makes a copy of the encoded certificate in the created context. -// -// If unable to decode and create the certificate context, NULL is returned. -// Otherwise, a pointer to a read only CERT_CONTEXT is returned. -// CERT_CONTEXT must be freed by calling CertFreeCertificateContext. -// CertDuplicateCertificateContext can be called to make a duplicate. -// -// CertSetCertificateContextProperty and CertGetCertificateContextProperty can be called -// to store properties for the certificate. -//-------------------------------------------------------------------------- -function CertCreateCertificateContext(dwCertEncodingType: DWORD; - pbCertEncoded: PBYTE; - cbCertEncoded: DWORD): PCCERT_CONTEXT; stdcall; -//+------------------------------------------------------------------------- -// Free a certificate context -// -// There needs to be a corresponding free for each context obtained by a -// get, find, duplicate or create. -//-------------------------------------------------------------------------- -function CertFreeCertificateContext(pCertContext: PCCERT_CONTEXT): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Set the property for the specified certificate context. -// -// The type definition for pvData depends on the dwPropId value. There are -// five predefined types: -// CERT_KEY_PROV_HANDLE_PROP_ID - a HCRYPTPROV for the certificate's -// private key is passed in pvData. Updates the hCryptProv field -// of the CERT_KEY_CONTEXT_PROP_ID. If the CERT_KEY_CONTEXT_PROP_ID -// doesn't exist, its created with all the other fields zeroed out. If -// CERT_STORE_NO_CRYPT_RELEASE_FLAG isn't set, HCRYPTPROV is implicitly -// released when either the property is set to NULL or on the final -// free of the CertContext. -// -// CERT_KEY_PROV_INFO_PROP_ID - a PCRYPT_KEY_PROV_INFO for the certificate's -// private key is passed in pvData. -// -// CERT_SHA1_HASH_PROP_ID - -// CERT_MD5_HASH_PROP_ID - normally, either property is implicitly -// set by doing a CertGetCertificateContextProperty. pvData points to a -// CRYPT_HASH_BLOB. -// -// CERT_KEY_CONTEXT_PROP_ID - a PCERT_KEY_CONTEXT for the certificate's -// private key is passed in pvData. The CERT_KEY_CONTEXT contains both the -// hCryptProv and dwKeySpec for the private key. -// See the CERT_KEY_PROV_HANDLE_PROP_ID for more information about -// the hCryptProv field and dwFlags settings. Note, more fields may -// be added for this property. The cbSize field value will be adjusted -// accordingly. -// -// CERT_KEY_SPEC_PROP_ID - the dwKeySpec for the private key. pvData -// points to a DWORD containing the KeySpec -// -// CERT_ENHKEY_USAGE_PROP_ID - enhanced key usage definition for the -// certificate. pvData points to a CRYPT_DATA_BLOB containing an -// ASN.1 encoded CERT_ENHKEY_USAGE (encoded via -// CryptEncodeObject(X509_ENHANCED_KEY_USAGE). -// -// CERT_NEXT_UPDATE_LOCATION_PROP_ID - location of the next update. -// Currently only applicable to CTLs. pvData points to a CRYPT_DATA_BLOB -// containing an ASN.1 encoded CERT_ALT_NAME_INFO (encoded via -// CryptEncodeObject(X509_ALTERNATE_NAME)). -// -// CERT_FRIENDLY_NAME_PROP_ID - friendly name for the cert, CRL or CTL. -// pvData points to a CRYPT_DATA_BLOB. pbData is a pointer to a NULL -// terminated unicode, wide character string. -// cbData = (wcslen((LPWSTR) pbData) + 1) * sizeof(WCHAR). -// -// For all the other PROP_IDs: an encoded PCRYPT_DATA_BLOB is passed in pvData. -// -// If the property already exists, then, the old value is deleted and silently -// replaced. Setting, pvData to NULL, deletes the property. -//-------------------------------------------------------------------------- -function CertSetCertificateContextProperty(pCertContext: PCCERT_CONTEXT; - dwPropId: DWORD; - dwFlags: DWORD; - pvData: PVOID): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Get the property for the specified certificate context. -// -// For CERT_KEY_PROV_HANDLE_PROP_ID, pvData points to a HCRYPTPROV. -// -// For CERT_KEY_PROV_INFO_PROP_ID, pvData points to a CRYPT_KEY_PROV_INFO structure. -// Elements pointed to by fields in the pvData structure follow the -// structure. Therefore, *pcbData may exceed the size of the structure. -// -// For CERT_KEY_CONTEXT_PROP_ID, pvData points to a CERT_KEY_CONTEXT structure. -// -// For CERT_KEY_SPEC_PROP_ID, pvData points to a DWORD containing the KeySpec. -// If the CERT_KEY_CONTEXT_PROP_ID exists, the KeySpec is obtained from there. -// Otherwise, if the CERT_KEY_PROV_INFO_PROP_ID exists, its the source -// of the KeySpec. -// -// For CERT_SHA1_HASH_PROP_ID or CERT_MD5_HASH_PROP_ID, if the hash -// doesn't already exist, then, its computed via CryptHashCertificate() -// and then set. pvData points to the computed hash. Normally, the length -// is 20 bytes for SHA and 16 for MD5. -// -// For all other PROP_IDs, pvData points to an encoded array of bytes. -//-------------------------------------------------------------------------- -function CertGetCertificateContextProperty(pCertContext: PCCERT_CONTEXT; - dwPropId: DWORD; - pvData: PVOID; - pcbData: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Enumerate the properties for the specified certificate context. -// -// To get the first property, set dwPropId to 0. The ID of the first -// property is returned. To get the next property, set dwPropId to the -// ID returned by the last call. To enumerate all the properties continue -// until 0 is returned. -// -// CertGetCertificateContextProperty is called to get the property's data. -// -// Note, since, the CERT_KEY_PROV_HANDLE_PROP_ID and CERT_KEY_SPEC_PROP_ID -// properties are stored as fields in the CERT_KEY_CONTEXT_PROP_ID -// property, they aren't enumerated individually. -//-------------------------------------------------------------------------- -function CertEnumCertificateContextProperties(pCertContext: PCCERT_CONTEXT; - dwPropId: DWORD): DWORD; stdcall; -//+------------------------------------------------------------------------- -// Get the first or next CRL context from the store for the specified -// issuer certificate. Perform the enabled verification checks on the CRL. -// -// If the first or next CRL isn't found, NULL is returned. -// Otherwise, a pointer to a read only CRL_CONTEXT is returned. CRL_CONTEXT -// must be freed by calling CertFreeCRLContext. However, the free must be -// pPrevCrlContext on a subsequent call. CertDuplicateCRLContext -// can be called to make a duplicate. -// -// The pIssuerContext may have been obtained from this store, another store -// or created by the caller application. When created by the caller, the -// CertCreateCertificateContext function must have been called. -// -// If pIssuerContext == NULL, finds all the CRLs in the store. -// -// An issuer may have multiple CRLs. For example, it generates delta CRLs -// using a X.509 v3 extension. pPrevCrlContext MUST BE NULL on the first -// call to get the CRL. To get the next CRL for the issuer, the -// pPrevCrlContext is set to the CRL_CONTEXT returned by a previous call. -// -// NOTE: a NON-NULL pPrevCrlContext is always CertFreeCRLContext'ed by -// this function, even for an error. -// -// The following flags can be set in *pdwFlags to enable verification checks -// on the returned CRL: -// CERT_STORE_SIGNATURE_FLAG - use the public key in the -// issuer's certificate to verify the -// signature on the returned CRL. -// Note, if pIssuerContext->hCertStore == -// hCertStore, the store provider might -// be able to eliminate a redo of -// the signature verify. -// CERT_STORE_TIME_VALIDITY_FLAG - get the current time and verify that -// its within the CRL's ThisUpdate and -// NextUpdate validity period. -// -// If an enabled verification check fails, then, its flag is set upon return. -// -// If pIssuerContext == NULL, then, an enabled CERT_STORE_SIGNATURE_FLAG -// always fails and the CERT_STORE_NO_ISSUER_FLAG is also set. -// -// For a verification check failure, a pointer to the first or next -// CRL_CONTEXT is still returned and SetLastError isn't updated. -//-------------------------------------------------------------------------- -function CertGetCRLFromStore(hCertStore: HCERTSTORE; - pIssuerContext: PCCERT_CONTEXT; //OPTIONAL - pPrevCrlContext: PCCRL_CONTEXT; - pdwFlags: PDWORD): PCCRL_CONTEXT; stdcall; -//+------------------------------------------------------------------------- -// Duplicate a CRL context -//-------------------------------------------------------------------------- -function CertDuplicateCRLContext(pCrlContext: PCCRL_CONTEXT): PCCRL_CONTEXT; stdcall; -//+------------------------------------------------------------------------- -// Create a CRL context from the encoded CRL. The created -// context isn't put in a store. -// -// Makes a copy of the encoded CRL in the created context. -// -// If unable to decode and create the CRL context, NULL is returned. -// Otherwise, a pointer to a read only CRL_CONTEXT is returned. -// CRL_CONTEXT must be freed by calling CertFreeCRLContext. -// CertDuplicateCRLContext can be called to make a duplicate. -// -// CertSetCRLContextProperty and CertGetCRLContextProperty can be called -// to store properties for the CRL. -//-------------------------------------------------------------------------- -function CertCreateCRLContext(dwCertEncodingType: DWORD; - pbCrlEncoded: PBYTE; - cbCrlEncoded: DWORD): PCCRL_CONTEXT; stdcall; -//+------------------------------------------------------------------------- -// Free a CRL context -// -// There needs to be a corresponding free for each context obtained by a -// get, duplicate or create. -//-------------------------------------------------------------------------- -function CertFreeCRLContext(pCrlContext: PCCRL_CONTEXT): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Set the property for the specified CRL context. -// -// Same Property Ids and semantics as CertSetCertificateContextProperty. -//-------------------------------------------------------------------------- -function CertSetCRLContextProperty(pCrlContext: PCCRL_CONTEXT; - dwPropId: DWORD; - dwFlags: DWORD; - const pvData: PVOID): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Get the property for the specified CRL context. -// -// Same Property Ids and semantics as CertGetCertificateContextProperty. -// -// CERT_SHA1_HASH_PROP_ID or CERT_MD5_HASH_PROP_ID is the predefined -// property of most interest. -//-------------------------------------------------------------------------- -function CertGetCRLContextProperty(pCrlContext: PCCRL_CONTEXT; - dwPropId: DWORD; - pvData: PVOID; - pcbData: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Enumerate the properties for the specified CRL context. -// -// To get the first property, set dwPropId to 0. The ID of the first -// property is returned. To get the next property, set dwPropId to the -// ID returned by the last call. To enumerate all the properties continue -// until 0 is returned. -// -// CertGetCRLContextProperty is called to get the property's data. -//-------------------------------------------------------------------------- -function CertEnumCRLContextProperties(pCrlContext: PCCRL_CONTEXT; - dwPropId: DWORD): DWORD; stdcall; -//+------------------------------------------------------------------------- -// Add certificate/CRL, encoded, context or element disposition values. -//-------------------------------------------------------------------------- -const CERT_STORE_ADD_NEW = 1; -const CERT_STORE_ADD_USE_EXISTING = 2; -const CERT_STORE_ADD_REPLACE_EXISTING = 3; -const CERT_STORE_ADD_ALWAYS = 4; - -//+------------------------------------------------------------------------- -// Add the encoded certificate to the store according to the specified -// disposition action. -// -// Makes a copy of the encoded certificate before adding to the store. -// -// dwAddDispostion specifies the action to take if the certificate -// already exists in the store. This parameter must be one of the following -// values: -// CERT_STORE_ADD_NEW -// Fails if the certificate already exists in the store. LastError -// is set to CRYPT_E_EXISTS. -// CERT_STORE_ADD_USE_EXISTING -// If the certifcate already exists, then, its used and if ppCertContext -// is non-NULL, the existing context is duplicated. -// CERT_STORE_ADD_REPLACE_EXISTING -// If the certificate already exists, then, the existing certificate -// context is deleted before creating and adding the new context. -// CERT_STORE_ADD_ALWAYS -// No check is made to see if the certificate already exists. A -// new certificate context is always created. This may lead to -// duplicates in the store. -// -// CertGetSubjectCertificateFromStore is called to determine if the -// certificate already exists in the store. -// -// ppCertContext can be NULL, indicating the caller isn't interested -// in getting the CERT_CONTEXT of the added or existing certificate. -//-------------------------------------------------------------------------- -function CertAddEncodedCertificateToStore(hCertStore: HCERTSTORE; - dwCertEncodingType: DWORD; - const pbCertEncoded: PBYTE; - cbCertEncoded: DWORD; - dwAddDisposition: DWORD; - var ppCertContext: PCCERT_CONTEXT): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Add the certificate context to the store according to the specified -// disposition action. -// -// In addition to the encoded certificate, the context's properties are -// also copied. Note, the CERT_KEY_CONTEXT_PROP_ID property (and its -// CERT_KEY_PROV_HANDLE_PROP_ID or CERT_KEY_SPEC_PROP_ID) isn't copied. -// -// Makes a copy of the certificate context before adding to the store. -// -// dwAddDispostion specifies the action to take if the certificate -// already exists in the store. This parameter must be one of the following -// values: -// CERT_STORE_ADD_NEW -// Fails if the certificate already exists in the store. LastError -// is set to CRYPT_E_EXISTS. -// CERT_STORE_ADD_USE_EXISTING -// If the certifcate already exists, then, its used and if ppStoreContext -// is non-NULL, the existing context is duplicated. Iterates -// through pCertContext's properties and only copies the properties -// that don't already exist. The SHA1 and MD5 hash properties aren't -// copied. -// CERT_STORE_ADD_REPLACE_EXISTING -// If the certificate already exists, then, the existing certificate -// context is deleted before creating and adding a new context. -// Properties are copied before doing the add. -// CERT_STORE_ADD_ALWAYS -// No check is made to see if the certificate already exists. A -// new certificate context is always created and added. This may lead to -// duplicates in the store. Properties are -// copied before doing the add. -// -// CertGetSubjectCertificateFromStore is called to determine if the -// certificate already exists in the store. -// -// ppStoreContext can be NULL, indicating the caller isn't interested -// in getting the CERT_CONTEXT of the added or existing certificate. -//-------------------------------------------------------------------------- -function CertAddCertificateContextToStore(hCertStore: HCERTSTORE; - pCertContext: PCCERT_CONTEXT; - dwAddDisposition: DWORD; - var ppStoreContext: PCCERT_CONTEXT //OPTIONAL - ): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Certificate Store Context Types -//-------------------------------------------------------------------------- -const CERT_STORE_CERTIFICATE_CONTEXT = 1; -const CERT_STORE_CRL_CONTEXT = 2; -const CERT_STORE_CTL_CONTEXT = 3; - -//+------------------------------------------------------------------------- -// Certificate Store Context Bit Flags -//-------------------------------------------------------------------------- -const CERT_STORE_ALL_CONTEXT_FLAG = (not ULONG(0)); -const CERT_STORE_CERTIFICATE_CONTEXT_FLAG = (1 shl CERT_STORE_CERTIFICATE_CONTEXT); -const CERT_STORE_CRL_CONTEXT_FLAG = (1 shl CERT_STORE_CRL_CONTEXT); -const CERT_STORE_CTL_CONTEXT_FLAG = (1 shl CERT_STORE_CTL_CONTEXT); - -//+------------------------------------------------------------------------- -// Add the serialized certificate or CRL element to the store. -// -// The serialized element contains the encoded certificate, CRL or CTL and -// its properties, such as, CERT_KEY_PROV_INFO_PROP_ID. -// -// If hCertStore is NULL, creates a certificate, CRL or CTL context not -// residing in any store. -// -// dwAddDispostion specifies the action to take if the certificate or CRL -// already exists in the store. See CertAddCertificateContextToStore for a -// list of and actions taken. -// -// dwFlags currently isn't used and should be set to 0. -// -// dwContextTypeFlags specifies the set of allowable contexts. For example, to -// add either a certificate or CRL, set dwContextTypeFlags to: -// CERT_STORE_CERTIFICATE_CONTEXT_FLAG | CERT_STORE_CRL_CONTEXT_FLAG -// -// *pdwContextType is updated with the type of the context returned in -// *ppvContxt. pdwContextType or ppvContext can be NULL, indicating the -// caller isn't interested in getting the output. If *ppvContext is -// returned it must be freed by calling CertFreeCertificateContext or -// CertFreeCRLContext. -//-------------------------------------------------------------------------- -function CertAddSerializedElementToStore(hCertStore: HCERTSTORE; - pbElement: PBYTE; - cbElement: DWORD; - dwAddDisposition: DWORD; - dwFlags: DWORD; - dwContextTypeFlags: DWORD; - pdwContextType: PDWORD; - var ppvContext: array of PVOID): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Delete the specified certificate from the store. -// -// All subsequent gets or finds for the certificate will fail. However, -// memory allocated for the certificate isn't freed until all of its contexts -// have also been freed. -// -// The pCertContext is obtained from a get, enum, find or duplicate. -// -// Some store provider implementations might also delete the issuer's CRLs -// if this is the last certificate for the issuer in the store. -// -// NOTE: the pCertContext is always CertFreeCertificateContext'ed by -// this function, even for an error. -//-------------------------------------------------------------------------- -function CertDeleteCertificateFromStore(pCertContext: PCCERT_CONTEXT): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Add the encoded CRL to the store according to the specified -// disposition option. -// -// Makes a copy of the encoded CRL before adding to the store. -// -// dwAddDispostion specifies the action to take if the CRL -// already exists in the store. See CertAddEncodedCertificateToStore for a -// list of and actions taken. -// -// Compares the CRL's Issuer to determine if the CRL already exists in the -// store. -// -// ppCrlContext can be NULL, indicating the caller isn't interested -// in getting the CRL_CONTEXT of the added or existing CRL. -//-------------------------------------------------------------------------- -function CertAddEncodedCRLToStore(hCertStore: HCERTSTORE; - dwCertEncodingType: DWORD; - pbCrlEncoded: PBYTE; - cbCrlEncoded: DWORD; - dwAddDisposition: DWORD; - var ppCrlContext: PCCRL_CONTEXT - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Add the CRL context to the store according to the specified -// disposition option. -// -// In addition to the encoded CRL, the context's properties are -// also copied. Note, the CERT_KEY_CONTEXT_PROP_ID property (and its -// CERT_KEY_PROV_HANDLE_PROP_ID or CERT_KEY_SPEC_PROP_ID) isn't copied. -// -// Makes a copy of the encoded CRL before adding to the store. -// -// dwAddDispostion specifies the action to take if the CRL -// already exists in the store. See CertAddCertificateContextToStore for a -// list of and actions taken. -// -// Compares the CRL's Issuer, ThisUpdate and NextUpdate to determine -// if the CRL already exists in the store. -// -// ppStoreContext can be NULL, indicating the caller isn't interested -// in getting the CRL_CONTEXT of the added or existing CRL. -//-------------------------------------------------------------------------- -function CertAddCRLContextToStore(hCertStore: HCERTSTORE; - pCrlContext: PCCRL_CONTEXT; - dwAddDisposition: DWORD; - var ppStoreContext: PCCRL_CONTEXT - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Delete the specified CRL from the store. -// -// All subsequent gets for the CRL will fail. However, -// memory allocated for the CRL isn't freed until all of its contexts -// have also been freed. -// -// The pCrlContext is obtained from a get or duplicate. -// -// NOTE: the pCrlContext is always CertFreeCRLContext'ed by -// this function, even for an error. -//-------------------------------------------------------------------------- -function CertDeleteCRLFromStore(pCrlContext: PCCRL_CONTEXT): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Serialize the certificate context's encoded certificate and its -// properties. -//-------------------------------------------------------------------------- -function CertSerializeCertificateStoreElement(pCertContext: PCCERT_CONTEXT; - dwFlags: DWORD; - pbElement: PBYTE; - pcbElement: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Serialize the CRL context's encoded CRL and its properties. -//-------------------------------------------------------------------------- -function CertSerializeCRLStoreElement(pCrlContext: PCCRL_CONTEXT; - dwFlags: DWORD; - pbElement: PBYTE; - pcbElement: PDWORD): BOOL; stdcall; -//+========================================================================= -// Certificate Trust List (CTL) Store Data Structures and APIs -//========================================================================== - -//+------------------------------------------------------------------------- -// Duplicate a CTL context -//-------------------------------------------------------------------------- -function CertDuplicateCTLContext(pCtlContext: PCCTL_CONTEXT): PCCTL_CONTEXT; stdcall; -//+------------------------------------------------------------------------- -// Create a CTL context from the encoded CTL. The created -// context isn't put in a store. -// -// Makes a copy of the encoded CTL in the created context. -// -// If unable to decode and create the CTL context, NULL is returned. -// Otherwise, a pointer to a read only CTL_CONTEXT is returned. -// CTL_CONTEXT must be freed by calling CertFreeCTLContext. -// CertDuplicateCTLContext can be called to make a duplicate. -// -// CertSetCTLContextProperty and CertGetCTLContextProperty can be called -// to store properties for the CTL. -//-------------------------------------------------------------------------- -function CertCreateCTLContext(dwMsgAndCertEncodingType: DWORD; - const pbCtlEncoded: PBYTE; - cbCtlEncoded: DWORD): PCCTL_CONTEXT; stdcall; -//+------------------------------------------------------------------------- -// Free a CTL context -// -// There needs to be a corresponding free for each context obtained by a -// get, duplicate or create. -//-------------------------------------------------------------------------- -function CertFreeCTLContext(pCtlContext: PCCTL_CONTEXT): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Set the property for the specified CTL context. -// -// Same Property Ids and semantics as CertSetCertificateContextProperty. -//-------------------------------------------------------------------------- -function CertSetCTLContextProperty(pCtlContext: PCCTL_CONTEXT; - dwPropId: DWORD; - dwFlags: DWORD; - const pvData: PVOID): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Get the property for the specified CTL context. -// -// Same Property Ids and semantics as CertGetCertificateContextProperty. -// -// CERT_SHA1_HASH_PROP_ID or CERT_NEXT_UPDATE_LOCATION_PROP_ID are the -// predefined properties of most interest. -//-------------------------------------------------------------------------- -function CertGetCTLContextProperty(pCtlContext: PCCTL_CONTEXT; - dwPropId: DWORD; - pvData: PVOID; - pcbData: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Enumerate the properties for the specified CTL context. -//-------------------------------------------------------------------------- -function CertEnumCTLContextProperties(pCtlContext: PCCTL_CONTEXT; - dwPropId: DWORD): DWORD; stdcall; -//+------------------------------------------------------------------------- -// Enumerate the CTL contexts in the store. -// -// If a CTL isn't found, NULL is returned. -// Otherwise, a pointer to a read only CTL_CONTEXT is returned. CTL_CONTEXT -// must be freed by calling CertFreeCTLContext or is freed when passed as the -// pPrevCtlContext on a subsequent call. CertDuplicateCTLContext -// can be called to make a duplicate. -// -// pPrevCtlContext MUST BE NULL to enumerate the first -// CTL in the store. Successive CTLs are enumerated by setting -// pPrevCtlContext to the CTL_CONTEXT returned by a previous call. -// -// NOTE: a NON-NULL pPrevCtlContext is always CertFreeCTLContext'ed by -// this function, even for an error. -//-------------------------------------------------------------------------- -function CertEnumCTLsInStore(hCertStore: HCERTSTORE; - pPrevCtlContext: PCCTL_CONTEXT - ): PCCTL_CONTEXT; stdcall; -//+------------------------------------------------------------------------- -// Attempt to find the specified subject in the CTL. -// -// For CTL_CERT_SUBJECT_TYPE, pvSubject points to a CERT_CONTEXT. The CTL's -// SubjectAlgorithm is examined to determine the representation of the -// subject's identity. Initially, only SHA1 or MD5 hash will be supported. -// The appropriate hash property is obtained from the CERT_CONTEXT. -// -// For CTL_ANY_SUBJECT_TYPE, pvSubject points to the CTL_ANY_SUBJECT_INFO -// structure which contains the SubjectAlgorithm to be matched in the CTL -// and the SubjectIdentifer to be matched in one of the CTL entries. -// -// The certificate's hash or the CTL_ANY_SUBJECT_INFO's SubjectIdentifier -// is used as the key in searching the subject entries. A binary -// memory comparison is done between the key and the entry's SubjectIdentifer. -// -// dwEncodingType isn't used for either of the above SubjectTypes. -//-------------------------------------------------------------------------- -function CertFindSubjectInCTL(dwEncodingType: DWORD; - dwSubjectType: DWORD; - pvSubject: PVOID; - pCtlContext: PCCTL_CONTEXT; - dwFlags: DWORD): PCTL_ENTRY; stdcall; -// Subject Types: -// CTL_ANY_SUBJECT_TYPE, pvSubject points to following CTL_ANY_SUBJECT_INFO. -// CTL_CERT_SUBJECT_TYPE, pvSubject points to CERT_CONTEXT. -const CTL_ANY_SUBJECT_TYPE = 1; -const CTL_CERT_SUBJECT_TYPE = 2; - -type - PCTL_ANY_SUBJECT_INFO = ^CTL_ANY_SUBJECT_INFO; - CTL_ANY_SUBJECT_INFO = record - SubjectAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - SubjectIdentifier: CRYPT_DATA_BLOB; - end; - -//+------------------------------------------------------------------------- -// Find the first or next CTL context in the store. -// -// The CTL is found according to the dwFindType and its pvFindPara. -// See below for a list of the find types and its parameters. -// -// Currently dwFindFlags isn't used and must be set to 0. -// -// Usage of dwMsgAndCertEncodingType depends on the dwFindType. -// -// If the first or next CTL isn't found, NULL is returned. -// Otherwise, a pointer to a read only CTL_CONTEXT is returned. CTL_CONTEXT -// must be freed by calling CertFreeCTLContext or is freed when passed as the -// pPrevCtlContext on a subsequent call. CertDuplicateCTLContext -// can be called to make a duplicate. -// -// pPrevCtlContext MUST BE NULL on the first -// call to find the CTL. To find the next CTL, the -// pPrevCtlContext is set to the CTL_CONTEXT returned by a previous call. -// -// NOTE: a NON-NULL pPrevCtlContext is always CertFreeCTLContext'ed by -// this function, even for an error. -//-------------------------------------------------------------------------- -function CertFindCTLInStore(hCertStore: HCERTSTORE; - dwMsgAndCertEncodingType: DWORD; - dwFindFlags: DWORD; - dwFindType: DWORD; - const pvFindPara: PVOID; - pPrevCtlContext: PCCTL_CONTEXT): PCCTL_CONTEXT; stdcall; - -const CTL_FIND_ANY = 0; -const CTL_FIND_SHA1_HASH = 1; -const CTL_FIND_MD5_HASH = 2; -const CTL_FIND_USAGE = 3; -const CTL_FIND_SUBJECT = 4; - -type - PCTL_FIND_USAGE_PARA = ^CTL_FIND_USAGE_PARA; - CTL_FIND_USAGE_PARA = record - cbSize: DWORD; - SubjectUsage: CTL_USAGE; // optional - ListIdentifier: CRYPT_DATA_BLOB; // optional - pSigner: PCERT_INFO; // optional - end; - -const CTL_FIND_NO_LIST_ID_CBDATA = $FFFFFFFF; -const CTL_FIND_NO_SIGNER_PTR = (PCERT_INFO($FFFFFFFF)); - -const CTL_FIND_SAME_USAGE_FLAG = $1; - -type - PCTL_FIND_SUBJECT_PARA = ^CTL_FIND_SUBJECT_PARA; - CTL_FIND_SUBJECT_PARA = record - cbSize: DWORD; - pUsagePara: PCTL_FIND_USAGE_PARA; // optional - dwSubjectType: DWORD; - pvSubject: PVOID; - end; - -//+------------------------------------------------------------------------- -// CTL_FIND_ANY -// -// Find any CTL. -// -// pvFindPara isn't used. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CTL_FIND_SHA1_HASH -// CTL_FIND_MD5_HASH -// -// Find a CTL with the specified hash. -// -// pvFindPara points to a CRYPT_HASH_BLOB. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CTL_FIND_USAGE -// -// Find a CTL having the specified usage identifiers, list identifier or -// signer. The CertEncodingType of the signer is obtained from the -// dwMsgAndCertEncodingType parameter. -// -// pvFindPara points to a CTL_FIND_USAGE_PARA data structure. The -// SubjectUsage.cUsageIdentifer can be 0 to match any usage. The -// ListIdentifier.cbData can be 0 to match any list identifier. To only match -// CTLs without a ListIdentifier, cbData must be set to -// CTL_FIND_NO_LIST_ID_CBDATA. pSigner can be NULL to match any signer. Only -// the Issuer and SerialNumber fields of the pSigner's PCERT_INFO are used. -// To only match CTLs without a signer, pSigner must be set to -// CTL_FIND_NO_SIGNER_PTR. -// -// The CTL_FIND_SAME_USAGE_FLAG can be set in dwFindFlags to -// only match CTLs with the same usage identifiers. CTLs having additional -// usage identifiers aren't matched. For example, if only "1.2.3" is specified -// in CTL_FIND_USAGE_PARA, then, for a match, the CTL must only contain -// "1.2.3" and not any additional usage identifers. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// CTL_FIND_SUBJECT -// -// Find a CTL having the specified subject. CertFindSubjectInCTL can be -// called to get a pointer to the subject's entry in the CTL. pUsagePara can -// optionally be set to enable the above CTL_FIND_USAGE matching. -// -// pvFindPara points to a CTL_FIND_SUBJECT_PARA data structure. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// Add the encoded CTL to the store according to the specified -// disposition option. -// -// Makes a copy of the encoded CTL before adding to the store. -// -// dwAddDispostion specifies the action to take if the CTL -// already exists in the store. See CertAddEncodedCertificateToStore for a -// list of and actions taken. -// -// Compares the CTL's SubjectUsage, ListIdentifier and any of its signers -// to determine if the CTL already exists in the store. -// -// ppCtlContext can be NULL, indicating the caller isn't interested -// in getting the CTL_CONTEXT of the added or existing CTL. -//-------------------------------------------------------------------------- -function CertAddEncodedCTLToStore(hCertStore: HCERTSTORE; - dwMsgAndCertEncodingType: DWORD; - const pbCtlEncoded: PBYTE; - cbCtlEncoded: DWORD; - dwAddDisposition: DWORD; - var ppCtlContext: PCCTL_CONTEXT //OPTIONAL - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Add the CTL context to the store according to the specified -// disposition option. -// -// In addition to the encoded CTL, the context's properties are -// also copied. Note, the CERT_KEY_CONTEXT_PROP_ID property (and its -// CERT_KEY_PROV_HANDLE_PROP_ID or CERT_KEY_SPEC_PROP_ID) isn't copied. -// -// Makes a copy of the encoded CTL before adding to the store. -// -// dwAddDispostion specifies the action to take if the CTL -// already exists in the store. See CertAddCertificateContextToStore for a -// list of and actions taken. -// -// Compares the CTL's SubjectUsage, ListIdentifier and any of its signers -// to determine if the CTL already exists in the store. -// -// ppStoreContext can be NULL, indicating the caller isn't interested -// in getting the CTL_CONTEXT of the added or existing CTL. -//-------------------------------------------------------------------------- -function CertAddCTLContextToStore(hCertStore: HCERTSTORE; - pCtlContext: PCCTL_CONTEXT; - dwAddDisposition: DWORD; - var ppStoreContext: PCCTL_CONTEXT - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Serialize the CTL context's encoded CTL and its properties. -//-------------------------------------------------------------------------- -function CertSerializeCTLStoreElement(pCtlContext: PCCTL_CONTEXT; - dwFlags: DWORD; - pbElement: PBYTE; - pcbElement: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Delete the specified CTL from the store. -// -// All subsequent gets for the CTL will fail. However, -// memory allocated for the CTL isn't freed until all of its contexts -// have also been freed. -// -// The pCtlContext is obtained from a get or duplicate. -// -// NOTE: the pCtlContext is always CertFreeCTLContext'ed by -// this function, even for an error. -//-------------------------------------------------------------------------- -function CertDeleteCTLFromStore(pCtlContext: PCCTL_CONTEXT): BOOL; stdcall; -//+========================================================================= -// Enhanced Key Usage Helper Functions -//========================================================================== - -//+------------------------------------------------------------------------- -// Get the enhanced key usage extension or property from the certificate -// and decode. -// -// If the CERT_FIND_EXT_ONLY_ENHKEY_USAGE_FLAG is set, then, only get the -// extension. -// -// If the CERT_FIND_PROP_ONLY_ENHKEY_USAGE_FLAG is set, then, only get the -// property. -//-------------------------------------------------------------------------- -function CertGetEnhancedKeyUsage(pCertContext: PCCERT_CONTEXT; - dwFlags: DWORD; - pUsage: PCERT_ENHKEY_USAGE; - pcbUsage: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Set the enhanced key usage property for the certificate. -//-------------------------------------------------------------------------- -function CertSetEnhancedKeyUsage(pCertContext: PCCERT_CONTEXT; - pUsage: PCERT_ENHKEY_USAGE - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Add the usage identifier to the certificate's enhanced key usage property. -//-------------------------------------------------------------------------- -function CertAddEnhancedKeyUsageIdentifier(pCertContext: PCCERT_CONTEXT; - pszUsageIdentifier: LPCSTR - ): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Remove the usage identifier from the certificate's enhanced key usage -// property. -//-------------------------------------------------------------------------- -function CertRemoveEnhancedKeyUsageIdentifier(pCertContext: PCCERT_CONTEXT; - pszUsageIdentifier: LPCSTR - ): BOOL; stdcall; - -//+========================================================================= -// Cryptographic Message helper functions for verifying and signing a -// CTL. -//========================================================================== - -//+------------------------------------------------------------------------- -// Get and verify the signer of a cryptographic message. -// -// To verify a CTL, the hCryptMsg is obtained from the CTL_CONTEXT's -// hCryptMsg field. -// -// If CMSG_TRUSTED_SIGNER_FLAG is set, then, treat the Signer stores as being -// trusted and only search them to find the certificate corresponding to the -// signer's issuer and serial number. Otherwise, the SignerStores are -// optionally provided to supplement the message's store of certificates. -// If a signer certificate is found, its public key is used to verify -// the message signature. The CMSG_SIGNER_ONLY_FLAG can be set to -// return the signer without doing the signature verify. -// -// If CMSG_USE_SIGNER_INDEX_FLAG is set, then, only get the signer specified -// by *pdwSignerIndex. Otherwise, iterate through all the signers -// until a signer verifies or no more signers. -// -// For a verified signature, *ppSigner is updated with certificate context -// of the signer and *pdwSignerIndex is updated with the index of the signer. -// ppSigner and/or pdwSignerIndex can be NULL, indicating the caller isn't -// interested in getting the CertContext and/or index of the signer. -//-------------------------------------------------------------------------- -function CryptMsgGetAndVerifySigner(hCryptMsg: HCRYPTMSG; - cSignerStore: DWORD; - var rghSignerStore: HCERTSTORE; - dwFlags: DWORD; - var ppSigner: PCCERT_CONTEXT; - pdwSignerIndex: PDWORD): BOOL; stdcall; - -const CMSG_TRUSTED_SIGNER_FLAG = $1; -const CMSG_SIGNER_ONLY_FLAG = $2; -const CMSG_USE_SIGNER_INDEX_FLAG = $4; - -//+------------------------------------------------------------------------- -// Sign an encoded CTL. -// -// The pbCtlContent can be obtained via a CTL_CONTEXT's pbCtlContent -// field or via a CryptEncodeObject(PKCS_CTL). -//-------------------------------------------------------------------------- -function CryptMsgSignCTL(dwMsgEncodingType: DWORD; - pbCtlContent: PBYTE; - cbCtlContent: DWORD; - pSignInfo: PCMSG_SIGNED_ENCODE_INFO; - dwFlags: DWORD; - pbEncoded: PBYTE; - pcbEncoded: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Encode the CTL and create a signed message containing the encoded CTL. -//-------------------------------------------------------------------------- -function CryptMsgEncodeAndSignCTL(dwMsgEncodingType: DWORD; - pCtlInfo: PCTL_INFO; - pSignInfo: PCMSG_SIGNED_ENCODE_INFO; - dwFlags: DWORD; - pbEncoded: PBYTE; - pcbEncoded: PDWORD): BOOL; stdcall; - -//+========================================================================= -// Certificate Verify CTL Usage Data Structures and APIs -//========================================================================== -type - PHCERTSTORE = ^HCERTSTORE; - -type - PCTL_VERIFY_USAGE_PARA = ^CTL_VERIFY_USAGE_PARA; - CTL_VERIFY_USAGE_PARA = record - cbSize: DWORD; - ListIdentifier: CRYPT_DATA_BLOB; // OPTIONAL - cCtlStore: DWORD; - rghCtlStore: PHCERTSTORE; // OPTIONAL - cSignerStore: DWORD; - rghSignerStore: PHCERTSTORE; // OPTIONAL - end; - -type - PCTL_VERIFY_USAGE_STATUS = ^CTL_VERIFY_USAGE_STATUS; - CTL_VERIFY_USAGE_STATUS = record - cbSize: DWORD; - dwError: DWORD; - dwFlags: DWORD; - ppCtl: PPCCTL_CONTEXT; // IN OUT OPTIONAL - dwCtlEntryIndex: DWORD; - ppSigner: PPCCERT_CONTEXT; // IN OUT OPTIONAL - dwSignerIndex: DWORD; - end; - -const CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG = $1; -const CERT_VERIFY_TRUSTED_SIGNERS_FLAG = $2; -const CERT_VERIFY_NO_TIME_CHECK_FLAG = $4; -const CERT_VERIFY_ALLOW_MORE_USAGE_FLAG = $8; - -const CERT_VERIFY_UPDATED_CTL_FLAG = $1; - -//+------------------------------------------------------------------------- -// Verify that a subject is trusted for the specified usage by finding a -// signed and time valid CTL with the usage identifiers and containing the -// the subject. A subject can be identified by either its certificate context -// or any identifier such as its SHA1 hash. -// -// See CertFindSubjectInCTL for definition of dwSubjectType and pvSubject -// parameters. -// -// Via pVerifyUsagePara, the caller can specify the stores to be searched -// to find the CTL. The caller can also specify the stores containing -// acceptable CTL signers. By setting the ListIdentifier, the caller -// can also restrict to a particular signer CTL list. -// -// Via pVerifyUsageStatus, the CTL containing the subject, the subject's -// index into the CTL's array of entries, and the signer of the CTL -// are returned. If the caller is not interested, ppCtl and ppSigner can be set -// to NULL. Returned contexts must be freed via the store's free context APIs. -// -// If the CERT_VERIFY_INHIBIT_CTL_UPDATE_FLAG isn't set, then, a time -// invalid CTL in one of the CtlStores may be replaced. When replaced, the -// CERT_VERIFY_UPDATED_CTL_FLAG is set in pVerifyUsageStatus->dwFlags. -// -// If the CERT_VERIFY_TRUSTED_SIGNERS_FLAG is set, then, only the -// SignerStores specified in pVerifyUsageStatus are searched to find -// the signer. Otherwise, the SignerStores provide additional sources -// to find the signer's certificate. -// -// If CERT_VERIFY_NO_TIME_CHECK_FLAG is set, then, the CTLs aren't checked -// for time validity. -// -// If CERT_VERIFY_ALLOW_MORE_USAGE_FLAG is set, then, the CTL may contain -// additional usage identifiers than specified by pSubjectUsage. Otherwise, -// the found CTL will contain the same usage identifers and no more. -// -// CertVerifyCTLUsage will be implemented as a dispatcher to OID installable -// functions. First, it will try to find an OID function matching the first -// usage object identifier in the pUsage sequence. Next, it will dispatch -// to the default CertDllVerifyCTLUsage functions. -// -// If the subject is trusted for the specified usage, then, TRUE is -// returned. Otherwise, FALSE is returned with dwError set to one of the -// following: -// CRYPT_E_NO_VERIFY_USAGE_DLL -// CRYPT_E_NO_VERIFY_USAGE_CHECK -// CRYPT_E_VERIFY_USAGE_OFFLINE -// CRYPT_E_NOT_IN_CTL -// CRYPT_E_NO_TRUSTED_SIGNER -//-------------------------------------------------------------------------- -function CertVerifyCTLUsage(dwEncodingType: DWORD; - dwSubjectType: DWORD; - pvSubject: PVOID; - pSubjectUsage: PCTL_USAGE; - dwFlags: DWORD; - pVerifyUsagePara: PCTL_VERIFY_USAGE_PARA; - pVerifyUsageStatus: PCTL_VERIFY_USAGE_STATUS - ): BOOL; stdcall; - -//+========================================================================= -// Certificate Revocation Data Structures and APIs -//========================================================================== - -//+------------------------------------------------------------------------- -// The following data structure may be passed to CertVerifyRevocation to -// assist in finding the issuer of the context to be verified. -// -// When pIssuerCert is specified, pIssuerCert is the issuer of -// rgpvContext[cContext - 1]. -// -// When cCertStore and rgCertStore are specified, these stores may contain -// an issuer certificate. -//-------------------------------------------------------------------------- -type - PCERT_REVOCATION_PARA = ^CERT_REVOCATION_PARA; - CERT_REVOCATION_PARA = record - cbSize: DWORD; - pIssuerCert: PCCERT_CONTEXT; - cCertStore: DWORD; - rgCertStore: PHCERTSTORE; - end; - -//+------------------------------------------------------------------------- -// The following data structure is returned by CertVerifyRevocation to -// specify the status of the revoked or unchecked context. Review the -// following CertVerifyRevocation comments for details. -// -// Upon input to CertVerifyRevocation, cbSize must be set to a size -// >= sizeof(CERT_REVOCATION_STATUS). Otherwise, CertVerifyRevocation -// returns FALSE and sets LastError to E_INVALIDARG. -// -// Upon input to the installed or registered CRYPT_OID_VERIFY_REVOCATION_FUNC -// functions, the dwIndex, dwError and dwReason have been zero'ed. -//-------------------------------------------------------------------------- -type - PCERT_REVOCATION_STATUS = ^CERT_REVOCATION_STATUS; - CERT_REVOCATION_STATUS = record - cbSize: DWORD; - dwIndex: DWORD; - dwError: DWORD; - dwReason: DWORD; - end; -//+------------------------------------------------------------------------- -// Verifies the array of contexts for revocation. The dwRevType parameter -// indicates the type of the context data structure passed in rgpvContext. -// Currently only the revocation of certificates is defined. -// -// If the CERT_VERIFY_REV_CHAIN_FLAG flag is set, then, CertVerifyRevocation -// is verifying a chain of certs where, rgpvContext[i + 1] is the issuer -// of rgpvContext[i]. Otherwise, CertVerifyRevocation makes no assumptions -// about the order of the contexts. -// -// To assist in finding the issuer, the pRevPara may optionally be set. See -// the CERT_REVOCATION_PARA data structure for details. -// -// The contexts must contain enough information to allow the -// installable or registered revocation DLLs to find the revocation server. For -// certificates, this information would normally be conveyed in an -// extension such as the IETF's AuthorityInfoAccess extension. -// -// CertVerifyRevocation returns TRUE if all of the contexts were successfully -// checked and none were revoked. Otherwise, returns FALSE and updates the -// returned pRevStatus data structure as follows: -// dwIndex -// Index of the first context that was revoked or unable to -// be checked for revocation -// dwError -// Error status. LastError is also set to this error status. -// dwError can be set to one of the following error codes defined -// in winerror.h: -// ERROR_SUCCESS - good context -// CRYPT_E_REVOKED - context was revoked. dwReason contains the -// reason for revocation -// CRYPT_E_REVOCATION_OFFLINE - unable to connect to the -// revocation server -// CRYPT_E_NOT_IN_REVOCATION_DATABASE - the context to be checked -// was not found in the revocation server's database. -// CRYPT_E_NO_REVOCATION_CHECK - the called revocation function -// wasn't able to do a revocation check on the context -// CRYPT_E_NO_REVOCATION_DLL - no installed or registered Dll was -// found to verify revocation -// dwReason -// The dwReason is currently only set for CRYPT_E_REVOKED and contains -// the reason why the context was revoked. May be one of the following -// CRL reasons defined by the CRL Reason Code extension ("2.5.29.21") -// CRL_REASON_UNSPECIFIED 0 -// CRL_REASON_KEY_COMPROMISE 1 -// CRL_REASON_CA_COMPROMISE 2 -// CRL_REASON_AFFILIATION_CHANGED 3 -// CRL_REASON_SUPERSEDED 4 -// CRL_REASON_CESSATION_OF_OPERATION 5 -// CRL_REASON_CERTIFICATE_HOLD 6 -// -// For each entry in rgpvContext, CertVerifyRevocation iterates -// through the CRYPT_OID_VERIFY_REVOCATION_FUNC -// function set's list of installed DEFAULT functions. -// CryptGetDefaultOIDFunctionAddress is called with pwszDll = NULL. If no -// installed functions are found capable of doing the revocation verification, -// CryptVerifyRevocation iterates through CRYPT_OID_VERIFY_REVOCATION_FUNC's -// list of registered DEFAULT Dlls. CryptGetDefaultOIDDllList is called to -// get the list. CryptGetDefaultOIDFunctionAddress is called to load the Dll. -// -// The called functions have the same signature as CertVerifyRevocation. A -// called function returns TRUE if it was able to successfully check all of -// the contexts and none were revoked. Otherwise, the called function returns -// FALSE and updates pRevStatus. dwIndex is set to the index of -// the first context that was found to be revoked or unable to be checked. -// dwError and LastError are updated. For CRYPT_E_REVOKED, dwReason -// is updated. Upon input to the called function, dwIndex, dwError and -// dwReason have been zero'ed. cbSize has been checked to be >= -// sizeof(CERT_REVOCATION_STATUS). -// -// If the called function returns FALSE, and dwError isn't set to -// CRYPT_E_REVOKED, then, CertVerifyRevocation either continues on to the -// next DLL in the list for a returned dwIndex of 0 or for a returned -// dwIndex > 0, restarts the process of finding a verify function by -// advancing the start of the context array to the returned dwIndex and -// decrementing the count of remaining contexts. -//-------------------------------------------------------------------------- -function CertVerifyRevocation(dwEncodingType: DWORD; - dwRevType: DWORD; - cContext: DWORD; - rgpvContext: array of PVOID; - dwFlags: DWORD; - pRevPara: PCERT_REVOCATION_PARA; - pRevStatus: PCERT_REVOCATION_STATUS - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Revocation types -//-------------------------------------------------------------------------- -const CERT_CONTEXT_REVOCATION_TYPE = 1; - -//+------------------------------------------------------------------------- -// When the following flag is set, rgpvContext[] consists of a chain -// of certificates, where rgpvContext[i + 1] is the issuer of rgpvContext[i]. -//-------------------------------------------------------------------------- -const CERT_VERIFY_REV_CHAIN_FLAG = $1; - -//+------------------------------------------------------------------------- -// CERT_CONTEXT_REVOCATION_TYPE -// -// pvContext points to a const CERT_CONTEXT. -//-------------------------------------------------------------------------- - -//+========================================================================= -// Certificate Helper APIs -//========================================================================== - - -//+------------------------------------------------------------------------- -// Compare two multiple byte integer blobs to see if they are identical. -// -// Before doing the comparison, leading zero bytes are removed from a -// positive number and leading 0xFF bytes are removed from a negative -// number. -// -// The multiple byte integers are treated as Little Endian. pbData[0] is the -// least significant byte and pbData[cbData - 1] is the most significant -// byte. -// -// Returns TRUE if the integer blobs are identical after removing leading -// 0 or 0xFF bytes. -//-------------------------------------------------------------------------- -function CertCompareIntegerBlob(pInt1: PCRYPT_INTEGER_BLOB; - pInt2: PCRYPT_INTEGER_BLOB - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Compare two certificates to see if they are identical. -// -// Since a certificate is uniquely identified by its Issuer and SerialNumber, -// these are the only fields needing to be compared. -// -// Returns TRUE if the certificates are identical. -//-------------------------------------------------------------------------- -function CertCompareCertificate(dwCertEncodingType: DWORD; - pCertId1: PCERT_INFO; - pCertId2: PCERT_INFO): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Compare two certificate names to see if they are identical. -// -// Returns TRUE if the names are identical. -//-------------------------------------------------------------------------- -function CertCompareCertificateName(dwCertEncodingType: DWORD; - pCertName1: PCERT_NAME_BLOB; - pCertName2: PCERT_NAME_BLOB): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Compare the attributes in the certificate name with the specified -// Relative Distinguished Name's (CERT_RDN) array of attributes. -// The comparison iterates through the CERT_RDN attributes and looks for an -// attribute match in any of the certificate name's RDNs. -// Returns TRUE if all the attributes are found and match. -// -// The CERT_RDN_ATTR fields can have the following special values: -// pszObjId == NULL - ignore the attribute object identifier -// dwValueType == RDN_ANY_TYPE - ignore the value type -// -// Currently only an exact, case sensitive match is supported. -// -// CERT_UNICODE_IS_RDN_ATTRS_FLAG should be set if the pRDN was initialized -// with unicode strings as for CryptEncodeObject(X509_UNICODE_NAME). -//-------------------------------------------------------------------------- -function CertIsRDNAttrsInCertificateName(dwCertEncodingType: DWORD; - dwFlags: DWORD; - pCertName: PCERT_NAME_BLOB; - pRDN: PCERT_RDN): BOOL; stdcall; - -const CERT_UNICODE_IS_RDN_ATTRS_FLAG = $1; - -//+------------------------------------------------------------------------- -// Compare two public keys to see if they are identical. -// -// Returns TRUE if the keys are identical. -//-------------------------------------------------------------------------- -function CertComparePublicKeyInfo(dwCertEncodingType: DWORD; - pPublicKey1: PCERT_PUBLIC_KEY_INFO; - pPublicKey2: PCERT_PUBLIC_KEY_INFO - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Get the public/private key's bit length. -// -// Returns 0 if unable to determine the key's length. -//-------------------------------------------------------------------------- -function CertGetPublicKeyLength(dwCertEncodingType: DWORD; - pPublicKey: PCERT_PUBLIC_KEY_INFO - ): DWORD; stdcall; -//+------------------------------------------------------------------------- -// Verify the signature of a subject certificate or a CRL using the -// public key info -// -// Returns TRUE for a valid signature. -// -// hCryptProv specifies the crypto provider to use to verify the signature. -// It doesn't need to use a private key. -//-------------------------------------------------------------------------- -function CryptVerifyCertificateSignature(hCryptProv: HCRYPTPROV; - dwCertEncodingType: DWORD; - const pbEncoded: PBYTE; - cbEncoded: DWORD; - pPublicKey: PCERT_PUBLIC_KEY_INFO - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Compute the hash of the "to be signed" information in the encoded -// signed content (CERT_SIGNED_CONTENT_INFO). -// -// hCryptProv specifies the crypto provider to use to compute the hash. -// It doesn't need to use a private key. -//-------------------------------------------------------------------------- -function CryptHashToBeSigned(hCryptProv: HCRYPTPROV; - dwCertEncodingType: DWORD; - const pbEncoded: PBYTE; - cbEncoded: DWORD; - pbComputedHash: PBYTE; - pcbComputedHash: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Hash the encoded content. -// -// hCryptProv specifies the crypto provider to use to compute the hash. -// It doesn't need to use a private key. -// -// Algid specifies the CAPI hash algorithm to use. If Algid is 0, then, the -// default hash algorithm (currently SHA1) is used. -//-------------------------------------------------------------------------- -function CryptHashCertificate(hCryptProv: HCRYPTPROV; - Algid: ALG_ID; - dwFlags: DWORD; - const pbEncoded: PBYTE; - cbEncoded: DWORD; - pbComputedHash: PBYTE; - pcbComputedHash: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Sign the "to be signed" information in the encoded signed content. -// -// hCryptProv specifies the crypto provider to use to do the signature. -// It uses the specified private key. -//-------------------------------------------------------------------------- -function CryptSignCertificate(hCryptProv: HCRYPTPROV; - dwKeySpec: DWORD; - dwCertEncodingType: DWORD; - const pbEncodedToBeSigned: PBYTE; - cbEncodedToBeSigned: DWORD; - pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER; - const pvHashAuxInfo: PVOID; - pbSignature: PBYTE; - pcbSignature: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Encode the "to be signed" information. Sign the encoded "to be signed". -// Encode the "to be signed" and the signature. -// -// hCryptProv specifies the crypto provider to use to do the signature. -// It uses the specified private key. -//-------------------------------------------------------------------------- -function CryptSignAndEncodeCertificate(hCryptProv: HCRYPTPROV; - dwKeySpec: DWORD; - dwCertEncodingType: DWORD; - const lpszStructType: LPCSTR; // "to be signed" - pvStructInfo: PVOID; - pSignatureAlgorithm: PCRYPT_ALGORITHM_IDENTIFIER; - const pvHashAuxInfo: PVOID; - pbEncoded: PBYTE; - pcbEncoded: PDWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Verify the time validity of a certificate. -// -// Returns -1 if before NotBefore, +1 if after NotAfter and otherwise 0 for -// a valid certificate -// -// If pTimeToVerify is NULL, uses the current time. -//-------------------------------------------------------------------------- -function CertVerifyTimeValidity(pTimeToVerify: PFILETIME; - pCertInfo: PCERT_INFO): LONG; stdcall; - -//+------------------------------------------------------------------------- -// Verify the time validity of a CRL. -// -// Returns -1 if before ThisUpdate, +1 if after NextUpdate and otherwise 0 for -// a valid CRL -// -// If pTimeToVerify is NULL, uses the current time. -//-------------------------------------------------------------------------- -function CertVerifyCRLTimeValidity(pTimeToVerify: PFILETIME; - pCrlInfo: PCRL_INFO): LONG; stdcall; -//+------------------------------------------------------------------------- -// Verify that the subject's time validity nests within the issuer's time -// validity. -// -// Returns TRUE if it nests. Otherwise, returns FALSE. -//-------------------------------------------------------------------------- -function CertVerifyValidityNesting(pSubjectInfo: PCERT_INFO; - pIssuerInfo: PCERT_INFO): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Verify that the subject certificate isn't on its issuer CRL. -// -// Returns true if the certificate isn't on the CRL. -//-------------------------------------------------------------------------- -function CertVerifyCRLRevocation(dwCertEncodingType: DWORD; - pCertId: PCERT_INFO; // Only the Issuer and SerialNumber - cCrlInfo: DWORD; // fields are used - rgpCrlInfo: array of PCRL_INFO): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Convert the CAPI AlgId to the ASN.1 Object Identifier string -// -// Returns NULL if there isn't an ObjId corresponding to the AlgId. -//-------------------------------------------------------------------------- -function CertAlgIdToOID(dwAlgId: DWORD): LPCSTR; stdcall; -//+------------------------------------------------------------------------- -// Convert the ASN.1 Object Identifier string to the CAPI AlgId. -// -// Returns 0 if there isn't an AlgId corresponding to the ObjId. -//-------------------------------------------------------------------------- -function CertOIDToAlgId(pszObjId: LPCSTR): DWORD; stdcall; -//+------------------------------------------------------------------------- -// Find an extension identified by its Object Identifier. -// -// If found, returns pointer to the extension. Otherwise, returns NULL. -//-------------------------------------------------------------------------- -function CertFindExtension(pszObjId: LPCSTR; - cExtensions: DWORD; - rgExtensions: array of CERT_EXTENSION): PCERT_EXTENSION; stdcall; -//+------------------------------------------------------------------------- -// Find the first attribute identified by its Object Identifier. -// -// If found, returns pointer to the attribute. Otherwise, returns NULL. -//-------------------------------------------------------------------------- -function CertFindAttribute(pszObjId: LPCSTR; - cAttr: DWORD; - rgAttr: array of CRYPT_ATTRIBUTE): PCRYPT_ATTRIBUTE; stdcall; -//+------------------------------------------------------------------------- -// Find the first CERT_RDN attribute identified by its Object Identifier in -// the name's list of Relative Distinguished Names. -// -// If found, returns pointer to the attribute. Otherwise, returns NULL. -//-------------------------------------------------------------------------- -function CertFindRDNAttr(pszObjId: LPCSTR; - pName: PCERT_NAME_INFO): PCERT_RDN_ATTR; stdcall; -//+------------------------------------------------------------------------- -// Get the intended key usage bytes from the certificate. -// -// If the certificate doesn't have any intended key usage bytes, returns FALSE -// and *pbKeyUsage is zeroed. Otherwise, returns TRUE and up through -// cbKeyUsage bytes are copied into *pbKeyUsage. Any remaining uncopied -// bytes are zeroed. -//-------------------------------------------------------------------------- -function CertGetIntendedKeyUsage(dwCertEncodingType: DWORD; - pCertInfo: PCERT_INFO; - pbKeyUsage: PBYTE; - cbKeyUsage: DWORD): BOOL; stdcall; - -//+------------------------------------------------------------------------- -// Export the public key info associated with the provider's corresponding -// private key. -// -// Calls CryptExportPublicKeyInfo with pszPublicKeyObjId = szOID_RSA_RSA, -// dwFlags = 0 and pvAuxInfo = NULL. -//-------------------------------------------------------------------------- -function CryptExportPublicKeyInfo(hCryptProv: HCRYPTPROV; - dwKeySpec: DWORD; - dwCertEncodingType: DWORD; - pInfo: PCERT_PUBLIC_KEY_INFO; - pcbInfo: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Export the public key info associated with the provider's corresponding -// private key. -// -// Uses the dwCertEncodingType and pszPublicKeyObjId to call the -// installable CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC. The called function -// has the same signature as CryptExportPublicKeyInfoEx. -// -// If unable to find an installable OID function for the pszPublicKeyObjId, -// attempts to export as a RSA Public Key (szOID_RSA_RSA). -// -// The dwFlags and pvAuxInfo aren't used for szOID_RSA_RSA. -//-------------------------------------------------------------------------- -const CRYPT_OID_EXPORT_PUBLIC_KEY_INFO_FUNC = 'CryptDllExportPublicKeyInfoEx'; - -function CryptExportPublicKeyInfoEx(hCryptProv: HCRYPTPROV; - dwKeySpec: DWORD; - dwCertEncodingType: DWORD; - pszPublicKeyObjId: LPSTR; - dwFlags: DWORD; - pvAuxInfo: PVOID; - pInfo: PCERT_PUBLIC_KEY_INFO; - pcbInfo: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Convert and import the public key info into the provider and return a -// handle to the public key. -// -// Calls CryptImportPublicKeyInfoEx with aiKeyAlg = 0, dwFlags = 0 and -// pvAuxInfo = NULL. -//-------------------------------------------------------------------------- -function CryptImportPublicKeyInfo(hCryptProv: HCRYPTPROV; - dwCertEncodingType: DWORD; - pInfo: PCERT_PUBLIC_KEY_INFO; - phKey: PHCRYPTKEY): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Convert and import the public key info into the provider and return a -// handle to the public key. -// -// Uses the dwCertEncodingType and pInfo->Algorithm.pszObjId to call the -// installable CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC. The called function -// has the same signature as CryptImportPublicKeyInfoEx. -// -// If unable to find an installable OID function for the pszObjId, -// attempts to import as a RSA Public Key (szOID_RSA_RSA). -// -// For szOID_RSA_RSA: aiKeyAlg may be set to CALG_RSA_SIGN or CALG_RSA_KEYX. -// Defaults to CALG_RSA_KEYX. The dwFlags and pvAuxInfo aren't used. -//-------------------------------------------------------------------------- -const CRYPT_OID_IMPORT_PUBLIC_KEY_INFO_FUNC = 'CryptDllImportPublicKeyInfoEx'; - -function CryptImportPublicKeyInfoEx(hCryptProv: HCRYPTPROV; - dwCertEncodingType: DWORD; - pInfo: PCERT_PUBLIC_KEY_INFO; - aiKeyAlg: ALG_ID; - dwFlags: DWORD; - pvAuxInfo: PVOID; - phKey: PHCRYPTKEY - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Compute the hash of the encoded public key info. -// -// The public key info is encoded and then hashed. -//-------------------------------------------------------------------------- -function CryptHashPublicKeyInfo(hCryptProv: HCRYPTPROV; - Algid: ALG_ID; - dwFlags: DWORD; - dwCertEncodingType: DWORD; - pInfo: PCERT_PUBLIC_KEY_INFO; - pbComputedHash: PBYTE; - pcbComputedHash: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Convert a Name Value to a null terminated char string -// -// Returns the number of characters converted including the terminating null -// character. If psz is NULL or csz is 0, returns the required size of the -// destination string (including the terminating null char). -// -// If psz != NULL && csz != 0, returned psz is always NULL terminated. -// -// Note: csz includes the NULL char. -//-------------------------------------------------------------------------- -function CertRDNValueToStrA(dwValueType: DWORD; - pValue: PCERT_RDN_VALUE_BLOB; - psz: LPSTR; //OPTIONAL - csz: DWORD): DWORD; stdcall; -//+------------------------------------------------------------------------- -// Convert a Name Value to a null terminated char string -// -// Returns the number of characters converted including the terminating null -// character. If psz is NULL or csz is 0, returns the required size of the -// destination string (including the terminating null char). -// -// If psz != NULL && csz != 0, returned psz is always NULL terminated. -// -// Note: csz includes the NULL char. -//-------------------------------------------------------------------------- -function CertRDNValueToStrW(dwValueType: DWORD; - pValue: PCERT_RDN_VALUE_BLOB; - psz: LPWSTR; //OPTIONAL - csz: DWORD): DWORD; stdcall; - -function CertRDNValueToStr(dwValueType: DWORD; - pValue: PCERT_RDN_VALUE_BLOB; - psz: LPAWSTR; //OPTIONAL - csz: DWORD): DWORD; stdcall; - -//+------------------------------------------------------------------------- -// Convert the certificate name blob to a null terminated char string. -// -// Follows the string representation of distinguished names specified in -// RFC 1779. (Note, added double quoting "" for embedded quotes, quote -// empty strings and don't quote strings containing consecutive spaces). -// RDN values of type CERT_RDN_ENCODED_BLOB or CERT_RDN_OCTET_STRING are -// formatted in hexadecimal (e.g. #0A56CF). -// -// The name string is formatted according to the dwStrType: -// CERT_SIMPLE_NAME_STR -// The object identifiers are discarded. CERT_RDN entries are separated -// by ", ". Multiple attributes per CERT_RDN are separated by " + ". -// For example: -// Microsoft, Joe Cool + Programmer -// CERT_OID_NAME_STR -// The object identifiers are included with a "=" separator from their -// attribute value. CERT_RDN entries are separated by ", ". -// Multiple attributes per CERT_RDN are separated by " + ". For example: -// 2.5.4.11=Microsoft, 2.5.4.3=Joe Cool + 2.5.4.12=Programmer -// CERT_X500_NAME_STR -// The object identifiers are converted to their X500 key name. Otherwise, -// same as CERT_OID_NAME_STR. If the object identifier doesn't have -// a corresponding X500 key name, then, the object identifier is used with -// a "OID." prefix. For example: -// OU=Microsoft, CN=Joe Cool + T=Programmer, OID.1.2.3.4.5.6=Unknown -// -// We quote the RDN value if it contains leading or trailing whitespace -// or one of the following characters: ",", "+", "=", """, "\n", "<", ">", -// "#" or ";". The quoting character is ". If the the RDN Value contains -// a " it is double quoted (""). For example: -// OU=" Microsoft", CN="Joe ""Cool""" + T="Programmer, Manager" -// -// CERT_NAME_STR_SEMICOLON_FLAG can be or'ed into dwStrType to replace -// the ", " separator with a "; " separator. -// -// CERT_NAME_STR_CRLF_FLAG can be or'ed into dwStrType to replace -// the ", " separator with a "\r\n" separator. -// -// CERT_NAME_STR_NO_PLUS_FLAG can be or'ed into dwStrType to replace the -// " + " separator with a single space, " ". -// -// CERT_NAME_STR_NO_QUOTING_FLAG can be or'ed into dwStrType to inhibit -// the above quoting. -// -// Returns the number of characters converted including the terminating null -// character. If psz is NULL or csz is 0, returns the required size of the -// destination string (including the terminating null char). -// -// If psz != NULL && csz != 0, returned psz is always NULL terminated. -// -// Note: csz includes the NULL char. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -//-------------------------------------------------------------------------- -function CertNameToStrA(dwCertEncodingType: DWORD; - pName: PCERT_NAME_BLOB; - dwStrType: DWORD; - psz: LPSTR; //OPTIONAL - csz: DWORD): DWORD; stdcall; -//+------------------------------------------------------------------------- -//-------------------------------------------------------------------------- -function CertNameToStrW(dwCertEncodingType: DWORD; - pName: PCERT_NAME_BLOB; - dwStrType: DWORD; - psz: LPWSTR; //OPTIONAL - csz: DWORD): DWORD; stdcall; - -function CertNameToStr(dwCertEncodingType: DWORD; - pName: PCERT_NAME_BLOB; - dwStrType: DWORD; - psz: LPAWSTR; //OPTIONAL - csz: DWORD): DWORD; stdcall; - -//+------------------------------------------------------------------------- -// Certificate name string types -//-------------------------------------------------------------------------- -const CERT_SIMPLE_NAME_STR = 1; -const CERT_OID_NAME_STR = 2; -const CERT_X500_NAME_STR = 3; - -//+------------------------------------------------------------------------- -// Certificate name string type flags OR'ed with the above types -//-------------------------------------------------------------------------- -const CERT_NAME_STR_SEMICOLON_FLAG = $40000000; -const CERT_NAME_STR_NO_PLUS_FLAG = $20000000; -const CERT_NAME_STR_NO_QUOTING_FLAG = $10000000; -const CERT_NAME_STR_CRLF_FLAG = $08000000; -const CERT_NAME_STR_COMMA_FLAG = $04000000; - - -//+------------------------------------------------------------------------- -// Convert the null terminated X500 string to an encoded certificate name. -// -// The input string is expected to be formatted the same as the output -// from the above CertNameToStr API. -// -// The CERT_SIMPLE_NAME_STR type isn't supported. Otherwise, when dwStrType -// is set to 0, CERT_OID_NAME_STR or CERT_X500_NAME_STR, allow either a -// case insensitive X500 key (CN=), case insensitive "OID." prefixed -// object identifier (OID.1.2.3.4.5.6=) or an object identifier (1.2.3.4=). -// -// If no flags are OR'ed into dwStrType, then, allow "," or ";" as RDN -// separators and "+" as the multiple RDN value separator. Quoting is -// supported. A quote may be included in a quoted value by double quoting, -// for example (CN="Joe ""Cool"""). A value starting with a "#" is treated -// as ascii hex and converted to a CERT_RDN_OCTET_STRING. Embedded whitespace -// is skipped (1.2.3 = # AB CD 01 is the same as 1.2.3=#ABCD01). -// -// Whitespace surrounding the keys, object identifers and values is removed. -// -// CERT_NAME_STR_COMMA_FLAG can be or'ed into dwStrType to only allow the -// "," as the RDN separator. -// -// CERT_NAME_STR_SEMICOLON_FLAG can be or'ed into dwStrType to only allow the -// ";" as the RDN separator. -// -// CERT_NAME_STR_CRLF_FLAG can be or'ed into dwStrType to only allow -// "\r" or "\n" as the RDN separator. -// -// CERT_NAME_STR_NO_PLUS_FLAG can be or'ed into dwStrType to ignore "+" -// as a separator and not allow multiple values per RDN. -// -// CERT_NAME_STR_NO_QUOTING_FLAG can be or'ed into dwStrType to inhibit -// quoting. -// -// Support the following X500 Keys: -// -// Key Object Identifier RDN Value Type(s) -// --- ----------------- ----------------- -// CN szOID_COMMON_NAME Printable, T61 -// L szOID_LOCALITY_NAME Printable, T61 -// O szOID_ORGANIZATION_NAME Printable, T61 -// OU szOID_ORGANIZATIONAL_UNIT_NAME Printable, T61 -// Email szOID_RSA_emailAddr Only IA5 -// C szOID_COUNTRY_NAME Only Printable -// S szOID_STATE_OR_PROVINCE_NAME Printable, T61 -// ST szOID_STATE_OR_PROVINCE_NAME Printable, T61 -// STREET szOID_STREET_ADDRESS Printable, T61 -// T szOID_TITLE Printable, T61 -// Title szOID_TITLE Printable, T61 -// G szOID_GIVEN_NAME Printable, T61 -// GivenName szOID_GIVEN_NAME Printable, T61 -// I szOID_INITIALS Printable, T61 -// Initials szOID_INITIALS Printable, T61 -// SN szOID_SUR_NAME Printable, T61 -// DC szOID_DOMAIN_COMPONENT Only IA5 -// -// The T61 types are UTF-8 encoded. -// -// Returns TRUE if successfully parsed the input string and encoded -// the name. -// -// If the input string is detected to be invalid, *ppszError is updated -// to point to the beginning of the invalid character sequence. Otherwise, -// *ppszError is set to NULL. *ppszError is updated with a non-NULL pointer -// for the following errors: -// CRYPT_E_INVALID_X500_STRING -// CRYPT_E_INVALID_NUMERIC_STRING -// CRYPT_E_INVALID_PRINTABLE_STRING -// CRYPT_E_INVALID_IA5_STRING -// -// ppszError can be set to NULL if not interested in getting a pointer -// to the invalid character sequence. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -//-------------------------------------------------------------------------- -function CertStrToNameA(dwCertEncodingType: DWORD; - pszX500: LPCSTR; - dwStrType: DWORD; - pvReserved: PVOID; - pbEncoded: PBYTE; - pcbEncoded: PDWORD; - var ppszError: array of LPCSTR): BOOL; stdcall; {--max-- iniziato qui} -//+------------------------------------------------------------------------- -//-------------------------------------------------------------------------- -function CertStrToNameW(dwCertEncodingType: DWORD; - pszX500: LPCWSTR; - dwStrType: DWORD; - pvReserved: PVOID; - pbEncoded: PBYTE; - pcbEncoded: PDWORD; - var ppszError: array of LPWSTR): BOOL; stdcall; - -function CertStrToName(dwCertEncodingType: DWORD; - pszX500: LPAWSTR; - dwStrType: DWORD; - pvReserved: PVOID; - pbEncoded: PBYTE; - pcbEncoded: PDWORD; - var ppszError: array of LPAWSTR): BOOL; stdcall; - -//+========================================================================= -// Simplified Cryptographic Message Data Structures and APIs -//========================================================================== - - -//+------------------------------------------------------------------------- -// Conventions for the *pb and *pcb output parameters: -// -// Upon entry to the function: -// if pcb is OPTIONAL && pcb == NULL, then, -// No output is returned -// else if pb == NULL && pcb != NULL, then, -// Length only determination. No length error is -// returned. -// otherwise where (pb != NULL && pcb != NULL && *pcb != 0) -// Output is returned. If *pcb isn't big enough a -// length error is returned. In all cases *pcb is updated -// with the actual length needed/returned. -//-------------------------------------------------------------------------- - - -//+------------------------------------------------------------------------- -// Type definitions of the parameters used for doing the cryptographic -// operations. -//-------------------------------------------------------------------------- - -//+------------------------------------------------------------------------- -// Callback to get and verify the signer's certificate. -// -// Passed the CertId of the signer (its Issuer and SerialNumber) and a -// handle to its cryptographic signed message's cert store. -// -// For CRYPT_E_NO_SIGNER, called with pSignerId == NULL. -// -// For a valid signer certificate, returns a pointer to a read only -// CERT_CONTEXT. The returned CERT_CONTEXT is either obtained from a -// cert store or was created via CertCreateCertificateContext. For either case, -// its freed via CertFreeCertificateContext. -// -// If a valid certificate isn't found, this callback returns NULL with -// LastError set via SetLastError(). -// -// The NULL implementation tries to get the Signer certificate from the -// message cert store. It doesn't verify the certificate. -//-------------------------------------------------------------------------- - -type - PFN_CRYPT_GET_SIGNER_CERTIFICATE = function(pvGetArg: PVOID; - dwCertEncodingType: DWORD; - pSignerId: PCERT_INFO; // Only the Issuer and SerialNumber - hMsgCertStore: HCERTSTORE // fields have been updated - ): PCCERT_CONTEXT; stdcall; -//+------------------------------------------------------------------------- -// The CRYPT_SIGN_MESSAGE_PARA are used for signing messages using the -// specified signing certificate contexts. (Note, allows multiple signers.) -// -// Either the CERT_KEY_PROV_HANDLE_PROP_ID or CERT_KEY_PROV_INFO_PROP_ID must -// be set for each rgpSigningCert[]. Either one specifies the private -// signature key to use. -// -// If any certificates and/or CRLs are to be included in the signed message, -// then, the MsgCert and MsgCrl parameters need to be updated. If the -// rgpSigningCerts are to be included, then, they must also be in the -// rgpMsgCert array. -// -// cbSize must be set to the sizeof(CRYPT_SIGN_MESSAGE_PARA) or else -// LastError will be updated with E_INVALIDARG. -// -// pvHashAuxInfo currently isn't used and must be set to NULL. -// -// dwFlags normally is set to 0. However, if the encoded output -// is to be a CMSG_SIGNED inner content of an outer cryptographic message, -// such as a CMSG_ENVELOPED, then, the CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG -// should be set. If not set, then it would be encoded as an inner content -// type of CMSG_DATA. -// -// dwInnerContentType is normally set to 0. It needs to be set if the -// ToBeSigned input is the encoded output of another cryptographic -// message, such as, an CMSG_ENVELOPED. When set, it's one of the cryptographic -// message types, for example, CMSG_ENVELOPED. -// -// If the inner content of a nested cryptographic message is data (CMSG_DATA -// the default), then, neither dwFlags or dwInnerContentType need to be set. -//-------------------------------------------------------------------------- - -type - PCRYPT_SIGN_MESSAGE_PARA = ^CRYPT_SIGN_MESSAGE_PARA; - CRYPT_SIGN_MESSAGE_PARA = record - cbSize: DWORD; - dwMsgEncodingType: DWORD; - pSigningCert: PCCERT_CONTEXT; - HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - pvHashAuxInfo: PVOID; - cMsgCert: DWORD; - rgpMsgCert: PPCCERT_CONTEXT; // pointer to array of PCCERT_CONTEXT - cMsgCrl: DWORD; - rgpMsgCrl: PPCCRL_CONTEXT; // pointer to array of PCCERT_CO - cAuthAttr: DWORD; - rgAuthAttr: PCRYPT_ATTRIBUTE; - cUnauthAttr: DWORD; - rgUnauthAttr: PCRYPT_ATTRIBUTE; - dwFlags: DWORD; - dwInnerContentType: DWORD; - end; -const CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG = $1; - -//+------------------------------------------------------------------------- -// The CRYPT_VERIFY_MESSAGE_PARA are used to verify signed messages. -// -// hCryptProv is used to do hashing and signature verification. -// -// The dwCertEncodingType specifies the encoding type of the certificates -// and/or CRLs in the message. -// -// pfnGetSignerCertificate is called to get and verify the message signer's -// certificate. -// -// cbSize must be set to the sizeof(CRYPT_VERIFY_MESSAGE_PARA) or else -// LastError will be updated with E_INVALIDARG. -//-------------------------------------------------------------------------- -type - PCRYPT_VERIFY_MESSAGE_PARA = ^CRYPT_VERIFY_MESSAGE_PARA; - CRYPT_VERIFY_MESSAGE_PARA = record - cbSize: DWORD; - dwMsgAndCertEncodingType: DWORD; - hCryptProv: HCRYPTPROV; - pfnGetSignerCertificate: PFN_CRYPT_GET_SIGNER_CERTIFICATE; - pvGetArg: PVOID; - end; - -//+------------------------------------------------------------------------- -// The CRYPT_ENCRYPT_MESSAGE_PARA are used for encrypting messages. -// -// hCryptProv is used to do content encryption, recipient key -// encryption, and recipient key export. Its private key -// isn't used. -// -// pvEncryptionAuxInfo currently isn't used and must be set to NULL. -// -// cbSize must be set to the sizeof(CRYPT_ENCRYPT_MESSAGE_PARA) or else -// LastError will be updated with E_INVALIDARG. -// -// dwFlags normally is set to 0. However, if the encoded output -// is to be a CMSG_ENVELOPED inner content of an outer cryptographic message, -// such as a CMSG_SIGNED, then, the CRYPT_MESSAGE_BARE_CONTENT_OUT_FLAG -// should be set. If not set, then it would be encoded as an inner content -// type of CMSG_DATA. -// -// dwInnerContentType is normally set to 0. It needs to be set if the -// ToBeEncrypted input is the encoded output of another cryptographic -// message, such as, an CMSG_SIGNED. When set, it's one of the cryptographic -// message types, for example, CMSG_SIGNED. -// -// If the inner content of a nested cryptographic message is data (CMSG_DATA -// the default), then, neither dwFlags or dwInnerContentType need to be set. -//-------------------------------------------------------------------------- -type - PCRYPT_ENCRYPT_MESSAGE_PARA = ^CRYPT_ENCRYPT_MESSAGE_PARA; - CRYPT_ENCRYPT_MESSAGE_PARA = record - cbSize: DWORD; - dwMsgEncodingType: DWORD; - hCryptProv: HCRYPTPROV; - ContentEncryptionAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - pvEncryptionAuxInfo: PVOID; - dwFlags: DWORD; - dwInnerContentType: DWORD; - end; - -//+------------------------------------------------------------------------- -// The CRYPT_DECRYPT_MESSAGE_PARA are used for decrypting messages. -// -// The CertContext to use for decrypting a message is obtained from one -// of the specified cert stores. An encrypted message can have one or -// more recipients. The recipients are identified by their CertId (Issuer -// and SerialNumber). The cert stores are searched to find the CertContext -// corresponding to the CertId. -// -// Only CertContexts in the store with either -// the CERT_KEY_PROV_HANDLE_PROP_ID or CERT_KEY_PROV_INFO_PROP_ID set -// can be used. Either property specifies the private exchange key to use. -// -// cbSize must be set to the sizeof(CRYPT_DECRYPT_MESSAGE_PARA) or else -// LastError will be updated with E_INVALIDARG. -//-------------------------------------------------------------------------- -type - PCRYPT_DECRYPT_MESSAGE_PARA = ^CRYPT_DECRYPT_MESSAGE_PARA; - CRYPT_DECRYPT_MESSAGE_PARA = record - cbSize: DWORD; - dwMsgAndCertEncodingType: DWORD; - cCertStore: DWORD; - rghCertStore: PHCERTSTORE; - end; -//+------------------------------------------------------------------------- -// The CRYPT_HASH_MESSAGE_PARA are used for hashing or unhashing -// messages. -// -// hCryptProv is used to compute the hash. -// -// pvHashAuxInfo currently isn't used and must be set to NULL. -// -// cbSize must be set to the sizeof(CRYPT_HASH_MESSAGE_PARA) or else -// LastError will be updated with E_INVALIDARG. -//-------------------------------------------------------------------------- -type - PCRYPT_HASH_MESSAGE_PARA = ^CRYPT_HASH_MESSAGE_PARA; - CRYPT_HASH_MESSAGE_PARA = record - cbSize: DWORD; - dwMsgEncodingType: DWORD; - hCryptProv: HCRYPTPROV; - HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - pvHashAuxInfo: PVOID; - end; - -//+------------------------------------------------------------------------- -// The CRYPT_KEY_SIGN_MESSAGE_PARA are used for signing messages until a -// certificate has been created for the signature key. -// -// pvHashAuxInfo currently isn't used and must be set to NULL. -// -// If PubKeyAlgorithm isn't set, defaults to szOID_RSA_RSA. -// -// cbSize must be set to the sizeof(CRYPT_KEY_SIGN_MESSAGE_PARA) or else -// LastError will be updated with E_INVALIDARG. -//-------------------------------------------------------------------------- -type - PCRYPT_KEY_SIGN_MESSAGE_PARA = ^CRYPT_KEY_SIGN_MESSAGE_PARA; - CRYPT_KEY_SIGN_MESSAGE_PARA = record - cbSize: DWORD; - dwMsgAndCertEncodingType: DWORD; - hCryptProv: HCRYPTPROV; - dwKeySpec: DWORD; - HashAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - pvHashAuxInfo: PVOID; - PubKeyAlgorithm: CRYPT_ALGORITHM_IDENTIFIER; - end; - -//+------------------------------------------------------------------------- -// The CRYPT_KEY_VERIFY_MESSAGE_PARA are used to verify signed messages without -// a certificate for the signer. -// -// Normally used until a certificate has been created for the key. -// -// hCryptProv is used to do hashing and signature verification. -// -// cbSize must be set to the sizeof(CRYPT_KEY_VERIFY_MESSAGE_PARA) or else -// LastError will be updated with E_INVALIDARG. -//-------------------------------------------------------------------------- -type - PCRYPT_KEY_VERIFY_MESSAGE_PARA = ^CRYPT_KEY_VERIFY_MESSAGE_PARA; - CRYPT_KEY_VERIFY_MESSAGE_PARA = record - cbSize: DWORD; - dwMsgEncodingType: DWORD; - hCryptProv: HCRYPTPROV; - end; - -//+------------------------------------------------------------------------- -// Sign the message. -// -// If fDetachedSignature is TRUE, the "to be signed" content isn't included -// in the encoded signed blob. -//-------------------------------------------------------------------------- -function CryptSignMessage(pSignPara: PCRYPT_SIGN_MESSAGE_PARA; - fDetachedSignature: BOOL; - cToBeSigned: DWORD; - const rgpbToBeSigned: array of PBYTE; - rgcbToBeSigned: array of DWORD; - pbSignedBlob: PBYTE; - pcbSignedBlob: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Verify a signed message. -// -// If pbDecoded == NULL, then, *pcbDecoded is implicitly set to 0 on input. -// For *pcbDecoded == 0 && ppSignerCert == NULL on input, the signer isn't -// verified. -// -// A message might have more than one signer. Set dwSignerIndex to iterate -// through all the signers. dwSignerIndex == 0 selects the first signer. -// -// pVerifyPara's pfnGetSignerCertificate is called to get the signer's -// certificate. -// -// For a verified signer and message, *ppSignerCert is updated -// with the CertContext of the signer. It must be freed by calling -// CertFreeCertificateContext. Otherwise, *ppSignerCert is set to NULL. -// -// ppSignerCert can be NULL, indicating the caller isn't interested -// in getting the CertContext of the signer. -// -// pcbDecoded can be NULL, indicating the caller isn't interested in getting -// the decoded content. Furthermore, if the message doesn't contain any -// content or signers, then, pcbDecoded must be set to NULL, to allow the -// pVerifyPara->pfnGetCertificate to be called. Normally, this would be -// the case when the signed message contains only certficates and CRLs. -// If pcbDecoded is NULL and the message doesn't have the indicated signer, -// pfnGetCertificate is called with pSignerId set to NULL. -// -// If the message doesn't contain any signers || dwSignerIndex > message's -// SignerCount, then, an error is returned with LastError set to -// CRYPT_E_NO_SIGNER. Also, for CRYPT_E_NO_SIGNER, pfnGetSignerCertificate -// is still called with pSignerId set to NULL. -// -// Note, an alternative way to get the certificates and CRLs from a -// signed message is to call CryptGetMessageCertificates. -//-------------------------------------------------------------------------- -function CryptVerifyMessageSignature(pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA; - dwSignerIndex: DWORD; - const pbSignedBlob: PBYTE; - cbSignedBlob: DWORD; - pbDecoded: PBYTE; - pcbDecoded: DWORD; - ppSignerCert: PCCERT_CONTEXT - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Returns the count of signers in the signed message. For no signers, returns -// 0. For an error returns -1 with LastError updated accordingly. -//-------------------------------------------------------------------------- -function CryptGetMessageSignerCount(dwMsgEncodingType: DWORD; - const pbSignedBlob: PBYTE; - cbSignedBlob: DWORD): LONG; stdcall; -//+------------------------------------------------------------------------- -// Returns the cert store containing the message's certs and CRLs. -// For an error, returns NULL with LastError updated. -//-------------------------------------------------------------------------- -function CryptGetMessageCertificates(dwMsgAndCertEncodingType: DWORD; - hCryptProv: HCRYPTPROV; // passed to CertOpenStore - dwFlags: DWORD; // passed to CertOpenStore - const pbSignedBlob: PBYTE; - cbSignedBlob: DWORD): HCERTSTORE; stdcall; -//+------------------------------------------------------------------------- -// Verify a signed message containing detached signature(s). -// The "to be signed" content is passed in separately. No -// decoded output. Otherwise, identical to CryptVerifyMessageSignature. -//-------------------------------------------------------------------------- -function CryptVerifyDetachedMessageSignature(pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA; - dwSignerIndex: DWORD; - const pbDetachedSignBlob: PBYTE; - cbDetachedSignBlob: DWORD; - cToBeSigned: DWORD; - const rgpbToBeSigned: array of PBYTE; - rgcbToBeSigned: array of DWORD; - ppSignerCert: PPCCERT_CONTEXT): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Encrypts the message for the recipient(s). -//-------------------------------------------------------------------------- -function CryptEncryptMessage(pEncryptPara: PCRYPT_ENCRYPT_MESSAGE_PARA; - cRecipientCert: DWORD; - rgpRecipientCert: array of PCCERT_CONTEXT; - const pbToBeEncrypted: PBYTE; - cbToBeEncrypted: DWORD; - pbEncryptedBlob: PBYTE; - pcbEncryptedBlob: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Decrypts the message. -// -// If pbDecrypted == NULL, then, *pcbDecrypted is implicitly set to 0 on input. -// For *pcbDecrypted == 0 && ppXchgCert == NULL on input, the message isn't -// decrypted. -// -// For a successfully decrypted message, *ppXchgCert is updated -// with the CertContext used to decrypt. It must be freed by calling -// CertStoreFreeCert. Otherwise, *ppXchgCert is set to NULL. -// -// ppXchgCert can be NULL, indicating the caller isn't interested -// in getting the CertContext used to decrypt. -//-------------------------------------------------------------------------- -function CryptDecryptMessage(pDecryptPara: PCRYPT_DECRYPT_MESSAGE_PARA; - const pbEncryptedBlob: PBYTE; - cbEncryptedBlob: DWORD; - pbDecrypted: PBYTE; - pcbDecrypted: PDWORD; - ppXchgCert: PPCCERT_CONTEXT): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Sign the message and encrypt for the recipient(s). Does a CryptSignMessage -// followed with a CryptEncryptMessage. -// -// Note: this isn't the CMSG_SIGNED_AND_ENVELOPED. Its a CMSG_SIGNED -// inside of an CMSG_ENVELOPED. -//-------------------------------------------------------------------------- -function CryptSignAndEncryptMessage(pSignPara: PCRYPT_SIGN_MESSAGE_PARA; - pEncryptPara: PCRYPT_ENCRYPT_MESSAGE_PARA; - cRecipientCert: DWORD; - rgpRecipientCert: array of PCCERT_CONTEXT; - const pbToBeSignedAndEncrypted: PBYTE; - cbToBeSignedAndEncrypted: DWORD; - pbSignedAndEncryptedBlob: PBYTE; - pcbSignedAndEncryptedBlob: PDWORD - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Decrypts the message and verifies the signer. Does a CryptDecryptMessage -// followed with a CryptVerifyMessageSignature. -// -// If pbDecrypted == NULL, then, *pcbDecrypted is implicitly set to 0 on input. -// For *pcbDecrypted == 0 && ppSignerCert == NULL on input, the signer isn't -// verified. -// -// A message might have more than one signer. Set dwSignerIndex to iterate -// through all the signers. dwSignerIndex == 0 selects the first signer. -// -// The pVerifyPara's VerifySignerPolicy is called to verify the signer's -// certificate. -// -// For a successfully decrypted and verified message, *ppXchgCert and -// *ppSignerCert are updated. They must be freed by calling -// CertStoreFreeCert. Otherwise, they are set to NULL. -// -// ppXchgCert and/or ppSignerCert can be NULL, indicating the -// caller isn't interested in getting the CertContext. -// -// Note: this isn't the CMSG_SIGNED_AND_ENVELOPED. Its a CMSG_SIGNED -// inside of an CMSG_ENVELOPED. -// -// The message always needs to be decrypted to allow access to the -// signed message. Therefore, if ppXchgCert != NULL, its always updated. -//-------------------------------------------------------------------------- -function CryptDecryptAndVerifyMessageSignature(pDecryptPara: PCRYPT_DECRYPT_MESSAGE_PARA; - pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA; - dwSignerIndex: DWORD; - const pbEncryptedBlob: PBYTE; - cbEncryptedBlob: DWORD; - pbDecrypted: PBYTE; - pcbDecrypted: PDWORD; - var ppXchgCert: array of PCCERT_CONTEXT; - var ppSignerCert: array of PCCERT_CONTEXT - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Decodes a cryptographic message which may be one of the following types: -// CMSG_DATA -// CMSG_SIGNED -// CMSG_ENVELOPED -// CMSG_SIGNED_AND_ENVELOPED -// CMSG_HASHED -// -// dwMsgTypeFlags specifies the set of allowable messages. For example, to -// decode either SIGNED or ENVELOPED messages, set dwMsgTypeFlags to: -// CMSG_SIGNED_FLAG | CMSG_ENVELOPED_FLAG. -// -// dwProvInnerContentType is only applicable when processing nested -// crytographic messages. When processing an outer crytographic message -// it must be set to 0. When decoding a nested cryptographic message -// its the dwInnerContentType returned by a previous CryptDecodeMessage -// of the outer message. The InnerContentType can be any of the CMSG types, -// for example, CMSG_DATA, CMSG_SIGNED, ... -// -// The optional *pdwMsgType is updated with the type of message. -// -// The optional *pdwInnerContentType is updated with the type of the inner -// message. Unless there is cryptographic message nesting, CMSG_DATA -// is returned. -// -// For CMSG_DATA: returns decoded content. -// For CMSG_SIGNED: same as CryptVerifyMessageSignature. -// For CMSG_ENVELOPED: same as CryptDecryptMessage. -// For CMSG_SIGNED_AND_ENVELOPED: same as CryptDecryptMessage plus -// CryptVerifyMessageSignature. -// For CMSG_HASHED: verifies the hash and returns decoded content. -//-------------------------------------------------------------------------- -function CryptDecodeMessage(dwMsgTypeFlags: DWORD; - pDecryptPara: PCRYPT_DECRYPT_MESSAGE_PARA; - pVerifyPara: PCRYPT_VERIFY_MESSAGE_PARA; - dwSignerIndex: DWORD; - const pbEncodedBlob: PBYTE; - cbEncodedBlob: DWORD; - dwPrevInnerContentType: DWORD; - pdwMsgType: PDWORD; - pdwInnerContentType: PDWORD; - pbDecoded: PBYTE; - pcbDecoded: PDWORD; - var ppXchgCert: array of PCCERT_CONTEXT; - var ppSignerCert: array of PCCERT_CONTEXT - ): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Hash the message. -// -// If fDetachedHash is TRUE, only the ComputedHash is encoded in the -// pbHashedBlob. Otherwise, both the ToBeHashed and ComputedHash -// are encoded. -// -// pcbHashedBlob or pcbComputedHash can be NULL, indicating the caller -// isn't interested in getting the output. -//-------------------------------------------------------------------------- -function CryptHashMessage(pHashPara: PCRYPT_HASH_MESSAGE_PARA; - fDetachedHash: BOOL; - cToBeHashed: DWORD; - const rgpbToBeHashed: array of PBYTE; - rgcbToBeHashed: array of DWORD; - pbHashedBlob: PBYTE; - pcbHashedBlob: PDWORD; - pbComputedHash: PBYTE; - pcbComputedHash: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Verify a hashed message. -// -// pcbToBeHashed or pcbComputedHash can be NULL, -// indicating the caller isn't interested in getting the output. -//-------------------------------------------------------------------------- -function CryptVerifyMessageHash(pHashPara: PCRYPT_HASH_MESSAGE_PARA; - pbHashedBlob: PBYTE; - cbHashedBlob: DWORD; - pbToBeHashed: PBYTE; - pcbToBeHashed: PDWORD; - pbComputedHash: PBYTE; - pcbComputedHash: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Verify a hashed message containing a detached hash. -// The "to be hashed" content is passed in separately. No -// decoded output. Otherwise, identical to CryptVerifyMessageHash. -// -// pcbComputedHash can be NULL, indicating the caller isn't interested -// in getting the output. -//-------------------------------------------------------------------------- -function CryptVerifyDetachedMessageHash(pHashPara: PCRYPT_HASH_MESSAGE_PARA; - pbDetachedHashBlob: PBYTE; - cbDetachedHashBlob: DWORD; - cToBeHashed: DWORD; - rgpbToBeHashed: array of PBYTE; - rgcbToBeHashed: array of DWORD; - pbComputedHash: PBYTE; - pcbComputedHash: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Sign the message using the provider's private key specified in the -// parameters. A dummy SignerId is created and stored in the message. -// -// Normally used until a certificate has been created for the key. -//-------------------------------------------------------------------------- -function CryptSignMessageWithKey(pSignPara: PCRYPT_KEY_SIGN_MESSAGE_PARA; - const pbToBeSigned: PBYTE; - cbToBeSigned: DWORD; - pbSignedBlob: PBYTE; - pcbSignedBlob: PDWORD): BOOL; stdcall; -//+------------------------------------------------------------------------- -// Verify a signed message using the specified public key info. -// -// Normally called by a CA until it has created a certificate for the -// key. -// -// pPublicKeyInfo contains the public key to use to verify the signed -// message. If NULL, the signature isn't verified (for instance, the decoded -// content may contain the PublicKeyInfo). -// -// pcbDecoded can be NULL, indicating the caller isn't interested -// in getting the decoded content. -//-------------------------------------------------------------------------- -function CryptVerifyMessageSignatureWithKey(pVerifyPara: PCRYPT_KEY_VERIFY_MESSAGE_PARA; - pPublicKeyInfo: PCERT_PUBLIC_KEY_INFO; - const pbSignedBlob: PBYTE; - cbSignedBlob: DWORD; - pbDecoded: PBYTE; - pcbDecoded: PDWORD): BOOL; stdcall; - -//+========================================================================= -// System Certificate Store Data Structures and APIs -//========================================================================== - - -//+------------------------------------------------------------------------- -// Get a system certificate store based on a subsystem protocol. -// -// Current examples of subsystems protocols are: -// "MY" Cert Store hold certs with associated Private Keys -// "CA" Certifying Authority certs -// "ROOT" Root Certs -// "SPC" Software publisher certs -// -// -// If hProv is NULL the default provider "1" is opened for you. -// When the store is closed the provider is release. Otherwise -// if hProv is not NULL, no provider is created or released. -// -// The returned Cert Store can be searched for an appropriate Cert -// using the Cert Store API's (see certstor.h) -// -// When done, the cert store should be closed using CertStoreClose -//-------------------------------------------------------------------------- - -function CertOpenSystemStoreA(hProv: HCRYPTPROV; - szSubsystemProtocol: LPCSTR): HCERTSTORE; stdcall; - -function CertOpenSystemStoreW(hProv: HCRYPTPROV; - szSubsystemProtocol: LPCWSTR): HCERTSTORE; stdcall; - -function CertOpenSystemStore(hProv: HCRYPTPROV; - szSubsystemProtocol: LPAWSTR): HCERTSTORE; stdcall; - -function CertAddEncodedCertificateToSystemStoreA(szCertStoreName: LPCSTR; - const pbCertEncoded: PBYTE; - cbCertEncoded: DWORD): BOOL; stdcall; - -function CertAddEncodedCertificateToSystemStoreW(szCertStoreName: LPCWSTR; - const pbCertEncoded: PBYTE; - cbCertEncoded: DWORD): BOOL; stdcall; - -function CertAddEncodedCertificateToSystemStore(szCertStoreName: LPAWSTR; - const pbCertEncoded: PBYTE; - cbCertEncoded: DWORD): BOOL; stdcall; - - -//+------------------------------------------------------------------------- -// Find all certificate chains tying the given issuer name to any certificate -// that the current user has a private key for. -// -// If no certificate chain is found, FALSE is returned with LastError set -// to CRYPT_E_NOT_FOUND and the counts zeroed. -// -// IE 3.0 ASSUMPTION: -// The client certificates are in the "My" system store. The issuer -// cerificates may be in the "Root", "CA" or "My" system stores. -//-------------------------------------------------------------------------- -type - PCERT_CHAIN = ^CERT_CHAIN; - CERT_CHAIN = record - cCerts: DWORD; // number of certs in chain - certs: PCERT_BLOB; // pointer to array of cert chain blobs representing the certs - keyLocatorInfo: CRYPT_KEY_PROV_INFO; // key locator for cert - end; - - -// WINCRYPT32API This is not exported by crypt32, it is exported by softpub -function FindCertsByIssuer(pCertChains: PCERT_CHAIN; - pcbCertChains: PDWORD; - pcCertChains: PDWORD; // count of certificates chains returned - pbEncodedIssuerName: PBYTE; // DER encoded issuer name - cbEncodedIssuerName: DWORD; // count in bytes of encoded issuer name - pwszPurpose: LPCWSTR; // "ClientAuth" or "CodeSigning" - dwKeySpec: DWORD // only return signers supporting this keyspec - ): HRESULT; stdcall; - -//////////////////////////// VERSION 2 //////////////////////////////////////////////////////////////////// - -implementation - -{Macro inplementation} - -function GET_ALG_CLASS(x: integer): integer; -begin - Result := (x and (7 shl 13)); -end; - -function GET_ALG_TYPE(x: integer): integer; -begin - Result := (x and (15 shl 9)); -end; - -function GET_ALG_SID(x: integer): integer; -begin - Result := (x and (511)); -end; - -function RCRYPT_SUCCEEDED(rt: BOOL): BOOL; -begin - Result := rt = CRYPT_SUCCEED; -end; - -function RCRYPT_FAILED(rt: BOOL): BOOL; -begin - Result := rt = CRYPT_FAILED; -end; - -function GET_CERT_UNICODE_RDN_ERR_INDEX(X: integer): integer; -begin - Result := ((X shr CERT_UNICODE_RDN_ERR_INDEX_SHIFT) and CERT_UNICODE_RDN_ERR_INDEX_MASK); -end; - -function GET_CERT_UNICODE_ATTR_ERR_INDEX(X: integer): integer; -begin - Result := ((X shr CERT_UNICODE_ATTR_ERR_INDEX_SHIFT) and CERT_UNICODE_ATTR_ERR_INDEX_MASK); -end; - -function GET_CERT_UNICODE_VALUE_ERR_INDEX(X: integer): integer; -begin - Result := (X and CERT_UNICODE_VALUE_ERR_INDEX_MASK); -end; - -function GET_CERT_ALT_NAME_ENTRY_ERR_INDEX(X: DWORD): DWORD; -begin - Result := ((X shr CERT_ALT_NAME_ENTRY_ERR_INDEX_SHIFT) and CERT_ALT_NAME_ENTRY_ERR_INDEX_MASK); -end; - -function GET_CERT_ALT_NAME_VALUE_ERR_INDEX(X: DWORD): DWORD; -begin - Result := (X and CERT_ALT_NAME_VALUE_ERR_INDEX_MASK); -end; - -function GET_CRL_DIST_POINT_ERR_INDEX(X: DWORD): DWORD; -begin - Result := ((X shr CRL_DIST_POINT_ERR_INDEX_SHIFT) and CRL_DIST_POINT_ERR_INDEX_MASK); -end; - -function IS_CRL_DIST_POINT_ERR_CRL_ISSUER(X: DWORD): BOOL; -begin - Result := (0 <> (X and CRL_DIST_POINT_ERR_CRL_ISSUER_BIT)); -end; -///////////////////////////////////////version 2 ///////////////////////// - -function IS_CERT_RDN_CHAR_STRING(X: DWORD): BOOL; -begin - Result := BOOL(X >= CERT_RDN_NUMERIC_STRING); -end; - -function GET_CERT_ENCODING_TYPE(X: DWORD): DWORD; -begin - Result := (X and CERT_ENCODING_TYPE_MASK); -end; - -function GET_CMSG_ENCODING_TYPE(X: DWORD): DWORD; -begin - Result := (X and CMSG_ENCODING_TYPE_MASK); -end; - -function IS_CERT_HASH_PROP_ID(X: DWORD): BOOL; -begin - if (X = CERT_SHA1_HASH_PROP_ID) or (X = CERT_MD5_HASH_PROP_ID) then - Result := True - else - Result := False; -end; -{end Macro} - -function CryptAcquireContextA; external ADVAPI32 name 'CryptAcquireContextA'; -{$IFDEF UNICODE} -function CryptAcquireContext; external ADVAPI32 name 'CryptAcquireContextW'; -{$ELSE} -function CryptAcquireContext; external ADVAPI32 name 'CryptAcquireContextA'; -{$ENDIF} -function CryptAcquireContextW; external ADVAPI32 name 'CryptAcquireContextW'; -function CryptReleaseContext; external ADVAPI32 name 'CryptReleaseContext'; -function CryptGenKey; external ADVAPI32 name 'CryptGenKey'; -function CryptDeriveKey; external ADVAPI32 name 'CryptDeriveKey'; -function CryptDestroyKey; external ADVAPI32 name 'CryptDestroyKey'; -function CryptSetKeyParam; external ADVAPI32 name 'CryptSetKeyParam'; -function CryptGetKeyParam; external ADVAPI32 name 'CryptGetKeyParam'; -function CryptSetHashParam; external ADVAPI32 name 'CryptSetHashParam'; -function CryptGetHashParam; external ADVAPI32 name 'CryptGetHashParam'; -function CryptSetProvParam; external ADVAPI32 name 'CryptSetProvParam'; -function CryptGetProvParam; external ADVAPI32 name 'CryptGetProvParam'; -function CryptGenRandom; external ADVAPI32 name 'CryptGenRandom'; -function CryptGetUserKey; external ADVAPI32 name 'CryptGetUserKey'; -function CryptExportKey; external ADVAPI32 name 'CryptExportKey'; -function CryptImportKey; external ADVAPI32 name 'CryptImportKey'; -function CryptEncrypt; external ADVAPI32 name 'CryptEncrypt'; -function CryptDecrypt; external ADVAPI32 name 'CryptDecrypt'; -function CryptCreateHash; external ADVAPI32 name 'CryptCreateHash'; -function CryptHashData; external ADVAPI32 name 'CryptHashData'; -function CryptHashSessionKey; external ADVAPI32 name 'CryptHashSessionKey'; -function CryptDestroyHash; external ADVAPI32 name 'CryptDestroyHash'; -function CryptSignHashA; external ADVAPI32 name 'CryptSignHashA'; -function CryptSignHashW; external ADVAPI32 name 'CryptSignHashW'; -function CryptSignHashU; external CRYPT32 name 'CryptSignHashU'; -{$IFDEF UNICODE} -function CryptSignHash; external ADVAPI32 name 'CryptSignHashW'; -{$ELSE} -function CryptSignHash; external ADVAPI32 name 'CryptSignHashA'; -{$ENDIF} -function CryptVerifySignatureA; external ADVAPI32 name 'CryptVerifySignatureA'; -function CryptVerifySignatureW; external ADVAPI32 name 'CryptVerifySignatureW'; -{$IFDEF UNICODE} -function CryptVerifySignature; external ADVAPI32 name 'CryptVerifySignatureW'; -{$ELSE} -function CryptVerifySignature; external ADVAPI32 name 'CryptVerifySignatureA'; -{$ENDIF} -function CryptSetProviderW; external ADVAPI32 name 'CryptSetProviderW'; -function CryptSetProviderA; external ADVAPI32 name 'CryptSetProviderA'; -function CryptSetProviderU; external CRYPT32 name 'CryptSetProviderU'; -{$IFDEF UNICODE} -function CryptSetProvider; external ADVAPI32 name 'CryptSetProviderW'; -{$ELSE} -function CryptSetProvider; external ADVAPI32 name 'CryptSetProviderA'; -{$ENDIF} - -{$IFDEF NT5} -function CryptSetProviderExA; external ADVAPI32NT5 name 'CryptSetProviderExA'; //nt5 advapi32 -function CryptSetProviderExW; external ADVAPI32NT5 name 'CryptSetProviderExW'; -{$IFDEF UNICODE} -function CryptSetProviderEx; external ADVAPI32NT5 name 'CryptSetProviderExW'; -{$ELSE} -function CryptSetProviderEx; external ADVAPI32NT5 name 'CryptSetProviderExA'; -{$ENDIF} // !UNICODE - -function CryptGetDefaultProviderA; external ADVAPI32NT5 name 'CryptGetDefaultProviderA'; //nt5 advapi32 -function CryptGetDefaultProviderW; external ADVAPI32NT5 name 'CryptGetDefaultProviderW'; -{$IFDEF UNICODE} -function CryptGetDefaultProvider; external ADVAPI32NT5 name 'CryptGetDefaultProviderW'; -{$ELSE} -function CryptGetDefaultProvider; external ADVAPI32NT5 name 'CryptGetDefaultProviderA'; -{$ENDIF} // !UNICODE - -function CryptEnumProviderTypesA; external ADVAPI32NT5 name 'CryptEnumProviderTypesA'; //nt5 advapi32 -function CryptEnumProviderTypesW; external ADVAPI32NT5 name 'CryptEnumProviderTypesW'; -{$IFDEF UNICODE} -function CryptEnumProviderTypes; external ADVAPI32NT5 name 'CryptEnumProviderTypesW'; -{$ELSE} -function CryptEnumProviderTypes; external ADVAPI32NT5 name 'CryptEnumProviderTypesA'; -{$ENDIF} // !UNICODE - -function CryptEnumProvidersA; external ADVAPI32NT5 name 'CryptEnumProvidersA'; //nt5 advapi32 -function CryptEnumProvidersW; external ADVAPI32NT5 name 'CryptEnumProvidersW'; - -{$IFDEF UNICODE} -function CryptEnumProviders; external ADVAPI32NT5 name 'CryptEnumProvidersW'; -{$ELSE} -function CryptEnumProviders; external ADVAPI32NT5 name 'CryptEnumProvidersA'; -{$ENDIF} // !UNICODE -function CryptContextAddRef; external ADVAPI32NT5 name 'CryptContextAddRef'; //nt5 advapi32 -function CryptDuplicateKey; external ADVAPI32NT5 name 'CryptDuplicateKey'; //nt5 advapi32 -function CryptDuplicateHash; external ADVAPI32NT5 name 'CryptDuplicateHash'; //nt5 advapi32 -{$ENDIF NT5} - -function CryptEnumProvidersU; external CRYPT32 name 'CryptEnumProvidersU'; -function CryptFormatObject; external CRYPT32 name 'CryptFormatObject'; -function CryptEncodeObject; external CRYPT32 name 'CryptEncodeObject'; -function CryptDecodeObject; external CRYPT32 name 'CryptDecodeObject'; -function CryptInstallOIDFunctionAddress; external CRYPT32 name 'CryptInstallOIDFunctionAddress'; -function CryptInitOIDFunctionSet; external CRYPT32 name 'CryptInitOIDFunctionSet'; -function CryptGetOIDFunctionAddress; external CRYPT32 name 'CryptGetOIDFunctionAddress'; -function CryptGetDefaultOIDDllList; external CRYPT32 name 'CryptGetDefaultOIDDllList'; -function CryptGetDefaultOIDFunctionAddress; external CRYPT32 name 'CryptGetDefaultOIDFunctionAddress'; -function CryptFreeOIDFunctionAddress; external CRYPT32 name 'CryptFreeOIDFunctionAddress'; -function CryptRegisterOIDFunction; external CRYPT32 name 'CryptRegisterOIDFunction'; -function CryptUnregisterOIDFunction; external CRYPT32 name 'CryptUnregisterOIDFunction'; -function CryptRegisterDefaultOIDFunction; external CRYPT32 name 'CryptRegisterDefaultOIDFunction'; -function CryptUnregisterDefaultOIDFunction; external CRYPT32 name 'CryptUnregisterDefaultOIDFunction'; -function CryptSetOIDFunctionValue; external CRYPT32 name 'CryptSetOIDFunctionValue'; -function CryptGetOIDFunctionValue; external CRYPT32 name 'CryptGetOIDFunctionValue'; -function CryptEnumOIDFunction; external CRYPT32 name 'CryptEnumOIDFunction'; -function CryptFindOIDInfo; external CRYPT32 name 'CryptFindOIDInfo'; - -function CryptRegisterOIDInfo; external CRYPT32 name 'CryptRegisterOIDInfo'; -function CryptUnregisterOIDInfo; external CRYPT32 name 'CryptUnregisterOIDInfo'; -function CryptMsgOpenToEncode; external CRYPT32 name 'CryptMsgOpenToEncode'; -function CryptMsgCalculateEncodedLength; external CRYPT32 name 'CryptMsgCalculateEncodedLength'; -function CryptMsgOpenToDecode; external CRYPT32 name 'CryptMsgOpenToDecode'; -function CryptMsgClose; external CRYPT32 name 'CryptMsgClose'; -function CryptMsgUpdate; external CRYPT32 name 'CryptMsgUpdate'; -function CryptMsgControl; external CRYPT32 name 'CryptMsgControl'; -function CryptMsgVerifyCountersignatureEncoded; external CRYPT32 name 'CryptMsgVerifyCountersignatureEncoded'; -function CryptMsgCountersign; external CRYPT32 name 'CryptMsgCountersign'; -function CryptMsgCountersignEncoded; external CRYPT32 name 'CryptMsgCountersignEncoded'; -function CryptMsgGetParam; external CRYPT32 name 'CryptMsgGetParam'; -function CertOpenStore; external CRYPT32 name 'CertOpenStore'; -function CertDuplicateStore; external CRYPT32 name 'CertDuplicateStore'; -function CertSaveStore; external CRYPT32 name 'CertSaveStore'; -function CertCloseStore; external CRYPT32 name 'CertCloseStore'; -function CertGetSubjectCertificateFromStore; external CRYPT32 name 'CertGetSubjectCertificateFromStore'; -function CertEnumCertificatesInStore; external CRYPT32 name 'CertEnumCertificatesInStore'; -function CertFindCertificateInStore; external CRYPT32 name 'CertFindCertificateInStore'; -function CertGetIssuerCertificateFromStore; external CRYPT32 name 'CertGetIssuerCertificateFromStore'; -function CertVerifySubjectCertificateContext; external CRYPT32 name 'CertVerifySubjectCertificateContext'; -function CertDuplicateCertificateContext; external CRYPT32 name 'CertDuplicateCertificateContext'; -function CertCreateCertificateContext; external CRYPT32 name 'CertCreateCertificateContext'; -function CertFreeCertificateContext; external CRYPT32 name 'CertFreeCertificateContext'; -function CertSetCertificateContextProperty; external CRYPT32 name 'CertSetCertificateContextProperty'; -function CertGetCertificateContextProperty; external CRYPT32 name 'CertGetCertificateContextProperty'; -function CertEnumCertificateContextProperties; external CRYPT32 name 'CertEnumCertificateContextProperties'; -function CertGetCRLFromStore; external CRYPT32 name 'CertGetCRLFromStore'; -function CertDuplicateCRLContext; external CRYPT32 name 'CertDuplicateCRLContext'; -function CertCreateCRLContext; external CRYPT32 name 'CertCreateCRLContext'; -function CertFreeCRLContext; external CRYPT32 name 'CertFreeCRLContext'; -function CertSetCRLContextProperty; external CRYPT32 name 'CertSetCRLContextProperty'; -function CertGetCRLContextProperty; external CRYPT32 name 'CertGetCRLContextProperty'; -function CertEnumCRLContextProperties; external CRYPT32 name 'CertEnumCRLContextProperties'; -function CertAddEncodedCertificateToStore; external CRYPT32 name 'CertAddEncodedCertificateToStore'; -function CertAddCertificateContextToStore; external CRYPT32 name 'CertAddCertificateContextToStore'; -function CertAddSerializedElementToStore; external CRYPT32 name 'CertAddSerializedElementToStore'; -function CertDeleteCertificateFromStore; external CRYPT32 name 'CertDeleteCertificateFromStore'; -function CertAddEncodedCRLToStore; external CRYPT32 name 'CertAddEncodedCRLToStore'; -function CertAddCRLContextToStore; external CRYPT32 name 'CertAddCRLContextToStore'; -function CertDeleteCRLFromStore; external CRYPT32 name 'CertDeleteCRLFromStore'; -function CertSerializeCertificateStoreElement; external CRYPT32 name 'CertSerializeCertificateStoreElement'; -function CertSerializeCRLStoreElement; external CRYPT32 name 'CertSerializeCRLStoreElement'; -function CertDuplicateCTLContext; external CRYPT32 name 'CertDuplicateCTLContext'; -function CertCreateCTLContext; external CRYPT32 name 'CertCreateCTLContext'; -function CertFreeCTLContext; external CRYPT32 name 'CertFreeCTLContext'; -function CertSetCTLContextProperty; external CRYPT32 name 'CertSetCTLContextProperty'; -function CertGetCTLContextProperty; external CRYPT32 name 'CertGetCTLContextProperty'; -function CertEnumCTLContextProperties; external CRYPT32 name 'CertEnumCTLContextProperties'; -function CertEnumCTLsInStore; external CRYPT32 name 'CertEnumCTLsInStore'; -function CertFindSubjectInCTL; external CRYPT32 name 'CertFindSubjectInCTL'; -function CertFindCTLInStore; external CRYPT32 name 'CertFindCTLInStore'; -function CertAddEncodedCTLToStore; external CRYPT32 name 'CertAddEncodedCTLToStore'; -function CertAddCTLContextToStore; external CRYPT32 name 'CertAddCTLContextToStore'; -function CertSerializeCTLStoreElement; external CRYPT32 name 'CertSerializeCTLStoreElement'; -function CertDeleteCTLFromStore; external CRYPT32 name 'CertDeleteCTLFromStore'; -function CertGetEnhancedKeyUsage; external CRYPT32 name 'CertGetEnhancedKeyUsage'; -function CertSetEnhancedKeyUsage; external CRYPT32 name 'CertSetEnhancedKeyUsage'; -function CertAddEnhancedKeyUsageIdentifier; external CRYPT32 name 'CertAddEnhancedKeyUsageIdentifier'; -function CertRemoveEnhancedKeyUsageIdentifier; external CRYPT32 name 'CertRemoveEnhancedKeyUsageIdentifier'; -function CryptMsgGetAndVerifySigner; external CRYPT32 name 'CryptMsgGetAndVerifySigner'; -function CryptMsgSignCTL; external CRYPT32 name 'CryptMsgSignCTL'; -function CryptMsgEncodeAndSignCTL; external CRYPT32 name 'CryptMsgEncodeAndSignCTL'; -function CertVerifyCTLUsage; external CRYPT32 name 'CertVerifyCTLUsage'; -function CertVerifyRevocation; external CRYPT32 name 'CertVerifyRevocation'; -function CertCompareIntegerBlob; external CRYPT32 name 'CertCompareIntegerBlob'; -function CertCompareCertificate; external CRYPT32 name 'CertCompareCertificate'; -function CertCompareCertificateName; external CRYPT32 name 'CertCompareCertificateName'; -function CertIsRDNAttrsInCertificateName; external CRYPT32 name 'CertIsRDNAttrsInCertificateName'; -function CertComparePublicKeyInfo; external CRYPT32 name 'CertComparePublicKeyInfo'; -function CertGetPublicKeyLength; external CRYPT32 name 'CertGetPublicKeyLength'; -function CryptVerifyCertificateSignature; external CRYPT32 name 'CryptVerifyCertificateSignature'; -function CryptHashToBeSigned; external CRYPT32 name 'CryptHashToBeSigned'; -function CryptHashCertificate; external CRYPT32 name 'CryptHashCertificate'; -function CryptSignCertificate; external CRYPT32 name 'CryptSignCertificate'; -function CryptSignAndEncodeCertificate; external CRYPT32 name 'CryptSignAndEncodeCertificate'; -function CertVerifyTimeValidity; external CRYPT32 name 'CertVerifyTimeValidity'; -function CertVerifyCRLTimeValidity; external CRYPT32 name 'CertVerifyCRLTimeValidity'; -function CertVerifyValidityNesting; external CRYPT32 name 'CertVerifyValidityNesting'; -function CertVerifyCRLRevocation; external CRYPT32 name 'CertVerifyCRLRevocation'; -function CertAlgIdToOID; external CRYPT32 name 'CertAlgIdToOID'; -function CertOIDToAlgId; external CRYPT32 name 'CertOIDToAlgId'; -function CertFindExtension; external CRYPT32 name 'CertFindExtension'; -function CertFindAttribute; external CRYPT32 name 'CertFindAttribute'; -function CertFindRDNAttr; external CRYPT32 name 'CertFindRDNAttr'; -function CertGetIntendedKeyUsage; external CRYPT32 name 'CertGetIntendedKeyUsage'; -function CryptExportPublicKeyInfo; external CRYPT32 name 'CryptExportPublicKeyInfo'; -function CryptExportPublicKeyInfoEx; external CRYPT32 name 'CryptExportPublicKeyInfoEx'; -function CryptImportPublicKeyInfo; external CRYPT32 name 'CryptImportPublicKeyInfo'; -function CryptImportPublicKeyInfoEx; external CRYPT32 name 'CryptImportPublicKeyInfoEx'; -function CryptHashPublicKeyInfo; external CRYPT32 name 'CryptHashPublicKeyInfo'; -function CertRDNValueToStrA; external CRYPT32 name 'CertRDNValueToStrA'; -function CertRDNValueToStrW; external CRYPT32 name 'CertRDNValueToStrW'; -{$IFDEF UNICODE} -function CertRDNValueToStr; external CRYPT32 name 'CertRDNValueToStrW'; -{$ELSE} -function CertRDNValueToStr; external CRYPT32 name 'CertRDNValueToStrA'; -{$ENDIF} // !UNICODE -function CertNameToStrA; external CRYPT32 name 'CertNameToStrA'; -function CertNameToStrW; external CRYPT32 name 'CertNameToStrW'; -{$IFDEF UNICODE} -function CertNameToStr; external CRYPT32 name 'CertNameToStrW'; -{$ELSE} -function CertNameToStr; external CRYPT32 name 'CertNameToStrA'; -{$ENDIF} // !UNICODE -function CertStrToNameW; external CRYPT32 name 'CertStrToNameW'; -function CertStrToNameA; external CRYPT32 name 'CertStrToNameA'; -{$IFDEF UNICODE} -function CertStrToName; external CRYPT32 name 'CertStrToNameW'; -{$ELSE} -function CertStrToName; external CRYPT32 name 'CertStrToNameA'; -{$ENDIF} // !UNICODE -function CryptSignMessage; external CRYPT32 name 'CryptSignMessage'; -//function CryptSignMessageWithKey; external CRYPT32 name 'CryptSignMessageWithKey'; -function CryptVerifyMessageSignature; external CRYPT32 name 'CryptVerifyMessageSignature'; -//function CryptVerifyMessageSignatureWithKey; external CRYPT32 name 'CryptVerifyMessageSignatureWithKey'; -function CryptGetMessageSignerCount; external CRYPT32 name 'CryptGetMessageSignerCount'; -function CryptGetMessageCertificates; external CRYPT32 name 'CryptGetMessageCertificates'; -function CryptVerifyDetachedMessageSignature; external CRYPT32 name 'CryptVerifyDetachedMessageSignature'; -function CryptEncryptMessage; external CRYPT32 name 'CryptEncryptMessage'; -function CryptDecryptMessage; external CRYPT32 name 'CryptDecryptMessage'; -function CryptSignAndEncryptMessage; external CRYPT32 name 'CryptSignAndEncryptMessage'; -function CryptDecryptAndVerifyMessageSignature; external CRYPT32 name 'CryptDecryptAndVerifyMessageSignature'; -function CryptDecodeMessage; external CRYPT32 name 'CryptDecodeMessage'; -function CryptHashMessage; external CRYPT32 name 'CryptHashMessage'; -function CryptVerifyMessageHash; external CRYPT32 name 'CryptVerifyMessageHash'; -function CryptVerifyDetachedMessageHash; external CRYPT32 name 'CryptVerifyDetachedMessageHash'; -function CryptSignMessageWithKey; external CRYPT32 name 'CryptSignMessageWithKey'; -function CryptVerifyMessageSignatureWithKey; external CRYPT32 name 'CryptVerifyMessageSignatureWithKey'; -function CertOpenSystemStoreA; external CRYPT32 name 'CertOpenSystemStoreA'; -function CertOpenSystemStoreW; external CRYPT32 name 'CertOpenSystemStoreW'; -{$IFDEF UNICODE} -function CertOpenSystemStore; external CRYPT32 name 'CertOpenSystemStoreW'; -{$ELSE} -function CertOpenSystemStore; external CRYPT32 name 'CertOpenSystemStoreA'; -{$ENDIF} // !UNICODE -function CertAddEncodedCertificateToSystemStoreA; external CRYPT32 name 'CertAddEncodedCertificateToSystemStoreA'; -function CertAddEncodedCertificateToSystemStoreW; external CRYPT32 name 'CertAddEncodedCertificateToSystemStoreW'; -{$IFDEF UNICODE} -function CertAddEncodedCertificateToSystemStore; external CRYPT32 name 'CertAddEncodedCertificateToSystemStoreW'; -{$ELSE} -function CertAddEncodedCertificateToSystemStore; external CRYPT32 name 'CertAddEncodedCertificateToSystemStoreA'; -{$ENDIF} // !UNICODE -function FindCertsByIssuer; external SOFTPUB name 'FindCertsByIssuer'; -end. diff --git a/windows/src/ext/embeddedwb/Source/wbhFixes.pas b/windows/src/ext/embeddedwb/Source/wbhFixes.pas deleted file mode 100644 index daff940a3d..0000000000 --- a/windows/src/ext/embeddedwb/Source/wbhFixes.pas +++ /dev/null @@ -1,52 +0,0 @@ -unit wbhFixes; - -interface - -uses - Windows, ActiveX; - -type -{$EXTERNALSYM IServiceProvider} - IServiceProvider = interface(IUnknown) - ['{6d5140c1-7436-11ce-8034-00aa006009fa}'] - function QueryService(const rsid, IID: TGuid; out Obj): HResult; stdcall; - end; - - PServiceProvider = ^IServiceProvider; -{$EXTERNALSYM PServiceProvider} - -type - IDispatch = interface(IUnknown) - ['{00020400-0000-0000-C000-000000000046}'] - function GetTypeInfoCount(out Count: Integer): HResult; stdcall; - function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; - stdcall; - function GetIDsOfNames(const IID: TGUID; Names: Pointer; - NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; stdcall; - function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer; - Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; - stdcall; - end; - - IDispatchEx = interface(IDispatch) - ['{A6EF9860-C720-11D0-9337-00A0C90DCAA9}'] - function GetDispID(const bstrName: TBSTR; const grfdex: DWORD; - out id: TDispID): HResult; stdcall; - function InvokeEx(const id: TDispID; const lcid: LCID; const wflags: - WORD; const pdp: PDispParams; out varRes: OleVariant; out pei: - TExcepInfo; const pspCaller: PServiceProvider): HResult; stdcall; - function DeleteMemberByName(const bstr: TBSTR; - const grfdex: DWORD): HResult; stdcall; - function DeleteMemberByDispID(const id: TDispID): HResult; stdcall; - function GetMemberProperties(const id: TDispID; const grfdexFetch: - DWORD; out grfdex: DWORD): HResult; stdcall; - function GetMemberName(const id: TDispID; out bstrName: TBSTR): - HResult; stdcall; - function GetNextDispID(const grfdex: DWORD; const id: TDispID; - out nid: TDispID): HResult; stdcall; - function GetNameSpaceParent(out unk: IUnknown): HResult; stdcall; - end; - -implementation - -end. diff --git a/windows/src/ext/embeddedwb/Tools/MimeFilter.pas b/windows/src/ext/embeddedwb/Tools/MimeFilter.pas deleted file mode 100644 index 490cb47f12..0000000000 --- a/windows/src/ext/embeddedwb/Tools/MimeFilter.pas +++ /dev/null @@ -1,426 +0,0 @@ -{*****************************************************************} -{ } -{ Borland Delphi Runtime Library } -{ MimeFilter interface unit } -{ } -{ By Per Lindso Larsen and Eran Bodankin - bsalsa } -{ Converted 6 May 2007 bsalsa@bsalsa.com } -{ Last modified 27 Jan 2009 bsalsa@bsalsa.com } -{ Version 2 } -{ } -{ Documentation and updated versions: } -{ } -{ http://www.bsalsa.com } -{*****************************************************************} -{LICENSE: -THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, -EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED -WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. -YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE -AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE -AND DOCUMENTATION. [YOUR NAME] DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE -OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED -OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, -INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR -OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, -AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. VSOFT SPECIFICALLY -DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. - -You may use/ change/ modify the component under 4 conditions: -1. In your web site, add a link to "http://www.bsalsa.com" -2. In your application, add credits to "Embedded Web Browser" -3. Mail me (bsalsa@bsalsa.com) any code change in the unit for the benefit - of the other users. -4. Please, consider donation in our web site! -{*******************************************************************************} - -unit MimeFilter; -{For more info about MimeFilter: - http://www.bsalsa.com/mime_filter.html - http://msdn2.microsoft.com/en-us/library/aa767743.aspx - http://msdn2.microsoft.com/en-us/library/Aa767916.aspx - } - -{$DEFINE USE_DebugString} -{ $DEFINE USE_TimeOut} - -interface - -uses - Classes, ActiveX, ComObj, Windows, UrlMon, Forms; - -const -{$IFDEF USE_TimeOut} - TimeOut = 5000; -{$ENDIF} - Class_StrMimeFilter: TGUID = '{0EB00690-8FA1-11D3-96C7-829E3EA50C29}'; -// Create your own GUID (in Delphi IDE use Ctrl-Shift-G) - -type - TStrMimeFilter = class(TComObject, - IInternetProtocol, //http://msdn2.microsoft.com/en-us/library/aa767883.aspx - IInternetProtocolRoot, //http://msdn2.microsoft.com/en-us/library/aa767859.aspx - IInternetProtocolSink) //http://msdn2.microsoft.com/en-us/library/aa767768.aspx - private - CacheFileName: string; - Url: PWideChar; - DataStream: IStream; - UrlMonProtocol: IInternetProtocol; - UrlMonProtocolSink: IInternetProtocolSink; - Written, TotalSize: Integer; -{$IFDEF USE_TimeOut} - StartedTime: DWORD; -{$ENDIF} - protected - { IInternetProtocolSink Methods } - function Switch(const ProtocolData: TProtocolData): HResult; stdcall; - function ReportProgress(ulStatusCode: ULONG; szStatusText: LPCWSTR): HResult; stdcall; - function ReportData(grfBSCF: DWORD; ulProgress, ulProgressMax: ULONG): HResult; stdcall; - function ReportResult(hrResult: HResult; dwError: DWORD; szResult: LPCWSTR): HResult; stdcall; - { IInternetProtocolRoot Interface} - function Start(szUrl: PWideChar; OIProtSink: IInternetProtocolSink; - OIBindInfo: IInternetBindInfo; grfPI, dwReserved: DWORD): HResult; stdcall; - function Continue(const ProtocolData: TProtocolData): HResult; stdcall; - function Abort(hrReason: HResult; dwOptions: DWORD): HResult; stdcall; - function Terminate(dwOptions: DWORD): HResult; stdcall; - function Suspend: HResult; stdcall; - function Resume: HResult; stdcall; - { IInternetProtocol Methods} - function Read(pv: Pointer; cb: ULONG; out cbRead: ULONG): HResult; stdcall; - function Seek(dlibMove: LARGE_INTEGER; dwOrigin: DWORD; - out libNewPosition: ULARGE_INTEGER): HResult; stdcall; - function LockRequest(dwOptions: DWORD): HResult; stdcall; - function UnlockRequest: HResult; stdcall; - end; - -var - StrIn: string; - StrOut: string; - OutUrl: PWideChar; - -implementation - -uses - AxCtrls, WinInet, SysUtils, ComServ; - - { IInternetProtocol Methods} - -function TStrMimeFilter.Read(pv: Pointer; cb: ULONG; out cbRead: ULONG): HResult; -var - hr: HResult; -begin -(* All data is avaiable, so we just keep reading while Written S_OK then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(hr, 0); //An error was found so we should stop the com server. - end; - Inc(Written, cbRead); - if (Written = TotalSize) then - Result := S_FALSE - else - begin - Result := S_OK; - Abort(hr, 0); - end; -end; - -function TStrMimeFilter.Seek(dlibMove: LARGE_INTEGER; dwOrigin: DWORD; - out libNewPosition: ULARGE_INTEGER): HResult; -begin - Result := UrlMonProtocol.Seek(dlibMove, dwOrigin, libNewPosition); - if Result <> S_OK then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(Result, 0); - end; -end; - -function TStrMimeFilter.LockRequest(dwOptions: DWORD): HResult; -begin - Result := UrlMonProtocol.LockRequest(dwOptions); - if Result <> S_OK then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(Result, 0); - end; -end; - -function TStrMimeFilter.UnlockRequest: HResult; -begin - Result := UrlMonProtocol.UnlockRequest; - if Result <> S_OK then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(Result, 0); - end; -end; - - { IInternetProtocolSink Methods } - -function TStrMimeFilter.ReportData(grfBSCF: DWORD; ulProgress, - ulProgressMax: ULONG): HResult; -var - TS: TStringStream; - Dummy: Int64; - hr: HResult; - ReadTotal: ULONG; - S: string; - Fname: array[0..512] of Char; - p: array[0..1000] of Char; -{$IFDEF USE_TimeOut} - CurrentTime: DWORD; - DiffTime: DWORD; -{$ENDIF} -begin - (* This method is must likely called long before the file is downloaded, so - ulProgressMax will be zero and ulProgress not tell anything reliable about - the amount of data available. Instead you can use the outcoming Result of - call to UrlMonProtocol.Read: - - S_OK : The read was successful, but there is still additional data available. - S_FALSE : All the data has been completely downloaded. - - so we just repeat reading until we receive S_FALSE or an error: - INET_E_DATA_NOT_AVAILABLE or INET_E_DOWNLOAD_FAILURE. *) - - Ts := TStringStream.Create(''); - repeat - hr := UrlMonProtocol.Read(@P, SizeOf(p), ReadTotal); - Ts.Write(P, ReadTotal); - Application.ProcessMessages; -{$IFDEF USE_TimeOut} - CurrentTime := GetTickCount; //I created a TimeOut but it's stupid - DiffTime := CurrentTime - StartedTime; - if (DiffTime >= TimeOut) then - hr := S_FALSE; -{$ENDIF} - Application.Processmessages; - until (hr = S_FALSE) or (hr = INET_E_DOWNLOAD_FAILURE) or - (hr = INET_E_DATA_NOT_AVAILABLE); - - if hr = S_FALSE then - begin -(* Some pages like www.msn.com are not Written to cache, so we make a temporary -entry and call ReportProgress with CACHEFILENAMEAVAILABLE. *) - if CacheFilename = '' then - begin - if not CreateUrlCacheEntry(@url, ts.Size, Pchar('htm'), FName, 0) then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - end; - TMemoryStream(ts).SaveToFile(Fname); - StringToWideChar(StrPas(FName), @FName, SizeOf(FName)); - if Failed(ReportProgress(BINDSTATUS_CACHEFILENAMEAVAILABLE, @FName)) then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(E_FAIL, 0); - end; - end; -///************************************ -///* FILTER DATA HERE: - S := StringReplace(Ts.DataString, StrIn, StrOut, [rfReplaceAll, rfIgnoreCase]); - ts.Size := 0; - ts.WriteString(S); -///************************************ - -////***** Debug only ****************** - // ts.Seek(0, 0); - // form1.Memo1.Lines.LoadFromStream(TS); -///************************************ - - TotalSize := Ts.Size; - ts.Seek(0, 0); - if Failed(CreateStreamOnHGlobal(0, True, DataStream)) then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(E_FAIL, 0); - end; - - TOleStream.Create(DataStream).CopyFrom(ts, ts.Size); - ts.Free; - DataStream.Seek(0, STREAM_SEEK_SET, Dummy); -(* Inform Transaction handler that all data is ready for the browser: *) - if Failed(UrlMonProtocolSink.ReportData(BSCF_FIRSTDATANOTIFICATION or - BSCF_LASTDATANOTIFICATION or BSCF_DATAFULLYAVAILABLE, TotalSize, Totalsize)) then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(E_FAIL, 0); - end; - (* Here transaction handler call our Read Method -> *) - if Failed(UrlMonProtocolSink.ReportResult(S_OK, S_OK, nil)) then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(E_FAIL, 0); - end; -(* Report Result OK after sending all data to browser *) - end - else - begin - Abort(hr, 0); //On Error: INET_E_DOWNLOAD_FAILURE or INET_E_DATA_NOT_AVAILABLE - end; - Result := S_OK; -end; - -function TStrMimeFilter.ReportResult(hrResult: HResult; dwError: DWORD; - szResult: LPCWSTR): HResult; -begin - Result := UrlMonProtocolSink.ReportResult(hrResult, dwError, szResult); - if Result <> S_OK then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - end; -end; - -function TStrMimeFilter.ReportProgress(ulStatusCode: ULONG; - szStatusText: LPCWSTR): HResult; -begin - if ulStatusCode = BINDSTATUS_CACHEFILENAMEAVAILABLE then - CacheFileName := SzStatusText; -(* szStatusText contains the name of the cache-file where the downloaded -data will be stored. *) - Result := UrlMonProtocolSink.ReportProgress(ulStatusCode, szStatusText); - if Result <> S_OK then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(Result, 0); - end; -(* We pass all information on. *) -(* The transaction handler now call our ReportData -> *) -end; - -function TStrMimeFilter.Switch(const ProtocolData: TProtocolData): HResult; -begin - Result := UrlMonProtocolSink.Switch(ProtocolData); - if Result <> S_OK then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(Result, 0); - end; -end; - -{ IInternetProtocolRoot Interface} - -function TStrMimeFilter.Abort(hrReason: HResult; dwOptions: DWORD): HResult; -begin - Result := UrlMonProtocol.Abort(hrReason, dwOptions); -{$WARNINGS OFF} - if (Result = E_PENDING) then - Exit; -{$WARNINGS ON} - if (Result <> S_OK) then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - end; -end; - -function TStrMimeFilter.Continue(const ProtocolData: TProtocolData): HResult; -begin - Result := UrlMonProtocol.Continue(ProtocolData); -{$WARNINGS OFF} - if (Result = E_PENDING) then - Exit; -{$WARNINGS ON} - if (Result <> S_OK) then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(Result, 0); - end; -end; - -function TStrMimeFilter.Resume: HResult; -begin - Result := E_NOTIMPL; //Not Implemented by MS -end; - -function TStrMimeFilter.Start(szUrl: PWideChar; OIProtSink: IInternetProtocolSink; - OIBindInfo: IInternetBindInfo; grfPI, dwReserved: DWORD): HResult; -var - Fetched: Cardinal; -begin - CacheFileName := ''; - TotalSize := 0; - Written := 0; -{$IFDEF USE_TimeOut} - StartedTime := GetTickCount; -{$ENDIF} -(* Get an interface to transaction handlers IInternetProtocol and IInternetProtocolSink. - I prefer the easy delphi-way: *) - UrlMonProtocol := OIProtSink as IInternetProtocol; - UrlMonProtocolSink := OIProtSink as IInternetProtocolSink; -(* If the page is not Written to cache, our ReportProgress is not - called with CACHEFILENAMEAVAILABLE. We grab the url here so - we later can create a proper temporary cachefile. Since we are - in a mimefilter szURl don't have the url, so we use GetBindString. *) - - Result := OIBindinfo.GetBindString(BINDSTRING_URL, @Url, 1, Fetched); - OutUrl := Url; - if Result <> S_OK then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - end; - Result := S_OK; -(* The transaction handler now call our ReportProgress -> *) -end; - -function TStrMimeFilter.Suspend: HResult; -begin - Result := E_NOTIMPL; //Not Implemented by MS -end; - -function TStrMimeFilter.Terminate(dwOptions: DWORD): HResult; -begin - if DataStream <> nil then - DataStream._Release; - if UrlMonProtocolSink <> nil then - UrlMonProtocolSink._Release; - Result := UrlmonProtocol.Terminate(dwOptions); - if (Result <> S_OK) then - begin -{$IFDEF USE_DebugString} - OutputDebugString(PChar(SysErrorMessage(GetLastError))); -{$ENDIF} - Abort(Result, 0); - end; - ComServer.UIInteractive := False; // If you still have Active Com objects then We will hide the UI -end; - -initialization - TComObjectFactory.Create(ComServer, TStrMimeFilter, Class_StrMimeFilter, - 'StrMimeFilter', 'StrMimeFilter', ciMultiInstance, tmApartment); - -finalization - -end. - diff --git a/windows/src/ext/embeddedwb/Tools/XPThemedBand.zip b/windows/src/ext/embeddedwb/Tools/XPThemedBand.zip deleted file mode 100644 index a8fe3f56a59d2efd3b72c8e7ef4e79c5162bae00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 197496 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

Fuq@H{7tA-QTYp>@SfPupF#mEG37%{XiI5K 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 diff --git a/windows/src/ext/embeddedwb/Tools/delphiband102.zip b/windows/src/ext/embeddedwb/Tools/delphiband102.zip deleted file mode 100644 index c43dd78e06820c76c9fed8c20ca9cce0c026d285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14498 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 diff --git a/windows/src/ext/embeddedwb/Tools/iehelper.zip b/windows/src/ext/embeddedwb/Tools/iehelper.zip deleted file mode 100644 index ea074c65e7e545ab33a9f50471c109baaeb63488..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4733 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 diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas index a1090f1d9d..b46fd49fdd 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas @@ -25,7 +25,8 @@ uses uCEFWindowParent, Keyman.System.CEFManager, - UserMessages; + UserMessages, + utilexecute; const CEF_DESTROY = WM_USER + 300; @@ -116,6 +117,7 @@ type FShutdownCompletionHandler: TShutdownCompletionHandlerEvent; FIsClosing: Boolean; FShouldShowContextMenu: Boolean; + FShouldOpenRemoteUrlsInBrowser: Boolean; FCallbackWnd: THandle; FOnPreKeySyncEvent: TCEFHostPreKeySyncEvent; @@ -153,6 +155,7 @@ type procedure Navigate(const url: string); overload; function HasFocus: Boolean; property ShouldShowContextMenu: Boolean read FShouldShowContextMenu write FShouldShowContextMenu; + property ShouldOpenRemoteUrlsInBrowser: Boolean read FShouldOpenRemoteUrlsInBrowser write FShouldOpenRemoteUrlsInBrowser; property OnAfterCreated: TNotifyEvent read FOnAfterCreated write FOnAfterCreated; property OnBeforeBrowseSync: TCEFHostBeforeBrowseSyncEvent read FOnBeforeBrowseSync write FOnBeforeBrowseSync; property OnBeforeBrowse: TCEFHostBeforeBrowseEvent read FOnBeforeBrowse write FOnBeforeBrowse; @@ -173,11 +176,8 @@ uses System.StrUtils, Winapi.ShellApi, -// Keyman.Developer.System.HelpTopics, -// typinfo, ErrorControlledRegistry, ExternalExceptionHandler, -// UfrmMain, utilhttp, uCEFApplication, VersionInfo; @@ -355,6 +355,11 @@ begin end; end; +function IsLocalURL(URL: WideString): Boolean; +begin + Result := (Copy(URL, 1, 5) = 'file:') or (Copy(URL, 1, 1) = '/'); +end; + procedure TframeCEFHost.Handle_CEF_BEFOREBROWSE(var message: TMessage); var params: TStringList; @@ -374,6 +379,11 @@ begin begin if Assigned(FOnBeforeBrowse) then FOnBeforeBrowse(Self, url, params, Boolean(message.WParam)); + + if FShouldOpenRemoteUrlsInBrowser and (params.Count = 0) and not IsLocalURL(URL) then + {$MESSAGE HINT 'Refactor how remote URLs are handled'} + // TODO: refactor links + TUtilExecute.URL(url); end else if shouldOpenUrlIfNotHandled then cef.LoadURL(url); @@ -429,6 +439,9 @@ begin if not Handled then Handled := GetParamsFromURL(Url, params); + if not Handled and FShouldOpenRemoteUrlsInBrowser and not IsLocalURL(URL) then + Handled := True; + if not Assigned(params) then params := TStringList.Create; @@ -502,6 +515,7 @@ begin if p.event.windows_key_code = VK_F1 then begin + {$MESSAGE HINT 'TODO: Add F1 support back in again'} // if Assigned(OnHelpTopic) then OnHelpTopic(Self); // TODO: frmKeymanDeveloper.HelpTopic(Self) end else if p.event.windows_key_code = VK_F12 then diff --git a/windows/src/global/delphi/comp/KeymanEmbeddedWB.pas b/windows/src/global/delphi/comp/KeymanEmbeddedWB.pas deleted file mode 100644 index 045702c829..0000000000 --- a/windows/src/global/delphi/comp/KeymanEmbeddedWB.pas +++ /dev/null @@ -1,81 +0,0 @@ -(* - Name: KeymanEmbeddedWB - Copyright: Copyright (C) 2003-2017 SIL International. - Documentation: - Description: - Create Date: 18 Feb 2011 - - Modified Date: 8 Jul 2011 - Authors: mcdurdin - Related Files: - Dependencies: - - Bugs: - Todo: - Notes: - History: 18 Feb 2011 - mcdurdin - I2721 - Override Javascript-disabled security for web controls - 18 Mar 2011 - mcdurdin - I2784 - Integrated browser has leak of IInternetSecurityManager - 08 Jul 2011 - mcdurdin - I2984 - Disable floating point exceptions to avoid throwing fp errors from mshtml.dll -*) -unit KeymanEmbeddedWB; // I2721 - -interface - -uses - Classes, - EmbeddedWB, - SecurityManager, - URLMon; - -type - TKeymanEmbeddedWB = class(TEmbeddedWB) - private - FSecurityManager: TSecurityManager; // I2784 - protected - function DoQueryService(const rsid, iid: TGUID; var Obj): Boolean; override; - public - constructor Create(AOwner: TComponent); override; - destructor Destroy; override; // I2784 - end; - -procedure Register; - -implementation - -uses - SysUtils; - -procedure Register; -begin - RegisterComponents('Keyman', [TKeymanEmbeddedWB]); -end; - -{ TKeymanEmbeddedWB } - -constructor TKeymanEmbeddedWB.Create(AOwner: TComponent); -begin - FSecurityManager := TSecurityManager.Create(nil); - inherited Create(AOwner); - DisableErrors.fpExceptions := False; // I2984 -end; - -destructor TKeymanEmbeddedWB.Destroy; -begin - FreeAndNil(FSecurityManager); // I2784 - inherited Destroy; -end; - -function TKeymanEmbeddedWB.DoQueryService(const rsid, iid: TGUID; - var Obj): Boolean; -begin - if Assigned(FSecurityManager) and IsEqualGuid(rsid, IID_IInternetSecurityManager) then // I2784 - begin - Result := FSecurityManager.QueryInterface(iid, Obj) = S_OK; - end - else - Result := inherited DoQueryService(rsid, iid, Obj); -end; - -initialization - RegisterClasses([TEmbeddedWB]); -end. diff --git a/windows/src/global/delphi/general/WebSoundControl.pas b/windows/src/global/delphi/general/WebSoundControl.pas deleted file mode 100644 index 3ddda2e0aa..0000000000 --- a/windows/src/global/delphi/general/WebSoundControl.pas +++ /dev/null @@ -1,54 +0,0 @@ -(* - Name: WebSoundControl - Copyright: Copyright (C) SIL International. - Documentation: - Description: - Create Date: 29 Mar 2010 - - Modified Date: 29 Mar 2010 - Authors: mcdurdin - Related Files: - Dependencies: - - Bugs: - Todo: - Notes: - History: 29 Mar 2010 - mcdurdin - I2268 - Disable click sound in web browser -*) -unit WebSoundControl; - -interface - -implementation - -uses Windows; - -procedure DisableInternetSounds; -type - TCoInternetSetFeatureEnabled = function(FeatureEntry: DWORD; Flags: DWORD; fEnable: BOOL): HRESULT; stdcall; -const - FEATURE_DISABLE_NAVIGATION_SOUNDS = 21; - SET_FEATURE_ON_THREAD = $00000001; - SET_FEATURE_ON_PROCESS = $00000002; - SET_FEATURE_IN_REGISTRY = $00000004; - SET_FEATURE_ON_THREAD_LOCALMACHINE = $00000008; - SET_FEATURE_ON_THREAD_INTRANET = $00000010; - SET_FEATURE_ON_THREAD_TRUSTED = $00000020; - SET_FEATURE_ON_THREAD_INTERNET = $00000040; - SET_FEATURE_ON_THREAD_RESTRICTED = $00000080; -var - FCoInternetSetFeatureEnabled: TCoInternetSetFeatureEnabled; - FUrlMon: THandle; -begin - FUrlMon := LoadLibrary('urlmon.dll'); - if FUrlMon <> 0 then - begin - FCoInternetSetFeatureEnabled := GetProcAddress(FUrlMon, 'CoInternetSetFeatureEnabled'); - if Assigned(FCoInternetSetFeatureEnabled) then - FCoInternetSetFeatureEnabled(FEATURE_DISABLE_NAVIGATION_SOUNDS, SET_FEATURE_ON_PROCESS, TRUE); - end; -end; - -initialization - DisableInternetSounds; -end. diff --git a/windows/src/global/delphi/hints/UfrmHint.dfm b/windows/src/global/delphi/hints/UfrmHint.dfm index f6358c1f8a..6768057ca3 100644 --- a/windows/src/global/delphi/hints/UfrmHint.dfm +++ b/windows/src/global/delphi/hints/UfrmHint.dfm @@ -8,16 +8,4 @@ inherited frmHint: TfrmHint ExplicitHeight = 379 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 645 - Height = 350 - ExplicitWidth = 643 - ExplicitHeight = 348 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/global/delphi/hints/UfrmHint.pas b/windows/src/global/delphi/hints/UfrmHint.pas index 64da2bee13..7b8a41602c 100644 --- a/windows/src/global/delphi/hints/UfrmHint.pas +++ b/windows/src/global/delphi/hints/UfrmHint.pas @@ -24,8 +24,7 @@ interface uses System.Contnrs, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, UfrmWebContainer, OleCtrls, SHDocVw, EmbeddedWB, HintConsts, - SHDocVw_EWB, EwbCore, KeymanEmbeddedWB, UserMessages; + Dialogs, UfrmWebContainer, HintConsts, UserMessages; type TfrmHint = class(TfrmWebContainer) diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.dfm b/windows/src/global/delphi/ui/UfrmWebContainer.dfm index 01f201d0f1..57ccfb0c83 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.dfm +++ b/windows/src/global/delphi/ui/UfrmWebContainer.dfm @@ -2,7 +2,6 @@ inherited frmWebContainer: TfrmWebContainer Left = 0 Top = 0 HelpContext = 0 - ActiveControl = web ClientHeight = 286 ClientWidth = 426 Font.Name = 'Tahoma' @@ -11,31 +10,4 @@ inherited frmWebContainer: TfrmWebContainer ExplicitHeight = 325 PixelsPerInch = 96 TextHeight = 13 - object web: TKeymanEmbeddedWB - Left = 296 - Top = 16 - Width = 122 - Height = 70 - TabOrder = 0 - OnBeforeNavigate2 = webBeforeNavigate2 - OnDocumentComplete = webDocumentComplete - OnNewWindow3 = webNewWindow3 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [DisableTextSelect, DontUse3DBorders, EnableThemes] - OnShowHelpRequest = webShowHelpRequest1 - OnShowContextMenu = webShowContextMenu2 - OnScriptError = webScriptError2 - About = ' EmbeddedWB http://bsalsa.com/' - DisableErrors.fpExceptions = False - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Orientation = poPortrait - OnKeyDown = webKeyDown - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index 31312665b4..87b97565e4 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -48,42 +48,19 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, UfrmKeymanBase, OleCtrls, SHDocVw, EmbeddedWB, - XMLRenderer, keymanapi_TLB, UserMessages, IeConst, SHDocVw_EWB, EwbCore, - KeymanEmbeddedWB, TempFileManager, Keyman.UI.UframeCEFHost; + Dialogs, UfrmKeymanBase, + XMLRenderer, keymanapi_TLB, UserMessages, TempFileManager, Keyman.UI.UframeCEFHost; type TfrmWebContainer = class(TfrmKeymanBase) - web: TKeymanEmbeddedWB; // I2721 - procedure webBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; - var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; - var Cancel: WordBool); - procedure webDocumentComplete(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant); procedure TntFormCreate(Sender: TObject); procedure TntFormDestroy(Sender: TObject); - procedure webNewWindow3(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, - bstrUrl: WideString); - procedure webScriptError2(Sender: TObject; ErrorLine, ErrorCharacter, - ErrorCode, ErrorMessage, ErrorUrl: string; - var ScriptErrorAction: TScriptErrorAction); - procedure webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState); - procedure webShowContextMenu2(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; - const Context: IDispatch; var Result: HRESULT); - function webShowHelpRequest1(Sender: TObject; HWND: NativeUInt; - pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT; private - cef: TframeCEFHost; FDialogName: WideString; FXMLRenderers: TXMLRenderers; FXMLFileName: TTempFile; FNoMoreErrors: Boolean; // I4181 procedure WMUser_FormShown(var Message: TMessage); message WM_USER_FormShown; -// procedure WMUser_FireCommand(var Message: TMessage); message WM_USER_FireCommand; procedure WMUser_ContentRender(var Message: TMessage); message WM_USER_ContentRender; function GetIEVersionString: WideString; procedure DownloadUILanguages; @@ -95,6 +72,7 @@ type out Handled: Boolean); // I4989 protected + cef: TframeCEFHost; procedure DoResizeByContent; procedure FireCommand(const command: WideString; params: TStringList); virtual; @@ -130,20 +108,17 @@ implementation uses custinterfaces, - MSHTML_TLB, ErrorControlledRegistry, ExternalExceptionHandler, kmint, UILanguages, UfrmScriptError, Upload_Settings, - URLMon, utilexecute, utilsystem, utilhttp, utilxml, - VersionInfo, - WebSoundControl; + VersionInfo; {$R *.dfm} @@ -214,7 +189,8 @@ end; procedure TfrmWebContainer.SetFocus; // I2720 begin - web.SetFocusToDoc; +// if Assigned(cef) then +// cef.SetFocus; end; function TfrmWebContainer.ShouldProcessAllCommands: Boolean; @@ -240,6 +216,7 @@ begin cef := TframeCEFHost.Create(Self); cef.Parent := Self; cef.Visible := True; + cef.ShouldOpenRemoteUrlsInBrowser := True; cef.OnBeforeBrowse := cefBeforeBrowse; cef.OnBeforeBrowseSync := cefBeforeBrowseSync; cef.OnLoadEnd := cefLoadEnd; @@ -261,17 +238,14 @@ begin end else begin - command := params[0]; - params.Delete(0); - FireCommand(command, params); + if params.Count > 0 then + begin + command := params[0]; + params.Delete(0); + FireCommand(command, params); + params.Insert(0, command); {$MESSAGE HINT 'TODO: Refactor the ShouldProcessAllCommands code path'} // TODO: refactor + end; end; -// -// then v := GetParamsFromURLEx(URL, aparams) -// else v := GetParamsFromURL(URL, aparams); -// if v then -// begin -// PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)); -// end; end; procedure TfrmWebContainer.cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); @@ -318,25 +292,6 @@ begin Do_Content_Render(True); end; -procedure TfrmWebContainer.webBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -var - params: TStringList; - v: Boolean; -begin - if ShouldProcessAllCommands - then v := GetParamsFromURLEx(URL, params) - else v := GetParamsFromURL(URL, params); - if v then - begin - PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)); - Cancel := True; - end - else - Screen.Cursor := crHourglass; -end; - procedure TfrmWebContainer.cefLoadEnd(Sender: TObject); begin AssertVclThread; @@ -346,39 +301,8 @@ begin if ShouldSetAppTitle then Application.Title := Self.Caption; // I2786 end; -procedure TfrmWebContainer.webDocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); -var - doc2: IHTMLDocument2; - doc3: IHTMLDocument3; - elem: IHTMLElement; -begin - try - //if (pDisp as IWebBrowser2).TopLevelContainer then - //begin - DoResizeByContent; - - Screen.Cursor := crDefault; - - doc2 := (web.Document as IHTMLDocument2); - if ShouldSetCaption then Self.Caption := doc2.title; - if ShouldSetAppTitle then Application.Title := Self.Caption; // I2786 - - doc3 := (web.Document as IHTMLDocument3); - - elem := doc3.documentElement; - if Assigned(elem) then // MS KB 317024 - elem.insertAdjacentHTML('afterBegin', ' '); - // NOTE: The  , or some other visible HTML, is required. Internet Explorer will not - // parse and recognize the script block without some visual HTML to - // accompany it. - //end; - except - Exit; - end; -end; - -procedure TfrmWebContainer.webKeyDown(Sender: TObject; var Key: Word; +{$MESSAGE HINT 'TODO: Support VK_F5 key event'} +{procedure TfrmWebContainer.webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; Shift: TShiftState); begin if (Key = VK_F5) and (ssCtrl in Shift) then @@ -386,15 +310,12 @@ begin Key := 0; PostMessage(Handle, WM_USER_ContentRender, 0, 0); end; -end; +end;} procedure TfrmWebContainer.DoResizeByContent; -var - doc3: IHTMLDocument3; - elem: IHTMLElement; begin try - if Assigned(web.Document) then +{ if Assigned(web.Document) then begin doc3 := (web.Document as IHTMLDocument3); @@ -410,6 +331,7 @@ begin (web.Document as IHTMLDocument2).parentWindow.scrollTo(0,0); end; end; + } except Exit; end; @@ -420,19 +342,6 @@ begin Result := (Copy(URL, 1, 5) = 'file:') or (Copy(URL, 1, 1) = '/'); end; -procedure TfrmWebContainer.webNewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); -var - params: TStringList; -begin - Cancel := True; - if GetParamsFromURL(bstrURL, params) - then PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)) - else if IsLocalURL(bstrURL) then web.Go(bstrUrl) - else TUtilExecute.URL(bstrUrl); // I3349 -end; - function TfrmWebContainer.GetIEVersionString: WideString; begin with TRegistryErrorControlled.Create do // I2890 @@ -446,7 +355,8 @@ begin end; end; -procedure TfrmWebContainer.webScriptError2(Sender: TObject; ErrorLine, +{$MESSAGE HINT 'TODO: Log script errors'} +{procedure TfrmWebContainer.webScriptError2(Sender: TObject; ErrorLine, ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; var ScriptErrorAction: TScriptErrorAction); var @@ -501,44 +411,34 @@ begin PostMessage(Handle, WM_CLOSE, 0, 0); // I1829, dead screen when uninstalling keyboard //Release; // Disabled in I1792 //PostMessage(Handle, -end; +end;} -procedure TfrmWebContainer.webShowContextMenu2(Sender: TCustomEmbeddedWB; +{$MESSAGE HINT 'TODO: Support context menu'} +{procedure TfrmWebContainer.webShowContextMenu2(Sender: TCustomEmbeddedWB; const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; const Context: IDispatch; var Result: HRESULT); begin Result := S_OK; -end; +end;} -function TfrmWebContainer.webShowHelpRequest1(Sender: TObject; HWND: NativeUInt; +{$MESSAGE HINT 'TODO: Support context help'} +{function TfrmWebContainer.webShowHelpRequest1(Sender: TObject; HWND: NativeUInt; pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; begin Application.HelpJump('context_'+lowercase(FDialogName)); Result := S_OK; -end; +end;} procedure TfrmWebContainer.WMUser_ContentRender(var Message: TMessage); begin Do_Content_Render(True); end; -{procedure TfrmWebContainer.WMUser_FireCommand(var Message: TMessage); -var - command: WideString; - params: TStringList; -begin - params := TStringList(Message.LParam); - command := params[0]; - params.Delete(0); - FireCommand(command, params); - params.Free; -end;} - procedure TfrmWebContainer.WMUser_FormShown(var Message: TMessage); begin - web.SetFocus; - web.SetFocusToDoc; + if Assigned(cef) then + cef.SetFocus; end; procedure TfrmWebContainer.WndProc(var Message: TMessage); // I2720 @@ -549,8 +449,8 @@ begin case Msg of WM_ACTIVATE, WM_SETFOCUS, WM_KILLFOCUS: begin - Windows.SetFocus(web.Handle); - web.SetFocusToDoc; + if Assigned(cef) then + cef.SetFocus; end; end; end; -- GitLab From 1fc5539eb2b83bf7d73bf081687385c2e38f8fcb Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 6 Apr 2019 18:33:55 +0700 Subject: [PATCH 04/39] [Windows] todo --- web/package-lock.json | 54 +++++++++---------- .../src/global/delphi/ui/UfrmWebContainer.pas | 1 + 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index d268683e86..7d1c95809f 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -80,7 +80,7 @@ "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", "dev": true }, "arr-union": { @@ -104,13 +104,13 @@ "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "integrity": "sha1-O7xCdd1YTMGxCAm4nU6LY6aednU=", "dev": true }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "integrity": "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs=", "dev": true }, "assign-symbols": { @@ -128,7 +128,7 @@ "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", + "integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=", "dev": true }, "atob": { @@ -578,7 +578,7 @@ "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", + "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=", "dev": true, "requires": { "color-name": "^1.1.1" @@ -644,7 +644,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", "dev": true }, "cookie": { @@ -716,7 +716,7 @@ "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "integrity": "sha1-38lARACtHI/gI+faHfHBR8S0RN8=", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -1816,7 +1816,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -2087,7 +2087,7 @@ "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=", "dev": true }, "is-builtin-module": { @@ -2275,7 +2275,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", "dev": true } } @@ -2300,7 +2300,7 @@ "karma-chrome-launcher": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", - "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", + "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=", "dev": true, "requires": { "fs-access": "^1.0.0", @@ -2310,7 +2310,7 @@ "karma-edge-launcher": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/karma-edge-launcher/-/karma-edge-launcher-0.4.2.tgz", - "integrity": "sha512-YAJZb1fmRcxNhMIWYsjLuxwODBjh2cSHgTW/jkVmdpGguJjLbs9ZgIK/tEJsMQcBLUkO+yO4LBbqYxqgGW2HIw==", + "integrity": "sha1-PZUpsJsTyQnF887uEtAOf5qYmz0=", "dev": true, "requires": { "edge-launcher": "1.2.2" @@ -2319,7 +2319,7 @@ "karma-firefox-launcher": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz", - "integrity": "sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA==", + "integrity": "sha1-LEcDBFLwRTHrfRPU/HZpYwu5Mzk=", "dev": true }, "karma-fixture": { @@ -2386,7 +2386,7 @@ "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -2432,7 +2432,7 @@ "karma-teamcity-reporter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/karma-teamcity-reporter/-/karma-teamcity-reporter-1.1.0.tgz", - "integrity": "sha512-Ca1uhHGtNqUuzsnW3I+QykNuS/jF9vdxnIrkbLCVJRunCc6yWJq+ai1UobQT13j0e3JVUOf0mKo3QHZ6A6mG9Q==", + "integrity": "sha1-eYD33JHmqwhH4SKt4Ls0x8b0KBY=", "dev": true }, "kind-of": { @@ -2484,7 +2484,7 @@ "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", "dev": true, "requires": { "chalk": "^2.0.1" @@ -2493,7 +2493,7 @@ "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -2632,7 +2632,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -2790,7 +2790,7 @@ "normalize-package-data": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", "dev": true, "requires": { "hosted-git-info": "^2.1.4", @@ -3099,7 +3099,7 @@ "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", + "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -3236,7 +3236,7 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", "dev": true }, "safe-regex": { @@ -3612,7 +3612,7 @@ "streamroller": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-0.7.0.tgz", - "integrity": "sha512-WREzfy0r0zUqp3lGO096wRuUp7ho1X6uo/7DJfTlEi0Iv/4gT7YHqXDjKC2ioVGBZtE8QzsQD9nx1nIuoZ57jQ==", + "integrity": "sha1-odG3z4PTmvsNYwSaWsv5NJO99ks=", "dev": true, "requires": { "date-format": "^1.2.0", @@ -3652,7 +3652,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -3695,7 +3695,7 @@ "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", "dev": true, "requires": { "os-tmpdir": "~1.0.2" @@ -3792,7 +3792,7 @@ "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=", "dev": true }, "underscore": { @@ -4025,7 +4025,7 @@ "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", "dev": true, "requires": { "isexe": "^2.0.0" @@ -4062,7 +4062,7 @@ "ws": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=", "dev": true, "requires": { "async-limiter": "~1.0.0", diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index 87b97565e4..14a226cb44 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -315,6 +315,7 @@ end;} procedure TfrmWebContainer.DoResizeByContent; begin try +{$MESSAGE HINT 'TODO: Support window resizing'} { if Assigned(web.Document) then begin doc3 := (web.Document as IHTMLDocument3); -- GitLab From 3bd586c9177ec1546cf2bb6914272003d356ed8a Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 7 Apr 2019 06:32:26 +0700 Subject: [PATCH 05/39] [Windows] Remove embeddedwb references in Keyman, kmshell, TIKE, start refactor in Keyman.exe --- windows/src/desktop/kmshell/kmshell.dpr | 2 - windows/src/desktop/kmshell/kmshell.dproj | 10 +- windows/src/desktop/kmshell/kmshell.res | Bin 7040 -> 7040 bytes .../desktop/kmshell/main/UfrmKeepInTouch.pas | 1 - .../kmshell/main/UfrmKeyboardOptions.pas | 1 - windows/src/desktop/kmshell/main/UfrmMain.pas | 4 +- windows/src/developer/TIKE/Tike.dpr | 2 - windows/src/developer/TIKE/Tike.dproj | 2 - .../TIKE/main/CharMapDropTool_EmbeddedWB.pas | 117 ------------------ windows/src/engine/keyman/UfrmHelp.dfm | 12 -- windows/src/engine/keyman/UfrmHelp.pas | 5 +- windows/src/engine/keyman/keyman.dpr | 6 +- windows/src/engine/keyman/keyman.dproj | 15 ++- .../keyman/viskbd/UfrmOSKFontHelper.dfm | 35 ------ .../keyman/viskbd/UfrmOSKFontHelper.pas | 86 ++++--------- .../keyman/viskbd/UfrmOSKKeyboardUsage.dfm | 32 ----- .../keyman/viskbd/UfrmOSKKeyboardUsage.pas | 109 +++++----------- .../keyman/viskbd/UfrmVisualKeyboard.dfm | 25 ---- .../keyman/viskbd/UfrmVisualKeyboard.pas | 12 +- windows/src/ext/Makefile | 6 +- .../global/delphi/comp/WebBrowserManager.pas | 107 ++++++---------- .../global/delphi/general/UserMessages.pas | 3 - .../src/global/delphi/keyman_components.dpk | 4 +- .../src/global/delphi/keyman_components.dproj | 4 - .../src/global/delphi/ui/UfrmWebContainer.pas | 19 +-- 25 files changed, 128 insertions(+), 491 deletions(-) delete mode 100644 windows/src/developer/TIKE/main/CharMapDropTool_EmbeddedWB.pas diff --git a/windows/src/desktop/kmshell/kmshell.dpr b/windows/src/desktop/kmshell/kmshell.dpr index 7f4e979e36..7518ac77c3 100644 --- a/windows/src/desktop/kmshell/kmshell.dpr +++ b/windows/src/desktop/kmshell/kmshell.dpr @@ -109,8 +109,6 @@ uses UfrmBaseKeyboard in 'main\UfrmBaseKeyboard.pas' {frmBaseKeyboard}, UnicodeBlocks in '..\..\global\delphi\general\UnicodeBlocks.pas', TempFileManager in '..\..\global\delphi\general\TempFileManager.pas', - SHDocVw in '..\..\global\delphi\vcl\SHDocVw.pas', - EmbeddedWB in '..\..\ext\embeddedwb\Source\EmbeddedWB.pas', keyman_msctf in '..\..\global\delphi\winapi\keyman_msctf.pas', utiltsf in '..\..\global\delphi\general\utiltsf.pas', utilolepicture in '..\..\engine\kmcomapi\util\utilolepicture.pas', diff --git a/windows/src/desktop/kmshell/kmshell.dproj b/windows/src/desktop/kmshell/kmshell.dproj index e1ef038475..ded4c1938d 100644 --- a/windows/src/desktop/kmshell/kmshell.dproj +++ b/windows/src/desktop/kmshell/kmshell.dproj @@ -248,8 +248,6 @@ - - @@ -393,15 +391,15 @@ true - + - kmshell.exe + .\ true - + - .\ + kmshell.exe true diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res index c386479de580f419ff76fe66e7d5447b2e20c18e..c23c724d1a6e458193296dc5abc822ea0313f68b 100644 GIT binary patch delta 14 VcmZoLZ!n)w!YmnBv$3308UQ6(1gHQ2 delta 14 VcmZoLZ!n)w!u;W5<;HSOX#g(k1{?qY diff --git a/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas b/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas index 90547ae53a..7f160375d2 100644 --- a/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas +++ b/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas @@ -91,7 +91,6 @@ procedure TfrmKeepInTouch.Content_Render(FRefreshKeyman: Boolean; const AdditionalData: WideString); var FPath: string; - v: OleVariant; begin FPath := MakeKeymanUrl(URLPath_KeepInTouch) + '?embed=1'; cef.Navigate(FPath); // I4181 diff --git a/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas b/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas index 2bd02dc704..f5f606e907 100644 --- a/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas +++ b/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas @@ -132,7 +132,6 @@ var n: Integer; I: Integer; s: WideString; - v: OleVariant; begin n := kmcom.Keyboards.IndexOf(FKeyboardName); if n < 0 then Exit; diff --git a/windows/src/desktop/kmshell/main/UfrmMain.pas b/windows/src/desktop/kmshell/main/UfrmMain.pas index e3cb549794..a0968aed41 100644 --- a/windows/src/desktop/kmshell/main/UfrmMain.pas +++ b/windows/src/desktop/kmshell/main/UfrmMain.pas @@ -75,7 +75,7 @@ uses System.UITypes, Windows, Messages, SysUtils, Classes, Types, Graphics, Controls, Forms, Dialogs, keymanapi_TLB, UfrmKeymanBase, - MSHTML_TLB, UfrmWebContainer, + UfrmWebContainer, XMLRenderer; type @@ -865,8 +865,6 @@ begin end; procedure TfrmMain.SaveState; -var - elem: IHTMLElement; begin {$MESSAGE HINT 'TODO: Save state support'} {try TODO: save state diff --git a/windows/src/developer/TIKE/Tike.dpr b/windows/src/developer/TIKE/Tike.dpr index a4ed302959..f335a7b765 100644 --- a/windows/src/developer/TIKE/Tike.dpr +++ b/windows/src/developer/TIKE/Tike.dpr @@ -128,7 +128,6 @@ uses ExtShiftState in '..\..\global\delphi\comp\ExtShiftState.pas', CleartypeDrawCharacter in '..\..\global\delphi\general\CleartypeDrawCharacter.pas', CharMapDropTool in 'main\CharMapDropTool.pas', - CharMapDropTool_EmbeddedWB in 'main\CharMapDropTool_EmbeddedWB.pas', UfrmBitmapEditorText in 'dialogs\UfrmBitmapEditorText.pas' {frmBitmapEditorText}, UFixFontDialogBold in '..\..\global\delphi\general\UFixFontDialogBold.pas', UnicodeData in '..\..\global\delphi\charmap\UnicodeData.pas', @@ -173,7 +172,6 @@ uses GlobalProxySettings in '..\..\global\delphi\general\GlobalProxySettings.pas', ErrLogPath in '..\..\global\delphi\general\ErrLogPath.pas', UfrmFontHelper in 'dialogs\UfrmFontHelper.pas' {Form1}, - WebSoundControl in '..\..\global\delphi\general\WebSoundControl.pas', VKeyChars in '..\..\global\delphi\general\VKeyChars.pas', usp10 in '..\..\global\delphi\general\usp10.pas', UserMessages in '..\..\global\delphi\general\UserMessages.pas', diff --git a/windows/src/developer/TIKE/Tike.dproj b/windows/src/developer/TIKE/Tike.dproj index 5189a7e9fc..20e9c15c26 100644 --- a/windows/src/developer/TIKE/Tike.dproj +++ b/windows/src/developer/TIKE/Tike.dproj @@ -273,7 +273,6 @@ - frmBitmapEditorText @@ -358,7 +357,6 @@

Form1 - diff --git a/windows/src/developer/TIKE/main/CharMapDropTool_EmbeddedWB.pas b/windows/src/developer/TIKE/main/CharMapDropTool_EmbeddedWB.pas deleted file mode 100644 index 0d14c187dd..0000000000 --- a/windows/src/developer/TIKE/main/CharMapDropTool_EmbeddedWB.pas +++ /dev/null @@ -1,117 +0,0 @@ -(* - Name: CharMapDropTool_TntCustomEdit - Copyright: Copyright (C) SIL International. - Documentation: - Description: - Create Date: 23 Aug 2006 - - Modified Date: 19 Mar 2014 - Authors: mcdurdin - Related Files: - Dependencies: - - Bugs: - Todo: - Notes: - History: 23 Aug 2006 - mcdurdin - Initial version - 18 May 2012 - mcdurdin - I3306 - V9.0 - Remove TntControls + Win9x support - 06 Mar 2014 - mcdurdin - I4110 - Double-click on Character Map when in Touch Layout Editor crashes TIKE - 06 Mar 2014 - mcdurdin - I4111 - Double-click in char map when no input element focused in touch layout editor crashes TIKE - 19 Mar 2014 - mcdurdin - I4144 - V9.0 - When character is dropped or double-clicked to insert into html text field, no modified event is triggered -*) -unit CharMapDropTool_EmbeddedWB; // I3306 - -interface - -uses - Windows, - CharacterDragObject, - CharMapDropTool, - CharMapInsertMode, - Controls, - Messages, - EmbeddedWB, - StdCtrls; - -type - TCharMapDropToolControl_EmbeddedWB = class(TCharMapDropToolControl) - private - function EmbeddedWB: TEmbeddedWB; - public - class function Handles: TControlClass; override; - procedure Drag(AObject: TCharacterDragObject; X, Y: Integer; var Accept: Boolean); override; - procedure Drop(AInsertType: TCharMapInsertMode; AObject: TCharacterDragObject; X, Y: Integer); override; - end; - -implementation - -uses - System.SysUtils, - MSHTML_EWB; - -procedure TCharMapDropToolControl_EmbeddedWB.Drag(AObject: TCharacterDragObject; X, Y: Integer; var Accept: Boolean); -var - elem: IHTMLElement; -begin - Accept := (X > 0) and (Y > 0) and (Control is TEmbeddedWB); - if Accept then - begin - elem := EmbeddedWB.Doc2.elementFromPoint(X, Y); - if True then - - Accept := - Assigned(elem) and elem.isTextEdit; -/// (((LowerCase(elem.tagName) = 'input') and (elem.getAttribute('type') = 'text')) or - // (LowerCase(elem.tagName) = 'textarea')); - // SelStart := SendMessage(Edit.Handle, EM_CHARFROMPOS, 0, MAKELONG(X, Y)) - end; -end; - -procedure TCharMapDropToolControl_EmbeddedWB.Drop(AInsertType: TCharMapInsertMode; AObject: TCharacterDragObject; X, Y: Integer); -var - elem: IHTMLElement; - inputElem: IHTMLInputElement; - textRange: IHTMLTxtRange; -begin - if (X = -1) and (Y = -1) then // I4110 - begin - elem := EmbeddedWB.Doc2.activeElement; - end - else - elem := EmbeddedWB.Doc2.elementFromPoint(X, Y); - - if not Assigned(elem) then // I4111 - Exit; - - if not Supports(elem, IHTMLElement2) or not Supports(elem, IHTMLInputElement) then // I4111 - Exit; - - EmbeddedWB.SetFocus; - - (elem as IHTMLElement2).focus; - - inputElem := (elem as IHTMLInputElement); - textRange := inputElem.createTextRange(); -// if textRange. then - -// textRange.moveToPoint(X, Y); - textRange.text := textRange.text + CharMapDropTool_Insert(AInsertType, AObject, '', 0); - (elem as IHTMLElement2).blur; // I4144 - (elem as IHTMLElement2).focus; // I4144 - textRange.collapse(false); - textRange.select; -end; - -class function TCharMapDropToolControl_EmbeddedWB.Handles: TControlClass; -begin - Result := TEmbeddedWB; -end; - -function TCharMapDropToolControl_EmbeddedWB.EmbeddedWB: TEmbeddedWB; -begin - Result := Control as TEmbeddedWB; -end; - -initialization - TCharMapDropToolControl_EmbeddedWB.Register; -end. diff --git a/windows/src/engine/keyman/UfrmHelp.dfm b/windows/src/engine/keyman/UfrmHelp.dfm index cb0e582166..ce415c4f02 100644 --- a/windows/src/engine/keyman/UfrmHelp.dfm +++ b/windows/src/engine/keyman/UfrmHelp.dfm @@ -7,16 +7,4 @@ inherited frmHelp: TfrmHelp ExplicitHeight = 317 PixelsPerInch = 96 TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 428 - Height = 288 - ExplicitWidth = 428 - ExplicitHeight = 288 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/engine/keyman/UfrmHelp.pas b/windows/src/engine/keyman/UfrmHelp.pas index 193ff74e9d..1a92be7034 100644 --- a/windows/src/engine/keyman/UfrmHelp.pas +++ b/windows/src/engine/keyman/UfrmHelp.pas @@ -26,9 +26,8 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, UfrmWebContainer, OleCtrls, SHDocVw, EmbeddedWB, - keymanapi_TLB, UfrmKeymanBase, UserMessages, SHDocVw_EWB, EwbCore, - KeymanEmbeddedWB; + Dialogs, UfrmWebContainer, + keymanapi_TLB, UfrmKeymanBase, UserMessages; type THelpFormHelpTarget = (htNone, htProduct, htKeyboard, htTutorial); diff --git a/windows/src/engine/keyman/keyman.dpr b/windows/src/engine/keyman/keyman.dpr index b2352c3a7e..4b8ff56f82 100644 --- a/windows/src/engine/keyman/keyman.dpr +++ b/windows/src/engine/keyman/keyman.dpr @@ -89,7 +89,6 @@ uses ErrLogPath in '..\..\global\delphi\general\ErrLogPath.pas', UFixupMissingFile in '..\..\global\delphi\ui\UFixupMissingFile.pas', utiluac in '..\..\global\delphi\general\utiluac.pas', - WebSoundControl in '..\..\global\delphi\general\WebSoundControl.pas', VKeyChars in '..\..\global\delphi\general\VKeyChars.pas', usp10 in '..\..\global\delphi\general\usp10.pas', UserMessages in '..\..\global\delphi\general\UserMessages.pas', @@ -102,7 +101,6 @@ uses OnlineConstants in '..\..\global\delphi\productactivation\OnlineConstants.pas', LayeredFormUtils in '..\..\global\delphi\general\LayeredFormUtils.pas', UfrmOSKOnScreenKeyboard in 'viskbd\UfrmOSKOnScreenKeyboard.pas' {frmOSKOnScreenKeyboard}, - KeymanEmbeddedWB in '..\..\global\delphi\comp\KeymanEmbeddedWB.pas', ErrorControlledRegistry in '..\..\global\delphi\vcl\ErrorControlledRegistry.pas', UfrmVisualKeyboard in 'viskbd\UfrmVisualKeyboard.pas' {frmVisualKeyboard}, utilexecute in '..\..\global\delphi\general\utilexecute.pas', @@ -142,7 +140,9 @@ uses Keyman.System.DebugLogCommon in '..\..\global\delphi\debug\Keyman.System.DebugLogCommon.pas', Keyman.System.SharedBuffers in 'Keyman.System.SharedBuffers.pas', Keyman.System.Security in '..\..\global\delphi\general\Keyman.System.Security.pas', - Keyman.Winapi.VersionHelpers in '..\..\global\delphi\winapi\Keyman.Winapi.VersionHelpers.pas'; + Keyman.Winapi.VersionHelpers in '..\..\global\delphi\winapi\Keyman.Winapi.VersionHelpers.pas', + Keyman.System.CEFManager in '..\..\global\delphi\chromium\Keyman.System.CEFManager.pas', + Keyman.UI.UframeCEFHost in '..\..\global\delphi\chromium\Keyman.UI.UframeCEFHost.pas' {frameCEFHost}; {$R ICONS.RES} {$R VERSION.RES} diff --git a/windows/src/engine/keyman/keyman.dproj b/windows/src/engine/keyman/keyman.dproj index ff068dcffb..2824489124 100644 --- a/windows/src/engine/keyman/keyman.dproj +++ b/windows/src/engine/keyman/keyman.dproj @@ -201,7 +201,6 @@ - @@ -220,7 +219,6 @@
frmOSKOnScreenKeyboard
-
frmVisualKeyboard
@@ -265,6 +263,11 @@ + + +
frameCEFHost
+ dfm +
Cfg_2 @@ -327,9 +330,9 @@ False - + - keyman.exe + .\ true @@ -339,9 +342,9 @@ true - + - .\ + keyman.exe true diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm index 4b0e811c1d..1415b615bc 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm +++ b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm @@ -7,39 +7,4 @@ inherited frmOSKFontHelper: TfrmOSKFontHelper ExplicitHeight = 339 PixelsPerInch = 96 TextHeight = 13 - object web: TKeymanEmbeddedWB - Left = 0 - Top = 0 - Width = 635 - Height = 339 - Align = alClient - TabOrder = 0 - Silent = False - RegisterAsDropTarget = False - OnBeforeNavigate2 = webBeforeNavigate2 - OnDocumentComplete = webDocumentComplete - OnNewWindow3 = webNewWindow3 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [DisableTextSelect, DisableHelpMenu, DontUse3DBorders, EnableThemes] - OnShowHelpRequest = webShowHelpRequest1 - OnShowContextMenu = webShowContextMenu - OnScriptError = webScriptError - About = ' EmbeddedWB http://bsalsa.com/' - DisableErrors.fpExceptions = False - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Orientation = poPortrait - VisualEffects.DisableSounds = True - OnKeyDown = webKeyDown - ExplicitLeft = 32 - ExplicitTop = 8 - ExplicitWidth = 461 - ExplicitHeight = 265 - ControlData = { - 4C000000A52F0000631B00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E12620C000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas index c0acc34338..cf76b631a4 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas @@ -39,9 +39,9 @@ interface uses System.Contnrs, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, UfrmOSKPlugInBase, OleCtrls, SHDocVw, EmbeddedWB, + Dialogs, UfrmOSKPlugInBase, keymanapi_TLB, xmlrenderer, UfrmKeymanBase, utilcheckfonts, - UserMessages, SHDocVw_EWB, EwbCore, KeymanEmbeddedWB, + UserMessages, Keyman.UI.UframeCEFHost, TempFileManager; type @@ -52,29 +52,11 @@ type HasWelcome: Boolean; end; - TfrmOSKFontHelper = class(TfrmOSKPlugInBase) - web: TKeymanEmbeddedWB; // I2721 - procedure webShowContextMenu(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; - const Context: IDispatch; var Result: HRESULT); - procedure webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState); - procedure webScriptError(Sender: TObject; ErrorLine, ErrorCharacter, - ErrorCode, ErrorMessage, ErrorUrl: string; var ScriptErrorAction: TScriptErrorAction); - procedure webDocumentComplete(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant); - procedure webBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; - var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; - var Cancel: WordBool); + TfrmOSKFontHelper = class(TfrmOSKPlugInBase) // I2721 procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); - procedure webNewWindow3(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, - bstrUrl: WideString); - function webShowHelpRequest1(Sender: TObject; HWND: NativeUInt; - pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT; private + cef: TframeCEFHost; {$MESSAGE HINT 'Create CEF'} FXML: string; // I4181 FXMLFileName: TTempFile; // I4181 FXMLRenderers: TXMLRenderers; @@ -148,7 +130,8 @@ begin DisplayKeyboardFonts; // Displays default details end; -procedure TfrmOSKFontHelper.webBeforeNavigate2(ASender: TObject; +{$MESSAGE HINT 'TODO: support beforebrowse'} +{procedure TfrmOSKFontHelper.webBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); var @@ -159,33 +142,16 @@ begin PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)); Cancel := True; end; -end; +end;} -procedure TfrmOSKFontHelper.webDocumentComplete(ASender: TObject; +{$MESSAGE HINT 'TODO: support loadend'} +{procedure TfrmOSKFontHelper.webDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); -var - doc3: IHTMLDocument3; - elem: IHTMLElement; begin - try - if Assigned(web.Document) then - begin - doc3 := (web.Document as IHTMLDocument3); - - elem := doc3.documentElement; - if Assigned(elem) then - elem.insertAdjacentHTML('afterBegin', ' '); - // NOTE: The  , or some other visible HTML, is required. Internet Explorer will not - // parse and recognize the script block without some visual HTML to - // accompany it. - end; - FreeAndNil(FXMLFileName); // I4181 - except - Exit; - end; -end; + FreeAndNil(FXMLFileName); // I4181 +end;} -procedure TfrmOSKFontHelper.webNewWindow3(ASender: TObject; +{procedure TfrmOSKFontHelper.webNewWindow3(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, bstrUrl: WideString); var @@ -195,9 +161,11 @@ begin if GetParamsFromURL(bstrURL, params) then PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)) else web.Go(bstrURL); -end; +end;} + -procedure TfrmOSKFontHelper.webKeyDown(Sender: TObject; var Key: Word; +{$MESSAGE HINT 'TODO: support Ctrl+F5'} +{procedure TfrmOSKFontHelper.webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; Shift: TShiftState); begin if (Key = VK_F5) and (ssCtrl in Shift) then @@ -205,31 +173,34 @@ begin Key := 0; PostMessage(Handle, WM_USER_ContentRender, 0, 0); end; -end; +end;} -procedure TfrmOSKFontHelper.webScriptError(Sender: TObject; ErrorLine, +{$MESSAGE HINT 'TODO: Handle script errors'} +{procedure TfrmOSKFontHelper.webScriptError(Sender: TObject; ErrorLine, ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; var ScriptErrorAction: TScriptErrorAction); begin ScriptErrorAction := eaCancel; //TODO: Log message to event log -end; +end;} -procedure TfrmOSKFontHelper.webShowContextMenu(Sender: TCustomEmbeddedWB; +{$MESSAGE HINT 'TODO: Support context menu'} +{procedure TfrmOSKFontHelper.webShowContextMenu(Sender: TCustomEmbeddedWB; const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; const Context: IDispatch; var Result: HRESULT); begin PostMessage(Handle, WM_CONTEXTMENU, web.Handle, MAKELONG(ppt.X, ppt.Y)); Result := S_OK; //Result := S_FALSE; -end; +end;} -function TfrmOSKFontHelper.webShowHelpRequest1(Sender: TObject; +{$MESSAGE HINT 'TODO: Support context help'} +{function TfrmOSKFontHelper.webShowHelpRequest1(Sender: TObject; HWND: NativeUInt; pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; begin Application.HelpJump('context_'+lowercase(FDialogName)); Result := S_OK; -end; +end;} procedure TfrmOSKFontHelper.WMUser_ContentRender(var Message: TMessage); begin @@ -480,8 +451,6 @@ begin end; procedure TfrmOSKFontHelper.Do_Content_Render(const AXML: WideString); -var - v: OleVariant; begin FXMLRenderers := TXMLRenderers.Create; FXMLRenderers.RenderTemplate := 'FontHelper.xsl'; @@ -490,9 +459,8 @@ begin Content_Render; FreeAndNil(FXMLRenderers); - v := navNoHistory or navNoReadFromCache or navNoWriteToCache; if Assigned(FXMLFileName) and FileExists(FXMLFileName.Name) then // I4181 - web.Navigate(FXMLFileName.Name, v); // I4181 + cef.Navigate(FXMLFileName.Name); // I4181 end; end. diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.dfm b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.dfm index 5d76e3e9c8..0f8dfe7f81 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.dfm +++ b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.dfm @@ -8,36 +8,4 @@ inherited frmOSKKeyboardUsage: TfrmOSKKeyboardUsage ExplicitHeight = 339 PixelsPerInch = 96 TextHeight = 13 - object web: TKeymanEmbeddedWB - Left = 0 - Top = 0 - Width = 635 - Height = 339 - Align = alClient - TabOrder = 0 - OnBeforeNavigate2 = webBeforeNavigate2 - OnDocumentComplete = webDocumentComplete - OnNewWindow3 = webNewWindow3 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [DisableTextSelect, DontUse3DBorders, EnablesFormsAutoComplete, EnableThemes] - OnShowHelpRequest = webShowHelpRequest1 - OnShowContextMenu = webShowContextMenu - OnScriptError = webScriptError - About = ' EmbeddedWB http://bsalsa.com/' - DisableErrors.fpExceptions = False - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Orientation = poPortrait - OnKeyDown = webKeyDown - ExplicitLeft = 32 - ExplicitTop = 8 - ExplicitWidth = 461 - ExplicitHeight = 265 - ControlData = { - 4C000000A52F0000631B00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E12620C000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas index e52233f590..bcde8d22ad 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas @@ -1,18 +1,18 @@ (* Name: UfrmOSKKeyboardUsage Copyright: Copyright (C) SIL International. - Documentation: - Description: + Documentation: + Description: Create Date: 27 Mar 2008 Modified Date: 11 Feb 2015 Authors: mcdurdin - Related Files: - Dependencies: + Related Files: + Dependencies: - Bugs: - Todo: - Notes: + Bugs: + Todo: + Notes: History: 27 Mar 2008 - mcdurdin - I1373 - Initial version 14 Jun 2008 - mcdurdin - I1429 - Use U+XXXX when inserting characters from keyboard usage (so we avoid Unicode URLs for compat) 29 Mar 2010 - mcdurdin - I2199 - Shift+click @@ -32,10 +32,11 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, UfrmOSKPlugInBase, OleCtrls, SHDocVw, EmbeddedWB, ExtShiftState, + Dialogs, UfrmOSKPlugInBase, Keyman.UI.UframeCEFHost, ExtShiftState, keymanapi_TLB, xmlrenderer, UfrmKeymanBase, UserMessages, - SHDocVw_EWB, EwbCore, KeymanEmbeddedWB, TempFileManager; + TempFileManager; +{$MESSAGE HINT 'Remove all refs to MSHTML_TLB, OleCtrls, SHDocVw, EmbeddedWB, SHDocVw_EWB, EwbCore, KeymanEmbeddedWB in all units'} type TKeyboardProps = record KeyboardName: WideString; @@ -44,29 +45,11 @@ type HasWelcome: Boolean; end; - TfrmOSKKeyboardUsage = class(TfrmOSKPlugInBase) - web: TKeymanEmbeddedWB; // I2721 - procedure webShowContextMenu(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; - const Context: IDispatch; var Result: HRESULT); - procedure webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState); - procedure webScriptError(Sender: TObject; ErrorLine, ErrorCharacter, - ErrorCode, ErrorMessage, ErrorUrl: string; var ScriptErrorAction: TScriptErrorAction); - procedure webDocumentComplete(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant); - procedure webBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; - var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; - var Cancel: WordBool); + TfrmOSKKeyboardUsage = class(TfrmOSKPlugInBase) // I2721 procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); - procedure webNewWindow3(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, - bstrUrl: WideString); - function webShowHelpRequest1(Sender: TObject; HWND: NativeUInt; - pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT; private + cef: TframeCEFHost; {$MESSAGE HINT 'Create CEF'} FLastActiveKeymanID: Integer; FXMLFileName: TTempFile; // I4181 FXMLRenderers: TXMLRenderers; @@ -79,7 +62,6 @@ type procedure Content_Render; procedure WMUser_FireCommand(var Message: TMessage); message WM_USER_FireCommand; procedure WMUser_ContentRender(var Message: TMessage); message WM_USER_ContentRender; - procedure WMUser_ResetWebFocus(var Message: TMessage); message WM_USER_ResetWebFocus; procedure FireCommand(const command: WideString; params: TStringList); procedure SendKeys(keys: WideString); // I3214 // I3521 function GetTag(var s: WideString): WideString; // I3214 // I3521 @@ -100,7 +82,6 @@ implementation uses KLog, kmint, - MSHTML_TLB, custinterfaces, StockFileNames, UfrmKeyman7Main, @@ -170,7 +151,6 @@ var kbds: IKeymanKeyboardsInstalled; pkg: IKeymanPackageInstalled; FProps: TKeyboardProps; - v: OleVariant; begin FXML := frmKeyman7Main.frmVisualKeyboard.GetToolbarPositionXML; @@ -244,9 +224,8 @@ begin end; // show the "no welcome" welcome - v := navNoHistory or navNoReadFromCache or navNoWriteToCache; if (FFileName_ <> '') and FileExists(FFileName_) then - web.Navigate(FFileName_, v); + cef.Navigate(FFileName_); end; @@ -506,13 +485,10 @@ begin if t <> '' then SendInputString(hwnd, t); - - // Reset focus to web browser document in this process - - PostMessage(Handle, WM_USER_ResetWebFocus, 0, 0); end; -procedure TfrmOSKKeyboardUsage.webBeforeNavigate2(ASender: TObject; +{$MESSAGE HINT 'TODO: support beforebrowse'} +{procedure TfrmOSKKeyboardUsage.webBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); var @@ -523,35 +499,18 @@ begin PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)); Cancel := True; end; -end; +end;} -procedure TfrmOSKKeyboardUsage.webDocumentComplete(ASender: TObject; +{$MESSAGE HINT 'TODO: support loadend'} +{procedure TfrmOSKKeyboardUsage.webDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); -var - doc3: IHTMLDocument3; - elem: IHTMLElement; begin - try - if Assigned(web.Document) then - begin - doc3 := (web.Document as IHTMLDocument3); - - elem := doc3.documentElement; - if Assigned(elem) then - elem.insertAdjacentHTML('afterBegin', ' '); - // NOTE: The  , or some other visible HTML, is required. Internet Explorer will not - // parse and recognize the script block without some visual HTML to - // accompany it. - end; - except - Exit; - end; FreeAndNil(FXMLFileName); // I4181 frmKeyman7Main.frmVisualKeyboard.SetTopMost(True); // I4593 -end; +end;} -procedure TfrmOSKKeyboardUsage.webNewWindow3(ASender: TObject; +{procedure TfrmOSKKeyboardUsage.webNewWindow3(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, bstrUrl: WideString); var @@ -561,9 +520,10 @@ begin if GetParamsFromURL(bstrURL, params) then PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)) else web.Go(bstrURL); -end; +end;} -procedure TfrmOSKKeyboardUsage.webKeyDown(Sender: TObject; var Key: Word; +{$MESSAGE HINT 'TODO: support Ctrl+F5'} +{procedure TfrmOSKKeyboardUsage.webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; Shift: TShiftState); begin if (Key = VK_F5) and (ssCtrl in Shift) then @@ -571,15 +531,18 @@ begin Key := 0; PostMessage(Handle, WM_USER_ContentRender, 0, 0); end; -end; +end;} -procedure TfrmOSKKeyboardUsage.webScriptError(Sender: TObject; ErrorLine, +{$MESSAGE HINT 'TODO: Handle script errors'} +{procedure TfrmOSKKeyboardUsage.webScriptError(Sender: TObject; ErrorLine, ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; var ScriptErrorAction: TScriptErrorAction); begin ScriptErrorAction := eaCancel; //TODO: Log message to event log -end; +end;} +{$MESSAGE HINT 'TODO: Support context menu'} +{ procedure TfrmOSKKeyboardUsage.webShowContextMenu(Sender: TCustomEmbeddedWB; const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; const Context: IDispatch; var Result: HRESULT); @@ -587,23 +550,17 @@ begin PostMessage(Handle, WM_CONTEXTMENU, web.Handle, MAKELONG(ppt.X, ppt.Y)); Result := S_OK; end; +} -function TfrmOSKKeyboardUsage.webShowHelpRequest1(Sender: TObject; +{$MESSAGE HINT 'TODO: Support context help'} +{function TfrmOSKKeyboardUsage.webShowHelpRequest1(Sender: TObject; HWND: NativeUInt; pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; begin Application.HelpJump('context_'+lowercase(FDialogName)); Result := S_OK; end; - -procedure TfrmOSKKeyboardUsage.WMUser_ResetWebFocus(var Message: TMessage); -begin - // This is required to get the IE embedded browser to respond to the next - // click as if it were focused after we reset the focus to the target window - // with SendInputString. Otherwise, the next click on the browser control - // is treated as a focus click and does not trigger e.g. an insertchars event - web.SetFocusToDoc; -end; +} procedure TfrmOSKKeyboardUsage.WMUser_ContentRender(var Message: TMessage); begin diff --git a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.dfm b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.dfm index 7adb6e75f4..9fd98ce1d9 100644 --- a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.dfm +++ b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.dfm @@ -233,31 +233,6 @@ object frmVisualKeyboard: TfrmVisualKeyboard Align = alBottom BevelOuter = bvNone TabOrder = 6 - object webHint: TKeymanEmbeddedWB - Left = 0 - Top = 0 - Width = 547 - Height = 21 - Align = alClient - TabOrder = 0 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [DisableTextSelect, DontUse3DBorders, EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - DisableErrors.fpExceptions = False - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Orientation = poPortrait - ExplicitLeft = 72 - ExplicitTop = 8 - ExplicitWidth = 300 - ExplicitHeight = 150 - ControlData = { - 4C00000032310000F70100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end end object panFontHelper: TPanel Left = 0 diff --git a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas index 9417d4597c..85f647ba2f 100644 --- a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas +++ b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas @@ -89,14 +89,14 @@ interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, ActiveX, keymanapi_TLB, utilstr, custinterfaces, - OleCtrls, SHDocVw, ImgList, UfrmOSKPlugInBase, + ImgList, UfrmOSKPlugInBase, UfrmOSKOnScreenKeyboard, UfrmOSKCharacterMap, UfrmOSKKeyboardUsage, UfrmOSKEntryHelper, Buttons, ToolWin, PaintPanel, exImageList, - Menu_KeyboardItems, ComCtrls, StdCtrls, EmbeddedWB, + Menu_KeyboardItems, ComCtrls, StdCtrls, UfrmOSKFontHelper, LangSwitchManager, - WebBrowserManager, UserMessages, SHDocVw_EWB, EwbCore, - KeymanEmbeddedWB, System.ImageList; + Keyman.UI.UframeCEFHost, + WebBrowserManager, UserMessages, System.ImageList; type TOSKActivePage = (apKeyboard, apCharacterMap, apEntryHelper, apKeyboardUsage, apFontHelper, apUndefined); @@ -141,7 +141,6 @@ type ilKeyboards: TexImageList; panKeyboardUsage: TPanel; panHint: TPanel; - webHint: TKeymanEmbeddedWB; // I2721 panFontHelper: TPanel; tbKeyboards: TToolBar; procedure FormCreate(Sender: TObject); @@ -171,6 +170,7 @@ type Button: TToolButton; State: TCustomDrawState; Stage: TCustomDrawStage; var Flags: TTBCustomDrawFlags; var DefaultDraw: Boolean); // I4849 private + cefHint: TframeCEFHost; webHintManager: TWebBrowserManager; btnKeyboardHelp: TToolButton; cmi: IKeymanCustomisationMenuItem; @@ -332,7 +332,7 @@ begin if Assigned(webHintManager) then Exit; webHintManager := TWebBrowserManager.Create(Self); // I1256 - hint system - webHintManager.WebBrowser := webHint; + webHintManager.WebBrowser := cefHint; webHintManager.OnFireCommand := webHintFireCommand; webHintManager.OnResize := webHintResize; webHintManager.RenderTemplate := 'VKHints.xsl'; diff --git a/windows/src/ext/Makefile b/windows/src/ext/Makefile index 2e06c46896..233a0378e3 100644 --- a/windows/src/ext/Makefile +++ b/windows/src/ext/Makefile @@ -4,7 +4,7 @@ NOTARGET_SIGNCODE=yes -TARGETS=dcpcrypt embeddedwb jedi mbcolor regexpr scfontcombobox cef4delphi +TARGETS=dcpcrypt jedi mbcolor regexpr scfontcombobox cef4delphi # jedi, regexpr have no packages @@ -22,10 +22,6 @@ dcpcrypt: cd $(ROOT)\src\ext\dcpcrypt $(MAKE) $(TARGET) -embeddedwb: - cd $(ROOT)\src\ext\embeddedwb - $(MAKE) $(TARGET) - jedi: cd $(ROOT)\src\ext\jedi $(MAKE) $(TARGET) diff --git a/windows/src/global/delphi/comp/WebBrowserManager.pas b/windows/src/global/delphi/comp/WebBrowserManager.pas index e9177442b5..5acd81fa2c 100644 --- a/windows/src/global/delphi/comp/WebBrowserManager.pas +++ b/windows/src/global/delphi/comp/WebBrowserManager.pas @@ -25,8 +25,9 @@ unit WebBrowserManager; // I3306 interface uses - Windows, Messages, Types, Classes, EmbeddedWB, MSHTML_TLB, - XMLRenderer, keymanapi_TLB, UserMessages, EwbCore, + Windows, Messages, Types, Classes, + XMLRenderer, keymanapi_TLB, UserMessages, + Keyman.UI.UframeCEFHost, TempFileManager; type @@ -37,9 +38,13 @@ type TWebBrowserManager_ResizeEvent = procedure(Sender: TObject; X, Y: Integer) of object; + TWebBrowserManager_ScriptErrorEvent = TNotifyEvent; + + {$MESSAGE HINT 'TODO: implement TWebBrowserManager'} + TWebBrowserManager = class(TComponent) private - web: TEmbeddedWB; + cef: TframeCEFHost; FSafeWndHandle: Cardinal; FXMLFileName: TTempFile; // I4181 FXMLRenderers: TXMLRenderers; @@ -47,29 +52,10 @@ type FDialogName: WideString; FOnResize: TWebBrowserManager_ResizeEvent; FOnSetTitle: TWebBrowserManager_SetTitleEvent; - FOnScriptError: TScriptErrorEvent; + FOnScriptError: TWebBrowserManager_ScriptErrorEvent; FRenderTemplate: WideString; - procedure webShowContextMenu(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; - const Context: IDispatch; var Result: HRESULT); - procedure webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState); - procedure webScriptError(Sender: TObject; ErrorLine, ErrorCharacter, - ErrorCode, ErrorMessage, ErrorUrl: string; var ScriptErrorAction: TScriptErrorAction); - function webShowHelpRequest(Sender: TObject; HWND: NativeUInt; - pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT; - procedure webDocumentComplete(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant); - procedure webBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; - var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; - var Cancel: WordBool); - procedure webNewWindow3(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, - bstrUrl: WideString); - - procedure SetWebBrowser(const Value: TEmbeddedWB); + procedure SetWebBrowser(const Value: TframeCEFHost); procedure AddWebHooks; procedure RemoveWebHooks; @@ -92,8 +78,8 @@ type property OnFireCommand: TWebBrowserManager_FireCommandEvent read FOnFireCommand write FOnFireCommand; property OnSetTitle: TWebBrowserManager_SetTitleEvent read FOnSetTitle write FOnSetTitle; property OnResize: TWebBrowserManager_ResizeEvent read FOnResize write FOnResize; - property OnScriptError: TScriptErrorEvent read FOnScriptError write FOnScriptError; - property WebBrowser: TEmbeddedWB read web write SetWebBrowser; + property OnScriptError: TWebBrowserManager_ScriptErrorEvent read FOnScriptError write FOnScriptError; + property WebBrowser: TframeCEFHost read cef write SetWebBrowser; property RenderTemplate: WideString read FRenderTemplate write SetRenderTemplate; end; @@ -104,8 +90,7 @@ uses SHDocVw, SysUtils, utilhttp, - utilsystem, - WebSoundControl; + utilsystem; { TWebBrowserManager } @@ -121,7 +106,7 @@ end; destructor TWebBrowserManager.Destroy; begin Classes.DeallocateHWnd(FSafeWndHandle); - if web <> nil then web.RemoveFreeNotification(Self); + if cef <> nil then cef.RemoveFreeNotification(Self); DeleteXMLFiles; FreeAndNil(FXMLRenderers); inherited Destroy; @@ -137,10 +122,10 @@ end; procedure TWebBrowserManager.Notification(AComponent: TComponent; Operation: TOperation); begin - if (AComponent = web) and (Operation = opRemove) then + if (AComponent = cef) and (Operation = opRemove) then begin RemoveWebHooks; - web := nil; + cef := nil; end; inherited; end; @@ -174,9 +159,9 @@ begin FXMLRenderers.RenderTemplate := FRenderTemplate; end; -procedure TWebBrowserManager.SetWebBrowser(const Value: TEmbeddedWB); +procedure TWebBrowserManager.SetWebBrowser(const Value: TframeCEFHost); begin - if web <> nil then + {if web <> nil then begin RemoveWebHooks; web.RemoveFreeNotification(Self); @@ -186,7 +171,7 @@ begin begin web.FreeNotification(Self); AddWebHooks; - end; + end;} end; function TWebBrowserManager.TemplateExists: Boolean; @@ -196,7 +181,7 @@ end; procedure TWebBrowserManager.AddWebHooks; begin - if web <> nil then + {if web <> nil then begin web.OnShowContextMenu := webShowContextMenu; web.OnKeyDown := webKeyDown; @@ -205,12 +190,12 @@ begin web.OnDocumentComplete := webDocumentComplete; web.OnBeforeNavigate2 := webBeforeNavigate2; web.OnNewWindow3 := webNewWindow3; - end; + end;} end; procedure TWebBrowserManager.RemoveWebHooks; begin - if web <> nil then + {if web <> nil then begin web.OnShowContextMenu := nil; web.OnKeyDown := nil; @@ -219,10 +204,10 @@ begin web.OnDocumentComplete := nil; web.OnBeforeNavigate2 := nil; web.OnNewWindow3 := nil; - end; + end;} end; -procedure TWebBrowserManager.webBeforeNavigate2(ASender: TObject; +{procedure TWebBrowserManager.webBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; var Cancel: WordBool); var @@ -233,9 +218,9 @@ begin PostMessage(FSafeWndHandle, WM_USER_FireCommand, 0, Integer(params)); Cancel := True; end; -end; +end;} -procedure TWebBrowserManager.webDocumentComplete(ASender: TObject; +{procedure TWebBrowserManager.webDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); var doc2: IHTMLDocument2; @@ -258,18 +243,6 @@ begin FOnResize(Self, elem.offsetWidth, elem.offsetHeight); end; -{ if True then - - ClientWidth := elem.offsetWidth; - ClientHeight := elem.offsetHeight; - - Left := (Screen.Width - Width) div 2; - Top := (Screen.Height - Height) div 2; - end;} - - elem := doc3.documentElement; - if Assigned(elem) then - elem.insertAdjacentHTML('afterBegin', ' '); // NOTE: The  , or some other visible HTML, is required. Internet Explorer will not // parse and recognize the script block without some visual HTML to // accompany it. @@ -278,9 +251,9 @@ begin Exit; end; DeleteXMLFiles; // I4181 -end; +end;} -procedure TWebBrowserManager.webNewWindow3(ASender: TObject; +{procedure TWebBrowserManager.webNewWindow3(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, bstrUrl: WideString); var @@ -290,9 +263,9 @@ begin if GetParamsFromURL(bstrURL, params) then PostMessage(FSafeWndHandle, WM_USER_FireCommand, 0, Integer(params)) else web.Go(bstrURL); -end; +end;} -procedure TWebBrowserManager.webKeyDown(Sender: TObject; var Key: Word; +{procedure TWebBrowserManager.webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; Shift: TShiftState); begin if (Key = VK_F5) and (ssCtrl in Shift) then @@ -300,34 +273,33 @@ begin Key := 0; PostMessage(FSafeWndHandle, WM_USER_ContentRender, 0, 0); end; -end; +end;} -procedure TWebBrowserManager.webScriptError(Sender: TObject; ErrorLine, +{procedure TWebBrowserManager.webScriptError(Sender: TObject; ErrorLine, ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; var ScriptErrorAction: TScriptErrorAction); begin if Assigned(FOnScriptError) then FOnScriptError(Self, ErrorLine, ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl, ScriptErrorAction); -end; +end;} + -procedure TWebBrowserManager.webShowContextMenu(Sender: TCustomEmbeddedWB; +{procedure TWebBrowserManager.webShowContextMenu(Sender: TCustomEmbeddedWB; const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; const Context: IDispatch; var Result: HRESULT); begin PostMessage(web.ParentWindow, WM_CONTEXTMENU, web.Handle, MAKELONG(ppt.X, ppt.Y)); Result := S_OK; -end; +end;} -function TWebBrowserManager.webShowHelpRequest(Sender: TObject; HWND: NativeUInt; +{function TWebBrowserManager.webShowHelpRequest(Sender: TObject; HWND: NativeUInt; pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; begin Application.HelpJump('context_'+lowercase(FDialogName)); Result := S_OK; -end; +end;} procedure TWebBrowserManager.Content_Render(FRefreshKeyman: Boolean; const AdditionalData: WideString); -var - v: OleVariant; begin DeleteXMLFiles; @@ -335,8 +307,7 @@ begin FDialogName := ChangeFileExt(ExtractFileName(FXMLRenderers.RenderTemplate), ''); - v := navNoHistory or navNoReadFromCache or navNoWriteToCache; - web.Navigate(FXMLFileName.Name, v); // I4181 + cef.Navigate(FXMLFileName.Name); // I4181 end; procedure TWebBrowserManager.DeleteXMLFiles; diff --git a/windows/src/global/delphi/general/UserMessages.pas b/windows/src/global/delphi/general/UserMessages.pas index 14987304ce..d9b40e65a5 100644 --- a/windows/src/global/delphi/general/UserMessages.pas +++ b/windows/src/global/delphi/general/UserMessages.pas @@ -68,9 +68,6 @@ const // UfrmOSKFontHelper WM_USER_FontChange = WM_USER + 150; // I3390 // I3519 -const - WM_USER_ResetWebFocus = WM_USER + 160; - const // UframeTextEditor WM_USER_TextEditor_Command = WM_USER + 170; diff --git a/windows/src/global/delphi/keyman_components.dpk b/windows/src/global/delphi/keyman_components.dpk index 490b2634fc..e8ddcb1769 100644 --- a/windows/src/global/delphi/keyman_components.dpk +++ b/windows/src/global/delphi/keyman_components.dpk @@ -39,8 +39,7 @@ requires dbrtl, dclact, dclstd, - xmlrtl, - EmbeddedWebBrowser_XE; + xmlrtl; contains extshiftstate in 'comp\extshiftstate.pas', @@ -70,7 +69,6 @@ contains exImageList in 'comp\exImageList.pas', KeymanTextEditorRichEdit in 'comp\KeymanTextEditorRichEdit.pas', usp10 in 'general\usp10.pas', - KeymanEmbeddedWB in 'comp\KeymanEmbeddedWB.pas', ErrorControlledRegistry in 'vcl\ErrorControlledRegistry.pas', CaptionPanel in 'comp\CaptionPanel.pas', OnScreenKeyboardData in 'visualkeyboard\OnScreenKeyboardData.pas', diff --git a/windows/src/global/delphi/keyman_components.dproj b/windows/src/global/delphi/keyman_components.dproj index 689c85dfc0..0050e3f2bb 100644 --- a/windows/src/global/delphi/keyman_components.dproj +++ b/windows/src/global/delphi/keyman_components.dproj @@ -79,7 +79,6 @@ RELEASE;$(DCC_Define) - $(DCC_Define) 1033 @@ -88,7 +87,6 @@ true - $(DCC_Define) true true 1033 @@ -112,7 +110,6 @@ - @@ -140,7 +137,6 @@ - diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index 14a226cb44..2d5f499143 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -62,7 +62,6 @@ type FNoMoreErrors: Boolean; // I4181 procedure WMUser_FormShown(var Message: TMessage); message WM_USER_FormShown; procedure WMUser_ContentRender(var Message: TMessage); message WM_USER_ContentRender; - function GetIEVersionString: WideString; procedure DownloadUILanguages; procedure ContributeUILanguages; procedure cefLoadEnd(Sender: TObject); @@ -225,12 +224,11 @@ end; procedure TfrmWebContainer.cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); var aparams: TStringList; - v: Boolean; command: string; begin if ShouldProcessAllCommands then begin - v := GetParamsFromURLEx(URL, aparams); + GetParamsFromURLEx(URL, aparams); command := aparams[0]; aparams.Delete(0); FireCommand(command, aparams); @@ -256,7 +254,7 @@ begin AssertCefThread; if ShouldProcessAllCommands then begin - v := GetParamsFromURLEx(URL, params); + GetParamsFromURLEx(URL, params); Handled := True; params.Free; end @@ -343,19 +341,6 @@ begin Result := (Copy(URL, 1, 5) = 'file:') or (Copy(URL, 1, 1) = '/'); end; -function TfrmWebContainer.GetIEVersionString: WideString; -begin - with TRegistryErrorControlled.Create do // I2890 - try - RootKey := HKEY_LOCAL_MACHINE; - if OpenKeyReadOnly('Software\Microsoft\Internet Explorer') and ValueExists('Version') - then Result := ReadString('Version') - else Result := 'unknown'; - finally - Free; - end; -end; - {$MESSAGE HINT 'TODO: Log script errors'} {procedure TfrmWebContainer.webScriptError2(Sender: TObject; ErrorLine, ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; -- GitLab From 9cbb8dba4e2491cb33cd5a71309349ec65446f06 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 7 Apr 2019 06:44:42 +0700 Subject: [PATCH 06/39] [Windows] Remove final references to KeymanEmbeddedWB --- windows/src/desktop/setup/UfrmHTML.dfm | 21 ++++++------------ windows/src/desktop/setup/UfrmHTML.pas | 7 +++--- windows/src/desktop/setup/setup.dpr | 2 -- windows/src/desktop/setup/setup.dproj | 4 ---- windows/src/engine/tsysinfo/sysinfo_main.pas | 23 ++++++++++---------- windows/src/engine/tsysinfo/tsysinfo.dpr | 7 +++++- windows/src/engine/tsysinfo/tsysinfo.dproj | 8 +++++++ 7 files changed, 35 insertions(+), 37 deletions(-) diff --git a/windows/src/desktop/setup/UfrmHTML.dfm b/windows/src/desktop/setup/UfrmHTML.dfm index 4e22a11fff..4cbd86602e 100644 --- a/windows/src/desktop/setup/UfrmHTML.dfm +++ b/windows/src/desktop/setup/UfrmHTML.dfm @@ -27,28 +27,21 @@ object frmHTML: TfrmHTML Anchors = [akLeft, akTop, akRight, akBottom] BevelOuter = bvNone TabOrder = 0 - object web: TKeymanEmbeddedWB + object web: TWebBrowser Left = 0 Top = 0 Width = 666 Height = 273 Align = alClient TabOrder = 0 - OnCommandStateChange = webCommandStateChange - OnNewWindow3 = webNewWindow3 - DisableCtrlShortcuts = 'N' - UserInterfaceOptions = [EnablesFormsAutoComplete, EnableThemes] - About = ' EmbeddedWB http://bsalsa.com/' - DisableErrors.fpExceptions = False - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Orientation = poPortrait - ExplicitTop = 1 - ExplicitWidth = 477 + ExplicitLeft = 184 + ExplicitTop = 136 + ExplicitWidth = 300 + ExplicitHeight = 150 ControlData = { - 4C000000A52F0000631B00000000000000000000000000000000000000000000 + 4C000000D5440000371C00000000000000000000000000000000000000000000 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E12620C000000000000004C0000000114020000000000C000000000000046 + 2B2E126208000000000000004C0000000114020000000000C000000000000046 8000000000000000000000000000000000000000000000000000000000000000 00000000000000000100000000000000000000000000000000000000} end diff --git a/windows/src/desktop/setup/UfrmHTML.pas b/windows/src/desktop/setup/UfrmHTML.pas index 0633eb6c04..03ca425efa 100644 --- a/windows/src/desktop/setup/UfrmHTML.pas +++ b/windows/src/desktop/setup/UfrmHTML.pas @@ -33,17 +33,16 @@ interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, - StdCtrls, ExtCtrls, OleCtrls, SHDocVw, EmbeddedWB, - SHDocVw_EWB, EwbCore, KeymanEmbeddedWB; + StdCtrls, ExtCtrls, OleCtrls, SHDocVw; type TfrmHTML = class(TForm) cmdOK: TButton; panHTML: TPanel; - web: TKeymanEmbeddedWB; cmdPrint: TButton; cmdBack: TButton; cmdForward: TButton; + web: TWebBrowser; procedure cmdPrintClick(Sender: TObject); procedure webNewWindow3(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, @@ -100,7 +99,7 @@ end; procedure TfrmHTML.cmdPrintClick(Sender: TObject); begin - web.Print; + web.ExecWB(OLECMDID_PRINT, 0); end; end. diff --git a/windows/src/desktop/setup/setup.dpr b/windows/src/desktop/setup/setup.dpr index 228a3b8e49..39e23fe92a 100644 --- a/windows/src/desktop/setup/setup.dpr +++ b/windows/src/desktop/setup/setup.dpr @@ -25,8 +25,6 @@ uses UfrmRunDesktop in 'UfrmRunDesktop.pas' {frmRunDesktop}, UfrmInstallOptions in 'UfrmInstallOptions.pas' {frmInstallOptions}, RunTools in 'RunTools.pas', - UfrmHTML in 'UfrmHTML.pas' {frmHTML}, - KeymanEmbeddedWB in '..\..\global\delphi\comp\KeymanEmbeddedWB.pas', ErrLogPath in '..\..\global\delphi\general\ErrLogPath.pas', ShellUserRegistry in '..\..\global\delphi\general\ShellUserRegistry.pas', RegistryHelpers in 'RegistryHelpers.pas', diff --git a/windows/src/desktop/setup/setup.dproj b/windows/src/desktop/setup/setup.dproj index 6e3637895e..d2e023712f 100644 --- a/windows/src/desktop/setup/setup.dproj +++ b/windows/src/desktop/setup/setup.dproj @@ -122,10 +122,6 @@
frmInstallOptions
- -
frmHTML
-
- diff --git a/windows/src/engine/tsysinfo/sysinfo_main.pas b/windows/src/engine/tsysinfo/sysinfo_main.pas index bdd7d8931b..3de0a597be 100644 --- a/windows/src/engine/tsysinfo/sysinfo_main.pas +++ b/windows/src/engine/tsysinfo/sysinfo_main.pas @@ -20,11 +20,14 @@ unit sysinfo_main; // I3309 interface +{$MESSAGE HINT 'Hook up remainder of CEF'} + uses System.UITypes, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, Contnrs, Menus, si_base, ExtCtrls, - EmbeddedWB, msxml; + Keyman.UI.UframeCEFHost, + msxml; type TfrmDiagnostics = class(TForm) @@ -83,9 +86,7 @@ type procedure PrepareTabs; // I3556 procedure ShowFiles; // I3556 procedure LoadPage(FPageIndex: Integer); // I3556 - procedure webDocumentComplete(ASender: TObject; const pDisp: IDispatch; - // I3556 - var URL: OleVariant); + procedure webLoadEnd(ASender: TObject); procedure WMUserLoad(var Message: TMessage); message WM_USER_Load; procedure SaveDiagnosticsAndExit(FileName: string); procedure LoadGlobalData; @@ -433,21 +434,20 @@ end; procedure TfrmDiagnostics.PrepareTabs; // I3180 // I3542 // I3556 var i: Integer; - web: TEmbeddedWB; + web: TframeCEFHost; si: TSI_Base; begin LoadGlobalData; for i := 0 to FSIList.Count - 1 do begin si := FSIList[i]; - web := TEmbeddedWB.Create(si.Parent); + web := TframeCEFHost.Create(si.Parent); // web.Parent := si.Parent as TWinControl; (si.Parent as TWinControl).InsertControl(web); (si.Parent as TTabSheet).Caption := si.Caption; (si.Parent as TTabSheet).TabVisible := True; web.Align := alClient; web.Visible := True; - web.Loaded; LoadPage(i); // pages.Pages[i].TabVisible := (pages.Pages[i].ControlCount > 0) and pages.Pages[i].Controls[0].Visible; end; @@ -474,8 +474,7 @@ begin PostMessage(Handle, WM_USER_Load, 0, FPageIndex); end; -procedure TfrmDiagnostics.webDocumentComplete(ASender: TObject; // I3556 - const pDisp: IDispatch; var URL: OleVariant); +procedure TfrmDiagnostics.webLoadEnd(ASender: TObject); // I3556 begin // Cleanup; end; @@ -486,12 +485,12 @@ procedure TfrmDiagnostics.WMUserLoad(var Message: TMessage); // I3556 var xml, xsl: IXMLDOMDocument; buf: WideString; - web: TEmbeddedWB; + web: TframeCEFHost; afilename: string; begin web := (FSIList[Message.LParam].Parent as TTabSheet).Controls[0] - as TEmbeddedWB; - web.OnDocumentComplete := webDocumentComplete; + as TframeCEFHost; + web.OnLoadEnd := webLoadEnd; if not mnuOptionsXMLView.Checked and FSIList[Message.LParam].HasXSLT then begin diff --git a/windows/src/engine/tsysinfo/tsysinfo.dpr b/windows/src/engine/tsysinfo/tsysinfo.dpr index 2f81bbd891..5a8e5f8767 100644 --- a/windows/src/engine/tsysinfo/tsysinfo.dpr +++ b/windows/src/engine/tsysinfo/tsysinfo.dpr @@ -53,7 +53,12 @@ uses TempFileManager in '..\..\global\delphi\general\TempFileManager.pas', SHDocVw in '..\..\global\delphi\vcl\SHDocVw.pas', StockFileNames in '..\..\global\delphi\cust\StockFileNames.pas', - kmxfileconsts in '..\..\global\delphi\general\kmxfileconsts.pas'; + kmxfileconsts in '..\..\global\delphi\general\kmxfileconsts.pas', + Keyman.System.CEFManager in '..\..\global\delphi\chromium\Keyman.System.CEFManager.pas', + Keyman.UI.UframeCEFHost in '..\..\global\delphi\chromium\Keyman.UI.UframeCEFHost.pas' {frameCEFHost}, + UserMessages in '..\..\global\delphi\general\UserMessages.pas', + KeymanPaths in '..\..\global\delphi\general\KeymanPaths.pas', + ExternalExceptionHandler in '..\..\global\delphi\general\ExternalExceptionHandler.pas'; {$R *.res} {$R manifest.res} diff --git a/windows/src/engine/tsysinfo/tsysinfo.dproj b/windows/src/engine/tsysinfo/tsysinfo.dproj index 6cd10172b7..56bad35cfd 100644 --- a/windows/src/engine/tsysinfo/tsysinfo.dproj +++ b/windows/src/engine/tsysinfo/tsysinfo.dproj @@ -200,6 +200,14 @@ + + +
frameCEFHost
+ dfm +
+ + + Cfg_2 Base -- GitLab From 92c2b70d4ee18ce43b62de3cc83664a47861d740 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 9 Apr 2019 05:41:58 +0700 Subject: [PATCH 07/39] [Windows] Basic infrastructure for chromium in place; builds I think --- .../install/UfrmInstallKeyboardFromWeb.pas | 1 - .../install/UfrmInstallKeyboardLanguage.pas | 2 +- windows/src/desktop/kmshell/kmshell.dpr | 1 - windows/src/desktop/kmshell/main/UfrmHTML.pas | 2 +- .../desktop/kmshell/main/UfrmKeepInTouch.pas | 1 - .../kmshell/main/UfrmKeyboardOptions.pas | 2 +- windows/src/desktop/kmshell/main/UfrmMain.pas | 2 +- .../desktop/kmshell/startup/UfrmSplash.pas | 2 +- .../kmshell/startup/help/UfrmTextEditor.dfm | 4 +- .../kmshell/startup/help/UfrmTextEditor.pas | 3 +- windows/src/desktop/setup/UfrmHTML.pas | 2 +- windows/src/developer/TIKE/Tike.dpr | 2 - ...eyman.Developer.UI.Project.UfrmProject.pas | 2 +- windows/src/engine/Makefile | 6 +- windows/src/engine/keyman/UfrmKeyman7Main.pas | 9 +- windows/src/engine/keyman/keyman.dpr | 2 - windows/src/engine/keyman/keyman.dproj | 10 +- windows/src/engine/keyman/main.pas | 19 + windows/src/engine/keyman/std-manifest.xml | 2 +- .../touchkeyboard/UfrmTouchKeyboard.dfm | 30 - .../touchkeyboard/UfrmTouchKeyboard.pas | 213 ------- .../keyman/viskbd/UfrmOSKFontHelper.pas | 64 +- .../keyman/viskbd/UfrmOSKKeyboardUsage.pas | 60 +- .../keyman/viskbd/UfrmOSKOnScreenKeyboard.pas | 2 +- .../keyman/viskbd/UfrmVisualKeyboard.pas | 5 + windows/src/engine/kmbrowserhost/Makefile | 29 + .../engine/kmbrowserhost/kmbrowserhost.dpr | 20 + .../engine/kmbrowserhost/kmbrowserhost.dproj | 562 ++++++++++++++++++ .../engine/kmbrowserhost/kmbrowserhost.res | Bin 0 -> 59436 bytes windows/src/engine/tsysinfo/si_browsers.pas | 2 +- windows/src/engine/tsysinfo/si_fonts.pas | 2 +- windows/src/engine/tsysinfo/si_hookdlls.pas | 2 +- windows/src/engine/tsysinfo/si_keyman.pas | 2 +- windows/src/engine/tsysinfo/si_language.pas | 2 +- windows/src/engine/tsysinfo/si_office.pas | 2 +- windows/src/engine/tsysinfo/si_overview.pas | 2 +- windows/src/engine/tsysinfo/si_startup.pas | 3 +- windows/src/engine/tsysinfo/tsysinfo.dpr | 2 - .../chromium/Keyman.System.CEFManager.pas | 2 + .../chromium/Keyman.UI.UframeCEFHost.pas | 13 +- .../delphi/comp/WebBrowserFocusMonitor.dcr | Bin 500 -> 0 bytes .../delphi/comp/WebBrowserFocusMonitor.pas | 168 ------ .../global/delphi/comp/WebBrowserManager.pas | 142 ++--- .../src/global/delphi/general/KeymanPaths.pas | 21 + .../src/global/delphi/keyman_components.dpk | 1 - .../src/global/delphi/ui/UfrmWebContainer.pas | 17 +- 46 files changed, 818 insertions(+), 624 deletions(-) delete mode 100644 windows/src/engine/keyman/touchkeyboard/UfrmTouchKeyboard.dfm delete mode 100644 windows/src/engine/keyman/touchkeyboard/UfrmTouchKeyboard.pas create mode 100644 windows/src/engine/kmbrowserhost/Makefile create mode 100644 windows/src/engine/kmbrowserhost/kmbrowserhost.dpr create mode 100644 windows/src/engine/kmbrowserhost/kmbrowserhost.dproj create mode 100644 windows/src/engine/kmbrowserhost/kmbrowserhost.res delete mode 100644 windows/src/global/delphi/comp/WebBrowserFocusMonitor.dcr delete mode 100644 windows/src/global/delphi/comp/WebBrowserFocusMonitor.pas diff --git a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas index 07941d4681..001538318c 100644 --- a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas +++ b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas @@ -55,7 +55,6 @@ type implementation uses - MSHTML_TLB, httpuploader, GlobalProxySettings, UfrmInstallKeyboard, diff --git a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardLanguage.pas b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardLanguage.pas index 6926dbef54..50f1fa5951 100644 --- a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardLanguage.pas +++ b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardLanguage.pas @@ -25,7 +25,7 @@ interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, - Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UfrmKeymanBase, Vcl.OleCtrls, + Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UfrmKeymanBase, keymanapi_TLB, Vcl.StdCtrls, System.Generics.Collections, System.Generics.Defaults, Vcl.Grids; diff --git a/windows/src/desktop/kmshell/kmshell.dpr b/windows/src/desktop/kmshell/kmshell.dpr index 7518ac77c3..13a9f2c646 100644 --- a/windows/src/desktop/kmshell/kmshell.dpr +++ b/windows/src/desktop/kmshell/kmshell.dpr @@ -84,7 +84,6 @@ uses UfrmOnlineUpdateIcon in 'main\UfrmOnlineUpdateIcon.pas' {frmOnlineUpdateIcon}, KeymanTrayIcon in '..\..\engine\keyman\KeymanTrayIcon.pas', UImportOlderVersionKeyboards10 in 'main\UImportOlderVersionKeyboards10.pas', - MSHTML_TLB in '..\..\global\delphi\tlb\MSHTML_TLB.pas', FixupLocaleDoctype in '..\..\global\delphi\general\FixupLocaleDoctype.pas', VisualKeyboard in '..\..\global\delphi\visualkeyboard\VisualKeyboard.pas', VKeyChars in '..\..\global\delphi\general\VKeyChars.pas', diff --git a/windows/src/desktop/kmshell/main/UfrmHTML.pas b/windows/src/desktop/kmshell/main/UfrmHTML.pas index 3c7626d17b..2a1141ece6 100644 --- a/windows/src/desktop/kmshell/main/UfrmHTML.pas +++ b/windows/src/desktop/kmshell/main/UfrmHTML.pas @@ -21,7 +21,7 @@ 23 Aug 2007 - mcdurdin - I919 - Add print button 27 Mar 2008 - mcdurdin - Use TfrmKeymanBase instead of TfrmKMShell 25 May 2010 - mcdurdin - I2393 - Forward, Back and new window functions in Keyboard Welcome - 17 Dec 2010 - mcdurdin - I2570 - Upgrade EmbeddedWB (also I2393) + 17 Dec 2010 - mcdurdin - I2570 - Upgrade E-mbeddedWB (also I2393) 11 Jan 2011 - mcdurdin - I2641 - Print button now prints, not page setup 18 Feb 2011 - mcdurdin - I2721 - Override Javascript-disabled security for web controls 18 May 2012 - mcdurdin - I3306 - V9.0 - Remove TntControls + Win9x support diff --git a/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas b/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas index 7f160375d2..43cba447c2 100644 --- a/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas +++ b/windows/src/desktop/kmshell/main/UfrmKeepInTouch.pas @@ -48,7 +48,6 @@ uses ErrorControlledRegistry, OnlineConstants, RegistryKeys, - ShDocVw, Upload_Settings, UtilCheckOnline, UtilExecute; diff --git a/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas b/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas index f5f606e907..100ed54781 100644 --- a/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas +++ b/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas @@ -14,7 +14,7 @@ Todo: Notes: History: 25 May 2010 - mcdurdin - I1632 - Keyboard Options - 17 Dec 2010 - mcdurdin - I2570 - Upgrade EmbeddedWB (also I2393) + 17 Dec 2010 - mcdurdin - I2570 - Upgrade E-mbeddedWB (also I2393) 18 May 2012 - mcdurdin - I3306 - V9.0 - Remove TntControls + Win9x support 08 Jun 2012 - mcdurdin - I3349 - V9.0 - Consolidate all process creation into TUtilExecute *) diff --git a/windows/src/desktop/kmshell/main/UfrmMain.pas b/windows/src/desktop/kmshell/main/UfrmMain.pas index a0968aed41..23dd537555 100644 --- a/windows/src/desktop/kmshell/main/UfrmMain.pas +++ b/windows/src/desktop/kmshell/main/UfrmMain.pas @@ -48,7 +48,7 @@ 25 May 2010 - mcdurdin - I1632 - Keyboard Options 22 Oct 2010 - mcdurdin - Integrate purchase wizard into main form 05 Nov 2010 - mcdurdin - I2530 - Getting Started link in Configuration is broken - 17 Dec 2010 - mcdurdin - I2570 - Upgrade EmbeddedWB (also I2393) + 17 Dec 2010 - mcdurdin - I2570 - Upgrade E-mbeddedWB (also I2393) 18 Feb 2011 - mcdurdin - I2721 - Override Javascript-disabled security for web controls 28 Feb 2011 - mcdurdin - I2720 - Prevent multiple instances of Keyman Configuration 28 Feb 2011 - mcdurdin - I2539 - After activation, Keyman Configuration does not refresh its buttons diff --git a/windows/src/desktop/kmshell/startup/UfrmSplash.pas b/windows/src/desktop/kmshell/startup/UfrmSplash.pas index 3d8ecfb623..d7b2c319bc 100644 --- a/windows/src/desktop/kmshell/startup/UfrmSplash.pas +++ b/windows/src/desktop/kmshell/startup/UfrmSplash.pas @@ -104,7 +104,7 @@ uses utilfocusappwnd, utilkmshell, utilxml, - VersionInfo, ActiveX, MSHTML_TLB; + VersionInfo, ActiveX; {$R *.DFM} diff --git a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.dfm b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.dfm index a256148433..f12bffab9f 100644 --- a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.dfm +++ b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.dfm @@ -107,7 +107,7 @@ inherited frmTextEditor: TfrmTextEditor Left = 285 Top = 0 Width = 42 - Height = 21 + Height = 22 Hint = 'Font Size|Select font size' TabOrder = 1 Text = '0' @@ -291,7 +291,7 @@ inherited frmTextEditor: TfrmTextEditor Left = 88 Top = 68 Bitmap = { - 494C01010F001400480010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 494C01010F0014004C0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 0000000000003600000028000000400000004000000001002000000000000040 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff --git a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas index c0aa29c7a1..fa405dfd17 100644 --- a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas +++ b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas @@ -24,7 +24,7 @@ 28 Jun 2010 - mcdurdin - I2421 - Return additional information for font coverage 05 Nov 2010 - mcdurdin - I2482 - Tutorial interferes when not active (part 1 - when hidden) 10 Dec 2010 - mcdurdin - I2558 - LazyWrite performance - 17 Dec 2010 - mcdurdin - I2570 - Upgrade EmbeddedWB (also I2393) + 17 Dec 2010 - mcdurdin - I2570 - Upgrade E-mbeddedWB (also I2393) 03 Feb 2011 - mcdurdin - I2260 - "Start Text Editor" should not start in "Tutorial" mode 03 Feb 2011 - mcdurdin - I2697 - Fix potential race condition on termination of check fonts thread 03 Feb 2011 - mcdurdin - I2698 - Font styling shortcuts for text editor @@ -206,7 +206,6 @@ uses keymanapi_TLB, kmint, KMShellHints, - MSHTML_TLB, ErrorControlledRegistry, RegistryKeys, RichEdit, diff --git a/windows/src/desktop/setup/UfrmHTML.pas b/windows/src/desktop/setup/UfrmHTML.pas index 03ca425efa..74e2e29276 100644 --- a/windows/src/desktop/setup/UfrmHTML.pas +++ b/windows/src/desktop/setup/UfrmHTML.pas @@ -21,7 +21,7 @@ 23 Aug 2007 - mcdurdin - I919 - Add print button 27 Mar 2008 - mcdurdin - Use TfrmKeymanBase instead of TfrmKMShell 25 May 2010 - mcdurdin - I2393 - Forward, Back and new window functions in Keyboard Welcome - 17 Dec 2010 - mcdurdin - I2570 - Upgrade EmbeddedWB (also I2393) + 17 Dec 2010 - mcdurdin - I2570 - Upgrade E-mbeddedWB (also I2393) 11 Jan 2011 - mcdurdin - I2645 - Refactor install process - move license to bootstrapper 18 Feb 2011 - mcdurdin - I2721 - Override Javascript-disabled security for web controls 18 May 2012 - mcdurdin - I3306 - V9.0 - Remove TntControls + Win9x support diff --git a/windows/src/developer/TIKE/Tike.dpr b/windows/src/developer/TIKE/Tike.dpr index f335a7b765..5838b01237 100644 --- a/windows/src/developer/TIKE/Tike.dpr +++ b/windows/src/developer/TIKE/Tike.dpr @@ -77,7 +77,6 @@ uses VisualKeyboardImportXML in '..\..\global\delphi\visualkeyboard\VisualKeyboardImportXML.pas', UfrmVisualKeyboardImportKMX in 'dialogs\UfrmVisualKeyboardImportKMX.pas' {frmVisualKeyboardImportKMX}, PanelOverlapped in '..\..\global\delphi\comp\PanelOverlapped.pas', - SHDocVw_TLB in '..\..\global\delphi\comp\SHDocVw_TLB.pas', ScanCodeMap in '..\..\global\delphi\general\ScanCodeMap.pas', UfrmRegressionTestFailure in 'dialogs\UfrmRegressionTestFailure.pas' {frmRegressionTestFailure}, XString in '..\..\global\delphi\general\XString.pas', @@ -214,7 +213,6 @@ uses UfrmKeyboardFonts in 'dialogs\UfrmKeyboardFonts.pas' {frmKeyboardFonts}, CompileErrorCodes in '..\..\global\delphi\general\CompileErrorCodes.pas', KeyboardFonts in '..\..\global\delphi\general\KeyboardFonts.pas', - SHDocVw in '..\..\global\delphi\vcl\SHDocVw.pas', utiltsf in '..\..\global\delphi\general\utiltsf.pas', JsonUtil in '..\..\global\delphi\general\JsonUtil.pas', TikeUnicodeData in 'main\TikeUnicodeData.pas', diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas index 39d1dcf263..f7cb347dbf 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas +++ b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas @@ -34,7 +34,7 @@ 20 Jul 2008 - mcdurdin - I1553 - External exceptions 29 Mar 2010 - mcdurdin - I2199 - Shift+Click opens new window 26 Jul 2010 - mcdurdin - I2468 - Eliminate KeymanWeb Pack - 17 Dec 2010 - mcdurdin - I2570 - Use new EmbeddedWB (see also I2595) + 17 Dec 2010 - mcdurdin - I2570 - Use new E-mbeddedWB (see also I2595) 18 Feb 2011 - mcdurdin - I2721 - Override Javascript-disabled security for web controls 03 May 2011 - mcdurdin - I2890 - Record diagnostic data when encountering registry errors 18 May 2012 - mcdurdin - I3306 - V9.0 - Remove TntControls + Win9x support diff --git a/windows/src/engine/Makefile b/windows/src/engine/Makefile index c8075b3e08..082da2a18f 100644 --- a/windows/src/engine/Makefile +++ b/windows/src/engine/Makefile @@ -4,7 +4,7 @@ # ---------------------------------------------------------------------- -TARGETS=keyman32 kmcomapi keyman tsysinfox64 tsysinfo keyman64 keymanx64 mcompile inst kmtip +TARGETS=keyman32 kmcomapi keyman kmbrowserhost tsysinfox64 tsysinfo keyman64 keymanx64 mcompile inst kmtip MANIFESTS=keyman tsysinfo tsysinfox64 keymanx64 mcompile !include ..\Header.mak @@ -15,6 +15,10 @@ keyman: cd $(ROOT)\src\engine\keyman $(MAKE) $(TARGET) +kmbrowserhost: + cd $(ROOT)\src\engine\kmbrowserhost + $(MAKE) $(TARGET) + kmcomapi: cd $(ROOT)\src\engine\kmcomapi $(MAKE) $(TARGET) diff --git a/windows/src/engine/keyman/UfrmKeyman7Main.pas b/windows/src/engine/keyman/UfrmKeyman7Main.pas index 8c198f699f..a7b58c9878 100644 --- a/windows/src/engine/keyman/UfrmKeyman7Main.pas +++ b/windows/src/engine/keyman/UfrmKeyman7Main.pas @@ -294,6 +294,7 @@ type procedure UnregisterHotkeys; procedure HotkeyWndProc(var Message: TMessage); procedure DoLanguageHotkey(Index: Integer); + procedure CEFShutdownComplete(Sender: TObject); protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; @@ -400,6 +401,7 @@ uses RegistryKeys, klog, GetOsVersion, + Keyman.System.CEFManager, System.Win.ComObj, {tlhelp32,} VistaMessages, Vcl.AxCtrls, @@ -677,11 +679,16 @@ begin ReleaseMutex(hProgramMutex); // We are not controlling Keyman any more - another copy of Keyman.exe may start if not (csDestroying in ComponentState) then begin - Close; + FInitializeCEF.StartShutdown(CEFShutdownComplete); end; end; end; +procedure TfrmKeyman7Main.CEFShutdownComplete(Sender: TObject); +begin + Close; +end; + { TRunningProduct } constructor TRunningProduct.Create(AOwner: TComponent); diff --git a/windows/src/engine/keyman/keyman.dpr b/windows/src/engine/keyman/keyman.dpr index 4b8ff56f82..3421ddb360 100644 --- a/windows/src/engine/keyman/keyman.dpr +++ b/windows/src/engine/keyman/keyman.dpr @@ -63,7 +63,6 @@ uses DebugPaths in '..\..\global\delphi\general\DebugPaths.pas', VisualKeyboardParameters in '..\..\global\delphi\visualkeyboard\VisualKeyboardParameters.pas', utilxml in '..\..\global\delphi\general\utilxml.pas', - MSHTML_TLB in '..\..\global\delphi\tlb\MSHTML_TLB.pas', MSXML2_TLB in '..\..\global\delphi\tlb\MSXML2_TLB.pas', ExternalExceptionHandler in '..\..\global\delphi\general\ExternalExceptionHandler.pas', DCPcrypt2 in '..\..\global\delphi\crypt\DCPcrypt2.pas', @@ -110,7 +109,6 @@ uses OnScreenKeyboardData in '..\..\global\delphi\visualkeyboard\OnScreenKeyboardData.pas', Keyman.System.Util.RenderLanguageIcon in '..\..\global\delphi\ui\Keyman.System.Util.RenderLanguageIcon.pas', TempFileManager in '..\..\global\delphi\general\TempFileManager.pas', - SHDocVw in '..\..\global\delphi\vcl\SHDocVw.pas', utiltsf in '..\..\global\delphi\general\utiltsf.pas', GlobalKeyboardChangeManager in 'GlobalKeyboardChangeManager.pas', utilwow64 in '..\..\global\delphi\general\utilwow64.pas', diff --git a/windows/src/engine/keyman/keyman.dproj b/windows/src/engine/keyman/keyman.dproj index 2824489124..f23e354f3d 100644 --- a/windows/src/engine/keyman/keyman.dproj +++ b/windows/src/engine/keyman/keyman.dproj @@ -160,7 +160,6 @@ - @@ -232,7 +231,6 @@ - @@ -330,9 +328,9 @@ False - + - .\ + keyman.exe true @@ -342,9 +340,9 @@ true - + - keyman.exe + .\ true diff --git a/windows/src/engine/keyman/main.pas b/windows/src/engine/keyman/main.pas index aa494a20e1..3d20488807 100644 --- a/windows/src/engine/keyman/main.pas +++ b/windows/src/engine/keyman/main.pas @@ -39,6 +39,7 @@ uses System.SysUtils, GetOsVersion, + Keyman.System.CEFManager, Keyman.System.Security, Keyman.Winapi.VersionHelpers, KeymanVersion, @@ -59,13 +60,31 @@ begin end; end; +procedure RunProgram; forward; + procedure Run; +begin + FInitializeCEF := TCEFManager.Create(SFolderKeymanEngine); + try + if FInitializeCEF.Start then + begin + RunProgram; + frmKeyman7Main.Free; + end; + finally + FInitializeCEF.Free; + end; +end; + +procedure RunProgram; var FCommand: Integer; Finished: Boolean; Count: Integer; hMutex: Cardinal; begin + + if not ValidateParameters(FCommand) then Exit; hProgramMutex := CreateMutex(nil, False, 'KeymanEXE70'); diff --git a/windows/src/engine/keyman/std-manifest.xml b/windows/src/engine/keyman/std-manifest.xml index 6432d00b9a..624138cad1 100644 --- a/windows/src/engine/keyman/std-manifest.xml +++ b/windows/src/engine/keyman/std-manifest.xml @@ -1,6 +1,6 @@ - + Keyman Engine diff --git a/windows/src/engine/keyman/touchkeyboard/UfrmTouchKeyboard.dfm b/windows/src/engine/keyman/touchkeyboard/UfrmTouchKeyboard.dfm deleted file mode 100644 index 112bbc60c1..0000000000 --- a/windows/src/engine/keyman/touchkeyboard/UfrmTouchKeyboard.dfm +++ /dev/null @@ -1,30 +0,0 @@ -inherited frmTouchKeyboard: TfrmTouchKeyboard - BorderStyle = bsNone - Caption = 'frmTouchKeyboard' - ClientHeight = 281 - ClientWidth = 488 - OnCreate = FormCreate - OnShow = FormShow - ExplicitWidth = 488 - ExplicitHeight = 281 - PixelsPerInch = 96 - TextHeight = 13 - inherited web: TKeymanEmbeddedWB - Width = 488 - Height = 281 - Silent = True - ExplicitWidth = 488 - ExplicitHeight = 281 - ControlData = { - 4C00000078330000482100000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E126208000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end - object tmrWatchTouchLayout: TTimer - OnTimer = tmrWatchTouchLayoutTimer - Left = 232 - Top = 128 - end -end diff --git a/windows/src/engine/keyman/touchkeyboard/UfrmTouchKeyboard.pas b/windows/src/engine/keyman/touchkeyboard/UfrmTouchKeyboard.pas deleted file mode 100644 index 9b855c4a70..0000000000 --- a/windows/src/engine/keyman/touchkeyboard/UfrmTouchKeyboard.pas +++ /dev/null @@ -1,213 +0,0 @@ -unit UfrmTouchKeyboard; - -interface - -uses - Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, - Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.OleCtrls, SHDocVw_EWB, EwbCore, - EmbeddedWB, KeymanEmbeddedWB, UfrmWebContainer, UserMessages, - Vcl.ExtCtrls; - -type - TfrmTouchKeyboard = class(TfrmWebContainer) - tmrWatchTouchLayout: TTimer; - procedure FormCreate(Sender: TObject); - procedure FormShow(Sender: TObject); - procedure webDocumentComplete(ASender: TObject; const pDisp: IDispatch; - var URL: OleVariant); - procedure webScriptError2(Sender: TObject; ErrorLine, ErrorCharacter, - ErrorCode, ErrorMessage, ErrorUrl: string; - var ScriptErrorAction: TScriptErrorAction); - procedure webBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; - var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; - var Cancel: WordBool); - procedure tmrWatchTouchLayoutTimer(Sender: TObject); - private - FContext: string; - IsReady: Boolean; - procedure WMUserFormShown(var Message: TMessage); message WM_USER_FormShown; - procedure UpdateContext; - protected - procedure Content_Render(FRefreshKeyman: Boolean = False; - const AdditionalData: WideString = ''); override; - { Private declarations } - public - { Public declarations } - procedure SetContext(const AContext: string); - procedure RefreshSelectedKeyboard; - end; - -var - frmTouchKeyboard: TfrmTouchKeyboard; - -implementation - -uses - DebugPaths, - ErrorControlledRegistry, - keymanapi_TLB, - RegistryKeys, - System.StrUtils, - UfrmKeyman7Main, - XMLRenderer; - -{$R *.dfm} - -function GetTouchKeyboardPath: string; -begin - with TRegistryErrorControlled.Create do // I2890 - try - RootKey := HKEY_LOCAL_MACHINE; - if OpenKeyReadOnly(SRegKey_KeymanEngine) and ValueExists(SRegValue_RootPath) - then Result := IncludeTrailingPathDelimiter(ReadString(SRegValue_RootPath)) + 'xml\touch\' - else Result := ExtractFilePath(ParamStr(0)) + 'xml\touch\'; - finally - Free; - end; - Result := GetDebugPath('Debug_TouchKeyboardPath', Result, True); -end; - -procedure TfrmTouchKeyboard.Content_Render(FRefreshKeyman: Boolean; - const AdditionalData: WideString); -var - FTemplatePath: WideString; -const - STemplateName = 'touchkeyboard.html'; -begin - FTemplatePath := GetTouchKeyboardPath+STemplateName; - web.Navigate(FTemplatePath); -end; - -procedure TfrmTouchKeyboard.FormCreate(Sender: TObject); -var - n: Integer; - h: THandle; - r: TRect; -begin - h := FindWindow('IPTIP_Main_Window', nil); - if h <> 0 then - begin - GetWindowRect(h, r); -// n := Screen.Height * 4 div 10; - SetBounds(r.Left, r.Top, r.Width, r.Height); - end - else - begin - // DEBUG ONLY - n := Screen.WorkAreaHeight * 4 div 10; - SetBounds(Screen.WorkAreaLeft, Screen.WorkAreaHeight - n, Screen.WorkAreaWidth, n); - end; -end; - -procedure TfrmTouchKeyboard.FormShow(Sender: TObject); -begin - Content_Render; - PostMessage(Handle, WM_USER_FormShown, 0, 0); -end; - -procedure TfrmTouchKeyboard.RefreshSelectedKeyboard; -var - kbd: IKeymanKeyboardInstalled; - FPath: string; - FKeyboardName: string; - - function PathToFileURL(s: string): string; - var - i: Integer; - begin - Result := 'file:///'; - for i := 1 to Length(s) do - case s[i] of - '\': Result := Result + '/'; - ':','.','a'..'z','A'..'Z','0'..'9','_','-': Result := Result + s[i]; - else Result := Result + '%'+IntToHex(Ord(s[i]), 2); - end; - - //Result := 'file:///'+ReplaceStr(s, '\', '/'); - end; -begin - if not IsReady then - Exit; - - kbd := frmKeyman7Main.ActiveKeyboard; - if not Assigned(kbd) then - begin - web.ExecScript('setKeymanLanguage("English","us","./languages/us.js")', 'JScript'); // TODO escaping, figure out non-Keyman keyboard interaction - end - else - begin - FPath := ChangeFileExt(kbd.Filename, '.js'); - FKeyboardName := LowerCase(ChangeFileExt(ExtractFileName(FPath), '')); - if FileExists(FPath) then - begin - web.ExecScript('setKeymanLanguage("'+kbd.Name+'", "'+FKeyboardName+'", "'+PathToFileURL(FPath)+'")', 'JScript'); //TODO escape - end; - end; -end; - -procedure TfrmTouchKeyboard.SetContext(const AContext: string); -begin - FContext := AContext; - UpdateContext; -end; - -procedure TfrmTouchKeyboard.tmrWatchTouchLayoutTimer(Sender: TObject); -var - h: THandle; - r: TRect; -begin - h := FindWindow('IPTIP_Main_Window', nil); - if h <> 0 then - begin - GetWindowRect(h, r); -// n := Screen.Height * 4 div 10; - SetBounds(r.Left, r.Top, r.Width, r.Height); - if IsWindowVisible(h) and IsWindowEnabled(h) then - begin - Visible := True; - SetWindowPos(Handle, HWND_TOPMOST, r.Left, r.Top, r.Width, r.Height, SWP_NOACTIVATE); - end - else - Visible := False; - end - else - Visible := False; -end; - -procedure TfrmTouchKeyboard.UpdateContext; -begin - if web.DocumentLoaded then - web.ExecScript('setContext("'+FContext+'")', 'JavaScript'); // TODO escaping -end; - -procedure TfrmTouchKeyboard.webBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - inherited; - if not Cancel then - IsReady := False; -end; - -procedure TfrmTouchKeyboard.webDocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); -begin - UpdateContext; - IsReady := True; - // Do nothing -end; - -procedure TfrmTouchKeyboard.webScriptError2(Sender: TObject; ErrorLine, - ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; - var ScriptErrorAction: TScriptErrorAction); -begin - ShowMessage(ErrorMessage + #13#10'('+ErrorCharacter+','+ErrorLine+': '+ErrorUrl+')'); - ScriptErrorAction := eaContinue; -end; - -procedure TfrmTouchKeyboard.WMUserFormShown(var Message: TMessage); -begin - FormStyle := fsStayOnTop; // I4209 -end; - -end. diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas index cf76b631a4..8edffc0414 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas @@ -18,7 +18,7 @@ 29 Mar 2010 - mcdurdin - I2199 - Shift+click 24 Jun 2010 - mcdurdin - I2421 - Start work on font helper showing additional detail 26 Jul 2010 - mcdurdin - Code tidy - remove old commented-out code - 17 Dec 2010 - mcdurdin - I2570 - Upgrade EmbeddedWB (also I2393) + 17 Dec 2010 - mcdurdin - I2570 - Upgrade E-mbeddedWB (also I2393) 18 Feb 2011 - mcdurdin - I2721 - Override Javascript-disabled security for web controls 18 Feb 2011 - mcdurdin - I2712 - SMP support for font helper 18 Mar 2011 - mcdurdin - I1698, I2120, I2323, I2565 - Font helper crash when searching @@ -56,7 +56,7 @@ type procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private - cef: TframeCEFHost; {$MESSAGE HINT 'Create CEF'} + cef: TframeCEFHost; FXML: string; // I4181 FXMLFileName: TTempFile; // I4181 FXMLRenderers: TXMLRenderers; @@ -68,7 +68,6 @@ type FLastSelectedKeyboardName: WideString; procedure Content_Render; - procedure WMUser_FireCommand(var Message: TMessage); message WM_USER_FireCommand; procedure WMUser_ContentRender(var Message: TMessage); message WM_USER_ContentRender; procedure WMUser_FontChange(var Message: TMessage); message WM_USER_FontChange; // I3390 // I3519 @@ -78,6 +77,9 @@ type procedure DisplayKeyboardFonts; procedure StartCheckingFonts(Keyboard: IKeymanKeyboardInstalled); procedure Do_Content_Render(const AXML: WideString); + procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; + params: TStringList; wasHandled: Boolean); + procedure cefLoadEnd(Sender: TObject); { Private declarations } public { Public declarations } @@ -90,7 +92,6 @@ uses findfonts, KLog, kmint, - MSHTML_TLB, custinterfaces, UfrmKeyman7Main, UfrmVisualKeyboard, @@ -130,38 +131,16 @@ begin DisplayKeyboardFonts; // Displays default details end; -{$MESSAGE HINT 'TODO: support beforebrowse'} -{procedure TfrmOSKFontHelper.webBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -var - params: TStringList; +procedure TfrmOSKFontHelper.cefBeforeBrowse(Sender: TObject; const Url, + command: string; params: TStringList; wasHandled: Boolean); begin - if GetParamsFromURL(URL, params) then - begin - PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)); - Cancel := True; - end; -end;} + FireCommand(command, params); +end; -{$MESSAGE HINT 'TODO: support loadend'} -{procedure TfrmOSKFontHelper.webDocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); +procedure TfrmOSKFontHelper.cefLoadEnd(Sender: TObject); begin FreeAndNil(FXMLFileName); // I4181 -end;} - -{procedure TfrmOSKFontHelper.webNewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); -var - params: TStringList; -begin - Cancel := True; - if GetParamsFromURL(bstrURL, params) - then PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)) - else web.Go(bstrURL); -end;} +end; {$MESSAGE HINT 'TODO: support Ctrl+F5'} @@ -207,18 +186,6 @@ begin DisplayKeyboardFonts; // I3216 // I3520 end; -procedure TfrmOSKFontHelper.WMUser_FireCommand(var Message: TMessage); -var - command: WideString; - params: TStringList; -begin - params := TStringList(Message.LParam); - command := params[0]; - params.Delete(0); - FireCommand(command, params); - params.Free; -end; - procedure TfrmOSKFontHelper.Content_Render; var AdditionalData: WideString; @@ -252,7 +219,7 @@ begin else if command = 'welcome' then frmKeyman7Main.MnuOpenKeyboardHelp(nil) else if command = 'help' then frmKeyman7Main. MnuOpenProductHelp(frmKeyman7Main.frmVisualKeyboard) else if command = '' then - + else if command = 'insertchars' then begin hwnd := kmcom.Control.LastFocusWindow; @@ -293,6 +260,13 @@ procedure TfrmOSKFontHelper.FormCreate(Sender: TObject); begin inherited; FCheckFontKeyboards := TCheckFontKeyboards.Create; + + cef := TframeCEFHost.Create(Self); + cef.Parent := Self; + cef.Visible := True; + cef.ShouldOpenRemoteUrlsInBrowser := True; + cef.OnBeforeBrowse := cefBeforeBrowse; + cef.OnLoadEnd := cefLoadEnd; end; procedure TfrmOSKFontHelper.FormDestroy(Sender: TObject); diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas index bcde8d22ad..62e4b2a60a 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas @@ -36,7 +36,6 @@ uses keymanapi_TLB, xmlrenderer, UfrmKeymanBase, UserMessages, TempFileManager; -{$MESSAGE HINT 'Remove all refs to MSHTML_TLB, OleCtrls, SHDocVw, EmbeddedWB, SHDocVw_EWB, EwbCore, KeymanEmbeddedWB in all units'} type TKeyboardProps = record KeyboardName: WideString; @@ -49,7 +48,7 @@ type procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private - cef: TframeCEFHost; {$MESSAGE HINT 'Create CEF'} + cef: TframeCEFHost; FLastActiveKeymanID: Integer; FXMLFileName: TTempFile; // I4181 FXMLRenderers: TXMLRenderers; @@ -60,7 +59,6 @@ type function GetKeyboardProps(APackage: IKeymanPackage; AKeyboard: IKeymanKeyboardInstalled): TKeyboardProps; procedure Content_Render; - procedure WMUser_FireCommand(var Message: TMessage); message WM_USER_FireCommand; procedure WMUser_ContentRender(var Message: TMessage); message WM_USER_ContentRender; procedure FireCommand(const command: WideString; params: TStringList); procedure SendKeys(keys: WideString); // I3214 // I3521 @@ -70,6 +68,9 @@ type function GetAsyncShiftState: TExtShiftState; // I3214 // I3521 procedure do_keybd_event(bVk, bScan: Byte; dwFlags, dwExtraInfo: DWORD); // I3214 // I3521 procedure SendChars(const chars: string); + procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; + params: TStringList; wasHandled: Boolean); + procedure cefLoadEnd(Sender: TObject); { Private declarations } public { Public declarations } @@ -487,40 +488,16 @@ begin SendInputString(hwnd, t); end; -{$MESSAGE HINT 'TODO: support beforebrowse'} -{procedure TfrmOSKKeyboardUsage.webBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -var - params: TStringList; +procedure TfrmOSKKeyboardUsage.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); begin - if GetParamsFromURL(URL, params) then - begin - PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)); - Cancel := True; - end; -end;} + FireCommand(command, params); +end; -{$MESSAGE HINT 'TODO: support loadend'} -{procedure TfrmOSKKeyboardUsage.webDocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); +procedure TfrmOSKKeyboardUsage.cefLoadEnd(Sender: TObject); begin FreeAndNil(FXMLFileName); // I4181 - frmKeyman7Main.frmVisualKeyboard.SetTopMost(True); // I4593 -end;} - -{procedure TfrmOSKKeyboardUsage.webNewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); -var - params: TStringList; -begin - Cancel := True; - if GetParamsFromURL(bstrURL, params) - then PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)) - else web.Go(bstrURL); -end;} +end; {$MESSAGE HINT 'TODO: support Ctrl+F5'} {procedure TfrmOSKKeyboardUsage.webKeyDown(Sender: TObject; var Key: Word; @@ -567,18 +544,6 @@ begin Content_Render; end; -procedure TfrmOSKKeyboardUsage.WMUser_FireCommand(var Message: TMessage); -var - command: WideString; - params: TStringList; -begin - params := TStringList(Message.LParam); - command := params[0]; - params.Delete(0); - FireCommand(command, params); - params.Free; -end; - procedure TfrmOSKKeyboardUsage.Content_Render; var AdditionalData: WideString; @@ -620,6 +585,13 @@ procedure TfrmOSKKeyboardUsage.FormCreate(Sender: TObject); begin inherited; FLastActiveKeymanID := -2; + + cef := TframeCEFHost.Create(Self); + cef.Parent := Self; + cef.Visible := True; + cef.ShouldOpenRemoteUrlsInBrowser := True; + cef.OnBeforeBrowse := cefBeforeBrowse; + cef.OnLoadEnd := cefLoadEnd; end; procedure TfrmOSKKeyboardUsage.FormDestroy(Sender: TObject); diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKOnScreenKeyboard.pas b/windows/src/engine/keyman/viskbd/UfrmOSKOnScreenKeyboard.pas index 1b193f8861..022d1d621c 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKOnScreenKeyboard.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKOnScreenKeyboard.pas @@ -47,7 +47,7 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, UfrmOSKPlugInBase, OnScreenKeyboard, ExtShiftState, UserMessages, - VisualKeyboard, VisualKeyboardInfo, Menus, OleCtrls, SHDocVw, ExtCtrls; + VisualKeyboard, VisualKeyboardInfo, Menus, ExtCtrls; type TfrmOSKOnScreenKeyboard = class(TfrmOSKPlugInBase) diff --git a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas index 85f647ba2f..2f4290e475 100644 --- a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas +++ b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas @@ -342,6 +342,11 @@ procedure TfrmVisualKeyboard.FormCreate(Sender: TObject); begin inherited; + cefHint := TframeCEFHost.Create(Self); + cefHint.Parent := panHint; + cefHint.Visible := True; + cefHint.ShouldOpenRemoteUrlsInBrowser := True; + CreateWebHintManager; FToolbarHintWindow := TOSKHintWindow.Create(Self); diff --git a/windows/src/engine/kmbrowserhost/Makefile b/windows/src/engine/kmbrowserhost/Makefile new file mode 100644 index 0000000000..53cbcaae61 --- /dev/null +++ b/windows/src/engine/kmbrowserhost/Makefile @@ -0,0 +1,29 @@ +# +# KMBrowserHost Makefile +# + +!include ..\..\Defines.mak + +build: version.res manifest.res dirs + $(DELPHI_MSBUILD) kmbrowserhost.dproj /p:Platform=Win32 + + $(TDS2DBG) $(WIN32_TARGET_PATH)\kmbrowserhost.exe + $(MAKEJCLDBG) $(WIN32_TARGET_PATH)\kmbrowserhost.map + $(COPY) $(WIN32_TARGET_PATH)\kmbrowserhost.exe $(PROGRAM)\engine + if exist $(WIN32_TARGET_PATH)\kmbrowserhost.dbg $(COPY) $(WIN32_TARGET_PATH)\kmbrowserhost.dbg $(DEBUGPATH)\engine + +clean: def-clean + -del kmbrowserhost.exe + -rd /s/q Win32 + -rd /s/q Win64 + +signcode: + $(SIGNCODE) /d "Keyman Engine" $(PROGRAM)\engine\kmbrowserhost.exe + +install: + $(COPY) $(PROGRAM)\engine\kmbrowserhost.exe "$(INSTALLPATH_KEYMANENGINE)" + +backup: + $(WZZIP) $(BUILD)\engine\kmbrowserhost.zip $(BACKUPDEFAULTS) $(WIN32_TARGET_PATH)\kmbrowserhost.exe $(WIN32_TARGET_PATH)\kmbrowserhost.dbg + +!include ..\..\Target.mak diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr b/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr new file mode 100644 index 0000000000..079503e5cd --- /dev/null +++ b/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr @@ -0,0 +1,20 @@ +program kmbrowserhost; + +uses + Keyman.System.CEFManager in '..\..\global\delphi\chromium\Keyman.System.CEFManager.pas', + RegistryKeys in '..\..\global\delphi\general\RegistryKeys.pas', + KeymanPaths in '..\..\global\delphi\general\KeymanPaths.pas', + KeymanVersion in '..\..\global\delphi\general\KeymanVersion.pas', + DebugPaths in '..\..\global\delphi\general\DebugPaths.pas', + ErrorControlledRegistry in '..\..\global\delphi\vcl\ErrorControlledRegistry.pas'; + +{$R *.res} + +begin + FInitializeCEF := TCEFManager.Create(SFolderKeymanEngine); + try + FInitializeCEF.Start; + finally + FInitializeCEF.Free; + end; +end. diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj b/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj new file mode 100644 index 0000000000..eb9c074824 --- /dev/null +++ b/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj @@ -0,0 +1,562 @@ + + + {C78BCA95-4D5F-48DA-A878-65CA22128BFC} + 18.4 + VCL + kmbrowserhost.dpr + True + Debug + Win32 + 1 + Application + + + true + + + true + Base + true + + + true + Base + true + + + true + Base + true + + + true + Cfg_1 + true + true + + + true + Base + true + + + true + Cfg_2 + true + true + + + .\$(Platform)\$(Config) + .\$(Platform)\$(Config) + false + false + false + false + false + RESTComponents;FireDAC;FireDACSqliteDriver;soaprtl;FireDACIBDriver;soapmidas;FireDACCommon;RESTBackendComponents;soapserver;CloudService;FireDACCommonDriver;inet;$(DCC_UsePackage) + System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) + $(BDS)\bin\delphi_PROJECTICON.ico + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png + $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png + kmbrowserhost + + + DBXSqliteDriver;bindcompdbx;IndyIPCommon;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;vclFireDAC;IndySystem;tethering;svnui;mbColorLibD10;dsnapcon;FireDACADSDriver;scFontCombo;DCPdelphi2009;FireDACMSAccDriver;fmxFireDAC;vclimg;Jcl;vcltouch;JvCore;vcldb;bindcompfmx;svn;FireDACPgDriver;inetdb;CEF4Delphi;DbxCommonDriver;fmx;fmxdae;xmlrtl;fmxobj;vclwinx;rtl;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;bindcomp;appanalytics;dsnap;IndyIPClient;bindcompvcl;EmbeddedWebBrowser_XE;VCLRESTComponents;dbxcds;VclSmp;JvDocking;adortl;JclVcl;vclie;bindengine;DBXMySQLDriver;dsnapxml;FireDACMySQLDriver;dbrtl;inetdbxpress;IndyProtocols;keyman_components;FireDACCommonODBC;fmxase;$(DCC_UsePackage) + Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) + Debug + true + CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= + 1033 + $(BDS)\bin\default_app.manifest + + + DBXSqliteDriver;bindcompdbx;IndyIPCommon;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;vclFireDAC;IndySystem;tethering;dsnapcon;FireDACADSDriver;FireDACMSAccDriver;fmxFireDAC;vclimg;Jcl;vcltouch;vcldb;bindcompfmx;FireDACPgDriver;inetdb;DbxCommonDriver;fmx;fmxdae;xmlrtl;fmxobj;vclwinx;rtl;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;bindcomp;appanalytics;dsnap;IndyIPClient;bindcompvcl;VCLRESTComponents;dbxcds;VclSmp;adortl;JclVcl;vclie;bindengine;DBXMySQLDriver;dsnapxml;FireDACMySQLDriver;dbrtl;inetdbxpress;IndyProtocols;FireDACCommonODBC;fmxase;$(DCC_UsePackage) + + + DEBUG;$(DCC_Define) + true + false + true + true + true + + + false + true + true + + + false + RELEASE;$(DCC_Define) + 0 + 0 + + + true + true + + + + MainSource + + + + + + + + + Cfg_2 + Base + + + Base + + + Cfg_1 + Base + + + + Delphi.Personality.12 + Application + + + + kmbrowserhost.dpr + + + + + + kmbrowserhost.exe + true + + + + + 1 + + + Contents\MacOS + 1 + + + Contents\MacOS + 0 + + + + + classes + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + library\lib\armeabi + 1 + + + + + library\lib\mips + 1 + + + + + library\lib\armeabi-v7a + 1 + + + + + res\drawable + 1 + + + + + res\values + 1 + + + + + res\drawable + 1 + + + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-ldpi + 1 + + + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + + + res\drawable-small + 1 + + + + + res\drawable-normal + 1 + + + + + res\drawable-large + 1 + + + + + res\drawable-xlarge + 1 + + + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + Contents\MacOS + 1 + .framework + + + 0 + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .dll;.bpl + + + + + 1 + .dylib + + + 1 + .dylib + + + 1 + .dylib + + + Contents\MacOS + 1 + .dylib + + + 0 + .bpl + + + + + 0 + + + 0 + + + 0 + + + 0 + + + Contents\Resources\StartUp\ + 0 + + + 0 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF + 1 + + + + + 1 + + + 1 + + + + + ..\ + 1 + + + ..\ + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + ..\ + 1 + + + + + Contents + 1 + + + + + Contents\Resources + 1 + + + + + library\lib\armeabi-v7a + 1 + + + 1 + + + 1 + + + 1 + + + 1 + + + Contents\MacOS + 1 + + + 0 + + + + + 1 + + + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + Assets + 1 + + + Assets + 1 + + + + + + + + + + + + + True + False + + + 12 + + + + + diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.res b/windows/src/engine/kmbrowserhost/kmbrowserhost.res new file mode 100644 index 0000000000000000000000000000000000000000..e9803d8bf04c15bf40b6237a5207d87cf758631f GIT binary patch literal 59436 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 K?VJyAuB<^Ugi{Slv~ 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 S3jP8;C;vMB 0 then + begin + command := params[0]; + params.Delete(0); + FOnBeforeBrowse(Self, url, command, params, Boolean(message.WParam)); + end; + end; if FShouldOpenRemoteUrlsInBrowser and (params.Count = 0) and not IsLocalURL(URL) then {$MESSAGE HINT 'Refactor how remote URLs are handled'} diff --git a/windows/src/global/delphi/comp/WebBrowserFocusMonitor.dcr b/windows/src/global/delphi/comp/WebBrowserFocusMonitor.dcr deleted file mode 100644 index 23d6f536decb21b654fb246c8c77ddcb4802e4ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 500 zcmZ{fJxjzu5QgVe5W6eW99(ICmVtm@QHUO#ihn~euv-Y(t9B~kD*sL-2WhsK>nyLc zxYQZn-SrefXEU?U%)FUoh=|5;k?6o*#si`P6_FjfrF%M~W1JaH!8gcebPhhDJ7ia& zYr2GPih8u+@L+E{@DPxE`G8`1jQM|?A;Lq(#0wD!H&oX(8vcjfr5)BZK+y#wcTW?UhkJ0YAc(z ze>R;)xdO}jy~EhReQzX(9(7lJ?0$3m&`eZ(7xSCR1@u-VbuJ5Y_%TaeBc1;itH#&! b!1f9HBMnAJft6n*s8m3 0) or (FInetExplorerServerHandle <> 0) then - raise Exception.Create('Child already hooked'); - FShellDocObjViewHandle := Windows.GetWindow(FWB.Handle, GW_CHILD); - if (FShellDocObjViewHandle <> 0) and not FHooksSet then - begin - FInetExplorerServerInstance := Classes.MakeObjectInstance(InetExplorerServerWndProc); - FShellDocObjInstance := Classes.MakeObjectInstance(ShellDocObjWndProc); - FHooksSet := True; - FInetExplorerServerHandle := Windows.GetWindow(FShellDocObjViewHandle, GW_CHILD); - FDefShellObjViewProc := Pointer(GetWindowLong(FShellDocObjViewHandle, GWL_WNDPROC)); - SetWindowLong(FShellDocObjViewHandle, GWL_WNDPROC, Longint(FShellDocObjInstance)); - FDefInetExplorerServerProc := Pointer(GetWindowLong(FInetExplorerServerHandle, GWL_WNDPROC)); - SetWindowLong(FInetExplorerServerHandle, GWL_WNDPROC, Longint(FInetExplorerServerInstance)); - end; -end; - -procedure TWebBrowserFocusMonitor.InetExplorerServerWndProc(var Message: TMessage); -begin - Message.Result := CallWindowProc(FDefInetExplorerServerProc, FInetExplorerServerHandle, Message.Msg, Message.WParam, Message.LParam); - case Message.Msg of - WM_SETFOCUS: - begin - // Catching this message allows us to set the Active control to the - // WebBrowser itself which keeps VCL in sync with the real active control - // which makes things like tabbing work correctly. - if FWB.Showing and FWB.CanFocus then - GetParentForm(FWB).ActiveControl := FWB - else if Assigned(GetParentForm(FWB).ActiveControl) then - // ignore the wm_setfocus because it came at an inappropriate time - GetParentForm(FWB).ActiveControl.SetFocus; - end; - WM_DESTROY: UnHookChildWindows; - end; -end; - -function TWebBrowserFocusMonitor.IsHooked: Boolean; -begin - Result := (FShellDocObjViewHandle <> 0) or (FInetExplorerServerHandle <> 0); -end; - -procedure TWebBrowserFocusMonitor.ShellDocObjWndProc(var Message: TMessage); -begin - Message.Result := CallWindowProc(FDefShellObjViewProc, FShellDocObjViewHandle, - Message.Msg, Message.WParam, Message.LParam); - case Message.Msg of - WM_DESTROY: UnHookChildWindows; - end; -end; - -procedure TWebBrowserFocusMonitor.UnHookChildWindows; -begin - if FShellDocObjViewHandle <> 0 then - begin - if GetWindowLong(FShellDocObjViewHandle, GWL_WNDPROC) = Longint(FShellDocObjInstance) then // I2570 - SetWindowLong(FShellDocObjViewHandle, GWL_WNDPROC, Integer(FDefShellObjViewProc)); - Classes.FreeObjectInstance(FShellDocObjInstance); - FShellDocObjViewHandle := 0; - FShellDocObjInstance := nil; - end; - - if FInetExplorerServerHandle <> 0 then - begin - if GetWindowLong(FShellDocObjViewHandle, GWL_WNDPROC) = Integer(FInetExplorerServerInstance) then // I2570 - SetWindowLong(FInetExplorerServerHandle, GWL_WNDPROC, Integer(FDefInetExplorerServerProc)); - Classes.FreeObjectInstance(FInetExplorerServerInstance); - FInetExplorerServerHandle := 0; - FInetExplorerServerInstance := nil; - end; -end; - -end. diff --git a/windows/src/global/delphi/comp/WebBrowserManager.pas b/windows/src/global/delphi/comp/WebBrowserManager.pas index 5acd81fa2c..de959bfd15 100644 --- a/windows/src/global/delphi/comp/WebBrowserManager.pas +++ b/windows/src/global/delphi/comp/WebBrowserManager.pas @@ -15,7 +15,7 @@ Notes: History: 27 Mar 2008 - mcdurdin - Initial version 29 Mar 2010 - mcdurdin - I2199 - Shift+click new window support - 17 Dec 2010 - mcdurdin - I2570 - Use new EmbeddedWB + 17 Dec 2010 - mcdurdin - I2570 - Use new E-mbeddedWB 19 Jul 2011 - mcdurdin - I2984 - Floating point in Internet Explorer fix 18 May 2012 - mcdurdin - I3306 - V9.0 - Remove TntControls + Win9x support 01 May 2014 - mcdurdin - I4181 - V9.0 - Stop using DeleteFileAlways, MOVEFILE_DELAY_UNTIL_REBOOT @@ -63,6 +63,9 @@ type procedure DeleteXMLFiles; procedure SetRenderTemplate(const Value: WideString); + procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); + procedure cefLoadEnd(Sender: TObject); + protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; @@ -87,7 +90,6 @@ implementation uses Forms, - SHDocVw, SysUtils, utilhttp, utilsystem; @@ -96,7 +98,6 @@ uses constructor TWebBrowserManager.Create(AOwner: TComponent); begin - Set8087CW($133F); // I2984 inherited Create(AOwner); FSafeWndHandle := Classes.AllocateHWnd(SafeWndProc); FXMLRenderers := TXMLRenderers.Create; @@ -161,17 +162,17 @@ end; procedure TWebBrowserManager.SetWebBrowser(const Value: TframeCEFHost); begin - {if web <> nil then + if cef <> nil then begin RemoveWebHooks; - web.RemoveFreeNotification(Self); + cef.RemoveFreeNotification(Self); end; - web := Value; - if web <> nil then + cef := Value; + if cef <> nil then begin - web.FreeNotification(Self); + cef.FreeNotification(Self); AddWebHooks; - end;} + end; end; function TWebBrowserManager.TemplateExists: Boolean; @@ -181,20 +182,28 @@ end; procedure TWebBrowserManager.AddWebHooks; begin + if cef <> nil then + begin + cef.OnBeforeBrowse := cefBeforeBrowse; + cef.OnLoadEnd := cefLoadEnd; + end; + {$MESSAGE HINT 'TODO: Support OnShowContextMenu, OnKeyDown, OnScriptError, OnShowHelpRequest'} {if web <> nil then begin web.OnShowContextMenu := webShowContextMenu; web.OnKeyDown := webKeyDown; web.OnScriptError := webScriptError; web.OnShowHelpRequest := webShowHelpRequest; - web.OnDocumentComplete := webDocumentComplete; - web.OnBeforeNavigate2 := webBeforeNavigate2; - web.OnNewWindow3 := webNewWindow3; end;} end; procedure TWebBrowserManager.RemoveWebHooks; begin + if cef <> nil then + begin + cef.OnBeforeBrowse := nil; + cef.OnLoadEnd := nil; + end; {if web <> nil then begin web.OnShowContextMenu := nil; @@ -207,64 +216,6 @@ begin end;} end; -{procedure TWebBrowserManager.webBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -var - params: TStringList; -begin - if GetParamsFromURL(URL, params) then - begin - PostMessage(FSafeWndHandle, WM_USER_FireCommand, 0, Integer(params)); - Cancel := True; - end; -end;} - -{procedure TWebBrowserManager.webDocumentComplete(ASender: TObject; - const pDisp: IDispatch; var URL: OleVariant); -var - doc2: IHTMLDocument2; - doc3: IHTMLDocument3; - elem: IHTMLElement; -begin - try - if Assigned(web.Document) then - begin - doc2 := (web.Document as IHTMLDocument2); - doc3 := (web.Document as IHTMLDocument3); - - if Assigned(FOnSetTitle) then - FOnSetTitle(Self, doc2.title); - - if Assigned(FOnResize) then - begin - elem := doc3.getElementById('size'); - if Assigned(elem) then - FOnResize(Self, elem.offsetWidth, elem.offsetHeight); - end; - - // NOTE: The  , or some other visible HTML, is required. Internet Explorer will not - // parse and recognize the script block without some visual HTML to - // accompany it. - end; - except - Exit; - end; - DeleteXMLFiles; // I4181 -end;} - -{procedure TWebBrowserManager.webNewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); -var - params: TStringList; -begin - Cancel := True; - if GetParamsFromURL(bstrURL, params) - then PostMessage(FSafeWndHandle, WM_USER_FireCommand, 0, Integer(params)) - else web.Go(bstrURL); -end;} - {procedure TWebBrowserManager.webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; Shift: TShiftState); begin @@ -299,6 +250,57 @@ begin Result := S_OK; end;} +procedure TWebBrowserManager.cefBeforeBrowse(Sender: TObject; const Url, + command: string; params: TStringList; wasHandled: Boolean); +begin + if command <> '' then + begin + FireCommand(command, params); + end; +end; + +{procedure TWebBrowserManager.webBeforeNavigate2(ASender: TObject; + const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, + Headers: OleVariant; var Cancel: WordBool); +var + params: TStringList; +begin + if GetParamsFromURL(URL, params) then + begin + PostMessage(FSafeWndHandle, WM_USER_FireCommand, 0, Integer(params)); + Cancel := True; + end; +end;} + +{procedure TWebBrowserManager.webNewWindow3(ASender: TObject; + var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; + const bstrUrlContext, bstrUrl: WideString); +var + params: TStringList; +begin + Cancel := True; + if GetParamsFromURL(bstrURL, params) + then PostMessage(FSafeWndHandle, WM_USER_FireCommand, 0, Integer(params)) + else web.Go(bstrURL); +end;} + +procedure TWebBrowserManager.cefLoadEnd(Sender: TObject); +begin +{$MESSAGE HINT 'TODO: Support resizing; OnSetTitle'} +// if Assigned(FOnSetTitle) then +// FOnSetTitle(cef.Title); + DeleteXMLFiles; + +{ + if Assigned(FOnResize) then + begin + elem := doc3.getElementById('size'); + if Assigned(elem) then + FOnResize(Self, elem.offsetWidth, elem.offsetHeight); + end; +} +end; + procedure TWebBrowserManager.Content_Render(FRefreshKeyman: Boolean; const AdditionalData: WideString); begin DeleteXMLFiles; diff --git a/windows/src/global/delphi/general/KeymanPaths.pas b/windows/src/global/delphi/general/KeymanPaths.pas index 7642daf2b5..a1a0e5900e 100644 --- a/windows/src/global/delphi/general/KeymanPaths.pas +++ b/windows/src/global/delphi/general/KeymanPaths.pas @@ -13,6 +13,7 @@ type const S_CEF_DebugPath = 'Debug_CEFPath'; const S_CEF_EnvVar = 'KEYMAN_CEF4DELPHI_ROOT'; const S_CEF_SubFolder = 'cef\'; + const S_CEF_SubProcess = 'kmbrowserhost.exe'; public const S_KMShell = 'kmshell.exe'; const S_Xml_LocaleDef = 'xml\localedef.dtd'; @@ -31,6 +32,7 @@ type class function KeyboardsInstallDir: string; static; class function CEFPath: string; static; // Chromium Embedded Framework class function CEFDataPath(const RootFolder, mode: string): string; static; + class function CEFSubprocessPath: string; static; end; function GetFolderPath(csidl: Integer): string; @@ -143,6 +145,25 @@ begin end; end; +class function TKeymanPaths.CEFSubprocessPath: string; +begin + Result := KeymanEngineInstallPath(S_CEF_SubProcess); + if FileExists(Result) then Exit; + + Result := ExtractFilePath(ParamStr(0)) + S_CEF_SubProcess; + if FileExists(Result) then Exit; + + // Source repo, bin folder + Result := ExtractFilePath(ParamStr(0)) + '..\engine\' + S_CEF_SubProcess; + if FileExists(Result) then Exit; + + // Source repo, source folder + Result := ExtractFilePath(ParamStr(0)) + '..\kmbrowserhost\win32\debug\' + S_CEF_SubProcess; + if FileExists(Result) then Exit; + + Result := ExtractFilePath(ParamStr(0)) + '..\kmbrowserhost\win32\release\' + S_CEF_SubProcess; +end; + class function TKeymanPaths.CEFDataPath(const RootFolder, mode: string): string; begin Result := GetFolderPath(CSIDL_APPDATA) + RootFolder + '\browser\' + mode; diff --git a/windows/src/global/delphi/keyman_components.dpk b/windows/src/global/delphi/keyman_components.dpk index e8ddcb1769..faf767823e 100644 --- a/windows/src/global/delphi/keyman_components.dpk +++ b/windows/src/global/delphi/keyman_components.dpk @@ -58,7 +58,6 @@ contains PanelOverlapped in 'comp\PanelOverlapped.pas', StringGridEditControlled in 'comp\StringGridEditControlled.pas', BitmapEditor in 'comp\BitmapEditor.pas', - MSHTML_TLB in 'tlb\MSHTML_TLB.pas', FixedTrackbar in 'comp\FixedTrackbar.pas', KMDActions in 'comp\KMDActions.pas', WebBrowserFocusMonitor in 'comp\WebBrowserFocusMonitor.pas', diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index 2d5f499143..b2ff4c463d 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -27,7 +27,7 @@ 30 Jan 2009 - mcdurdin - I1829 - Close after a script error 29 Mar 2010 - mcdurdin - I2199 - Shift+click web browser 25 May 2010 - mcdurdin - I1694 - Select Keyman UI language rework - 17 Dec 2010 - mcdurdin - I2570 - Use new EmbeddedWB + 17 Dec 2010 - mcdurdin - I2570 - Use new E-mbeddedWB 18 Feb 2011 - mcdurdin - I2721 - Override Javascript-disabled security for web controls 28 Feb 2011 - mcdurdin - I2720 - Prevent Keyman Desktop splash from showing multiple copies (focus management for web browser) 18 Mar 2011 - mcdurdin - I2786 - Application title is sometimes incorrect @@ -65,7 +65,7 @@ type procedure DownloadUILanguages; procedure ContributeUILanguages; procedure cefLoadEnd(Sender: TObject); - procedure cefBeforeBrowse(Sender: TObject; const Url: string; + procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); // I4989 @@ -221,28 +221,23 @@ begin cef.OnLoadEnd := cefLoadEnd; end; -procedure TfrmWebContainer.cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); +procedure TfrmWebContainer.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); var aparams: TStringList; - command: string; + acommand: string; begin if ShouldProcessAllCommands then begin GetParamsFromURLEx(URL, aparams); - command := aparams[0]; + acommand := aparams[0]; aparams.Delete(0); - FireCommand(command, aparams); + FireCommand(acommand, aparams); aparams.Free; end else begin if params.Count > 0 then - begin - command := params[0]; - params.Delete(0); FireCommand(command, params); - params.Insert(0, command); {$MESSAGE HINT 'TODO: Refactor the ShouldProcessAllCommands code path'} // TODO: refactor - end; end; end; -- GitLab From 5739bfcac1b187c4cee03b58a51fe2e0eafc8159 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 9 Apr 2019 06:08:35 +0700 Subject: [PATCH 08/39] [Windows] Okay, this one builds --- windows/src/developer/TIKE/Tike.dproj | 2 -- .../developer/TIKE/main/UframeTextEditor.dfm | 4 +-- .../developer/TIKE/main/UframeTextEditor.pas | 7 ++-- windows/src/developer/TIKE/main/UfrmHelp.pas | 4 +-- .../oskbuilder/UframeTouchLayoutBuilder.pas | 7 ++-- ...eyman.Developer.UI.Project.UfrmProject.pas | 4 +-- .../engine/kmbrowserhost/kmbrowserhost.dpr | 4 ++- .../engine/kmbrowserhost/kmbrowserhost.dproj | 10 ++++-- .../engine/kmbrowserhost/kmbrowserhost.res | Bin 59436 -> 57708 bytes windows/src/engine/kmbrowserhost/manifest.rc | 1 + windows/src/engine/kmbrowserhost/manifest.xml | 28 ++++++++++++++++ windows/src/engine/kmbrowserhost/version.rc | 30 ++++++++++++++++++ .../chromium/Keyman.UI.UframeCEFHost.pas | 1 + .../src/global/delphi/keyman_components.dpk | 2 -- .../src/global/delphi/keyman_components.dproj | 3 -- .../src/global/delphi/ui/UfrmWebContainer.pas | 3 +- 16 files changed, 84 insertions(+), 26 deletions(-) create mode 100644 windows/src/engine/kmbrowserhost/manifest.rc create mode 100644 windows/src/engine/kmbrowserhost/manifest.xml create mode 100644 windows/src/engine/kmbrowserhost/version.rc diff --git a/windows/src/developer/TIKE/Tike.dproj b/windows/src/developer/TIKE/Tike.dproj index 20e9c15c26..4090b36f8a 100644 --- a/windows/src/developer/TIKE/Tike.dproj +++ b/windows/src/developer/TIKE/Tike.dproj @@ -212,7 +212,6 @@

frmVisualKeyboardImportKMX
-
frmRegressionTestFailure
@@ -443,7 +442,6 @@
- diff --git a/windows/src/developer/TIKE/main/UframeTextEditor.dfm b/windows/src/developer/TIKE/main/UframeTextEditor.dfm index cce7cb6656..d1e8e0f657 100644 --- a/windows/src/developer/TIKE/main/UframeTextEditor.dfm +++ b/windows/src/developer/TIKE/main/UframeTextEditor.dfm @@ -17,7 +17,7 @@ inherited frameTextEditor: TframeTextEditor Left = 394 Top = 58 Bitmap = { - 494C0101060009008C0010001000C0C0C000FE00FFFFFFFFFFFFFFFF424D3600 + 494C010106000900900010001000C0C0C000FE00FFFFFFFFFFFFFFFF424D3600 0000000000003600000028000000400000002000000001002000000000000020 000000000000000000000000000000000000C6C6C600C6C6C600C6C6C600C6C6 C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6C600C6C6 @@ -295,7 +295,7 @@ inherited frameTextEditor: TframeTextEditor Left = 618 Top = 26 Bitmap = { - 494C0101060009008C0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 + 494C010106000900900010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 0000000000003600000028000000400000002000000001002000000000000020 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 diff --git a/windows/src/developer/TIKE/main/UframeTextEditor.pas b/windows/src/developer/TIKE/main/UframeTextEditor.pas index 6950a03cb3..9b0e51da06 100644 --- a/windows/src/developer/TIKE/main/UframeTextEditor.pas +++ b/windows/src/developer/TIKE/main/UframeTextEditor.pas @@ -75,7 +75,7 @@ type function GetCodeFont: TFont; procedure SetTextFileFormat(const Value: TTextFileFormat); - procedure cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); + procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); procedure cefBeforeContextMenu(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; const model: ICefMenuModel); @@ -231,12 +231,11 @@ begin end; end; -procedure TframeTextEditor.cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); +procedure TframeTextEditor.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); begin AssertVclThread; - if (params.Count > 0) and (params[0] = 'command') then + if command = 'command' then begin - params.Delete(0); FireCommand(params); end; end; diff --git a/windows/src/developer/TIKE/main/UfrmHelp.pas b/windows/src/developer/TIKE/main/UfrmHelp.pas index ea905626a9..3d221b41e8 100644 --- a/windows/src/developer/TIKE/main/UfrmHelp.pas +++ b/windows/src/developer/TIKE/main/UfrmHelp.pas @@ -35,7 +35,7 @@ type // procedure AddUnmatchedContext(FormName, ControlName: string); // procedure DeleteMatchedContext(FormName, ControlName: string); procedure cefLoadEnd(Sender: TObject); - procedure cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); + procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); protected function GetHelpTopic: string; override; @@ -226,7 +226,7 @@ begin Result := SHelpTopic_Context_Help; end; -procedure TfrmHelp.cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); +procedure TfrmHelp.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); var frm: TTIKEForm; begin diff --git a/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas b/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas index b213ea1e25..5f69059191 100644 --- a/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas +++ b/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas @@ -88,7 +88,7 @@ type function GetFontInfo(Index: TKeyboardFont): TKeyboardFontInfo; // I4057 procedure SetFontInfo(Index: TKeyboardFont; const Value: TKeyboardFontInfo); // I4057 - procedure cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); + procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); procedure cefLoadEnd(Sender: TObject); procedure RegisterSource; procedure CharMapDragDrop(Sender, Source: TObject; X, Y: Integer); @@ -505,14 +505,13 @@ begin if Assigned(FOnImportFromOSKCommand) then FOnImportFromOSKCommand(Self); end; -procedure TframeTouchLayoutBuilder.cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); +procedure TframeTouchLayoutBuilder.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); begin if csDestroying in ComponentState then // I3983 Exit; - if (params.Count > 0) and (params[0] = 'command') then + if command = 'command' then begin - params.Delete(0); FireCommand(params); end; end; diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas index f7cb347dbf..9919bbea80 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas +++ b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas @@ -75,7 +75,7 @@ type cef: TframeCEFHost; procedure cefLoadEnd(Sender: TObject); - procedure cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); + procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); procedure ProjectRefresh(Sender: TObject); @@ -247,7 +247,7 @@ begin FreeAndNil(FNextCommandParams); end; -procedure TfrmProject.cefBeforeBrowse(Sender: TObject; const Url: string; params: TStringList; wasHandled: Boolean); +procedure TfrmProject.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); begin DoNavigate(Url); end; diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr b/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr index 079503e5cd..fa45d3c432 100644 --- a/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr +++ b/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr @@ -8,7 +8,9 @@ uses DebugPaths in '..\..\global\delphi\general\DebugPaths.pas', ErrorControlledRegistry in '..\..\global\delphi\vcl\ErrorControlledRegistry.pas'; -{$R *.res} +{R icons.res} +{$R version.res} +{$R manifest.res} begin FInitializeCEF := TCEFManager.Create(SFolderKeymanEngine); diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj b/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj index eb9c074824..1c538cb498 100644 --- a/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj +++ b/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj @@ -64,10 +64,10 @@ DBXSqliteDriver;bindcompdbx;IndyIPCommon;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;vclFireDAC;IndySystem;tethering;svnui;mbColorLibD10;dsnapcon;FireDACADSDriver;scFontCombo;DCPdelphi2009;FireDACMSAccDriver;fmxFireDAC;vclimg;Jcl;vcltouch;JvCore;vcldb;bindcompfmx;svn;FireDACPgDriver;inetdb;CEF4Delphi;DbxCommonDriver;fmx;fmxdae;xmlrtl;fmxobj;vclwinx;rtl;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;bindcomp;appanalytics;dsnap;IndyIPClient;bindcompvcl;EmbeddedWebBrowser_XE;VCLRESTComponents;dbxcds;VclSmp;JvDocking;adortl;JclVcl;vclie;bindengine;DBXMySQLDriver;dsnapxml;FireDACMySQLDriver;dbrtl;inetdbxpress;IndyProtocols;keyman_components;FireDACCommonODBC;fmxase;$(DCC_UsePackage) Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) Debug - true CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 1033 - $(BDS)\bin\default_app.manifest + (None) + true
DBXSqliteDriver;bindcompdbx;IndyIPCommon;DBXInterBaseDriver;vcl;IndyIPServer;vclactnband;vclFireDAC;IndySystem;tethering;dsnapcon;FireDACADSDriver;FireDACMSAccDriver;fmxFireDAC;vclimg;Jcl;vcltouch;vcldb;bindcompfmx;FireDACPgDriver;inetdb;DbxCommonDriver;fmx;fmxdae;xmlrtl;fmxobj;vclwinx;rtl;DbxClientDriver;CustomIPTransport;vcldsnap;dbexpress;IndyCore;vclx;bindcomp;appanalytics;dsnap;IndyIPClient;bindcompvcl;VCLRESTComponents;dbxcds;VclSmp;adortl;JclVcl;vclie;bindengine;DBXMySQLDriver;dsnapxml;FireDACMySQLDriver;dbrtl;inetdbxpress;IndyProtocols;FireDACCommonODBC;fmxase;$(DCC_UsePackage) @@ -84,6 +84,8 @@ false true true + true + 1033 false @@ -125,6 +127,10 @@ kmbrowserhost.dpr + + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components + diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.res b/windows/src/engine/kmbrowserhost/kmbrowserhost.res index e9803d8bf04c15bf40b6237a5207d87cf758631f..08809368b7fea2b42914f532e42f4aec5a661acd 100644 GIT binary patch delta 13 VcmZ2;f%(lL<_$UzC%<{_001;62b2H+ delta 1754 zcmbtVU5?a75T1xA(jf7k$BrL?9{+pnm1oh21ZfmjAngX8+wStNh3$6S?O8?$`4Bk( z7sx}-kP~nP-nj!*dp!0oVuS=5d1O~t*Z0-eU)dl3zw__=JO4fW(7pR*HY2my?9-=T z@%jnxW;1Ix|GB@xzxdJXvLIV%WGBBJ;;axAtc)E< z zaHyf;DEV$^;Sf;kLEsVpp!f#URjzhDsBT;BYCIW)bsb|2R;+|oXPh05Vlni!cr40N zRP?c^R3i#G?HFAUEG+$-R_ZoEq5p*4g?I&MlfaMsB=Bs{OViBe*_2tZ>at~*Nawx| zcA6d`bt6)cQZ(x(y~-7&s%`odb7CWe(BIKy&|!M zv~5tdQOySaZqbXtpEvn7FW?gTgW400$JIYx<3{bUr?7=$RF{xKKd%fXH`NwZX(kN_ zY4dfe8%F&zR!ErEhK4mtY>psbQi#o)bYpXDTMr(ZwMNe;d4cVGLx&Eh?^eE^!&7qa z?mWKfL>-vNzfpQ|1!VI(NuUtd1m{3c7f6D+M7DJ;8bvbEkikmiMUJlqLMhV1{X+)u zXXj+YSH>G~I?J{_e@SiM3#jL&K4pFe)UrYj04{ek>#bq-guVxVc^upIZ8uE1h*6(M zh@B;zhTw3@9M7{H$Il{{Y3%Q8JvA+44ugZR$A8h~t diff --git a/windows/src/engine/kmbrowserhost/manifest.rc b/windows/src/engine/kmbrowserhost/manifest.rc new file mode 100644 index 0000000000..984fce31b2 --- /dev/null +++ b/windows/src/engine/kmbrowserhost/manifest.rc @@ -0,0 +1 @@ +1 24 manifest.xml diff --git a/windows/src/engine/kmbrowserhost/manifest.xml b/windows/src/engine/kmbrowserhost/manifest.xml new file mode 100644 index 0000000000..d55646cd20 --- /dev/null +++ b/windows/src/engine/kmbrowserhost/manifest.xml @@ -0,0 +1,28 @@ + + + + Keyman Engine Browser Host Process + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/windows/src/engine/kmbrowserhost/version.rc b/windows/src/engine/kmbrowserhost/version.rc new file mode 100644 index 0000000000..e942d24cd4 --- /dev/null +++ b/windows/src/engine/kmbrowserhost/version.rc @@ -0,0 +1,30 @@ +1 VERSIONINFO + FILEVERSION 11,0,1500,0 + PRODUCTVERSION 11,0,1500,0 + FILEFLAGSMASK 0x3fL + FILEFLAGS 0x0L + FILEOS 0x4L + FILETYPE 0x2L + FILESUBTYPE 0x0L + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "0C0904E4" + BEGIN + VALUE "CompanyName", "SIL International\0" + VALUE "FileDescription", "Keyman Engine Browser Host Process\0" + VALUE "FileVersion", "11.0.1500.0\0" + VALUE "InternalName", "KEYMAN\0" + VALUE "LegalCopyright", " SIL International\0" + VALUE "LegalTrademarks", "\0" + VALUE "OriginalFilename", "KMBROWSERHOST.EXE\0" + VALUE "ProductName", "Keyman Engine\0" + VALUE "ProductVersion", "11.0.1500.0\0" + VALUE "Comments", "\0" + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0xc09, 1252 + END + END diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas index 5eb1e7da2a..2e2fc56ba6 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas @@ -158,6 +158,7 @@ type property ShouldOpenRemoteUrlsInBrowser: Boolean read FShouldOpenRemoteUrlsInBrowser write FShouldOpenRemoteUrlsInBrowser; property OnAfterCreated: TNotifyEvent read FOnAfterCreated write FOnAfterCreated; property OnBeforeBrowseSync: TCEFHostBeforeBrowseSyncEvent read FOnBeforeBrowseSync write FOnBeforeBrowseSync; + {$MESSAGE HINT 'TODO: Deunify OnBeforeBrowse for keyman: URLs as these follow a standard pattern'} property OnBeforeBrowse: TCEFHostBeforeBrowseEvent read FOnBeforeBrowse write FOnBeforeBrowse; property OnLoadEnd: TNotifyEvent read FOnLoadEnd write FOnLoadEnd; diff --git a/windows/src/global/delphi/keyman_components.dpk b/windows/src/global/delphi/keyman_components.dpk index faf767823e..7a3129185a 100644 --- a/windows/src/global/delphi/keyman_components.dpk +++ b/windows/src/global/delphi/keyman_components.dpk @@ -1,7 +1,6 @@ package keyman_components; {$R *.res} -{$R 'comp\WebBrowserFocusMonitor.dcr'} {$IFDEF IMPLICITBUILDING This IFDEF should not be used by users} {$ALIGN 8} {$ASSERTIONS ON} @@ -60,7 +59,6 @@ contains BitmapEditor in 'comp\BitmapEditor.pas', FixedTrackbar in 'comp\FixedTrackbar.pas', KMDActions in 'comp\KMDActions.pas', - WebBrowserFocusMonitor in 'comp\WebBrowserFocusMonitor.pas', CleartypeDrawCharacter in 'general\CleartypeDrawCharacter.pas', OnScreenKeyboard in 'comp\OnScreenKeyboard.pas', KMDActionInterfaces in '..\..\developer\TIKE\actions\KMDActionInterfaces.pas', diff --git a/windows/src/global/delphi/keyman_components.dproj b/windows/src/global/delphi/keyman_components.dproj index 0050e3f2bb..63bb82dddd 100644 --- a/windows/src/global/delphi/keyman_components.dproj +++ b/windows/src/global/delphi/keyman_components.dproj @@ -98,7 +98,6 @@ MainSource - @@ -126,10 +125,8 @@ - - diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index b2ff4c463d..42d0db3e8b 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -59,7 +59,7 @@ type FDialogName: WideString; FXMLRenderers: TXMLRenderers; FXMLFileName: TTempFile; - FNoMoreErrors: Boolean; // I4181 +// FNoMoreErrors: Boolean; // I4181 procedure WMUser_FormShown(var Message: TMessage); message WM_USER_FormShown; procedure WMUser_ContentRender(var Message: TMessage); message WM_USER_ContentRender; procedure DownloadUILanguages; @@ -244,7 +244,6 @@ end; procedure TfrmWebContainer.cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); var params: TStringList; - v: Boolean; begin AssertCefThread; if ShouldProcessAllCommands then -- GitLab From 1f60ab1ed64e2b9832e9531028ed0c3f7323a9d5 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 9 Apr 2019 06:38:23 +0700 Subject: [PATCH 09/39] [Windows] More implementation of Chromium events --- windows/src/desktop/kmshell/kmshell.res | Bin 7040 -> 7040 bytes .../keyman/viskbd/UfrmOSKFontHelper.pas | 45 +++++---- .../keyman/viskbd/UfrmOSKKeyboardUsage.pas | 45 +++++---- .../chromium/Keyman.UI.UframeCEFHost.dfm | 1 + .../chromium/Keyman.UI.UframeCEFHost.pas | 14 ++- .../global/delphi/comp/WebBrowserManager.pas | 92 ++++++++---------- .../src/global/delphi/ui/UfrmWebContainer.pas | 47 +++++---- 7 files changed, 135 insertions(+), 109 deletions(-) diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res index c23c724d1a6e458193296dc5abc822ea0313f68b..af47613100a58f783338b58688e925c193357494 100644 GIT binary patch delta 14 VcmZoLZ!n)w!u%$tZeuy8Gyp4V1&9Cu delta 14 VcmZoLZ!n)w!YmnBv$3308UQ6(1gHQ2 diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas index 8edffc0414..b404deddc3 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas @@ -56,6 +56,7 @@ type procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private + {$MESSAGE HINT 'TODO: Refactor to use TWebBrowserManager'} cef: TframeCEFHost; FXML: string; // I4181 FXMLFileName: TTempFile; // I4181 @@ -80,7 +81,8 @@ type procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); procedure cefLoadEnd(Sender: TObject); - { Private declarations } + procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); + procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); public { Public declarations } procedure SelectKeyboard(KeymanID: Integer); @@ -93,6 +95,8 @@ uses KLog, kmint, custinterfaces, + uCEFTypes, + uCEFConstants, UfrmKeyman7Main, UfrmVisualKeyboard, Unicode, @@ -137,22 +141,33 @@ begin FireCommand(command, params); end; +procedure TfrmOSKFontHelper.cefKeyEvent(Sender: TObject; + e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); +begin + if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then + begin + if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then + PostMessage(Handle, WM_USER_ContentRender, 0, 0) + else if e.event.windows_key_code = VK_F1 then + Application.HelpJump('context_'+lowercase(FDialogName)); + end; +end; + procedure TfrmOSKFontHelper.cefLoadEnd(Sender: TObject); begin FreeAndNil(FXMLFileName); // I4181 end; -{$MESSAGE HINT 'TODO: support Ctrl+F5'} -{procedure TfrmOSKFontHelper.webKeyDown(Sender: TObject; var Key: Word; - ScanCode: Word; Shift: TShiftState); +procedure TfrmOSKFontHelper.cefPreKeySyncEvent(Sender: TObject; + e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); begin - if (Key = VK_F5) and (ssCtrl in Shift) then - begin - Key := 0; - PostMessage(Handle, WM_USER_ContentRender, 0, 0); - end; -end;} + if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then + if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then + Handled := True + else if e.event.windows_key_code = VK_F1 then + Handled := True; +end; {$MESSAGE HINT 'TODO: Handle script errors'} {procedure TfrmOSKFontHelper.webScriptError(Sender: TObject; ErrorLine, @@ -172,14 +187,6 @@ begin //Result := S_FALSE; end;} -{$MESSAGE HINT 'TODO: Support context help'} -{function TfrmOSKFontHelper.webShowHelpRequest1(Sender: TObject; - HWND: NativeUInt; pszHelpFile: PWideChar; uCommand, dwData: Integer; - ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; -begin - Application.HelpJump('context_'+lowercase(FDialogName)); - Result := S_OK; -end;} procedure TfrmOSKFontHelper.WMUser_ContentRender(var Message: TMessage); begin @@ -267,6 +274,8 @@ begin cef.ShouldOpenRemoteUrlsInBrowser := True; cef.OnBeforeBrowse := cefBeforeBrowse; cef.OnLoadEnd := cefLoadEnd; + cef.OnKeyEvent := cefKeyEvent; + cef.OnPreKeySyncEvent := cefPreKeySyncEvent; end; procedure TfrmOSKFontHelper.FormDestroy(Sender: TObject); diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas index 62e4b2a60a..89ec866e48 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas @@ -48,6 +48,7 @@ type procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private + {$MESSAGE HINT 'TODO: Refactor to use TWebBrowserManager'} cef: TframeCEFHost; FLastActiveKeymanID: Integer; FXMLFileName: TTempFile; // I4181 @@ -71,6 +72,8 @@ type procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); procedure cefLoadEnd(Sender: TObject); + procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); + procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); { Private declarations } public { Public declarations } @@ -85,6 +88,8 @@ uses kmint, custinterfaces, StockFileNames, + uCEFTypes, + uCEFConstants, UfrmKeyman7Main, UfrmVisualKeyboard, Unicode, @@ -493,22 +498,33 @@ begin FireCommand(command, params); end; +procedure TfrmOSKKeyboardUsage.cefKeyEvent(Sender: TObject; + e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); +begin + if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then + begin + if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then + PostMessage(Handle, WM_USER_ContentRender, 0, 0) + else if e.event.windows_key_code = VK_F1 then + Application.HelpJump('context_'+lowercase(FDialogName)); + end; +end; + procedure TfrmOSKKeyboardUsage.cefLoadEnd(Sender: TObject); begin FreeAndNil(FXMLFileName); // I4181 frmKeyman7Main.frmVisualKeyboard.SetTopMost(True); // I4593 end; -{$MESSAGE HINT 'TODO: support Ctrl+F5'} -{procedure TfrmOSKKeyboardUsage.webKeyDown(Sender: TObject; var Key: Word; - ScanCode: Word; Shift: TShiftState); +procedure TfrmOSKKeyboardUsage.cefPreKeySyncEvent(Sender: TObject; + e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); begin - if (Key = VK_F5) and (ssCtrl in Shift) then - begin - Key := 0; - PostMessage(Handle, WM_USER_ContentRender, 0, 0); - end; -end;} + if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then + if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then + Handled := True + else if e.event.windows_key_code = VK_F1 then + Handled := True; +end; {$MESSAGE HINT 'TODO: Handle script errors'} {procedure TfrmOSKKeyboardUsage.webScriptError(Sender: TObject; ErrorLine, @@ -529,15 +545,6 @@ begin end; } -{$MESSAGE HINT 'TODO: Support context help'} -{function TfrmOSKKeyboardUsage.webShowHelpRequest1(Sender: TObject; - HWND: NativeUInt; pszHelpFile: PWideChar; uCommand, dwData: Integer; - ptMouse: TPoint; var pDispatchObjectHit: IDispatch): HRESULT; -begin - Application.HelpJump('context_'+lowercase(FDialogName)); - Result := S_OK; -end; -} procedure TfrmOSKKeyboardUsage.WMUser_ContentRender(var Message: TMessage); begin @@ -592,6 +599,8 @@ begin cef.ShouldOpenRemoteUrlsInBrowser := True; cef.OnBeforeBrowse := cefBeforeBrowse; cef.OnLoadEnd := cefLoadEnd; + cef.OnKeyEvent := cefKeyEvent; + cef.OnPreKeySyncEvent := cefPreKeySyncEvent; end; procedure TfrmOSKKeyboardUsage.FormDestroy(Sender: TObject); diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm index f050d81edd..21651ab8cd 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm @@ -44,6 +44,7 @@ object frameCEFHost: TframeCEFHost OnSetFocus = cefSetFocus OnRunContextMenu = cefRunContextMenu OnPreKeyEvent = cefPreKeyEvent + OnTitleChange = cefTitleChange OnConsoleMessage = cefConsoleMessage OnBeforePopup = cefBeforePopup OnAfterCreated = cefAfterCreated diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas index 2e2fc56ba6..7c1c677be2 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas @@ -62,6 +62,7 @@ type TCEFHostPreKeySyncEvent = procedure(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean) of object; TCEFHostKeyEvent = procedure(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean) of object; + TCEFHostTitleChangeEvent = procedure(Sender: TObject; const title: string) of object; TframeCEFHost = class(TForm, IKeymanCEFHost) tmrRefresh: TTimer; @@ -108,6 +109,8 @@ type procedure cefWidgetCompMsg(var aMessage: TMessage; var aHandled: Boolean); procedure cefSetFocus(Sender: TObject; const browser: ICefBrowser; source: TCefFocusSource; out Result: Boolean); + procedure cefTitleChange(Sender: TObject; const browser: ICefBrowser; + const title: ustring); private FApplicationHandle: THandle; FNextURL: string; @@ -123,6 +126,7 @@ type FOnPreKeySyncEvent: TCEFHostPreKeySyncEvent; FOnKeyEvent: TCEFHostKeyEvent; FOnBeforeBrowse: TCEFHostBeforeBrowseEvent; + FOnTitleChange: TCEFHostTitleChangeEvent; procedure CallbackWndProc(var Message: TMessage); @@ -161,7 +165,7 @@ type {$MESSAGE HINT 'TODO: Deunify OnBeforeBrowse for keyman: URLs as these follow a standard pattern'} property OnBeforeBrowse: TCEFHostBeforeBrowseEvent read FOnBeforeBrowse write FOnBeforeBrowse; property OnLoadEnd: TNotifyEvent read FOnLoadEnd write FOnLoadEnd; - + property OnTitleChange: TCEFHostTitleChangeEvent read FOnTitleChange write FOnTitleChange; property OnPreKeySyncEvent: TCEFHostPreKeySyncEvent read FOnPreKeySyncEvent write FOnPreKeySyncEvent; property OnKeyEvent: TCEFHostKeyEvent read FOnKeyEvent write FOnKeyEvent; end; @@ -637,6 +641,14 @@ begin Result := source = FOCUS_SOURCE_NAVIGATION; end; +procedure TframeCEFHost.cefTitleChange(Sender: TObject; + const browser: ICefBrowser; const title: ustring); +begin + AssertVclThread; + if Assigned(FOnTitleChange) then + FOnTitleChange(Self, title); +end; + procedure TframeCEFHost.WMEnterMenuLoop(var aMessage: TMessage); begin AssertVclThread; diff --git a/windows/src/global/delphi/comp/WebBrowserManager.pas b/windows/src/global/delphi/comp/WebBrowserManager.pas index de959bfd15..b683cdbe44 100644 --- a/windows/src/global/delphi/comp/WebBrowserManager.pas +++ b/windows/src/global/delphi/comp/WebBrowserManager.pas @@ -40,8 +40,6 @@ type TWebBrowserManager_ScriptErrorEvent = TNotifyEvent; - {$MESSAGE HINT 'TODO: implement TWebBrowserManager'} - TWebBrowserManager = class(TComponent) private cef: TframeCEFHost; @@ -65,7 +63,9 @@ type procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); procedure cefLoadEnd(Sender: TObject); - + procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); + procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); + procedure cefTitleChange(Sender: TObject; const title: string); protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; @@ -91,6 +91,8 @@ implementation uses Forms, SysUtils, + uCEFConstants, + uCEFTypes, utilhttp, utilsystem; @@ -186,14 +188,15 @@ begin begin cef.OnBeforeBrowse := cefBeforeBrowse; cef.OnLoadEnd := cefLoadEnd; + cef.OnKeyEvent := cefKeyEvent; + cef.OnPreKeySyncEvent := cefPreKeySyncEvent; + cef.OnTitleChange := cefTitleChange; end; - {$MESSAGE HINT 'TODO: Support OnShowContextMenu, OnKeyDown, OnScriptError, OnShowHelpRequest'} + {$MESSAGE HINT 'TODO: Support OnShowContextMenu, OnScriptError'} {if web <> nil then begin web.OnShowContextMenu := webShowContextMenu; - web.OnKeyDown := webKeyDown; web.OnScriptError := webScriptError; - web.OnShowHelpRequest := webShowHelpRequest; end;} end; @@ -203,29 +206,17 @@ begin begin cef.OnBeforeBrowse := nil; cef.OnLoadEnd := nil; + cef.OnKeyEvent := nil; + cef.OnPreKeySyncEvent := nil; + cef.OnTitleChange := nil; end; {if web <> nil then begin web.OnShowContextMenu := nil; - web.OnKeyDown := nil; web.OnScriptError := nil; - web.OnShowHelpRequest := nil; - web.OnDocumentComplete := nil; - web.OnBeforeNavigate2 := nil; - web.OnNewWindow3 := nil; end;} end; -{procedure TWebBrowserManager.webKeyDown(Sender: TObject; var Key: Word; - ScanCode: Word; Shift: TShiftState); -begin - if (Key = VK_F5) and (ssCtrl in Shift) then - begin - Key := 0; - PostMessage(FSafeWndHandle, WM_USER_ContentRender, 0, 0); - end; -end;} - {procedure TWebBrowserManager.webScriptError(Sender: TObject; ErrorLine, ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; var ScriptErrorAction: TScriptErrorAction); begin @@ -242,14 +233,6 @@ begin Result := S_OK; end;} -{function TWebBrowserManager.webShowHelpRequest(Sender: TObject; HWND: NativeUInt; - pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT; -begin - Application.HelpJump('context_'+lowercase(FDialogName)); - Result := S_OK; -end;} - procedure TWebBrowserManager.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); begin @@ -259,38 +242,43 @@ begin end; end; -{procedure TWebBrowserManager.webBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -var - params: TStringList; +procedure TWebBrowserManager.cefKeyEvent(Sender: TObject; + e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); begin - if GetParamsFromURL(URL, params) then + // VCL Thread + if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then begin - PostMessage(FSafeWndHandle, WM_USER_FireCommand, 0, Integer(params)); - Cancel := True; + if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then + PostMessage(FSafeWndHandle, WM_USER_ContentRender, 0, 0) + else if e.event.windows_key_code = VK_F1 then + Application.HelpJump('context_'+lowercase(FDialogName)); end; -end;} +end; -{procedure TWebBrowserManager.webNewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); -var - params: TStringList; +procedure TWebBrowserManager.cefPreKeySyncEvent(Sender: TObject; + e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); begin - Cancel := True; - if GetParamsFromURL(bstrURL, params) - then PostMessage(FSafeWndHandle, WM_USER_FireCommand, 0, Integer(params)) - else web.Go(bstrURL); -end;} + // CEF thread + Handled := False; + + if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then + if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then + Handled := True + else if e.event.windows_key_code = VK_F1 then + Handled := True; +end; + +procedure TWebBrowserManager.cefTitleChange(Sender: TObject; + const title: string); +begin + if Assigned(FOnSetTitle) then + FOnSetTitle(Self, title); +end; procedure TWebBrowserManager.cefLoadEnd(Sender: TObject); begin -{$MESSAGE HINT 'TODO: Support resizing; OnSetTitle'} -// if Assigned(FOnSetTitle) then -// FOnSetTitle(cef.Title); +{$MESSAGE HINT 'TODO: Support resizing'} DeleteXMLFiles; - { if Assigned(FOnResize) then begin diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index 42d0db3e8b..a8d60ee937 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -69,6 +69,8 @@ type params: TStringList; wasHandled: Boolean); procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); // I4989 + procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); + procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); protected cef: TframeCEFHost; @@ -110,6 +112,8 @@ uses ErrorControlledRegistry, ExternalExceptionHandler, kmint, + uCEFConstants, + uCEFTypes, UILanguages, UfrmScriptError, Upload_Settings, @@ -219,6 +223,8 @@ begin cef.OnBeforeBrowse := cefBeforeBrowse; cef.OnBeforeBrowseSync := cefBeforeBrowseSync; cef.OnLoadEnd := cefLoadEnd; + cef.OnKeyEvent := cefKeyEvent; + cef.OnPreKeySyncEvent := cefPreKeySyncEvent; end; procedure TfrmWebContainer.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); @@ -236,8 +242,7 @@ begin end else begin - if params.Count > 0 then - FireCommand(command, params); + FireCommand(command, params); end; end; @@ -256,6 +261,18 @@ begin Handled := False; end; +procedure TfrmWebContainer.cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; + wasShortcut, wasHandled: Boolean); +begin + if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then + begin + if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then + PostMessage(Handle, WM_USER_ContentRender, 0, 0) + else if e.event.windows_key_code = VK_F1 then + Application.HelpJump('context_'+lowercase(FDialogName)); + end; +end; + procedure TfrmWebContainer.TntFormDestroy(Sender: TObject); begin inherited; @@ -293,16 +310,15 @@ begin if ShouldSetAppTitle then Application.Title := Self.Caption; // I2786 end; -{$MESSAGE HINT 'TODO: Support VK_F5 key event'} -{procedure TfrmWebContainer.webKeyDown(Sender: TObject; var Key: Word; - ScanCode: Word; Shift: TShiftState); +procedure TfrmWebContainer.cefPreKeySyncEvent(Sender: TObject; + e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); begin - if (Key = VK_F5) and (ssCtrl in Shift) then - begin - Key := 0; - PostMessage(Handle, WM_USER_ContentRender, 0, 0); - end; -end;} + if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then + if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then + Handled := True + else if e.event.windows_key_code = VK_F1 then + Handled := True; +end; procedure TfrmWebContainer.DoResizeByContent; begin @@ -401,15 +417,6 @@ begin Result := S_OK; end;} -{$MESSAGE HINT 'TODO: Support context help'} -{function TfrmWebContainer.webShowHelpRequest1(Sender: TObject; HWND: NativeUInt; - pszHelpFile: PWideChar; uCommand, dwData: Integer; ptMouse: TPoint; - var pDispatchObjectHit: IDispatch): HRESULT; -begin - Application.HelpJump('context_'+lowercase(FDialogName)); - Result := S_OK; -end;} - procedure TfrmWebContainer.WMUser_ContentRender(var Message: TMessage); begin Do_Content_Render(True); -- GitLab From 9ab9b055487b523bd9756ea429af380b3216ea17 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 9 Apr 2019 11:36:17 +0700 Subject: [PATCH 10/39] [Windows] Further tidyup on TChromium integration --- .../kmshell/install/DownloadLocale.pas | 2 +- windows/src/engine/keyman/keyman.dproj | 5 +- .../engine/kmbrowserhost/kmbrowserhost.dpr | 2 +- .../engine/kmbrowserhost/kmbrowserhost.dproj | 1 + .../engine/kmbrowserhost/kmbrowserhost.res | Bin 57708 -> 57140 bytes windows/src/ext/cef4delphi.txt | 44 ++++++++++++++++ windows/src/ext/embeddedwb.txt | 49 ------------------ .../chromium/Keyman.System.CEFManager.pas | 11 +++- .../chromium/Keyman.UI.UframeCEFHost.pas | 35 +++++++++++-- 9 files changed, 91 insertions(+), 58 deletions(-) delete mode 100644 windows/src/ext/embeddedwb.txt diff --git a/windows/src/desktop/kmshell/install/DownloadLocale.pas b/windows/src/desktop/kmshell/install/DownloadLocale.pas index 92a1d20327..303377968a 100644 --- a/windows/src/desktop/kmshell/install/DownloadLocale.pas +++ b/windows/src/desktop/kmshell/install/DownloadLocale.pas @@ -49,7 +49,7 @@ uses GlobalProxySettings, VersionInfo, UfrmInstallKeyboard, - UfrmWebContainer, + UfrmWebContainer, // for FOnDownloadLocale utildir, RegistryKeys, SysUtils, diff --git a/windows/src/engine/keyman/keyman.dproj b/windows/src/engine/keyman/keyman.dproj index f23e354f3d..bd7770a4b2 100644 --- a/windows/src/engine/keyman/keyman.dproj +++ b/windows/src/engine/keyman/keyman.dproj @@ -318,9 +318,8 @@ - Microsoft Office 2000 Sample Automation Server Wrapper Components - Microsoft Office XP Sample Automation Server Wrapper Components - IP Abstraction Indy Implementation Design Time + Microsoft Office 2000 Sample Automation Server Wrapper Components + Microsoft Office XP Sample Automation Server Wrapper Components diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr b/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr index fa45d3c432..199855d97e 100644 --- a/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr +++ b/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr @@ -15,7 +15,7 @@ uses begin FInitializeCEF := TCEFManager.Create(SFolderKeymanEngine); try - FInitializeCEF.Start; + FInitializeCEF.StartSubProcess; finally FInitializeCEF.Free; end; diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj b/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj index 1c538cb498..0f4b62a8e8 100644 --- a/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj +++ b/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj @@ -96,6 +96,7 @@ true true + 1033 diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.res b/windows/src/engine/kmbrowserhost/kmbrowserhost.res index 08809368b7fea2b42914f532e42f4aec5a661acd..6876088a6648ed90b09c480197508e4404c57dbc 100644 GIT binary patch delta 13 VcmaEJhb*kYy`N+iA xk_&EtYvMn5wUyOIT*;n3wCU nil then @@ -643,10 +666,16 @@ end; procedure TframeCEFHost.cefTitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring); +var + p: PCEFTitleChangeEventData; begin - AssertVclThread; - if Assigned(FOnTitleChange) then - FOnTitleChange(Self, title); + AssertCefThread; + + p := AllocMem(SizeOf(TCEFTitleChangeEventData)); + p.browserid := browser.Identifier; + p.title := title; + + PostMessage(FCallbackWnd, CEF_TITLECHANGE, 0, LPARAM(p)); end; procedure TframeCEFHost.WMEnterMenuLoop(var aMessage: TMessage); -- GitLab From f4793297b63b85323d6361491fe7d1d3b78400a0 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Tue, 9 Apr 2019 21:19:55 +0700 Subject: [PATCH 11/39] [Windows] Refactor usage of cefBeforeBrowse and 'keyman:' urls --- windows/src/desktop/kmshell/kmshell.res | Bin 7040 -> 7040 bytes .../developer/TIKE/main/UframeTextEditor.pas | 6 +- windows/src/developer/TIKE/main/UfrmHelp.pas | 4 +- .../oskbuilder/UframeTouchLayoutBuilder.pas | 6 +- ...eyman.Developer.UI.Project.UfrmProject.pas | 78 ++++++------------ .../keyman/viskbd/UfrmOSKFontHelper.pas | 8 +- .../keyman/viskbd/UfrmOSKKeyboardUsage.pas | 7 +- .../chromium/Keyman.UI.UframeCEFHost.pas | 60 +++++++++++--- .../global/delphi/comp/WebBrowserManager.pas | 14 ++-- .../src/global/delphi/ui/UfrmWebContainer.pas | 17 ++-- 10 files changed, 102 insertions(+), 98 deletions(-) diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res index af47613100a58f783338b58688e925c193357494..310e5c6506699fce434e0671c97b9a60b5494a76 100644 GIT binary patch delta 13 UcmZoLZ!n)w!t{CB#xgEx04B->S^xk5 delta 13 UcmZoLZ!n)w!t^F)V;Pq;03|L32><{9 diff --git a/windows/src/developer/TIKE/main/UframeTextEditor.pas b/windows/src/developer/TIKE/main/UframeTextEditor.pas index 9b0e51da06..e6096504bf 100644 --- a/windows/src/developer/TIKE/main/UframeTextEditor.pas +++ b/windows/src/developer/TIKE/main/UframeTextEditor.pas @@ -75,7 +75,7 @@ type function GetCodeFont: TFont; procedure SetTextFileFormat(const Value: TTextFileFormat); - procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); + procedure cefCommand(Sender: TObject; const command: string; params: TStringList); procedure cefBeforeContextMenu(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const params: ICefContextMenuParams; const model: ICefMenuModel); @@ -231,7 +231,7 @@ begin end; end; -procedure TframeTextEditor.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); +procedure TframeTextEditor.cefCommand(Sender: TObject; const command: string; params: TStringList); begin AssertVclThread; if command = 'command' then @@ -311,7 +311,7 @@ begin cef.ShouldShowContextMenu := True; cef.Parent := Self; cef.Visible := True; - cef.OnBeforeBrowse := cefBeforeBrowse; + cef.OnCommand := cefCommand; cef.OnLoadEnd := cefLoadEnd; cef.cef.OnBeforeContextMenu := cefBeforeContextMenu; diff --git a/windows/src/developer/TIKE/main/UfrmHelp.pas b/windows/src/developer/TIKE/main/UfrmHelp.pas index 3d221b41e8..287b407c46 100644 --- a/windows/src/developer/TIKE/main/UfrmHelp.pas +++ b/windows/src/developer/TIKE/main/UfrmHelp.pas @@ -35,7 +35,7 @@ type // procedure AddUnmatchedContext(FormName, ControlName: string); // procedure DeleteMatchedContext(FormName, ControlName: string); procedure cefLoadEnd(Sender: TObject); - procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); + procedure cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); protected function GetHelpTopic: string; override; @@ -226,7 +226,7 @@ begin Result := SHelpTopic_Context_Help; end; -procedure TfrmHelp.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); +procedure TfrmHelp.cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); var frm: TTIKEForm; begin diff --git a/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas b/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas index 5f69059191..b8c0b6a2f7 100644 --- a/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas +++ b/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas @@ -88,7 +88,7 @@ type function GetFontInfo(Index: TKeyboardFont): TKeyboardFontInfo; // I4057 procedure SetFontInfo(Index: TKeyboardFont; const Value: TKeyboardFontInfo); // I4057 - procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); + procedure cefCommand(Sender: TObject; const command: string; params: TStringList); procedure cefLoadEnd(Sender: TObject); procedure RegisterSource; procedure CharMapDragDrop(Sender, Source: TObject; X, Y: Integer); @@ -218,7 +218,7 @@ begin cef := TframeCEFHost.Create(Self); cef.Parent := Self; cef.Visible := True; - cef.OnBeforeBrowse := cefBeforeBrowse; + cef.OnCommand := cefCommand; cef.OnLoadEnd := cefLoadEnd; SetupCharMapDrop; end; @@ -505,7 +505,7 @@ begin if Assigned(FOnImportFromOSKCommand) then FOnImportFromOSKCommand(Self); end; -procedure TframeTouchLayoutBuilder.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); +procedure TframeTouchLayoutBuilder.cefCommand(Sender: TObject; const command: string; params: TStringList); begin if csDestroying in ComponentState then // I3983 Exit; diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas index 9919bbea80..5210305a44 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas +++ b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmProject.pas @@ -75,8 +75,9 @@ type cef: TframeCEFHost; procedure cefLoadEnd(Sender: TObject); - procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); + procedure cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); + procedure cefCommand(Sender: TObject; const command: string; params: TStringList); procedure ProjectRefresh(Sender: TObject); procedure ProjectRefreshCaption(Sender: TObject); @@ -84,7 +85,6 @@ type procedure WebCommand(Command: WideString; Params: TStringList); procedure RefreshHTML; procedure EditFileExternal(FileName: WideString); - function DoNavigate(URL: string): Boolean; procedure ClearMessages; function ShouldHandleNavigation(URL: string): Boolean; protected @@ -182,6 +182,7 @@ begin cef.Visible := True; cef.OnBeforeBrowse := cefBeforeBrowse; cef.OnBeforeBrowseSync := cefBeforeBrowseSync; + cef.OnCommand := cefCommand; cef.OnLoadEnd := cefLoadEnd; RefreshHTML; end; @@ -247,9 +248,22 @@ begin FreeAndNil(FNextCommandParams); end; -procedure TfrmProject.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); +procedure TfrmProject.cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); +var + s: string; begin - DoNavigate(Url); + if Copy(URL, 1, 5) = 'help:' then + begin + s := URL; + Delete(s,1,5); + FNextCommand := LowerCase(s); + frmKeymanDeveloper.HelpTopic(LowerCase(s)); + end + else if not URL.StartsWith(modWebHttpServer.GetLocalhostURL) and (Copy(URL, 1, 4) = 'http') then + begin + FNextCommand := URL; + TUtilExecute.URL(URL); + end; end; procedure TfrmProject.cefBeforeBrowseSync(Sender: TObject; @@ -258,70 +272,26 @@ begin Handled := ShouldHandleNavigation(Url); end; -procedure TfrmProject.ClearMessages; +procedure TfrmProject.cefCommand(Sender: TObject; const command: string; params: TStringList); begin - frmMessages.Clear; + WebCommand(LowerCase(command), params); end; -function TfrmProject.ShouldHandleNavigation(URL: string): Boolean; +procedure TfrmProject.ClearMessages; begin - Result := False; - if Copy(URL, 1, 7) = 'keyman:' then - begin - Result := True; - end - else if Copy(URL, 1, 5) = 'help:' then - begin - Result := True; - end - else if not URL.StartsWith(modWebHttpServer.GetLocalhostURL) and (Copy(URL, 1, 4) = 'http') then - begin - Result := True; - end + frmMessages.Clear; end; -function TfrmProject.DoNavigate(URL: string): Boolean; -var - n: Integer; - s, command: WideString; - FCommandParams: TStringList; +function TfrmProject.ShouldHandleNavigation(URL: string): Boolean; begin Result := False; - if Copy(URL, 1, 7) = 'keyman:' then - begin - s := URL; - - FCommandParams := TStringList.Create; - try - Delete(s,1,7); - n := Pos('?',s); - if n > 0 then - begin - command := Copy(s,1,n-1); - DecodeAndSetParams(Copy(s,n+1,Length(s)), FCommandParams); - end - else - command := s; - - WebCommand(LowerCase(Command), FCommandParams); - finally - FCommandParams.Free; - end; - Result := True; - end - else if Copy(URL, 1, 5) = 'help:' then + if Copy(URL, 1, 5) = 'help:' then begin Result := True; - s := URL; - Delete(s,1,5); - FNextCommand := LowerCase(s); - frmKeymanDeveloper.HelpTopic(LowerCase(s)); end else if not URL.StartsWith(modWebHttpServer.GetLocalhostURL) and (Copy(URL, 1, 4) = 'http') then begin Result := True; - FNextCommand := URL; - TUtilExecute.URL(URL); end end; diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas index b404deddc3..85b4128b44 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas @@ -78,8 +78,7 @@ type procedure DisplayKeyboardFonts; procedure StartCheckingFonts(Keyboard: IKeymanKeyboardInstalled); procedure Do_Content_Render(const AXML: WideString); - procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; - params: TStringList; wasHandled: Boolean); + procedure cefCommand(Sender: TObject; const command: string; params: TStringList); procedure cefLoadEnd(Sender: TObject); procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); @@ -135,8 +134,7 @@ begin DisplayKeyboardFonts; // Displays default details end; -procedure TfrmOSKFontHelper.cefBeforeBrowse(Sender: TObject; const Url, - command: string; params: TStringList; wasHandled: Boolean); +procedure TfrmOSKFontHelper.cefCommand(Sender: TObject; const command: string; params: TStringList); begin FireCommand(command, params); end; @@ -272,7 +270,7 @@ begin cef.Parent := Self; cef.Visible := True; cef.ShouldOpenRemoteUrlsInBrowser := True; - cef.OnBeforeBrowse := cefBeforeBrowse; + cef.OnCommand := cefCommand; cef.OnLoadEnd := cefLoadEnd; cef.OnKeyEvent := cefKeyEvent; cef.OnPreKeySyncEvent := cefPreKeySyncEvent; diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas index 89ec866e48..c87e00afc7 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas @@ -69,8 +69,7 @@ type function GetAsyncShiftState: TExtShiftState; // I3214 // I3521 procedure do_keybd_event(bVk, bScan: Byte; dwFlags, dwExtraInfo: DWORD); // I3214 // I3521 procedure SendChars(const chars: string); - procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; - params: TStringList; wasHandled: Boolean); + procedure cefCommand(Sender: TObject; const command: string; params: TStringList); procedure cefLoadEnd(Sender: TObject); procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); @@ -493,7 +492,7 @@ begin SendInputString(hwnd, t); end; -procedure TfrmOSKKeyboardUsage.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); +procedure TfrmOSKKeyboardUsage.cefCommand(Sender: TObject; const command: string; params: TStringList); begin FireCommand(command, params); end; @@ -597,7 +596,7 @@ begin cef.Parent := Self; cef.Visible := True; cef.ShouldOpenRemoteUrlsInBrowser := True; - cef.OnBeforeBrowse := cefBeforeBrowse; + cef.OnCommand := cefCommand; cef.OnLoadEnd := cefLoadEnd; cef.OnKeyEvent := cefKeyEvent; cef.OnPreKeySyncEvent := cefPreKeySyncEvent; diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas index 684baca3cf..9b162d1519 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas @@ -39,6 +39,7 @@ const CEF_BEFOREBROWSE = WM_USER + 307; CEF_CONSOLEMESSAGE = WM_USER + 308; CEF_TITLECHANGE = WM_USER + 309; + CEF_COMMAND = WM_USER + 310; type TCEFHostKeyEventData = record @@ -66,7 +67,8 @@ type PCEFTitleChangeEventData = ^TCEFTitleChangeEventData; TCEFHostBeforeBrowseSyncEvent = procedure(Sender: TObject; const Url: string; out Handled: Boolean) of object; - TCEFHostBeforeBrowseEvent = procedure(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean) of object; + TCEFHostBeforeBrowseEvent = procedure(Sender: TObject; const Url: string; wasHandled: Boolean) of object; + TCEFCommandEvent = procedure(Sender: TObject; const command: string; params: TStringList) of object; TCEFHostPreKeySyncEvent = procedure(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean) of object; TCEFHostKeyEvent = procedure(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean) of object; @@ -135,6 +137,7 @@ type FOnKeyEvent: TCEFHostKeyEvent; FOnBeforeBrowse: TCEFHostBeforeBrowseEvent; FOnTitleChange: TCEFHostTitleChangeEvent; + FOnCommand: TCEFCommandEvent; procedure CallbackWndProc(var Message: TMessage); @@ -151,6 +154,7 @@ type procedure Handle_CEF_BEFOREBROWSE(var message: TMessage); procedure Handle_CEF_CONSOLEMESSAGE(var message: TMessage); procedure Handle_CEF_TITLECHANGE(var message: TMessage); + procedure Handle_CEF_COMMAND(var message: TMessage); // CEF: You have to handle this two messages to call NotifyMoveOrResizeStarted or some page elements will be misaligned. procedure WMMove(var aMessage : TWMMove); message WM_MOVE; @@ -171,7 +175,7 @@ type property ShouldOpenRemoteUrlsInBrowser: Boolean read FShouldOpenRemoteUrlsInBrowser write FShouldOpenRemoteUrlsInBrowser; property OnAfterCreated: TNotifyEvent read FOnAfterCreated write FOnAfterCreated; property OnBeforeBrowseSync: TCEFHostBeforeBrowseSyncEvent read FOnBeforeBrowseSync write FOnBeforeBrowseSync; - {$MESSAGE HINT 'TODO: Deunify OnBeforeBrowse for keyman: URLs as these follow a standard pattern'} + property OnCommand: TCEFCommandEvent read FOnCommand write FOnCommand; property OnBeforeBrowse: TCEFHostBeforeBrowseEvent read FOnBeforeBrowse write FOnBeforeBrowse; property OnLoadEnd: TNotifyEvent read FOnLoadEnd write FOnLoadEnd; property OnTitleChange: TCEFHostTitleChangeEvent read FOnTitleChange write FOnTitleChange; @@ -352,6 +356,7 @@ begin CEF_BEFOREBROWSE: Handle_CEF_BEFOREBROWSE(Message); CEF_CONSOLEMESSAGE: Handle_CEF_CONSOLEMESSAGE(Message); CEF_TITLECHANGE: Handle_CEF_TITLECHANGE(Message); + CEF_COMMAND: Handle_CEF_COMMAND(Message); end; if Self <> nil then @@ -391,7 +396,7 @@ end; procedure TframeCEFHost.Handle_CEF_BEFOREBROWSE(var message: TMessage); var params: TStringList; - command, url: string; + url: string; wasHandled, shouldOpenUrlIfNotHandled: Boolean; begin @@ -407,12 +412,7 @@ begin begin if Assigned(FOnBeforeBrowse) then begin - if params.Count > 0 then - begin - command := params[0]; - params.Delete(0); - FOnBeforeBrowse(Self, url, command, params, Boolean(message.WParam)); - end; + FOnBeforeBrowse(Self, url, Boolean(message.WParam)); end; if FShouldOpenRemoteUrlsInBrowser and (params.Count = 0) and not IsLocalURL(URL) then @@ -426,6 +426,24 @@ begin params.Free; end; +procedure TframeCEFHost.Handle_CEF_COMMAND(var message: TMessage); +var + params: TStringList; + command: string; +begin + AssertVclThread; + params := TStringList(message.LParam); + + if Assigned(FOnCommand) then + begin + command := params[0]; + params.Delete(0); + FOnCommand(Self, command, params); + end; + + params.Free; +end; + procedure TframeCEFHost.Handle_CEF_CONSOLEMESSAGE(var message: TMessage); var I: Integer; @@ -465,12 +483,32 @@ begin AssertCefThread; Handled := False; + if Assigned(FOnBeforeBrowseSync) then begin FOnBeforeBrowseSync(Self, url, Handled); end; - params := nil; + if not Handled and GetParamsFromURL(Url, params) then + begin + Handled := True; + // Use OnCommand for keyman: URLs + params.Insert(0, Url); + PostMessage(FCallbackWnd, CEF_COMMAND, 0, LPARAM(params)); + end + else + begin + // Use OnBeforeBrowse for other URLs + if not Handled and FShouldOpenRemoteUrlsInBrowser and not IsLocalURL(URL) then + Handled := True; + + params := TStringList.Create; + params.Insert(0, Url); + PostMessage(FCallbackWnd, CEF_BEFOREBROWSE, MAKELONG(WORD(Handled), WORD(ShouldOpenUrlIfNotHandled)), LPARAM(params)); + end; + + {params := nil; + if not Handled then Handled := GetParamsFromURL(Url, params); @@ -482,7 +520,7 @@ begin params.Insert(0, Url); - PostMessage(FCallbackWnd, CEF_BEFOREBROWSE, MAKELONG(WORD(Handled), WORD(ShouldOpenUrlIfNotHandled)), LPARAM(params)); + PostMessage(FCallbackWnd, CEF_BEFOREBROWSE, MAKELONG(WORD(Handled), WORD(ShouldOpenUrlIfNotHandled)), LPARAM(params));} end; procedure TframeCEFHost.cefBeforeClose(Sender: TObject; const browser: ICefBrowser); diff --git a/windows/src/global/delphi/comp/WebBrowserManager.pas b/windows/src/global/delphi/comp/WebBrowserManager.pas index b683cdbe44..b8f10bd62f 100644 --- a/windows/src/global/delphi/comp/WebBrowserManager.pas +++ b/windows/src/global/delphi/comp/WebBrowserManager.pas @@ -61,7 +61,7 @@ type procedure DeleteXMLFiles; procedure SetRenderTemplate(const Value: WideString); - procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); + procedure cefCommand(Sender: TObject; const command: string; params: TStringList); procedure cefLoadEnd(Sender: TObject); procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); @@ -186,7 +186,7 @@ procedure TWebBrowserManager.AddWebHooks; begin if cef <> nil then begin - cef.OnBeforeBrowse := cefBeforeBrowse; + cef.OnCommand := cefCommand; cef.OnLoadEnd := cefLoadEnd; cef.OnKeyEvent := cefKeyEvent; cef.OnPreKeySyncEvent := cefPreKeySyncEvent; @@ -204,7 +204,7 @@ procedure TWebBrowserManager.RemoveWebHooks; begin if cef <> nil then begin - cef.OnBeforeBrowse := nil; + cef.OnCommand := nil; cef.OnLoadEnd := nil; cef.OnKeyEvent := nil; cef.OnPreKeySyncEvent := nil; @@ -233,13 +233,9 @@ begin Result := S_OK; end;} -procedure TWebBrowserManager.cefBeforeBrowse(Sender: TObject; const Url, - command: string; params: TStringList; wasHandled: Boolean); +procedure TWebBrowserManager.cefCommand(Sender: TObject; const command: string; params: TStringList); begin - if command <> '' then - begin - FireCommand(command, params); - end; + FireCommand(command, params); end; procedure TWebBrowserManager.cefKeyEvent(Sender: TObject; diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index a8d60ee937..692f9c419e 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -65,12 +65,13 @@ type procedure DownloadUILanguages; procedure ContributeUILanguages; procedure cefLoadEnd(Sender: TObject); - procedure cefBeforeBrowse(Sender: TObject; const Url, command: string; - params: TStringList; wasHandled: Boolean); + procedure cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); // I4989 procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); + procedure cefCommand(Sender: TObject; const command: string; + params: TStringList); protected cef: TframeCEFHost; @@ -222,12 +223,13 @@ begin cef.ShouldOpenRemoteUrlsInBrowser := True; cef.OnBeforeBrowse := cefBeforeBrowse; cef.OnBeforeBrowseSync := cefBeforeBrowseSync; + cef.OnCommand := cefCommand; cef.OnLoadEnd := cefLoadEnd; cef.OnKeyEvent := cefKeyEvent; cef.OnPreKeySyncEvent := cefPreKeySyncEvent; end; -procedure TfrmWebContainer.cefBeforeBrowse(Sender: TObject; const Url, command: string; params: TStringList; wasHandled: Boolean); +procedure TfrmWebContainer.cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); var aparams: TStringList; acommand: string; @@ -239,13 +241,14 @@ begin aparams.Delete(0); FireCommand(acommand, aparams); aparams.Free; - end - else - begin - FireCommand(command, params); end; end; +procedure TfrmWebContainer.cefCommand(Sender: TObject; const command: string; params: TStringList); +begin + FireCommand(command, params); +end; + procedure TfrmWebContainer.cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); var params: TStringList; -- GitLab From 46049802aa52ec8cad5f39598bcceaa9566ea784 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 10 Apr 2019 13:58:40 +0700 Subject: [PATCH 12/39] [Windows] More chromium integration; tsysinfo --- windows/src/desktop/kmshell/kmshell.res | Bin 7040 -> 7040 bytes windows/src/desktop/kmshell/main/UfrmHTML.pas | 14 ++-- .../kmshell/startup/help/UfrmTextEditor.pas | 70 ++++-------------- windows/src/engine/tsysinfo/sysinfo_main.pas | 4 +- windows/src/engine/tsysinfo/tsysinfo.dpr | 20 ++++- windows/src/engine/tsysinfo/tsysinfo.dproj | 3 - windows/src/ext/cef4delphi.txt | 8 +- .../global/delphi/comp/WebBrowserManager.pas | 11 --- 8 files changed, 44 insertions(+), 86 deletions(-) diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res index 310e5c6506699fce434e0671c97b9a60b5494a76..71c4dc0a98c86b615cc2f4531b11c21ac50c8f0d 100644 GIT binary patch delta 14 VcmZoLZ!n)w!o1{Q{l;=mX#gwL1*QN1 delta 14 VcmZoLZ!n)w!u)wz-NtfGX#g!(1=#=q diff --git a/windows/src/desktop/kmshell/main/UfrmHTML.pas b/windows/src/desktop/kmshell/main/UfrmHTML.pas index 2a1141ece6..ba6389c97b 100644 --- a/windows/src/desktop/kmshell/main/UfrmHTML.pas +++ b/windows/src/desktop/kmshell/main/UfrmHTML.pas @@ -46,14 +46,9 @@ type procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); procedure cmdPrintClick(Sender: TObject); - procedure webNewWindow3(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, - bstrUrl: WideString); procedure cmdBackClick(Sender: TObject); procedure cmdForwardClick(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState); procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); private cef: TframeCEFHost; @@ -99,21 +94,21 @@ begin cmdBack.Enabled := Enable; end;} -procedure TfrmHTML.webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; +{procedure TfrmHTML.webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; Shift: TShiftState); begin inherited; if Key = VK_ESCAPE then Close; -end; +end;} -procedure TfrmHTML.webNewWindow3(ASender: TObject; var ppDisp: IDispatch; +{procedure TfrmHTML.webNewWindow3(ASender: TObject; var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, bstrUrl: WideString); begin Cancel := True; TUtilExecute.URL(bstrUrl); // I3349 -end; +end;} procedure TfrmHTML.SetText(const Value: string); var @@ -177,6 +172,7 @@ begin cef.Parent := Self; cef.Visible := True; cef.ShouldOpenRemoteUrlsInBrowser := True; + // cef.OnBeforeBrowse := cefBeforeBrowse; // cef.OnBeforeBrowseSync := cefBeforeBrowseSync; // cef.OnLoadEnd := cefLoadEnd; diff --git a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas index fa405dfd17..3e14bf1f89 100644 --- a/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas +++ b/windows/src/desktop/kmshell/startup/help/UfrmTextEditor.pas @@ -1,4 +1,4 @@ -(* +(* r Name: UfrmTextEditor Copyright: Copyright (C) SIL International. Documentation: @@ -138,18 +138,12 @@ type procedure editorKeymanSelectLang(Sender: TObject); procedure editorKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure webBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean); procedure Help2Click(Sender: TObject); - procedure webNewWindow3(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, - bstrUrl: WideString); procedure mnuViewFontHelperClick(Sender: TObject); procedure editorKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private - webFonts: TframeCEFHost; + cefFonts: TframeCEFHost; wm_keyman_control, wm_keyman_refresh: UINT; FUpdating: Boolean; FCheckFontsThread: TCheckFontsThread; @@ -160,7 +154,6 @@ type procedure CMFontChange(var Message: TMessage); message CM_FONTCHANGE; procedure WMUserFormShown(var Message: TMessage); message WM_USER_FormShown; - procedure WMUserFireCommand(var Message: TMessage); message WM_USER_FireCommand; procedure WMUserCheckFonts(var Message: TMessage); message WM_USER_CheckFonts; procedure PostKeymanControlMessage(msg, wParam: UINT; lParam: Cardinal); {function SendKeymanControlMessage(msg, wParam: UINT; @@ -183,6 +176,8 @@ type procedure FireCommand(const command: WideString; params: TStringList); procedure ResetAutoKeyboard; procedure StartCheckFontsThread; + procedure cefCommand(Sender: TObject; const command: string; + params: TStringList); protected class function ShouldRegisterWindow: Boolean; override; // I2720 public @@ -264,7 +259,11 @@ begin StartCheckFontsThread; HideFontsBox; - {$MESSAGE HINT 'TODO: Support font box'} + cefFonts := TframeCEFHost.Create(Self); + cefFonts.Parent := Self; + cefFonts.Visible := True; + cefFonts.ShouldOpenRemoteUrlsInBrowser := True; + cefFonts.OnCommand := cefCommand; FormCreate_Editor; end; @@ -464,18 +463,6 @@ begin CheckKeyboardFonts(True); end; -procedure TfrmTextEditor.WMUserFireCommand(var Message: TMessage); -var - command: WideString; - params: TStringList; -begin - params := TStringList(Message.LParam); - command := params[0]; - params.Delete(0); - FireCommand(command, params); - params.Free; -end; - procedure TfrmTextEditor.WMUserFormShown(var Message: TMessage); begin CheckKeyboardFonts(False); @@ -590,7 +577,7 @@ begin if (lang = nil) or (lang.KeymanKeyboardLanguage = nil) then begin FreeAndNil(FFontWebFileName); // I4181 - FFontWebFileName := LoadWebBox(webFonts, 'welcome_fonts', ''); // I4181 + FFontWebFileName := LoadWebBox(cefFonts, 'welcome_fonts', ''); // I4181 //HideFontsBox; Exit; end; @@ -601,7 +588,7 @@ begin if not Assigned(FKeyboard) then begin FreeAndNil(FFontWebFileName); // I4181 - FFontWebFileName := LoadWebBox(webFonts, 'welcome_fonts', ''); // I1534 - show hint for non-Unicode keyboards // I4181 + FFontWebFileName := LoadWebBox(cefFonts, 'welcome_fonts', ''); // I1534 - show hint for non-Unicode keyboards // I4181 Exit; end; @@ -624,7 +611,7 @@ begin FFontsData := FFontsData + ''; FreeAndNil(FFontWebFileName); // I4181 - FFontWebFileName := LoadWebBox(webFonts, 'welcome_fonts', FFontsData); // I4181 + FFontWebFileName := LoadWebBox(cefFonts, 'welcome_fonts', FFontsData); // I4181 if (FKeyboard.Fonts.Count > 0) and FSetFont then CurrText.Name := FKeyboard.Fonts[0].FontName; @@ -795,36 +782,9 @@ begin StatusBar.Panels[0].Text := Format(sColRowInfo, [CharPos.Y, CharPos.X]); end; -procedure TfrmTextEditor.webBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -var - params: TStringList; -begin - if GetParamsFromURL(URL, params) then - begin - PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)); - Cancel := True; - end; -end; - -{$MESSAGE HINT 'TODO: Handle new window event from font frame'} -procedure TfrmTextEditor.webNewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); -var - params: TStringList; +procedure TfrmTextEditor.cefCommand(Sender: TObject; const command: string; params: TStringList); begin - if GetParamsFromURL(bstrUrl, params) then - begin - PostMessage(Handle, WM_USER_FireCommand, 0, Integer(params)); - Cancel := True; - end - else - begin - Cancel := True; - (ASender as TframeCEFHost).Navigate(bstrUrl); - end; + FireCommand(command, params); end; procedure TfrmTextEditor.FormShow_Editor; @@ -868,7 +828,7 @@ var begin if command = 'selectfont' then begin - webFonts.SetFocus; + cefFonts.SetFocus; if editor.CanFocus then // I1641 editor.SetFocus; CurrText.Name := params.Values['font']; diff --git a/windows/src/engine/tsysinfo/sysinfo_main.pas b/windows/src/engine/tsysinfo/sysinfo_main.pas index 3de0a597be..a3897cf49c 100644 --- a/windows/src/engine/tsysinfo/sysinfo_main.pas +++ b/windows/src/engine/tsysinfo/sysinfo_main.pas @@ -442,8 +442,8 @@ begin begin si := FSIList[i]; web := TframeCEFHost.Create(si.Parent); - // web.Parent := si.Parent as TWinControl; - (si.Parent as TWinControl).InsertControl(web); + web.Parent := si.Parent as TWinControl; + //(si.Parent as TWinControl).InsertControl(web); (si.Parent as TTabSheet).Caption := si.Caption; (si.Parent as TTabSheet).TabVisible := True; web.Align := alClient; diff --git a/windows/src/engine/tsysinfo/tsysinfo.dpr b/windows/src/engine/tsysinfo/tsysinfo.dpr index bda5d4cfdb..061a72ea44 100644 --- a/windows/src/engine/tsysinfo/tsysinfo.dpr +++ b/windows/src/engine/tsysinfo/tsysinfo.dpr @@ -63,8 +63,20 @@ uses {$R version.res} begin - Application.Title := 'Keyman Desktop System Information'; - Application.Initialize; - Application.CreateForm(TfrmDiagnostics, frmDiagnostics); - Application.Run; + FInitializeCEF := TCEFManager.Create(SFolderKeymanEngine); + try + try + if FInitializeCEF.Start then + begin + Application.Title := 'Keyman Desktop System Information'; + Application.Initialize; + Application.CreateForm(TfrmDiagnostics, frmDiagnostics); + Application.Run; + end; + finally + frmDiagnostics.Free; + end; + finally + FInitializeCEF.Free; + end; end. diff --git a/windows/src/engine/tsysinfo/tsysinfo.dproj b/windows/src/engine/tsysinfo/tsysinfo.dproj index 56bad35cfd..42ca3550d3 100644 --- a/windows/src/engine/tsysinfo/tsysinfo.dproj +++ b/windows/src/engine/tsysinfo/tsysinfo.dproj @@ -125,7 +125,6 @@ tsysinfo_Icon1.ico - -c c:\temp\exception-10472-2017-03-20-19-47-10.log CompanyName=;FileVersion=5.0.0.26;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) 1033 Debug @@ -170,7 +169,6 @@ - @@ -197,7 +195,6 @@ - diff --git a/windows/src/ext/cef4delphi.txt b/windows/src/ext/cef4delphi.txt index c7d38865fa..4d1a3a5358 100644 --- a/windows/src/ext/cef4delphi.txt +++ b/windows/src/ext/cef4delphi.txt @@ -45,6 +45,7 @@ Keyman Desktop from TEmbeddedWB to TCEF4Delphi. It may not be up to date. cef / cefwp: UframeCEFHost (TframeCEFHost) + {Kmshell, Developer, Keyman, Tsysinfo} Kmshell UfrmHTML () @@ -70,7 +71,7 @@ Developer Keyman UfrmOSKFontHelper UfrmOSKKeyboardUsage - UfrmVisualKeyboard [WebHintManager] + UfrmVisualKeyboard [*WebHintManager from global] UfrmWebContainer [*from global] UfrmHelp UfrmHint [*from global] @@ -80,5 +81,8 @@ Tsysinfo Global WebBrowserManager [*] + {Keyman} UfrmWebContainer [*] - {Keyman, KMShell} + {Keyman, KMShell} + UfrmHint [*] + {Keyman, KMShell} diff --git a/windows/src/global/delphi/comp/WebBrowserManager.pas b/windows/src/global/delphi/comp/WebBrowserManager.pas index b8f10bd62f..7055d58149 100644 --- a/windows/src/global/delphi/comp/WebBrowserManager.pas +++ b/windows/src/global/delphi/comp/WebBrowserManager.pas @@ -134,20 +134,9 @@ begin end; procedure TWebBrowserManager.SafeWndProc(var Message: TMessage); -var - command: WideString; - params: TStringList; begin with Message do case Msg of - WM_USER_FireCommand: - begin - params := TStringList(Message.LParam); - command := params[0]; - params.Delete(0); - FireCommand(command, params); - params.Free; - end; WM_USER_ContentRender: Content_Render; else -- GitLab From a8cedf0c5d33d92db36e53122c7cacbaabaa790f Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Wed, 10 Apr 2019 14:06:52 +0700 Subject: [PATCH 13/39] [Windows] Add CEF to engine installer --- windows/src/engine/inst/Makefile | 5 ++++- windows/src/engine/inst/download.in | 21 +++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/windows/src/engine/inst/Makefile b/windows/src/engine/inst/Makefile index 0be8e7661c..f03af726e3 100644 --- a/windows/src/engine/inst/Makefile +++ b/windows/src/engine/inst/Makefile @@ -6,6 +6,8 @@ # ---------------------------------------------------------------------- +ENGINE_FILES=keymanengine.wixobj components.wixobj cef.wixobj + setup: msm copy build: @@ -35,7 +37,7 @@ msm: $(MAKE) -fdownload.mak candle # warning 1072 relates to Error table defined by WixUtilExtension. Doesn't really affect us. - $(WIXLIGHT) -sw1072 -ext WixUtilExtension keymanengine.wixobj components.wixobj -o keymanengine.msm + $(WIXLIGHT) -sw1072 -ext WixUtilExtension $(ENGINE_FILES) -o keymanengine.msm copy: # @@ -62,6 +64,7 @@ clean: -del /Q *.msm -del /Q *.wixobj -del /Q *.wixpdb + -del /Q cef.wxs install: rem nothing diff --git a/windows/src/engine/inst/download.in b/windows/src/engine/inst/download.in index c6d7695cb5..6bf70c2d93 100644 --- a/windows/src/engine/inst/download.in +++ b/windows/src/engine/inst/download.in @@ -4,6 +4,13 @@ !include ..\..\defines.mak +# It would be good to have a single merge module for CEF but it's not critical +# as we will end up using the CEF from Keyman Engine in Keyman Developer + +# We use different directories so that heat generates +# different identifiers for the various folders +KEYMAN_WIX_TEMP_CEF=$(TEMP)\keyman_wix_build\cef + default: echo Please don't call this file directly -- used by Makefile @@ -16,6 +23,16 @@ prepareredist: clean: rem - -candle: + +heat-cef: + # We copy the files to a temp folder in order to exclude .git and README.md from harvesting + -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) + mkdir $(KEYMAN_WIX_TEMP_CEF) + xcopy $(KEYMAN_CEF4DELPHI_ROOT)\* $(KEYMAN_WIX_TEMP_CEF)\ /s + $(WIXHEAT) dir $(KEYMAN_WIX_TEMP_CEF) -o cef.wxs -ag -cg CEF -dr INSTALLDIR -var var.CefSourceDir -wx -nologo + # When we candle/light build, we can grab the source files from the proper root so go ahead and delete the temp folder again + -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) + +candle: heat-cef $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -ext WixUtilExtension keymanengine.wxs components.wxs + $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs -- GitLab From 0c123051890c8fa94258c36b526c4a705ea86142 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Thu, 11 Apr 2019 14:01:14 +0700 Subject: [PATCH 14/39] [Windows] CEF installation and resizing of window from document --- windows/src/desktop/history.md | 10 +++ windows/src/desktop/kmshell/kmshell.dpr | 2 +- windows/src/desktop/kmshell/kmshell.dproj | 9 +- windows/src/desktop/kmshell/kmshell.res | Bin 7040 -> 7040 bytes windows/src/desktop/setup/bootstrapmain.pas | 27 ------ windows/src/developer/TIKE/Tike.dpr | 6 +- windows/src/developer/history.md | 9 ++ windows/src/engine/inst/components.wxs | 4 + windows/src/engine/inst/keymanengine.wxs | 3 +- windows/src/engine/keyman/main.pas | 2 +- .../engine/kmbrowserhost/kmbrowserhost.dpr | 2 +- .../engine/kmbrowserhost/kmbrowserhost.res | Bin 57140 -> 57708 bytes windows/src/engine/tsysinfo/tsysinfo.dpr | 2 +- .../chromium/Keyman.System.CEFManager.pas | 83 ++++++++++++++++-- .../chromium/Keyman.UI.UframeCEFHost.dfm | 1 + .../chromium/Keyman.UI.UframeCEFHost.pas | 33 ++++++- .../global/delphi/comp/WebBrowserManager.pas | 16 ++-- .../src/global/delphi/general/KeymanPaths.pas | 14 +-- .../global/delphi/general/RegistryKeys.pas | 1 + .../src/global/delphi/ui/UfrmWebContainer.pas | 43 +++------ 20 files changed, 175 insertions(+), 92 deletions(-) diff --git a/windows/src/desktop/history.md b/windows/src/desktop/history.md index bdf8a51a3e..83f3152207 100644 --- a/windows/src/desktop/history.md +++ b/windows/src/desktop/history.md @@ -2,6 +2,16 @@ ## 12.0 alpha * Started work on Keyman Desktop 12. +* Removed depencency on legacy Internet Explorer components; integrate Chromium. + +## 2019-04-06 11.0.1353.0 stable +* No changes + +## 2019-02-27 11.0.1352.0 stable +* No changes + +## 2019-02-26 11.0.1351.0 stable +* Not released ## 2019-02-25 11.0.1350.0 stable * 11.0 Stable release diff --git a/windows/src/desktop/kmshell/kmshell.dpr b/windows/src/desktop/kmshell/kmshell.dpr index 13a9f2c646..f1be5a08c4 100644 --- a/windows/src/desktop/kmshell/kmshell.dpr +++ b/windows/src/desktop/kmshell/kmshell.dpr @@ -163,7 +163,7 @@ uses begin CoInitFlags := COINIT_APARTMENTTHREADED; - FInitializeCEF := TCEFManager.Create(SFolderKeymanEngine); + FInitializeCEF := TCEFManager.Create; try if FInitializeCEF.Start then try diff --git a/windows/src/desktop/kmshell/kmshell.dproj b/windows/src/desktop/kmshell/kmshell.dproj index ded4c1938d..52242d902f 100644 --- a/windows/src/desktop/kmshell/kmshell.dproj +++ b/windows/src/desktop/kmshell/kmshell.dproj @@ -215,7 +215,6 @@ - @@ -391,15 +390,15 @@ true
- + - .\ + kmshell.exe true - + - kmshell.exe + .\ true diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res index 71c4dc0a98c86b615cc2f4531b11c21ac50c8f0d..63b72bffc8a7da9f8ab8a89ef12b5e594ee83285 100644 GIT binary patch delta 14 VcmZoLZ!n)w!pwH0VPiR`Gyo@>1q=WH delta 14 VcmZoLZ!n)w!o1{Q{l;=mX#gwL1*QN1 diff --git a/windows/src/desktop/setup/bootstrapmain.pas b/windows/src/desktop/setup/bootstrapmain.pas index c5dcc61fae..501b58d00b 100644 --- a/windows/src/desktop/setup/bootstrapmain.pas +++ b/windows/src/desktop/setup/bootstrapmain.pas @@ -110,8 +110,6 @@ uses Windows, SFX; -function CheckDependencies(FSilent: Boolean): Boolean; forward; // I4470 - var FNiceExitCodes: Boolean = False; @@ -406,9 +404,6 @@ BEGIN if CheckForOldVersionScenario then // I4460 Exit; - if not CheckDependencies(FSilent) then // I4470 - Exit; - with TfrmRunDesktop.Create(nil) do // I2562 try ContinueSetup := FContinueSetup; @@ -440,28 +435,6 @@ BEGIN end; end; -function CheckDependencies(FSilent: Boolean): Boolean; // I4470 -begin - Result := False; - - // Check Internet Explorer version - with TRegistryErrorControlled.Create do // I2890 - try - RootKey := HKEY_LOCAL_MACHINE; - if not OpenKeyReadOnly('Software\Microsoft\Internet Explorer') or not ValueExists('Version') or (ReadString('Version') < '9.0') then - begin - LogError(FInstallInfo.Text(ssQueryUpdateInternetExplorer)); - SetExitVal(ERROR_NOT_SUPPORTED); - Exit; - end; - finally - Free; - end; - - Result := True; -end; - - { TInstallInfo } constructor TInstallInfo.Create; diff --git a/windows/src/developer/TIKE/Tike.dpr b/windows/src/developer/TIKE/Tike.dpr index 5838b01237..978d206514 100644 --- a/windows/src/developer/TIKE/Tike.dpr +++ b/windows/src/developer/TIKE/Tike.dpr @@ -284,7 +284,7 @@ uses begin CoInitFlags := COINIT_APARTMENTTHREADED; - FInitializeCEF := TCEFManager.Create(SFolderKeymanDeveloper); + FInitializeCEF := TCEFManager.Create; try if FInitializeCEF.Start then begin @@ -297,8 +297,8 @@ begin if TikeActive then Exit; InitClasses; Application.CreateForm(TmodWebHttpServer, modWebHttpServer); - Application.CreateForm(TfrmKeymanDeveloper, frmKeymanDeveloper); - ShowStartup; + Application.CreateForm(TfrmKeymanDeveloper, frmKeymanDeveloper); + ShowStartup; Application.Run; end; finally diff --git a/windows/src/developer/history.md b/windows/src/developer/history.md index 5dc10bb059..6a98a5d537 100644 --- a/windows/src/developer/history.md +++ b/windows/src/developer/history.md @@ -3,6 +3,15 @@ ## 12.0 alpha * Started work on Keyman Developer 12. +## 2019-04-06 11.0.1353.0 stable +* Bug fix: For large keyboards, Keyman Developer would generate a .js file that Chrome was unable to parse (#1717) + +## 2019-02-27 11.0.1352.0 stable +* No changes + +## 2019-02-26 11.0.1351.0 stable +* Not released + ## 2019-02-25 11.0.1350.0 stable * 11.0 Stable release diff --git a/windows/src/engine/inst/components.wxs b/windows/src/engine/inst/components.wxs index 2da3bb342c..6ad395c2c1 100644 --- a/windows/src/engine/inst/components.wxs +++ b/windows/src/engine/inst/components.wxs @@ -108,6 +108,10 @@ + + + + diff --git a/windows/src/engine/inst/keymanengine.wxs b/windows/src/engine/inst/keymanengine.wxs index e52ed4e8b4..02a3283d5b 100644 --- a/windows/src/engine/inst/keymanengine.wxs +++ b/windows/src/engine/inst/keymanengine.wxs @@ -6,8 +6,9 @@ Manufacturer="SIL International" InstallerVersion="200" Platform="x86" Languages="1033" SummaryCodepage="1252" /> + - + diff --git a/windows/src/engine/keyman/main.pas b/windows/src/engine/keyman/main.pas index 3d20488807..0d2e78dc29 100644 --- a/windows/src/engine/keyman/main.pas +++ b/windows/src/engine/keyman/main.pas @@ -64,7 +64,7 @@ procedure RunProgram; forward; procedure Run; begin - FInitializeCEF := TCEFManager.Create(SFolderKeymanEngine); + FInitializeCEF := TCEFManager.Create; try if FInitializeCEF.Start then begin diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr b/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr index 199855d97e..be484515d1 100644 --- a/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr +++ b/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr @@ -13,7 +13,7 @@ uses {$R manifest.res} begin - FInitializeCEF := TCEFManager.Create(SFolderKeymanEngine); + FInitializeCEF := TCEFManager.Create; try FInitializeCEF.StartSubProcess; finally diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.res b/windows/src/engine/kmbrowserhost/kmbrowserhost.res index 6876088a6648ed90b09c480197508e4404c57dbc..08809368b7fea2b42914f532e42f4aec5a661acd 100644 GIT binary patch delta 585 zcmZvZu}T9$5Qe`?t}u;QSfr8^)}nBY5U@#vG%6+pJBgPw9wv9b*kYy`N+iA xk_&EtYvMn5wUyOIT*;n3wCU.Create; // You *MUST* call GlobalCEFApp.StartMainProcess in a if..then clause @@ -79,7 +91,7 @@ begin GlobalCEFApp.CheckCEFFiles := False; - GlobalCEFApp.LogSeverity := LOGSEVERITY_VERBOSE; + GlobalCEFApp.LogSeverity := LOGSEVERITY_ERROR; // We run in debug mode when TIKE debug mode flag is set, so that we can // debug the CEF interactions more easily @@ -93,10 +105,13 @@ begin GlobalCEFApp.ResourcesDirPath := GlobalCEFApp.FrameworkDirPath; GlobalCEFApp.LocalesDirPath := GlobalCEFApp.FrameworkDirPath + '\locales'; GlobalCEFApp.EnableGPU := True; // Enable hardware acceleration - GlobalCEFApp.cache := TKeymanPaths.CEFDataPath(RootFolder, 'cache'); - GlobalCEFApp.cookies := TKeymanPaths.CEFDataPath(RootFolder, 'cookies'); - GlobalCEFApp.UserDataPath := TKeymanPaths.CEFDataPath(RootFolder, 'userdata'); + GlobalCEFApp.cache := TKeymanPaths.CEFDataPath('cache'); + GlobalCEFApp.cookies := TKeymanPaths.CEFDataPath('cookies'); + GlobalCEFApp.UserDataPath := TKeymanPaths.CEFDataPath('userdata'); GlobalCEFApp.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36 (TIKE/'+SKeymanVersion+')'; + + GlobalCEFApp.OnProcessMessageReceived := GlobalCEFApp_ProcessMessageReceived; + end; destructor TCEFManager.Destroy; @@ -143,4 +158,58 @@ begin FWindows.Remove(cef); end; +procedure DOMVisitor_GetWindowSize(const browser: ICefBrowser; const document: ICefDomDocument); +const + NODE_ID = 'size'; +var + msg: ICefProcessMessage; + node : ICefDomNode; +begin + // This function is called from a CEF thread + // document is only valid inside this function. + + if document <> nil then + begin + node := document.GetElementById(NODE_ID); + if node <> nil then + begin + // Send back node dimensions to the browser process + msg := TCefProcessMessageRef.New(TCEFManager.ProcessMessage_GetWindowSize); + msg.ArgumentList.SetInt(0, node.ElementBounds.width); + msg.ArgumentList.SetInt(1, node.ElementBounds.height); + CefLog('CEFManager', 1, CEF_LOG_SEVERITY_ERROR, 'Sending message '+msg.Name+', '+IntToStr(node.ElementBounds.width)+', '+IntToStr(node.ElementBounds.height)); + browser.SendProcessMessage(PID_BROWSER, msg); + end; + end; +end; + +procedure GlobalCEFApp_ProcessMessageReceived(const browser : ICefBrowser; + sourceProcess : TCefProcessId; + const message : ICefProcessMessage; + var aHandled : boolean); +var + TempFrame : ICefFrame; + TempVisitor : TCefFastDomVisitor2; +begin + aHandled := False; + + CefLog('CEFManager', 1, CEF_LOG_SEVERITY_ERROR, 'message received '+message.Name); + + if browser <> nil then + begin + if message.name = TCEFManager.ProcessMessage_GetWindowSize then + begin + TempFrame := browser.MainFrame; + + if (TempFrame <> nil) then + begin + TempVisitor := TCefFastDomVisitor2.Create(browser, DOMVisitor_GetWindowSize); + TempFrame.VisitDom(TempVisitor); + end; + + aHandled := True; + end; + end; +end; + end. diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm index 21651ab8cd..f5cc16068d 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm @@ -40,6 +40,7 @@ object frameCEFHost: TframeCEFHost end object cef: TChromium OnWidgetCompMsg = cefWidgetCompMsg + OnProcessMessageReceived = cefProcessMessageReceived OnLoadEnd = cefLoadEnd OnSetFocus = cefSetFocus OnRunContextMenu = cefRunContextMenu diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas index 9b162d1519..f039036015 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas @@ -73,6 +73,7 @@ type TCEFHostPreKeySyncEvent = procedure(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean) of object; TCEFHostKeyEvent = procedure(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean) of object; TCEFHostTitleChangeEvent = procedure(Sender: TObject; const title: string) of object; + TCEFHostResizeFromDocumentEvent = procedure(Sender: TObject; width, height: Integer) of object; TframeCEFHost = class(TForm, IKeymanCEFHost) tmrRefresh: TTimer; @@ -121,6 +122,9 @@ type source: TCefFocusSource; out Result: Boolean); procedure cefTitleChange(Sender: TObject; const browser: ICefBrowser; const title: ustring); + procedure cefProcessMessageReceived(Sender: TObject; + const browser: ICefBrowser; sourceProcess: TCefProcessId; + const message: ICefProcessMessage; out Result: Boolean); private FApplicationHandle: THandle; FNextURL: string; @@ -138,6 +142,7 @@ type FOnBeforeBrowse: TCEFHostBeforeBrowseEvent; FOnTitleChange: TCEFHostTitleChangeEvent; FOnCommand: TCEFCommandEvent; + FOnResizeFromDocument: TCEFHostResizeFromDocumentEvent; procedure CallbackWndProc(var Message: TMessage); @@ -167,6 +172,7 @@ type procedure Navigate; overload; procedure DoBeforeBrowse(const url: string; out Handled: Boolean; ShouldOpenUrlIfNotHandled: Boolean); public + procedure DoResizeByContent; procedure SetFocus; override; procedure StartClose; procedure Navigate(const url: string); overload; @@ -181,6 +187,7 @@ type property OnTitleChange: TCEFHostTitleChangeEvent read FOnTitleChange write FOnTitleChange; property OnPreKeySyncEvent: TCEFHostPreKeySyncEvent read FOnPreKeySyncEvent write FOnPreKeySyncEvent; property OnKeyEvent: TCEFHostKeyEvent read FOnKeyEvent write FOnKeyEvent; + property OnResizeFromDocument: TCEFHostResizeFromDocumentEvent read FOnResizeFromDocument write FOnResizeFromDocument; end; // Helpers to make sure we don't accidentally code @@ -198,6 +205,8 @@ uses ExternalExceptionHandler, utilhttp, uCEFApplication, + uCEFConstants, + uCEFProcessMessage, VersionInfo; {$R *.DFM} @@ -436,6 +445,7 @@ begin if Assigned(FOnCommand) then begin + params.Delete(0); // url; not really used currently command := params[0]; params.Delete(0); FOnCommand(Self, command, params); @@ -672,9 +682,9 @@ begin PostMessage(FCallbackWnd, CEF_KEYEVENT, MAKELONG(WORD(Result), WORD(isKeyboardShortcut)), LPARAM(p)); end; - end; + procedure TframeCEFHost.cefBeforePopup(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const targetUrl, targetFrameName: ustring; targetDisposition: TCefWindowOpenDisposition; @@ -744,4 +754,25 @@ begin if cef <> nil then cef.NotifyMoveOrResizeStarted; end; +procedure TframeCEFHost.DoResizeByContent; +var + msg : ICefProcessMessage; +begin + // Use the ArgumentList property if you need to pass some parameters. + msg := TCefProcessMessageRef.New(TCEFManager.ProcessMessage_GetWindowSize); // Same name than TCefCustomRenderProcessHandler.MessageName + cef.SendProcessMessage(PID_RENDERER, msg); +end; + +procedure TframeCEFHost.cefProcessMessageReceived(Sender: TObject; + const browser: ICefBrowser; sourceProcess: TCefProcessId; + const message: ICefProcessMessage; out Result: Boolean); +begin + AssertVclThread; + if message.Name = TCEFManager.ProcessMessage_GetWindowSize then + begin + if Assigned(FOnResizeFromDocument) then + FOnResizeFromDocument(Self, message.ArgumentList.GetInt(0), message.ArgumentList.GetInt(1)); + end; +end; + end. diff --git a/windows/src/global/delphi/comp/WebBrowserManager.pas b/windows/src/global/delphi/comp/WebBrowserManager.pas index 7055d58149..1458bbaca5 100644 --- a/windows/src/global/delphi/comp/WebBrowserManager.pas +++ b/windows/src/global/delphi/comp/WebBrowserManager.pas @@ -66,6 +66,7 @@ type procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); procedure cefTitleChange(Sender: TObject; const title: string); + procedure cefResizeFromDocument(Sender: TObject; awidth, aheight: Integer); protected procedure Notification(AComponent: TComponent; Operation: TOperation); override; @@ -180,6 +181,7 @@ begin cef.OnKeyEvent := cefKeyEvent; cef.OnPreKeySyncEvent := cefPreKeySyncEvent; cef.OnTitleChange := cefTitleChange; + cef.OnResizeFromDocument := cefResizeFromDocument; end; {$MESSAGE HINT 'TODO: Support OnShowContextMenu, OnScriptError'} {if web <> nil then @@ -262,16 +264,12 @@ end; procedure TWebBrowserManager.cefLoadEnd(Sender: TObject); begin -{$MESSAGE HINT 'TODO: Support resizing'} DeleteXMLFiles; -{ - if Assigned(FOnResize) then - begin - elem := doc3.getElementById('size'); - if Assigned(elem) then - FOnResize(Self, elem.offsetWidth, elem.offsetHeight); - end; -} +end; + +procedure TWebBrowserManager.cefResizeFromDocument(Sender: TObject; awidth, aheight: Integer); +begin + FOnResize(Self, awidth, aheight); end; procedure TWebBrowserManager.Content_Render(FRefreshKeyman: Boolean; const AdditionalData: WideString); diff --git a/windows/src/global/delphi/general/KeymanPaths.pas b/windows/src/global/delphi/general/KeymanPaths.pas index a1a0e5900e..6fde4a47f4 100644 --- a/windows/src/global/delphi/general/KeymanPaths.pas +++ b/windows/src/global/delphi/general/KeymanPaths.pas @@ -31,7 +31,7 @@ type class function KeyboardsInstallPath(const filename: string = ''): string; static; class function KeyboardsInstallDir: string; static; class function CEFPath: string; static; // Chromium Embedded Framework - class function CEFDataPath(const RootFolder, mode: string): string; static; + class function CEFDataPath(const mode: string): string; static; class function CEFSubprocessPath: string; static; end; @@ -140,16 +140,18 @@ begin begin Result := GetEnvironmentVariable(S_CEF_EnvVar); if Result = '' - then Result := ExtractFilePath(ParamStr(0))+S_CEF_SubFolder + then Result := KeymanEngineInstallPath+S_CEF_SubFolder else Result := IncludeTrailingPathDelimiter(Result); end; end; class function TKeymanPaths.CEFSubprocessPath: string; begin + // Normal install location - in Keyman Engine install folder Result := KeymanEngineInstallPath(S_CEF_SubProcess); if FileExists(Result) then Exit; + // Same folder as executable Result := ExtractFilePath(ParamStr(0)) + S_CEF_SubProcess; if FileExists(Result) then Exit; @@ -158,15 +160,15 @@ begin if FileExists(Result) then Exit; // Source repo, source folder - Result := ExtractFilePath(ParamStr(0)) + '..\kmbrowserhost\win32\debug\' + S_CEF_SubProcess; + Result := ExtractFilePath(ParamStr(0)) + '..\..\engine\kmbrowserhost\win32\debug\' + S_CEF_SubProcess; if FileExists(Result) then Exit; - Result := ExtractFilePath(ParamStr(0)) + '..\kmbrowserhost\win32\release\' + S_CEF_SubProcess; + Result := ExtractFilePath(ParamStr(0)) + '..\..\engine\kmbrowserhost\win32\release\' + S_CEF_SubProcess; end; -class function TKeymanPaths.CEFDataPath(const RootFolder, mode: string): string; +class function TKeymanPaths.CEFDataPath(const mode: string): string; begin - Result := GetFolderPath(CSIDL_APPDATA) + RootFolder + '\browser\' + mode; + Result := GetFolderPath(CSIDL_APPDATA) + SFolderCEFBrowserData + '\' + mode; end; class function TKeymanPaths.KeyboardsInstallDir: string; diff --git a/windows/src/global/delphi/general/RegistryKeys.pas b/windows/src/global/delphi/general/RegistryKeys.pas index 1b51a67f66..a5dd020576 100644 --- a/windows/src/global/delphi/general/RegistryKeys.pas +++ b/windows/src/global/delphi/general/RegistryKeys.pas @@ -433,6 +433,7 @@ const SFolderKeymanRoot = 'Keyman'; SFolderKeymanEngine = SFolderKeymanRoot + '\Keyman Engine'; SFolderKeymanKeyboard = SFolderKeymanEngine + '\Keyboard'; + SFolderCEFBrowserData = SFolderKeymanEngine + '\CEF'; SFolderShared = SFolderKeymanRoot + '\Shared Data'; SFolderSharedDatabases = SFolderShared + '\Databases'; SFolderKeymanDeveloper = SFolderKeymanRoot + '\Keyman Developer'; diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index 692f9c419e..c967a3fddc 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -72,10 +72,9 @@ type procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); procedure cefCommand(Sender: TObject; const command: string; params: TStringList); - + procedure cefResizeFromDocument(Sender: TObject; awidth, aheight: Integer); protected cef: TframeCEFHost; - procedure DoResizeByContent; procedure FireCommand(const command: WideString; params: TStringList); virtual; function ShouldProcessAllCommands: Boolean; virtual; @@ -109,12 +108,14 @@ var implementation uses + uCEFConstants, + uCEFInterfaces, + uCEFTypes, + custinterfaces, ErrorControlledRegistry, ExternalExceptionHandler, kmint, - uCEFConstants, - uCEFTypes, UILanguages, UfrmScriptError, Upload_Settings, @@ -181,7 +182,7 @@ begin else if command = 'uilanguage' then UILanguage(params) else if command = 'downloaduilanguages' then DownloadUILanguages else if command = 'contributeuilanguages' then ContributeUILanguages // I4989 - else if command = 'resize' then DoResizeByContent + else if command = 'resize' then cef.DoResizeByContent else ShowMessage(command + '?' + params.Text); end; @@ -227,6 +228,7 @@ begin cef.OnLoadEnd := cefLoadEnd; cef.OnKeyEvent := cefKeyEvent; cef.OnPreKeySyncEvent := cefPreKeySyncEvent; + cef.OnResizeFromDocument := cefResizeFromDocument; end; procedure TfrmWebContainer.cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); @@ -307,7 +309,7 @@ end; procedure TfrmWebContainer.cefLoadEnd(Sender: TObject); begin AssertVclThread; - DoResizeByContent; + cef.DoResizeByContent; Screen.Cursor := crDefault; if ShouldSetCaption then Self.Caption := cef.cef.Browser.MainFrame.Name; if ShouldSetAppTitle then Application.Title := Self.Caption; // I2786 @@ -323,30 +325,13 @@ begin Handled := True; end; -procedure TfrmWebContainer.DoResizeByContent; +procedure TfrmWebContainer.cefResizeFromDocument(Sender: TObject; awidth, + aheight: Integer); begin - try -{$MESSAGE HINT 'TODO: Support window resizing'} -{ if Assigned(web.Document) then - begin - doc3 := (web.Document as IHTMLDocument3); - - elem := doc3.getElementById('size'); - if Assigned(elem) then - begin - ClientWidth := elem.offsetWidth; - ClientHeight := elem.offsetHeight; - - Left := (Screen.Width - Width) div 2; - Top := (Screen.Height - Height) div 2; - - (web.Document as IHTMLDocument2).parentWindow.scrollTo(0,0); - end; - end; - } - except - Exit; - end; + ClientWidth := awidth; + ClientHeight := aheight; + Left := (Screen.Width - Width) div 2; + Top := (Screen.Height - Height) div 2; end; function IsLocalURL(URL: WideString): Boolean; -- GitLab From 95252c696dec4517c4f01266d5817be22732c447 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 13 Apr 2019 18:17:21 +0700 Subject: [PATCH 15/39] [Windows] Report script errors for Chromium; further tidyup --- windows/src/desktop/kmshell/kmshell.dproj | 11 ++- windows/src/desktop/kmshell/kmshell.res | Bin 7040 -> 7040 bytes windows/src/developer/inst/Makefile | 3 +- windows/src/developer/inst/copydev.in | 13 +--- windows/src/developer/inst/kmdev.wxs | 1 - windows/src/engine/inst/components.wxs | 2 +- .../keyman/viskbd/UfrmOSKFontHelper.pas | 8 -- .../keyman/viskbd/UfrmOSKKeyboardUsage.pas | 8 -- .../engine/kmbrowserhost/kmbrowserhost.dpr | 11 ++- .../engine/kmbrowserhost/kmbrowserhost.dproj | 9 +++ .../chromium/Keyman.System.CEFManager.pas | 42 +++++++++- .../chromium/Keyman.UI.UframeCEFHost.dfm | 1 - .../chromium/Keyman.UI.UframeCEFHost.pas | 71 ++++------------- .../global/delphi/comp/WebBrowserManager.pas | 3 +- .../src/global/delphi/ui/UfrmWebContainer.pas | 73 ++---------------- 15 files changed, 88 insertions(+), 168 deletions(-) diff --git a/windows/src/desktop/kmshell/kmshell.dproj b/windows/src/desktop/kmshell/kmshell.dproj index 52242d902f..4b80f4e5b1 100644 --- a/windows/src/desktop/kmshell/kmshell.dproj +++ b/windows/src/desktop/kmshell/kmshell.dproj @@ -94,12 +94,12 @@ false - -splash true 1033 CompanyName=;FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProductVersion=1.0.0.0;Comments=;ProgramID=com.embarcadero.$(MSBuildProjectName);FileDescription=$(MSBuildProjectName);ProductName=$(MSBuildProjectName) true Debug + -c @@ -265,7 +265,6 @@
frmKeepInTouch
- dfm
@@ -390,15 +389,15 @@ true
- + - kmshell.exe + .\ true - + - .\ + kmshell.exe true diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res index 63b72bffc8a7da9f8ab8a89ef12b5e594ee83285..584c3415da7b6a5444d1b67723f8a92134e9ff27 100644 GIT binary patch delta 14 VcmZoLZ!n)w!km7;X=6F3Gyp2?1&ROw delta 14 VcmZoLZ!n)w!pwH0VPiR`Gyo@>1q=WH diff --git a/windows/src/developer/inst/Makefile b/windows/src/developer/inst/Makefile index 1e3f8ec487..1fa7d11126 100644 --- a/windows/src/developer/inst/Makefile +++ b/windows/src/developer/inst/Makefile @@ -6,7 +6,7 @@ # ---------------------------------------------------------------------- -DEVELOPER_FILES=kmdev.wixobj xml.wixobj cef.wixobj templates.wixobj +DEVELOPER_FILES=kmdev.wixobj xml.wixobj templates.wixobj setup: @@ -59,7 +59,6 @@ clean: -del /Q *.exe -del /Q *.wixpdb -del /Q xml.wxs - -del /Q cef.wxs -del /Q templates.wxs test-releaseexists: diff --git a/windows/src/developer/inst/copydev.in b/windows/src/developer/inst/copydev.in index 9aeb738b69..9351783c0c 100644 --- a/windows/src/developer/inst/copydev.in +++ b/windows/src/developer/inst/copydev.in @@ -3,7 +3,6 @@ # We use different directories so that heat generates # different identifiers for the various folders KEYMAN_WIX_TEMP_XML=$(TEMP)\keyman_wix_build\xml -KEYMAN_WIX_TEMP_CEF=$(TEMP)\keyman_wix_build\cef KEYMAN_WIX_TEMP_TEMPLATES=$(TEMP)\keyman_wix_build\templates KEYMAN_DEVELOPER_TEMPLATES_ROOT=$(ROOT)\src\developer\kmconvert\data @@ -16,10 +15,9 @@ copykmdev: makeinstaller test-releaseexists: if exist $(ROOT)\release\$VERSION\keymandeveloper*.msi echo. & echo Release $VERSION already exists. Delete it or update src\version.txt and try again & exit 1 -candle: heat-cef heat-xml heat-templates +candle: heat-xml heat-templates $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE kmdev.wxs $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dXmlSourceDir=$(ROOT)\src\developer\TIKE\xml xml.wxs - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dTemplatesSourceDir=$(KEYMAN_DEVELOPER_TEMPLATES_ROOT) templates.wxs heat-xml: @@ -43,15 +41,6 @@ heat-templates: # When we candle/light build, we can grab the source files from the proper root so go ahead and delete the temp folder again -rmdir /s/q $(KEYMAN_WIX_TEMP_TEMPLATES) -heat-cef: - # We copy the files to a temp folder in order to exclude .git and README.md from harvesting - -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) - mkdir $(KEYMAN_WIX_TEMP_CEF) - xcopy $(KEYMAN_CEF4DELPHI_ROOT)\* $(KEYMAN_WIX_TEMP_CEF)\ /s - $(WIXHEAT) dir $(KEYMAN_WIX_TEMP_CEF) -o cef.wxs -ag -cg CEF -dr INSTALLDIR -var var.CefSourceDir -wx -nologo - # When we candle/light build, we can grab the source files from the proper root so go ahead and delete the temp folder again - -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) - makeinstaller: cd $(ROOT)\src\developer\inst echo [Setup] > setup.inf diff --git a/windows/src/developer/inst/kmdev.wxs b/windows/src/developer/inst/kmdev.wxs index 3a20f1c69a..0832087ff5 100644 --- a/windows/src/developer/inst/kmdev.wxs +++ b/windows/src/developer/inst/kmdev.wxs @@ -323,7 +323,6 @@ - diff --git a/windows/src/engine/inst/components.wxs b/windows/src/engine/inst/components.wxs index 6ad395c2c1..30d434814b 100644 --- a/windows/src/engine/inst/components.wxs +++ b/windows/src/engine/inst/components.wxs @@ -109,7 +109,7 @@ - + diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas index 85b4128b44..d469a8fafa 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas @@ -167,14 +167,6 @@ begin Handled := True; end; -{$MESSAGE HINT 'TODO: Handle script errors'} -{procedure TfrmOSKFontHelper.webScriptError(Sender: TObject; ErrorLine, - ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; var ScriptErrorAction: TScriptErrorAction); -begin - ScriptErrorAction := eaCancel; - //TODO: Log message to event log -end;} - {$MESSAGE HINT 'TODO: Support context menu'} {procedure TfrmOSKFontHelper.webShowContextMenu(Sender: TCustomEmbeddedWB; const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas index c87e00afc7..66886f509e 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas @@ -525,14 +525,6 @@ begin Handled := True; end; -{$MESSAGE HINT 'TODO: Handle script errors'} -{procedure TfrmOSKKeyboardUsage.webScriptError(Sender: TObject; ErrorLine, - ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; var ScriptErrorAction: TScriptErrorAction); -begin - ScriptErrorAction := eaCancel; - //TODO: Log message to event log -end;} - {$MESSAGE HINT 'TODO: Support context menu'} { procedure TfrmOSKKeyboardUsage.webShowContextMenu(Sender: TCustomEmbeddedWB; diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr b/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr index be484515d1..2a156ad802 100644 --- a/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr +++ b/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr @@ -6,7 +6,16 @@ uses KeymanPaths in '..\..\global\delphi\general\KeymanPaths.pas', KeymanVersion in '..\..\global\delphi\general\KeymanVersion.pas', DebugPaths in '..\..\global\delphi\general\DebugPaths.pas', - ErrorControlledRegistry in '..\..\global\delphi\vcl\ErrorControlledRegistry.pas'; + ErrorControlledRegistry in '..\..\global\delphi\vcl\ErrorControlledRegistry.pas', + ExternalExceptionHandler in '..\..\global\delphi\general\ExternalExceptionHandler.pas', + VersionInfo in '..\..\global\delphi\general\VersionInfo.pas', + ErrLogPath in '..\..\global\delphi\general\ErrLogPath.pas', + utilsystem in '..\..\global\delphi\general\utilsystem.pas', + utilexecute in '..\..\global\delphi\general\utilexecute.pas', + Unicode in '..\..\global\delphi\general\Unicode.pas', + GetOsVersion in '..\..\global\delphi\general\GetOsVersion.pas', + klog in '..\..\global\delphi\general\klog.pas', + utildir in '..\..\global\delphi\general\utildir.pas'; {R icons.res} {$R version.res} diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj b/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj index 0f4b62a8e8..b6b98f2657 100644 --- a/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj +++ b/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj @@ -108,6 +108,15 @@ + + + + + + + + + Cfg_2 Base diff --git a/windows/src/global/delphi/chromium/Keyman.System.CEFManager.pas b/windows/src/global/delphi/chromium/Keyman.System.CEFManager.pas index f4d1f7bf27..ad1e3f5162 100644 --- a/windows/src/global/delphi/chromium/Keyman.System.CEFManager.pas +++ b/windows/src/global/delphi/chromium/Keyman.System.CEFManager.pas @@ -50,10 +50,12 @@ uses Winapi.ShlObj, Winapi.Windows, + ExternalExceptionHandler, KeymanPaths, KeymanVersion, // RedistFiles, RegistryKeys, + VersionInfo, uCEFConstants, uCEFDOMVisitor, uCEFInterfaces, @@ -63,10 +65,15 @@ uses // UTikeDebugMode; procedure GlobalCEFApp_ProcessMessageReceived(const browser : ICefBrowser; - sourceProcess : TCefProcessId; - const message : ICefProcessMessage; - var aHandled : boolean); forward; + sourceProcess : TCefProcessId; + const message : ICefProcessMessage; + var aHandled : boolean); forward; +procedure GlobalCEFApp_UncaughtException(const browser : ICefBrowser; + const frame : ICefFrame; + const context : ICefv8Context; + const e : ICefV8Exception; + const stackTrace : ICefV8StackTrace); forward; { TInitializeCEF } procedure TCEFManager.CompletionHandler(Sender: IKeymanCEFHost); @@ -111,7 +118,8 @@ begin GlobalCEFApp.UserAgent := 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.79 Safari/537.36 (TIKE/'+SKeymanVersion+')'; GlobalCEFApp.OnProcessMessageReceived := GlobalCEFApp_ProcessMessageReceived; - + GlobalCEFApp.OnUncaughtException := GlobalCEFApp_UncaughtException; + GlobalCEFApp.UncaughtExceptionStackSize := 64; end; destructor TCEFManager.Destroy; @@ -212,4 +220,30 @@ begin end; end; + +procedure GlobalCEFApp_UncaughtException(const browser : ICefBrowser; + const frame : ICefFrame; + const context : ICefv8Context; + const e : ICefV8Exception; + const stackTrace : ICefV8StackTrace); +var + log, id: string; + I: Integer; +begin + id := LowerCase(ExtractFileName(ParamStr(0)))+'_'+GetVersionString+'_script_unknown'; + I := string(frame.Url).LastDelimiter('/'); + id := id + '_' + string(frame.Url).SubString(I + 1) + '_' + IntToStr(e.LineNumber); + + log := 'Stack Trace:'#13#10; + + for i := 0 to stackTrace.FrameCount - 1 do + begin + log := log + ' ' + stackTrace.Frame[i].FunctionName + ' ('+stackTrace.Frame[i].ScriptNameOrSourceUrl+':'+IntToStr(stackTrace.Frame[i].LineNumber)+')'#13#10; + end; + + CefLog('CEFManager', 1, CEF_LOG_SEVERITY_ERROR, 'Error '+id+', '+e.Message+' in '+frame.Url); + LogExceptionToExternalHandler(id, 'Error occurred at line '+IntToStr(e.LineNumber)+' of '+e.ScriptResourceName, + e.Message, log); +end; + end. diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm index f5cc16068d..16cb7bc7b4 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.dfm @@ -46,7 +46,6 @@ object frameCEFHost: TframeCEFHost OnRunContextMenu = cefRunContextMenu OnPreKeyEvent = cefPreKeyEvent OnTitleChange = cefTitleChange - OnConsoleMessage = cefConsoleMessage OnBeforePopup = cefBeforePopup OnAfterCreated = cefAfterCreated OnBeforeClose = cefBeforeClose diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas index f039036015..7186bf7a7f 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas @@ -37,9 +37,9 @@ const CEF_SETFOCUS = WM_USER + 305; CEF_KEYEVENT = WM_USER + 306; CEF_BEFOREBROWSE = WM_USER + 307; - CEF_CONSOLEMESSAGE = WM_USER + 308; CEF_TITLECHANGE = WM_USER + 309; CEF_COMMAND = WM_USER + 310; + CEF_RESIZEFROMDOCUMENT = WM_USER + 311; type TCEFHostKeyEventData = record @@ -90,10 +90,7 @@ type out Result: Boolean); procedure cefPreKeyEvent(Sender: TObject; const browser: ICefBrowser; const event: PCefKeyEvent; osEvent: PMsg; out isKeyboardShortcut, - Result: Boolean); - procedure cefConsoleMessage(Sender: TObject; const browser: ICefBrowser; - level: Cardinal; const message, source: ustring; line: Integer; - out Result: Boolean); // I2986 + Result: Boolean); // I2986 procedure cefLoadEnd(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer); procedure cefBeforeBrowse(Sender: TObject; const browser: ICefBrowser; @@ -143,6 +140,7 @@ type FOnTitleChange: TCEFHostTitleChangeEvent; FOnCommand: TCEFCommandEvent; FOnResizeFromDocument: TCEFHostResizeFromDocumentEvent; + FOnHelpTopic: TNotifyEvent; procedure CallbackWndProc(var Message: TMessage); @@ -157,9 +155,9 @@ type procedure Handle_CEF_SETFOCUS(var message: TMessage); procedure Handle_CEF_KEYEVENT(var message: TMessage); procedure Handle_CEF_BEFOREBROWSE(var message: TMessage); - procedure Handle_CEF_CONSOLEMESSAGE(var message: TMessage); procedure Handle_CEF_TITLECHANGE(var message: TMessage); procedure Handle_CEF_COMMAND(var message: TMessage); + procedure Handle_CEF_RESIZEFROMDOCUMENT(var message: TMessage); // CEF: You have to handle this two messages to call NotifyMoveOrResizeStarted or some page elements will be misaligned. procedure WMMove(var aMessage : TWMMove); message WM_MOVE; @@ -183,6 +181,7 @@ type property OnBeforeBrowseSync: TCEFHostBeforeBrowseSyncEvent read FOnBeforeBrowseSync write FOnBeforeBrowseSync; property OnCommand: TCEFCommandEvent read FOnCommand write FOnCommand; property OnBeforeBrowse: TCEFHostBeforeBrowseEvent read FOnBeforeBrowse write FOnBeforeBrowse; + property OnHelpTopic: TNotifyEvent read FOnHelpTopic write FOnHelpTopic; property OnLoadEnd: TNotifyEvent read FOnLoadEnd write FOnLoadEnd; property OnTitleChange: TCEFHostTitleChangeEvent read FOnTitleChange write FOnTitleChange; property OnPreKeySyncEvent: TCEFHostPreKeySyncEvent read FOnPreKeySyncEvent write FOnPreKeySyncEvent; @@ -363,9 +362,9 @@ begin CEF_SETFOCUS: Handle_CEF_SETFOCUS(Message); CEF_KEYEVENT: Handle_CEF_KEYEVENT(Message); CEF_BEFOREBROWSE: Handle_CEF_BEFOREBROWSE(Message); - CEF_CONSOLEMESSAGE: Handle_CEF_CONSOLEMESSAGE(Message); CEF_TITLECHANGE: Handle_CEF_TITLECHANGE(Message); CEF_COMMAND: Handle_CEF_COMMAND(Message); + CEF_RESIZEFROMDOCUMENT: Handle_CEF_RESIZEFROMDOCUMENT(Message); end; if Self <> nil then @@ -454,28 +453,6 @@ begin params.Free; end; -procedure TframeCEFHost.Handle_CEF_CONSOLEMESSAGE(var message: TMessage); -var - I: Integer; - id: string; - p: PCEFConsoleMessageEventData; -begin - AssertVclThread; - p := PCEFConsoleMessageEventData(message.LParam); - - id := LowerCase(ExtractFileName(ParamStr(0)))+'_'+GetVersionString+'_script_'; - if Assigned(Owner) - then id := id + Owner.ClassName - else id := id + 'unknown'; - - I := string(p.source).LastDelimiter('/'); - id := id + '_' + string(p.source).SubString(I + 1) + '_' + IntToStr(p.line); - - LogExceptionToExternalHandler(id, 'Error occurred at line '+IntToStr(p.line)+' of '+p.source, p.message, ''); - - FreeMem(p); -end; - procedure TframeCEFHost.cefBeforeBrowse(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; const request: ICefRequest; user_gesture, isRedirect: Boolean; @@ -547,26 +524,6 @@ begin Result := True; end; -procedure TframeCEFHost.cefConsoleMessage(Sender: TObject; - const browser: ICefBrowser; level: Cardinal; const message, source: ustring; - line: Integer; out Result: Boolean); -var - p: PCEFConsoleMessageEventData; -begin - AssertCefThread; - - p := AllocMem(SizeOf(TCEFConsoleMessageEventData)); - p.browserid := browser.Identifier; - p.level := level; - p.message := message; - p.source := source; - p.line := line; - - Result := True; - - PostMessage(FCallbackWnd, CEF_CONSOLEMESSAGE, WORD(Result), LPARAM(p)); -end; - procedure TframeCEFHost.Handle_CEF_DESTROY(var Message: TMessage); begin AssertVclThread; @@ -598,8 +555,7 @@ begin if p.event.windows_key_code = VK_F1 then begin - {$MESSAGE HINT 'TODO: Add F1 support back in again'} -// if Assigned(OnHelpTopic) then OnHelpTopic(Self); // TODO: frmKeymanDeveloper.HelpTopic(Self) + if Assigned(FOnHelpTopic) then FOnHelpTopic(Self); // TODO: frmKeymanDeveloper.HelpTopic(Self) end else if p.event.windows_key_code = VK_F12 then begin @@ -629,6 +585,13 @@ begin FOnLoadEnd(Self); end; +procedure TframeCEFHost.Handle_CEF_RESIZEFROMDOCUMENT(var message: TMessage); +begin + AssertVclThread; + if Assigned(FOnResizeFromDocument) then + FOnResizeFromDocument(Self, message.WParam, message.LParam); +end; + procedure TframeCEFHost.Handle_CEF_SETFOCUS(var message: TMessage); begin AssertVclThread; @@ -767,12 +730,8 @@ procedure TframeCEFHost.cefProcessMessageReceived(Sender: TObject; const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage; out Result: Boolean); begin - AssertVclThread; if message.Name = TCEFManager.ProcessMessage_GetWindowSize then - begin - if Assigned(FOnResizeFromDocument) then - FOnResizeFromDocument(Self, message.ArgumentList.GetInt(0), message.ArgumentList.GetInt(1)); - end; + PostMessage(FCallbackWnd, CEF_RESIZEFROMDOCUMENT, message.ArgumentList.GetInt(0), message.ArgumentList.GetInt(1)); end; end. diff --git a/windows/src/global/delphi/comp/WebBrowserManager.pas b/windows/src/global/delphi/comp/WebBrowserManager.pas index 1458bbaca5..e2f423daf9 100644 --- a/windows/src/global/delphi/comp/WebBrowserManager.pas +++ b/windows/src/global/delphi/comp/WebBrowserManager.pas @@ -183,11 +183,10 @@ begin cef.OnTitleChange := cefTitleChange; cef.OnResizeFromDocument := cefResizeFromDocument; end; - {$MESSAGE HINT 'TODO: Support OnShowContextMenu, OnScriptError'} + {$MESSAGE HINT 'TODO: Support OnShowContextMenu'} {if web <> nil then begin web.OnShowContextMenu := webShowContextMenu; - web.OnScriptError := webScriptError; end;} end; diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index c967a3fddc..96182e9ed1 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -73,6 +73,7 @@ type procedure cefCommand(Sender: TObject; const command: string; params: TStringList); procedure cefResizeFromDocument(Sender: TObject; awidth, aheight: Integer); + procedure cefHelpTopic(Sender: TObject); protected cef: TframeCEFHost; @@ -229,6 +230,7 @@ begin cef.OnKeyEvent := cefKeyEvent; cef.OnPreKeySyncEvent := cefPreKeySyncEvent; cef.OnResizeFromDocument := cefResizeFromDocument; + cef.OnHelpTopic := cefHelpTopic; end; procedure TfrmWebContainer.cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); @@ -251,6 +253,11 @@ begin FireCommand(command, params); end; +procedure TfrmWebContainer.cefHelpTopic(Sender: TObject); +begin + Application.HelpJump('context_'+lowercase(FDialogName)); +end; + procedure TfrmWebContainer.cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); var params: TStringList; @@ -339,72 +346,6 @@ begin Result := (Copy(URL, 1, 5) = 'file:') or (Copy(URL, 1, 1) = '/'); end; -{$MESSAGE HINT 'TODO: Log script errors'} -{procedure TfrmWebContainer.webScriptError2(Sender: TObject; ErrorLine, - ErrorCharacter, ErrorCode, ErrorMessage, ErrorUrl: string; - var ScriptErrorAction: TScriptErrorAction); -var - FLog: string; - FFileName: WideString; - FTellKeymanSupport: Boolean; - FAborting: Boolean; -begin - FAborting := False; - - if FNoMoreErrors then - begin - ScriptErrorAction := eaContinue; - Exit; - end; - - case ShowScriptErrorDialog(Self, ErrorMessage, FTellKeymanSupport) of // I2992 // I3544 - mrYes: ScriptErrorAction := eaContinue; - mrCancel: begin ScriptErrorAction := eaContinue; FNoMoreErrors := True; end; - mrNo: ScriptErrorAction := eaCancel; - mrAbort: begin ScriptErrorAction := eaCancel; FAborting := True; end; - end; - - if FTellKeymanSupport then - begin - FLog := ''; - - try - with TStringList.Create do - try - FFileName := ConvertFileURLToPath(ErrorUrl); - - if FileExists(FFileName) then // I1792 - LoadFromFile(FFileName); // Use preamble encoding - FLog := Text; - finally - Free; - end; - except - on E:Exception do - FLog := 'Exception '+E.Message+' trying to load '+FXMLFileName.Name+' for review'; // I4181 - end; - - LogExceptionToExternalHandler( - ExtractFileName(ParamStr(0))+'_'+GetVersionString+'_script_'+Self.ClassName+'_'+ErrorCode, // I3710 - 'Error '+ErrorCode+' occurred at line '+ErrorLine+', character '+ErrorCharacter+' in '+ErrorUrl+', '+ - FXMLFileName.Name+#13#10+'Internet Explorer Version: '+GetIEVersionString+#13#10#13#10, // I4181 - ErrorMessage, FLog); - end; - - if FAborting then - PostMessage(Handle, WM_CLOSE, 0, 0); // I1829, dead screen when uninstalling keyboard - //Release; // Disabled in I1792 - //PostMessage(Handle, -end;} - -{$MESSAGE HINT 'TODO: Support context menu'} -{procedure TfrmWebContainer.webShowContextMenu2(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; - const Context: IDispatch; var Result: HRESULT); -begin - Result := S_OK; -end;} - procedure TfrmWebContainer.WMUser_ContentRender(var Message: TMessage); begin Do_Content_Render(True); -- GitLab From 74bfdf14e2167f0d476fe14a91280c09eb0b9590 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Fri, 4 Oct 2019 18:38:26 +1000 Subject: [PATCH 16/39] Merge conflicts --- web/package-lock.json | 95 +++++-------------- .../TIKE/main/KeymanDeveloperUtils.pas | 39 ++------ 2 files changed, 31 insertions(+), 103 deletions(-) diff --git a/web/package-lock.json b/web/package-lock.json index 35e351e7a4..027a9b9997 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -70,46 +70,16 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE=", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-slice": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-0.2.3.tgz", - "integrity": "sha1-3Tz7gO15c6dRF82sabC5nshhhvU=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, "arraybuffer.slice": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha1-O7xCdd1YTMGxCAm4nU6LY6aednU=", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", "dev": true }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs=", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true }, "async": { @@ -124,7 +94,7 @@ "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", - "integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=", + "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", "dev": true }, "backo2": { @@ -397,7 +367,7 @@ "color-convert": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", - "integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=", + "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", "dev": true, "requires": { "color-name": "^1.1.1" @@ -454,7 +424,7 @@ "content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", "dev": true }, "cookie": { @@ -514,7 +484,7 @@ "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha1-38lARACtHI/gI+faHfHBR8S0RN8=", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", "dev": true, "requires": { "type-detect": "^4.0.0" @@ -902,7 +872,7 @@ "glob": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -1089,11 +1059,6 @@ "wrappy": "1" } }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=" - }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", @@ -1252,7 +1217,7 @@ "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true } } @@ -1277,7 +1242,7 @@ "karma-chrome-launcher": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-2.2.0.tgz", - "integrity": "sha1-zxudBxNswY/iOTJ9JGVMPbw2is8=", + "integrity": "sha512-uf/ZVpAabDBPvdPdveyk1EPgbnloPvFFGgmRhYLTDH7gEB4nZdSBk8yTU47w1g/drLSx5uMOkjKk7IWKfWg/+w==", "dev": true, "requires": { "fs-access": "^1.0.0", @@ -1287,7 +1252,7 @@ "karma-edge-launcher": { "version": "0.4.2", "resolved": "https://registry.npmjs.org/karma-edge-launcher/-/karma-edge-launcher-0.4.2.tgz", - "integrity": "sha1-PZUpsJsTyQnF887uEtAOf5qYmz0=", + "integrity": "sha512-YAJZb1fmRcxNhMIWYsjLuxwODBjh2cSHgTW/jkVmdpGguJjLbs9ZgIK/tEJsMQcBLUkO+yO4LBbqYxqgGW2HIw==", "dev": true, "requires": { "edge-launcher": "1.2.2" @@ -1296,7 +1261,7 @@ "karma-firefox-launcher": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/karma-firefox-launcher/-/karma-firefox-launcher-1.1.0.tgz", - "integrity": "sha1-LEcDBFLwRTHrfRPU/HZpYwu5Mzk=", + "integrity": "sha512-LbZ5/XlIXLeQ3cqnCbYLn+rOVhuMIK9aZwlP6eOLGzWdo1UVp7t6CN3DP4SafiRLjexKwHeKHDm0c38Mtd3VxA==", "dev": true }, "karma-fixture": { @@ -1363,7 +1328,7 @@ "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -1409,7 +1374,7 @@ "karma-teamcity-reporter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/karma-teamcity-reporter/-/karma-teamcity-reporter-1.1.0.tgz", - "integrity": "sha1-eYD33JHmqwhH4SKt4Ls0x8b0KBY=", + "integrity": "sha512-Ca1uhHGtNqUuzsnW3I+QykNuS/jF9vdxnIrkbLCVJRunCc6yWJq+ai1UobQT13j0e3JVUOf0mKo3QHZ6A6mG9Q==", "dev": true }, "linkify-it": { @@ -1440,7 +1405,7 @@ "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha1-V0Dhxdbw39pK2TI7UzIQfva0xAo=", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", "dev": true, "requires": { "chalk": "^2.0.1" @@ -1449,7 +1414,7 @@ "ansi-styles": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", - "integrity": "sha1-wVm41b4PnlpvNG2rlPFs4CIWG4g=", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", "dev": true, "requires": { "color-convert": "^1.9.0" @@ -1583,7 +1548,7 @@ "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" @@ -1682,18 +1647,6 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", "dev": true }, - "normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "is-builtin-module": "^1.0.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -1910,7 +1863,7 @@ "readable-stream": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz", - "integrity": "sha1-No8lEtefnUb9/HE0mueHi7weuVw=", + "integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -2001,7 +1954,7 @@ "safe-buffer": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", - "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", "dev": true }, "safer-buffer": { @@ -2245,7 +2198,7 @@ "string_decoder": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha1-D8Z9fBQYJd6UKC3VNr7GubzoYKs=", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", "dev": true, "requires": { "safe-buffer": "~5.1.0" @@ -2305,7 +2258,7 @@ "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha1-bTQzWIl2jSGyvNoKonfO07G/rfk=", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "requires": { "os-tmpdir": "~1.0.2" @@ -2375,7 +2328,7 @@ "ultron": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", - "integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", "dev": true }, "universalify": { @@ -2465,7 +2418,7 @@ "which": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=", + "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", "dev": true, "requires": { "isexe": "^2.0.0" @@ -2529,7 +2482,7 @@ "ws": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", - "integrity": "sha1-8c+E/i1ekB686U767OeF8YeiKPI=", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", "dev": true, "requires": { "async-limiter": "~1.0.0", @@ -2601,4 +2554,4 @@ "integrity": "sha512-+Wo/p5VRfxUgBUGy2j/6KX2mj9AYJWOHuhMjMcbBFc3y54o9/4buK1ksBvuiK01C3kby8DH9lSmJdSxw+4G/2Q==" } } -} \ No newline at end of file +} diff --git a/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas b/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas index 1c31df4fa8..727973fa93 100644 --- a/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas +++ b/windows/src/developer/TIKE/main/KeymanDeveloperUtils.pas @@ -1,18 +1,18 @@ (* Name: KeymanDeveloperUtils Copyright: Copyright (C) SIL International. - Documentation: - Description: + Documentation: + Description: Create Date: 20 Jun 2006 Modified Date: 25 Oct 2016 Authors: mcdurdin - Related Files: - Dependencies: + Related Files: + Dependencies: - Bugs: - Todo: - Notes: + Bugs: + Todo: + Notes: History: 20 Jun 2006 - mcdurdin - Initial version 02 Aug 2006 - mcdurdin - Timeout when Beta expires 23 Aug 2006 - mcdurdin - Add WM_USER_WEBCOMMAND and WM_USER_INPUTLANGCHANGE @@ -60,11 +60,7 @@ const MAXMRU = 4; MAX_REG_FONT_ENTRIES = 16; -<<<<<<< HEAD -function ShouldShowStartup: Boolean; -======= function GetFolderPath(csidl: Integer): string; ->>>>>>> master function TikeActive: Boolean; function CreateLink(const ObjPath, LinkPath, Desc: string): Boolean; procedure SetFontFromString(f: TFont; s: string); @@ -175,26 +171,6 @@ begin Result := SUCCEEDED(hres); end; - -<<<<<<< HEAD -function ShouldShowStartup: Boolean; -begin - with TRegistryErrorControlled.Create do // I2890 - try - RootKey := HKEY_CURRENT_USER; - if OpenKeyReadOnly(SRegKey_IDEOptions_CU) then // I2890 - try - if not ValueExists(SRegValue_IDEOptShowStartupDialog) then Result := True - else Result := ReadString(SRegValue_IDEOptShowStartupDialog) = '1'; - except - Result := True; - end - else - Result := True; - finally - Free; - end; -======= function GetFolderPath(csidl: Integer): string; var buf: array[0..260] of Char; @@ -215,7 +191,6 @@ begin mm.Free(idl); end; end; ->>>>>>> master end; function TikeActive: Boolean; -- GitLab From ae8a8bb3761c571fd6756d099ef3845c1e7ba04b Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 20 Oct 2019 19:43:42 +0700 Subject: [PATCH 17/39] Add browse4folder.pas to project --- .../src/ext/browse4folder/Browse4Folder.pas | 295 ++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100644 windows/src/ext/browse4folder/Browse4Folder.pas diff --git a/windows/src/ext/browse4folder/Browse4Folder.pas b/windows/src/ext/browse4folder/Browse4Folder.pas new file mode 100644 index 0000000000..18a70dd3cc --- /dev/null +++ b/windows/src/ext/browse4folder/Browse4Folder.pas @@ -0,0 +1,295 @@ +//*********************************************************** +// TBrowse4Folder * +// * +// For Delphi 5 to 2010 * +// Freeware Component * +// by * +// Eran Bodankin (bsalsa) * // per.lindsoe@larsen.dk * +// bsalsa@gmail.com * +// Based on idea by brian@cryer.co.uk * +// * +// Documentation and updated versions: * +// * +// http://www.bsalsa.com * +//*********************************************************** +{*******************************************************************************} +{LICENSE: +THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED +WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. +YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE +AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE +AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE +OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED +OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, +INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR +OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, +AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY +DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. + +You may use, change or modify the component under 4 conditions: +1. In your website, add a link to "http://www.bsalsa.com" +2. In your application, add credits to "Embedded Web Browser" +3. Mail me (bsalsa@gmail.com) any code change in the unit + for the benefit of the other users. +4. Please, consider donation in our web site! +{*******************************************************************************} +//$Id: Browse4Folder.pas,v 1.2 2006/11/15 21:01:38 sergev Exp $ + +unit Browse4Folder; + +interface + +uses + Classes, ShellApi, shlobj, sysutils, Windows, Dialogs, ActiveX; + +type + TOption = (OnlySelectFileSysDir, NoNetDirBelowDomain, ShowStatusText, + OnlySelectFileSysAncestors, ShowEditBox, ValidateEditBox, UseNewDialogStyle, + HideNewUserInterface, ShowAlsoURLs, ShowUsageHint, + HideNewFolderButton, DontTranslateShortcuts, OnlySelectComputers, + OnlySelectPrinters, ShowAlsoFiles, ShowShareableRes); + TOptions = set of TOption; + +type + TWinPaths = (Desktop, StartMenu, + StartMenuPrograms, Startup, MyDocuments, ApplicationData, + Fonts, SendTo, MyRecentDocuments, Favorites, Cache, + Cookies, History, NetHood, PrintHood, + Templates, LocalAppData, WindowsRoot, WindowsSystem, + TempFolder, PCRootDrive, ProgramFiles, CommonFiles, + Media, DownloadFolder); + + TBrowse4Folder = class(TComponent) + + private + FRoot: TWinPaths; + FTitle: string; + FInitialDir: WideString; + FOptions: TOptions; + FShowTitle: Boolean; + FAbout: string; + function Browse4Folder: WideString; + procedure SetAbout(const Value: string); + protected + function UpdateOptionsValue: LongInt; + public + FileName: WideString; + function Execute: Boolean; + function Execute2: WideString; + constructor Create(Owner: Tcomponent); override; + procedure Loaded; override; + published + property About: string read FAbout write SetAbout; + property InitialDir: WideString read FInitialDir write FInitialDir; + property Options: TOptions read FOptions write FOptions default + [UseNewDialogStyle, ShowEditBox]; + property Root: TWinPaths read FRoot write FRoot; + property Title: string read FTitle write FTitle; + property ShowTitle: Boolean read FShowTitle write FShowTitle default True; + end; + +implementation + +uses + TypInfo, Registry, Forms, ComObj; + +var + lg_StartFolder: string; + +function GetPath(Path: TWinPaths): string; +var + ph: PChar; +begin + with TRegistry.Create do + try + RootKey := HKEY_CURRENT_USER; + OpenKey('\Software\Microsoft\Windows\CurrentVersion\' + + 'Explorer\Shell Folders', True); + case Path of + Desktop: Result := ReadString('Desktop'); + StartMenu: Result := ReadString('Start Menu'); + StartMenuPrograms: Result := ReadString('Programs'); + Startup: Result := ReadString('Startup'); + MyDocuments: Result := ReadString('Personal'); + ApplicationData: Result := ReadString('AppData'); + Fonts: Result := ReadString('Fonts'); + SendTo: Result := ReadString('SendTo'); + MyRecentDocuments: Result := ReadString('Recent'); + Favorites: Result := ReadString('Favorites'); + Cache: Result := ReadString('Cache'); + Cookies: Result := ReadString('Cookies'); + History: Result := ReadString('History'); + NetHood: Result := ReadString('NetHood'); + PrintHood: Result := ReadString('PrintHood'); + Templates: Result := ReadString('Templates'); + LocalAppData: Result := ReadString('Local AppData'); + WindowsRoot: + begin + GetMem(ph, (MAX_PATH + 1) * SizeOf(Char)); + GetWindowsDirectory(ph, MAX_PATH); + Result := StrPas(ph); + FreeMem(ph); + end; + WindowsSystem: + begin + GetMem(ph, (MAX_PATH + 1) * SizeOf(Char)); + GetWindowsDirectory(ph, MAX_PATH); + Result := StrPas(ph); + FreeMem(ph); + end; + TempFolder: + begin + GetMem(ph, (MAX_PATH + 1) * SizeOf(Char)); + GetWindowsDirectory(ph, MAX_PATH); + Result := StrPas(ph); + FreeMem(ph); + end; + PCRootDrive: + begin + GetMem(ph, (MAX_PATH + 1) * SizeOf(Char)); + GetWindowsDirectory(ph, MAX_PATH); + Result := (Copy(StrPas(ph), 1, 2)); + FreeMem(ph); + end; + DownloadFolder: + begin + if OpenKey('Software\Microsoft\Internet Explorer', True) then + Result := Readstring('Download Directory'); + end; + end; + RootKey := HKEY_LOCAL_MACHINE; + OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion', True); + case Path of + ProgramFiles: Result := ReadString('ProgramFilesDir'); + CommonFiles: Result := ReadString('CommonFilesDir'); + Media: Result := ReadString('MediaPath'); + end; + finally + CloseKey; + Free; + end; + if (Result <> '') and (Result[Length(Result)] <> '\') then + Result := Result + '\'; +end; + +function BrowseForFolderCallBack(Wnd: HWND; uMsg: UINT; + lParam, lpData: LPARAM): Integer stdcall; +{$IFDEF DELPHI7_UP} +var + wa, rect: TRect; + dialogPT: TPoint; +{$ENDIF} +begin + if uMsg = BFFM_INITIALIZED then + begin + SendMessage(Wnd, BFFM_SETSELECTION, 1, Integer(@lg_StartFolder[1])); +{$IFDEF DELPHI7_UP} + wa := Screen.WorkAreaRect; + GetWindowRect(Wnd, Rect); + dialogPT.X := ((wa.Right - wa.Left) div 2) - + ((rect.Right - rect.Left) div 2); + dialogPT.Y := ((wa.Bottom - wa.Top) div 2) - + ((rect.Bottom - rect.Top) div 2); + MoveWindow(Wnd, dialogPT.X, dialogPT.Y, Rect.Right - Rect.Left, + Rect.Bottom - Rect.Top, True); +{$ENDIF} + end; + Result := 0; +end; + +procedure TBrowse4Folder.SetAbout(const Value: string); +begin + Exit; +end; + +function TBrowse4Folder.Browse4Folder: Widestring; +var + Browse_info: TBrowseInfo; + Folder: array[0..MAX_PATH] of char; + find_context: PItemIDList; +begin + FillChar(Browse_info, SizeOf(Browse_info), #0); + lg_StartFolder := FInitialDir; + Browse_info.pszDisplayName := @Folder[0]; + if FShowTitle then + Browse_info.lpszTitle := PChar(FTitle); + Browse_info.ulFlags := UpdateOptionsValue; + Browse_info.hwndOwner := Application.Handle; + Browse_info.lpfn := BrowseForFolderCallBack; + find_context := SHBrowseForFolder(Browse_info); + if Assigned(find_context) then + begin + if SHGetPathFromIDList(find_context, Folder) then + Result := Folder + else + Result := ''; + GlobalFreePtr(find_context); + end + else + Result := ''; +end; + +function TBrowse4Folder.UpdateOptionsValue: LongInt; +const + AcardOptionsControlValues: array[TOption] of Cardinal = + ($0001, $0002, $0004, + $0008, $00010, $0020, + $0040, $0040 or $0010, + $0080, $100, $200, $400, + $1000, $2000, $4000, $8000); +var + i: TOption; + j: Longint; +begin + j := 0; + if (FOptions <> []) then + for i := Low(TOption) to High(TOption) do + if (i in FOptions) then + Inc(j, AcardOptionsControlValues[i]); + Result := j; +end; + +function TBrowse4Folder.Execute2: WideString; +begin + try + Result := Browse4Folder; + except + Result := ''; + end; +end; + +function TBrowse4Folder.Execute: Boolean; +begin + try + FileName := Browse4Folder; + Result := True; + except + Result := False; + end; +end; + +constructor TBrowse4Folder.Create(Owner: Tcomponent); +begin + inherited Create(Owner); + FOptions := [UseNewDialogStyle, ShowEditBox]; + FShowTitle := True; +end; + +procedure TBrowse4Folder.Loaded; +begin + inherited Loaded; + if FInitialDir = '' then + FInitialDir := GetPath(FRoot); +end; + +initialization + OleInitialize(nil); + +finalization + try + OleUninitialize; + except + end; + +end. -- GitLab From b061c7ca71034b0f5004d1ed0ed924359a70f390 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 20 Oct 2019 19:44:59 +0700 Subject: [PATCH 18/39] Addd browse4folder to tike --- developer/js/package-lock.json | 2 +- developer/js/package.json | 2 +- windows/src/developer/TIKE/Tike.dpr | 7 ++++--- windows/src/developer/TIKE/Tike.dproj | 1 + 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/developer/js/package-lock.json b/developer/js/package-lock.json index 6e74cd9da4..262a43ab04 100644 --- a/developer/js/package-lock.json +++ b/developer/js/package-lock.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "0.0.0", + "version": "13.0.2500-alpha", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/developer/js/package.json b/developer/js/package.json index 2519678e12..18deee5f04 100644 --- a/developer/js/package.json +++ b/developer/js/package.json @@ -1,6 +1,6 @@ { "name": "@keymanapp/lexical-model-compiler", - "version": "0.0.0", + "version": "13.0.2500-alpha", "description": "Keyman Developer lexical model compiler", "keywords": [ "keyboard", diff --git a/windows/src/developer/TIKE/Tike.dpr b/windows/src/developer/TIKE/Tike.dpr index 7313f47f35..9b1739eb46 100644 --- a/windows/src/developer/TIKE/Tike.dpr +++ b/windows/src/developer/TIKE/Tike.dpr @@ -282,7 +282,8 @@ uses Keyman.Developer.UI.UfrmWordlistEditor in 'child\Keyman.Developer.UI.UfrmWordlistEditor.pas' {frmWordlistEditor}, Keyman.System.WordlistTsvFile in '..\..\global\delphi\lexicalmodels\Keyman.System.WordlistTsvFile.pas', Keyman.Developer.UI.Project.wordlistTsvProjectFileUI in 'project\Keyman.Developer.UI.Project.wordlistTsvProjectFileUI.pas', - Keyman.Developer.System.Project.WelcomeRenderer in 'project\Keyman.Developer.System.Project.WelcomeRenderer.pas'; + Keyman.Developer.System.Project.WelcomeRenderer in 'project\Keyman.Developer.System.Project.WelcomeRenderer.pas', + Browse4Folder in '..\..\ext\browse4folder\Browse4Folder.pas'; {$R *.RES} {$R ICONS.RES} @@ -310,8 +311,8 @@ begin if TikeActive then Exit; InitClasses; Application.CreateForm(TmodWebHttpServer, modWebHttpServer); - Application.CreateForm(TfrmKeymanDeveloper, frmKeymanDeveloper); - Application.Run; + Application.CreateForm(TfrmKeymanDeveloper, frmKeymanDeveloper); + Application.Run; end; finally FInitializeCEF.Free; diff --git a/windows/src/developer/TIKE/Tike.dproj b/windows/src/developer/TIKE/Tike.dproj index a7e3194d74..a890d8d47b 100644 --- a/windows/src/developer/TIKE/Tike.dproj +++ b/windows/src/developer/TIKE/Tike.dproj @@ -530,6 +530,7 @@ + Cfg_2 -- GitLab From d5e0f138b21b5464e29b25b0f539be79c9951b34 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 20 Oct 2019 19:50:58 +0700 Subject: [PATCH 19/39] [Developer] Remove dependency on component mode of TBrowse4Folder --- ....Project.UfrmNewModelProjectParameters.dfm | 8 --- ....Project.UfrmNewModelProjectParameters.pas | 9 +++- ...er.UI.Project.UfrmNewProjectParameters.dfm | 7 --- ...er.UI.Project.UfrmNewProjectParameters.pas | 7 ++- windows/src/ext/browse4folder.txt | 49 +++++++++++++++++++ 5 files changed, 63 insertions(+), 17 deletions(-) create mode 100644 windows/src/ext/browse4folder.txt diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.dfm b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.dfm index 253e011f76..58c66fe3c6 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.dfm +++ b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.dfm @@ -264,12 +264,4 @@ inherited frmNewModelProjectParameters: TfrmNewModelProjectParameters ReadOnly = True TabOrder = 14 end - object dlgBrowse: TBrowse4Folder - InitialDir = 'C:\Users\mcdurdin\Desktop\' - Options = [OnlySelectFileSysAncestors, ShowEditBox, UseNewDialogStyle] - Root = Desktop - Title = 'Select folder to save project to' - Left = 168 - Top = 168 - end end diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.pas b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.pas index 2010b129eb..ec36f72d76 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.pas +++ b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.pas @@ -54,7 +54,6 @@ type lblModelName: TLabel; editModelName: TEdit; Bevel1: TBevel; - dlgBrowse: TBrowse4Folder; lblProjectFilename: TLabel; editProjectFilename: TEdit; procedure cmdOKClick(Sender: TObject); @@ -76,6 +75,7 @@ type private pack: TKPSFile; FSetup: Integer; + dlgBrowse: TBrowse4Folder; function GetAuthor: string; function GetBasePath: string; function GetCopyright: string; @@ -179,8 +179,15 @@ end; procedure TfrmNewModelProjectParameters.FormCreate(Sender: TObject); begin inherited; + editPath.Text := GetFolderPath(CSIDL_PERSONAL); + dlgBrowse := TBrowse4Folder.Create(Self); + dlgBrowse.InitialDir := editPath.Text; + dlgBrowse.Options := [OnlySelectFileSysAncestors, ShowEditBox, UseNewDialogStyle]; + dlgBrowse.Root := Desktop; + dlgBrowse.Title := 'Select folder to save project to'; + pack := TKPSFile.Create; pack.LexicalModels.Add(TPackageLexicalModel.Create(pack)); diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewProjectParameters.dfm b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewProjectParameters.dfm index f982d6ca43..695eb6e43b 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewProjectParameters.dfm +++ b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewProjectParameters.dfm @@ -225,11 +225,4 @@ inherited frmNewProjectParameters: TfrmNewProjectParameters TabOrder = 12 OnChange = editKeyboardIDChange end - object dlgBrowse: TBrowse4Folder - Options = [OnlySelectFileSysDir, ShowEditBox, UseNewDialogStyle] - Root = Desktop - Title = 'Select folder to save project to' - Left = 56 - Top = 168 - end end diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewProjectParameters.pas b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewProjectParameters.pas index 226a1644cd..57f42b16b9 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewProjectParameters.pas +++ b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewProjectParameters.pas @@ -47,7 +47,6 @@ type cmdKeyboardEditLanguage: TButton; cmdKeyboardRemoveLanguage: TButton; lblKeyboardLanguages: TLabel; - dlgBrowse: TBrowse4Folder; lblProjectFilename: TLabel; editProjectFilename: TEdit; procedure cmdOKClick(Sender: TObject); @@ -67,6 +66,7 @@ type procedure editKeyboardIDChange(Sender: TObject); procedure cmdBrowseClick(Sender: TObject); private + dlgBrowse: TBrowse4Folder; pack: TKPSFile; // Used temporarily for storing language list FSetup: Integer; function GetAuthor: string; @@ -180,6 +180,11 @@ begin inherited; editPath.Text := GetFolderPath(CSIDL_PERSONAL); + dlgBrowse.InitialDir := editPath.Text; + dlgBrowse.Options := [OnlySelectFileSysDir, ShowEditBox, UseNewDialogStyle]; + dlgBrowse.Root := Desktop; + dlgBrowse.Title := 'Select folder to save project to'; + pack := TKPSFile.Create; pack.Keyboards.Add(TPackageKeyboard.Create(pack)); diff --git a/windows/src/ext/browse4folder.txt b/windows/src/ext/browse4folder.txt new file mode 100644 index 0000000000..74fc497f12 --- /dev/null +++ b/windows/src/ext/browse4folder.txt @@ -0,0 +1,49 @@ +Keyman Third Party Package Readme: Browse4Folder +================================================ + +Name: Browse4Folder +Purpose: Folder browse dialog (originally part of TEmbeddedWB) +Source: http://www.bsalsa.com +Version: 14.7? +License: Custom +Updated for: Delphi XE +Documentation: N/A +Download location: http://www.bsalsa.com +Licensed For: Unlimited developers +Include Paths: C:\keyman\10.0\src\ext\browse4folder + +Installation notes +------------------ + +Download from site above. + +Build notes +----------- + +Build package from Developer. No package. + +License - Custom +---------------- + +{*******************************************************************************} +{LICENSE: +THIS SOFTWARE IS PROVIDED TO YOU "AS IS" WITHOUT WARRANTY OF ANY KIND, +EITHER EXPRESSED OR IMPLIED INCLUDING BUT NOT LIMITED TO THE APPLIED +WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE. +YOU ASSUME THE ENTIRE RISK AS TO THE ACCURACY AND THE USE OF THE SOFTWARE +AND ALL OTHER RISK ARISING OUT OF THE USE OR PERFORMANCE OF THIS SOFTWARE +AND DOCUMENTATION. BSALSA PRODUCTIONS DOES NOT WARRANT THAT THE SOFTWARE IS ERROR-FREE +OR WILL OPERATE WITHOUT INTERRUPTION. THE SOFTWARE IS NOT DESIGNED, INTENDED +OR LICENSED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE CONTROLS, +INCLUDING WITHOUT LIMITATION, THE DESIGN, CONSTRUCTION, MAINTENANCE OR +OPERATION OF NUCLEAR FACILITIES, AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, +AIR TRAFFIC CONTROL, AND LIFE SUPPORT OR WEAPONS SYSTEMS. BSALSA PRODUCTIONS SPECIFICALLY +DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR SUCH PURPOSE. + +You may use, change or modify the component under 4 conditions: +1. In your website, add a link to "http://www.bsalsa.com" +2. In your application, add credits to "Embedded Web Browser" +3. Mail me (bsalsa@gmail.com) any code change in the unit + for the benefit of the other users. +4. Please consider donation in our web site! +{*******************************************************************************} \ No newline at end of file -- GitLab From cdcb199c778ab7babd8c71fa961dc94f11450b8d Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 21 Oct 2019 07:26:42 +0700 Subject: [PATCH 20/39] [Developer] Re-add cef; not sure if this is moving soon? --- windows/src/developer/inst/copydev.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/windows/src/developer/inst/copydev.in b/windows/src/developer/inst/copydev.in index e96bc45f28..2270783b07 100644 --- a/windows/src/developer/inst/copydev.in +++ b/windows/src/developer/inst/copydev.in @@ -13,6 +13,7 @@ TIER=alpha # We use different directories so that heat generates # different identifiers for the various folders KEYMAN_WIX_TEMP_XML=$(TEMP)\keyman_wix_build\xml +KEYMAN_WIX_TEMP_CEF=$(TEMP)\keyman_wix_build\cef KEYMAN_WIX_TEMP_TEMPLATES=$(TEMP)\keyman_wix_build\templates KEYMAN_WIX_TEMP_MODELCOMPILER=$(TEMP)\keyman_wix_build\ModelCompiler @@ -30,6 +31,7 @@ test-releaseexists: candle: heat-cef heat-xml heat-templates heat-model-compiler $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE kmdev.wxs $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dXmlSourceDir=$(ROOT)\src\developer\TIKE\xml xml.wxs + $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dTemplatesSourceDir=$(KEYMAN_DEVELOPER_TEMPLATES_ROOT) templates.wxs $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dModelCompilerSourceDir=$(KEYMAN_MODELCOMPILER_ROOT) kmlmc.wxs -- GitLab From 7a827d64179b442dd08482b8bfe4fb938a3b3d9f Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 22 Feb 2020 13:25:02 +1100 Subject: [PATCH 21/39] chore(windows): fixup chromium build --- windows/src/developer/TIKE/Tike.dproj | 131 +++++++++++++++++- .../{manifest.xml => manifest.in} | 2 +- .../kmbrowserhost/{version.rc => version.in} | 12 +- windows/src/engine/kmcomapi/version.in | 6 +- .../chromium/Keyman.UI.UframeCEFHost.pas | 4 + 5 files changed, 144 insertions(+), 11 deletions(-) rename windows/src/engine/kmbrowserhost/{manifest.xml => manifest.in} (96%) rename windows/src/engine/kmbrowserhost/{version.rc => version.in} (70%) diff --git a/windows/src/developer/TIKE/Tike.dproj b/windows/src/developer/TIKE/Tike.dproj index 0320d44da9..b2cb9340c0 100644 --- a/windows/src/developer/TIKE/Tike.dproj +++ b/windows/src/developer/TIKE/Tike.dproj @@ -7,7 +7,7 @@ 1 Application VCL - 18.7 + 18.8 Win32 @@ -665,12 +665,20 @@ classes 1 + + classes + 1 + res\xml 1 + + res\xml + 1 + @@ -683,138 +691,242 @@ library\lib\armeabi 1 + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + library\lib\mips 1 + + library\lib\mips + 1 + library\lib\armeabi-v7a 1 + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + res\drawable 1 + + res\drawable + 1 + res\values 1 + + res\values + 1 + res\values-v21 1 + + res\values-v21 + 1 + res\values 1 + + res\values + 1 + res\drawable 1 + + res\drawable + 1 + res\drawable-xxhdpi 1 + + res\drawable-xxhdpi + 1 + res\drawable-ldpi 1 + + res\drawable-ldpi + 1 + res\drawable-mdpi 1 + + res\drawable-mdpi + 1 + res\drawable-hdpi 1 + + res\drawable-hdpi + 1 + res\drawable-xhdpi 1 + + res\drawable-xhdpi + 1 + res\drawable-mdpi 1 + + res\drawable-mdpi + 1 + res\drawable-hdpi 1 + + res\drawable-hdpi + 1 + res\drawable-xhdpi 1 + + res\drawable-xhdpi + 1 + res\drawable-xxhdpi 1 + + res\drawable-xxhdpi + 1 + res\drawable-xxxhdpi 1 + + res\drawable-xxxhdpi + 1 + res\drawable-small 1 + + res\drawable-small + 1 + res\drawable-normal 1 + + res\drawable-normal + 1 + res\drawable-large 1 + + res\drawable-large + 1 + res\drawable-xlarge 1 + + res\drawable-xlarge + 1 + res\values 1 + + res\values + 1 + @@ -884,6 +996,9 @@ 0 + + 0 + 0 @@ -1215,6 +1330,9 @@ 1 + + 1 + @@ -1258,6 +1376,10 @@ library\lib\armeabi-v7a 1 + + library\lib\arm64-v8a + 1 + 1 @@ -1280,6 +1402,12 @@ 0 + + + library\lib\armeabi-v7a + 1 + + 1 @@ -1317,6 +1445,7 @@ +
12 diff --git a/windows/src/engine/kmbrowserhost/manifest.xml b/windows/src/engine/kmbrowserhost/manifest.in similarity index 96% rename from windows/src/engine/kmbrowserhost/manifest.xml rename to windows/src/engine/kmbrowserhost/manifest.in index d55646cd20..c10ce80303 100644 --- a/windows/src/engine/kmbrowserhost/manifest.xml +++ b/windows/src/engine/kmbrowserhost/manifest.in @@ -1,6 +1,6 @@ - + Keyman Engine Browser Host Process diff --git a/windows/src/engine/kmbrowserhost/version.rc b/windows/src/engine/kmbrowserhost/version.in similarity index 70% rename from windows/src/engine/kmbrowserhost/version.rc rename to windows/src/engine/kmbrowserhost/version.in index e942d24cd4..cea239c042 100644 --- a/windows/src/engine/kmbrowserhost/version.rc +++ b/windows/src/engine/kmbrowserhost/version.in @@ -1,6 +1,6 @@ 1 VERSIONINFO - FILEVERSION 11,0,1500,0 - PRODUCTVERSION 11,0,1500,0 + FILEVERSION $VERSIONNUM + PRODUCTVERSION $VERSIONNUM FILEFLAGSMASK 0x3fL FILEFLAGS 0x0L FILEOS 0x4L @@ -13,13 +13,13 @@ BEGIN VALUE "CompanyName", "SIL International\0" VALUE "FileDescription", "Keyman Engine Browser Host Process\0" - VALUE "FileVersion", "11.0.1500.0\0" - VALUE "InternalName", "KEYMAN\0" - VALUE "LegalCopyright", " SIL International\0" + VALUE "FileVersion", "$VERSION\0" + VALUE "InternalName", "KMBROWSERHOST\0" + VALUE "LegalCopyright", "© SIL International\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "KMBROWSERHOST.EXE\0" VALUE "ProductName", "Keyman Engine\0" - VALUE "ProductVersion", "11.0.1500.0\0" + VALUE "ProductVersion", "$VERSION\0" VALUE "Comments", "\0" END END diff --git a/windows/src/engine/kmcomapi/version.in b/windows/src/engine/kmcomapi/version.in index 736599ec29..80977b6262 100644 --- a/windows/src/engine/kmcomapi/version.in +++ b/windows/src/engine/kmcomapi/version.in @@ -12,12 +12,12 @@ BLOCK "0C0904E4" BEGIN VALUE "CompanyName", "SIL International\0" - VALUE "FileDescription", "SIL International Keyman\0" + VALUE "FileDescription", "Keyman API\0" VALUE "FileVersion", "$VERSION\0" - VALUE "InternalName", "KEYMAN\0" + VALUE "InternalName", "KMCOMAPI\0" VALUE "LegalCopyright", " SIL International\0" VALUE "LegalTrademarks", "\0" - VALUE "OriginalFilename", "KEYMAN.EXE\0" + VALUE "OriginalFilename", "KMCOMAPI.DLL\0" VALUE "ProductName", "Keyman Engine\0" VALUE "ProductVersion", "$VERSION\0" VALUE "Comments", "\0" diff --git a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas index c146550a3f..1c60648d6c 100644 --- a/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas +++ b/windows/src/global/delphi/chromium/Keyman.UI.UframeCEFHost.pas @@ -39,6 +39,7 @@ const CEF_TITLECHANGE = WM_USER + 309; CEF_COMMAND = WM_USER + 310; CEF_RESIZEFROMDOCUMENT = WM_USER + 311; + CEF_SETFOCUS = WM_USER + 312; type TCEFHostKeyEventData = record @@ -120,6 +121,7 @@ type procedure cefProcessMessageReceived(Sender: TObject; const browser: ICefBrowser; sourceProcess: TCefProcessId; const message: ICefProcessMessage; out Result: Boolean); + procedure cefWidgetCompMsg(var aMessage: TMessage; var aHandled: Boolean); private FApplicationHandle: THandle; FNextURL: string; @@ -155,6 +157,7 @@ type procedure Handle_CEF_TITLECHANGE(var message: TMessage); procedure Handle_CEF_COMMAND(var message: TMessage); procedure Handle_CEF_RESIZEFROMDOCUMENT(var message: TMessage); + procedure Handle_CEF_SETFOCUS(var message: TMessage); // CEF: You have to handle this two messages to call NotifyMoveOrResizeStarted or some page elements will be misaligned. procedure WMMove(var aMessage : TWMMove); message WM_MOVE; @@ -363,6 +366,7 @@ begin CEF_TITLECHANGE: Handle_CEF_TITLECHANGE(Message); CEF_COMMAND: Handle_CEF_COMMAND(Message); CEF_RESIZEFROMDOCUMENT: Handle_CEF_RESIZEFROMDOCUMENT(Message); + CEF_SETFOCUS: Handle_CEF_SETFOCUS(Message); end; if Self <> nil then -- GitLab From 50559d32a546d0871ffc5b3b51e9aa46403e1106 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 22 Feb 2020 13:40:44 +0800 Subject: [PATCH 22/39] fix(windows): keyboard options window Fixes focus issues and options not saving with new chromium host --- .../kmshell/main/UfrmKeyboardOptions.pas | 38 +------------------ 1 file changed, 1 insertion(+), 37 deletions(-) diff --git a/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas b/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas index 100ed54781..71315379fc 100644 --- a/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas +++ b/windows/src/desktop/kmshell/main/UfrmKeyboardOptions.pas @@ -29,12 +29,6 @@ uses type TfrmKeyboardOptions = class(TfrmWebContainer) - procedure webBeforeNavigate2(ASender: TObject; const pDisp: IDispatch; - var URL, Flags, TargetFrameName, PostData, Headers: OleVariant; - var Cancel: WordBool); - procedure webNewWindow3(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, - bstrUrl: WideString); private kbd: IKeymanKeyboardInstalled; FKeyboardName: WideString; @@ -42,7 +36,6 @@ type procedure WMUser_ContentRender(var Message: TMessage); message WM_USER_ContentRender; procedure DoNavigate; protected - function ShouldProcessAllCommands: Boolean; override; procedure FireCommand(const command: WideString; params: TStringList); override; public @@ -87,7 +80,7 @@ begin for i := 0 to kbd.Options.Count - 1 do kbd.Options[i].Value := ''; - for i := 1 to params.Count - 1 do + for i := 0 to params.Count - 1 do kbd.Options[params.Names[i]].Value := params.ValueFromIndex[i]; ModalResult := mrOk; end @@ -103,30 +96,6 @@ begin DoNavigate; end; -function TfrmKeyboardOptions.ShouldProcessAllCommands: Boolean; -begin - Result := True; -end; - -procedure TfrmKeyboardOptions.webBeforeNavigate2(ASender: TObject; - const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData, - Headers: OleVariant; var Cancel: WordBool); -begin - if Pos('options.htm', URL) > 0 then Exit - else inherited; -end; - -procedure TfrmKeyboardOptions.webNewWindow3(ASender: TObject; - var ppDisp: IDispatch; var Cancel: WordBool; dwFlags: Cardinal; - const bstrUrlContext, bstrUrl: WideString); -begin - if Pos('options.htm', string(bstrURL)) > 0 then - begin - Cancel := True; - end - else inherited; -end; - procedure TfrmKeyboardOptions.DoNavigate; var n: Integer; @@ -150,11 +119,6 @@ begin s := ExtractFilePath(kbd.OwnerPackage.Filename) + 'options.htm' + s; cef.Navigate(s); -{$MESSAGE HINT 'TODO: Override the onbeforenavigate'} -// web.OnBeforeNavigate2 := nil; -// v := navNoHistory or navNoReadFromCache or navNoWriteToCache; -// web.Navigate(s, v); -// web.OnBeforeNavigate2 := webBeforeNavigate2; end; procedure TfrmKeyboardOptions.WMUser_ContentRender(var Message: TMessage); -- GitLab From ddcdf486ce24e306365a4ff99ff695de2f9c8365 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 22 Feb 2020 13:41:34 +0800 Subject: [PATCH 23/39] fix(windows): chromium focus Focus was over-eager -- couldn't lose focus. Also makes cef functions virtual to allow for override. --- .../src/global/delphi/ui/UfrmWebContainer.pas | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index 96182e9ed1..2636462071 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -64,19 +64,20 @@ type procedure WMUser_ContentRender(var Message: TMessage); message WM_USER_ContentRender; procedure DownloadUILanguages; procedure ContributeUILanguages; - procedure cefLoadEnd(Sender: TObject); - procedure cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); - procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; - out Handled: Boolean); // I4989 - procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); - procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); - procedure cefCommand(Sender: TObject; const command: string; - params: TStringList); - procedure cefResizeFromDocument(Sender: TObject; awidth, aheight: Integer); - procedure cefHelpTopic(Sender: TObject); protected cef: TframeCEFHost; + procedure cefLoadEnd(Sender: TObject); virtual; + procedure cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); virtual; + procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; + out Handled: Boolean); virtual; // I4989 + procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); virtual; + procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); virtual; + procedure cefCommand(Sender: TObject; const command: string; + params: TStringList); virtual; + procedure cefResizeFromDocument(Sender: TObject; awidth, aheight: Integer); virtual; + procedure cefHelpTopic(Sender: TObject); virtual; + procedure FireCommand(const command: WideString; params: TStringList); virtual; function ShouldProcessAllCommands: Boolean; virtual; function ShouldSetAppTitle: Boolean; virtual; // I2786 @@ -195,8 +196,8 @@ end; procedure TfrmWebContainer.SetFocus; // I2720 begin -// if Assigned(cef) then -// cef.SetFocus; + if Assigned(cef) then + cef.SetFocus; end; function TfrmWebContainer.ShouldProcessAllCommands: Boolean; @@ -363,9 +364,12 @@ begin with Message do case Msg of - WM_ACTIVATE, WM_SETFOCUS, WM_KILLFOCUS: + WM_SETFOCUS: + if Assigned(cef) then + cef.SetFocus; + WM_ACTIVATE: begin - if Assigned(cef) then + if (Message.WParam <> 0) and Assigned(cef) then cef.SetFocus; end; end; -- GitLab From 8f68badb86a57bfbff12bf2cce23d95325deddf0 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 22 Feb 2020 13:56:30 +0800 Subject: [PATCH 24/39] fix(windows): keep-in-touch open internally --- windows/src/desktop/kmshell/main/UfrmMain.pas | 3 ++ .../src/global/delphi/ui/UfrmWebContainer.pas | 43 +------------------ 2 files changed, 4 insertions(+), 42 deletions(-) diff --git a/windows/src/desktop/kmshell/main/UfrmMain.pas b/windows/src/desktop/kmshell/main/UfrmMain.pas index 23dd537555..e9830b4d3a 100644 --- a/windows/src/desktop/kmshell/main/UfrmMain.pas +++ b/windows/src/desktop/kmshell/main/UfrmMain.pas @@ -217,6 +217,9 @@ procedure TfrmMain.TntFormCreate(Sender: TObject); begin inherited; + // Prevents keep-in-touch opening in browser + cef.ShouldOpenRemoteUrlsInBrowser := False; + kmcom.AutoApply := False; with TRegistryErrorControlled.Create do // I2890 diff --git a/windows/src/global/delphi/ui/UfrmWebContainer.pas b/windows/src/global/delphi/ui/UfrmWebContainer.pas index 2636462071..92ed27e7ac 100644 --- a/windows/src/global/delphi/ui/UfrmWebContainer.pas +++ b/windows/src/global/delphi/ui/UfrmWebContainer.pas @@ -68,9 +68,6 @@ type cef: TframeCEFHost; procedure cefLoadEnd(Sender: TObject); virtual; - procedure cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); virtual; - procedure cefBeforeBrowseSync(Sender: TObject; const Url: string; - out Handled: Boolean); virtual; // I4989 procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); virtual; procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); virtual; procedure cefCommand(Sender: TObject; const command: string; @@ -79,7 +76,6 @@ type procedure cefHelpTopic(Sender: TObject); virtual; procedure FireCommand(const command: WideString; params: TStringList); virtual; - function ShouldProcessAllCommands: Boolean; virtual; function ShouldSetAppTitle: Boolean; virtual; // I2786 function ShouldSetCaption: Boolean; virtual; @@ -200,11 +196,6 @@ begin cef.SetFocus; end; -function TfrmWebContainer.ShouldProcessAllCommands: Boolean; -begin - Result := False; -end; - function TfrmWebContainer.ShouldSetAppTitle: Boolean; // I2786 begin Result := False; @@ -212,7 +203,7 @@ end; function TfrmWebContainer.ShouldSetCaption: Boolean; begin - Result := TRue; + Result := True; end; procedure TfrmWebContainer.TntFormCreate(Sender: TObject); @@ -224,8 +215,6 @@ begin cef.Parent := Self; cef.Visible := True; cef.ShouldOpenRemoteUrlsInBrowser := True; - cef.OnBeforeBrowse := cefBeforeBrowse; - cef.OnBeforeBrowseSync := cefBeforeBrowseSync; cef.OnCommand := cefCommand; cef.OnLoadEnd := cefLoadEnd; cef.OnKeyEvent := cefKeyEvent; @@ -234,21 +223,6 @@ begin cef.OnHelpTopic := cefHelpTopic; end; -procedure TfrmWebContainer.cefBeforeBrowse(Sender: TObject; const Url: string; wasHandled: Boolean); -var - aparams: TStringList; - acommand: string; -begin - if ShouldProcessAllCommands then - begin - GetParamsFromURLEx(URL, aparams); - acommand := aparams[0]; - aparams.Delete(0); - FireCommand(acommand, aparams); - aparams.Free; - end; -end; - procedure TfrmWebContainer.cefCommand(Sender: TObject; const command: string; params: TStringList); begin FireCommand(command, params); @@ -259,21 +233,6 @@ begin Application.HelpJump('context_'+lowercase(FDialogName)); end; -procedure TfrmWebContainer.cefBeforeBrowseSync(Sender: TObject; const Url: string; out Handled: Boolean); -var - params: TStringList; -begin - AssertCefThread; - if ShouldProcessAllCommands then - begin - GetParamsFromURLEx(URL, params); - Handled := True; - params.Free; - end - else - Handled := False; -end; - procedure TfrmWebContainer.cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); begin -- GitLab From 4ca6a1262e90f49c7a2297472b06dc994d5cffca Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 22 Feb 2020 13:58:55 +0800 Subject: [PATCH 25/39] fix(windows): Download Keyboard open internally --- .../src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas | 2 ++ 1 file changed, 2 insertions(+) diff --git a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas index 001538318c..b023f1c0c2 100644 --- a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas +++ b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas @@ -234,6 +234,8 @@ end; procedure TfrmInstallKeyboardFromWeb.TntFormShow(Sender: TObject); begin + // Ensures keyman.com hosted site opens locally + cef.ShouldOpenRemoteUrlsInBrowser := False; XMLRenderers.RenderTemplate := 'DownloadKeyboard.xsl'; XMLRenderers.Add(TGenericXMLRenderer.Create(FXML + ''+GetVersionString+'')); // I1366 - Add version info Content_Render; -- GitLab From dfd124198cbe5a12ce5d2696d749725210bc2961 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 22 Feb 2020 14:00:43 +0800 Subject: [PATCH 26/39] fix(windows): Keyboard welcome obscured OK button --- windows/src/desktop/kmshell/main/UfrmHTML.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/src/desktop/kmshell/main/UfrmHTML.pas b/windows/src/desktop/kmshell/main/UfrmHTML.pas index ba6389c97b..0055a6776b 100644 --- a/windows/src/desktop/kmshell/main/UfrmHTML.pas +++ b/windows/src/desktop/kmshell/main/UfrmHTML.pas @@ -169,7 +169,7 @@ begin cmdPrint.Caption := MsgFromId(SKButtonPrint); cef := TframeCEFHost.Create(Self); - cef.Parent := Self; + cef.Parent := panHTML; cef.Visible := True; cef.ShouldOpenRemoteUrlsInBrowser := True; -- GitLab From 55daa5b422d0364244b5c174fdb6874f3a0f9a3c Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 23 Feb 2020 17:49:33 +0700 Subject: [PATCH 27/39] refactor(windows): start move of help and hint Moves help window and hint window out of keyman and into kmshell, part 1 of making sure we have no chromium dependencies in keyman. --- .../kmshell/help}/UfrmHelp.dfm | 0 .../kmshell/help}/UfrmHelp.pas | 28 +- windows/src/desktop/kmshell/kmshell.dpr | 3 +- windows/src/desktop/kmshell/kmshell.dproj | 445 +++++++++++++++++- windows/src/desktop/kmshell/kmshell.res | Bin 7040 -> 7036 bytes windows/src/desktop/kmshell/main/initprog.pas | 20 +- .../src/desktop/kmshell/util/KMShellHints.pas | 18 +- .../src/engine/keyman/KeymanDesktopShell.pas | 18 + windows/src/engine/keyman/KeymanHints.pas | 75 ++- windows/src/engine/keyman/UfrmKeyman7Main.pas | 17 +- windows/src/engine/keyman/keyman.dpr | 2 - windows/src/engine/keyman/keyman.dproj | 138 +++++- .../Keyman.System.FrameworkInputPane.pas | 15 + .../keyman/viskbd/UfrmVisualKeyboard.pas | 23 +- windows/src/engine/kmcomapi/kmcomapi.dproj | 441 ++++++++++++++++- .../src/global/delphi/hints/HintConsts.pas | 15 + windows/src/global/delphi/hints/Hints.pas | 12 + 17 files changed, 1164 insertions(+), 106 deletions(-) rename windows/src/{engine/keyman => desktop/kmshell/help}/UfrmHelp.dfm (100%) rename windows/src/{engine/keyman => desktop/kmshell/help}/UfrmHelp.pas (84%) diff --git a/windows/src/engine/keyman/UfrmHelp.dfm b/windows/src/desktop/kmshell/help/UfrmHelp.dfm similarity index 100% rename from windows/src/engine/keyman/UfrmHelp.dfm rename to windows/src/desktop/kmshell/help/UfrmHelp.dfm diff --git a/windows/src/engine/keyman/UfrmHelp.pas b/windows/src/desktop/kmshell/help/UfrmHelp.pas similarity index 84% rename from windows/src/engine/keyman/UfrmHelp.pas rename to windows/src/desktop/kmshell/help/UfrmHelp.pas index 1a92be7034..46c10f484b 100644 --- a/windows/src/engine/keyman/UfrmHelp.pas +++ b/windows/src/desktop/kmshell/help/UfrmHelp.pas @@ -45,6 +45,7 @@ type { Private declarations } public { Public declarations } + class procedure Execute(const Context, ActiveKeyboardID: string); procedure OpenKeyboardHelp; procedure OpenProductHelp; property ActiveKeyboard: IKeymanKeyboardInstalled read FActiveKeyboard write FActiveKeyboard; @@ -57,7 +58,7 @@ implementation {$R *.dfm} uses - KeymanDesktopShell, + help, kmint, MessageIdentifierConsts, MessageIdentifiers, @@ -67,6 +68,27 @@ uses { TfrmHelp } +class procedure TfrmHelp.Execute(const Context, ActiveKeyboardID: string); +begin + with TfrmHelp.Create(nil) do // I1251 - Combine help with keyboard help + try + HelpJump := Context; + if ActiveKeyboardID = '' + then ActiveKeyboard := nil + else ActiveKeyboard := kmint.kmcom.Keyboards.Items[ActiveKeyboardID]; + + ShowModal; + + case HelpTarget of + htNone: ; + htProduct: OpenProductHelp; + htKeyboard: OpenKeyboardHelp; + end; + finally + Free; + end; +end; + procedure TfrmHelp.FireCommand(const command: WideString; params: TStringList); begin if command = 'openkeyboardhelp' then @@ -90,8 +112,8 @@ end; procedure TfrmHelp.OpenProductHelp; begin if FHelpJump = '' - then TKeymanDesktopShell.OpenHelp('index') - else TKeymanDesktopShell.OpenHelp(FHelpJump); + then OpenHelp('index') + else OpenHelp(FHelpJump); end; procedure TfrmHelp.TntFormCreate(Sender: TObject); diff --git a/windows/src/desktop/kmshell/kmshell.dpr b/windows/src/desktop/kmshell/kmshell.dpr index f1be5a08c4..147efdd544 100644 --- a/windows/src/desktop/kmshell/kmshell.dpr +++ b/windows/src/desktop/kmshell/kmshell.dpr @@ -155,7 +155,8 @@ uses UImportOlderVersionKeyboards9Plus in 'main\UImportOlderVersionKeyboards9Plus.pas', Keyman.Configuration.UI.MitigationForWin10_1803 in 'install\Keyman.Configuration.UI.MitigationForWin10_1803.pas', Keyman.System.CEFManager in '..\..\global\delphi\chromium\Keyman.System.CEFManager.pas', - Keyman.UI.UframeCEFHost in '..\..\global\delphi\chromium\Keyman.UI.UframeCEFHost.pas'; + Keyman.UI.UframeCEFHost in '..\..\global\delphi\chromium\Keyman.UI.UframeCEFHost.pas', + UfrmHelp in 'help\UfrmHelp.pas' {frmHelp}; {$R VERSION.RES} {$R manifest.res} diff --git a/windows/src/desktop/kmshell/kmshell.dproj b/windows/src/desktop/kmshell/kmshell.dproj index 4b80f4e5b1..d4d4e81308 100644 --- a/windows/src/desktop/kmshell/kmshell.dproj +++ b/windows/src/desktop/kmshell/kmshell.dproj @@ -7,7 +7,7 @@ 1 Application VCL - 18.4 + 18.8 Win32 @@ -297,6 +297,10 @@ + +
frmHelp
+ dfm +
Cfg_2 @@ -406,7 +410,6 @@ 1 - Contents\MacOS 0 @@ -415,6 +418,20 @@ classes 1 + + classes + 1 + + + + + res\xml + 1 + + + res\xml + 1 + @@ -427,90 +444,242 @@ library\lib\armeabi 1 + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + library\lib\mips 1 + + library\lib\mips + 1 + library\lib\armeabi-v7a 1 + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + res\drawable 1 + + res\drawable + 1 + res\values 1 + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + res\drawable 1 + + res\drawable + 1 + res\drawable-xxhdpi 1 + + res\drawable-xxhdpi + 1 + res\drawable-ldpi 1 + + res\drawable-ldpi + 1 + res\drawable-mdpi 1 + + res\drawable-mdpi + 1 + res\drawable-hdpi 1 + + res\drawable-hdpi + 1 + res\drawable-xhdpi 1 + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + res\drawable-small 1 + + res\drawable-small + 1 + res\drawable-normal 1 + + res\drawable-normal + 1 + res\drawable-large 1 + + res\drawable-large + 1 + res\drawable-xlarge 1 + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + @@ -528,6 +697,10 @@ 1 .framework + + 1 + .framework + 0 @@ -537,6 +710,10 @@ 1 .dylib + + 1 + .dylib + 0 .dll;.bpl @@ -559,6 +736,10 @@ 1 .dylib + + 1 + .dylib + 0 .bpl @@ -568,6 +749,9 @@ 0 + + 0 + 0 @@ -580,6 +764,9 @@ 0 + + 0 + 0 @@ -595,6 +782,17 @@ 1 + + + 1 + + + 1 + + + 1 + + 1 @@ -606,6 +804,39 @@ 1 + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + 1 @@ -617,6 +848,61 @@ 1 + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + 1 @@ -628,6 +914,116 @@ 1 + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + 1 @@ -661,10 +1057,35 @@ 1 + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + 1 + + 1 + @@ -690,6 +1111,7 @@ 1 + @@ -697,12 +1119,20 @@ Contents\Resources 1 + + Contents\Resources + 1 + library\lib\armeabi-v7a 1 + + library\lib\arm64-v8a + 1 + 1 @@ -718,10 +1148,19 @@ 1 + + 1 + 0 + + + library\lib\armeabi-v7a + 1 + + 1 @@ -757,7 +1196,9 @@ + + 12 diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res index 584c3415da7b6a5444d1b67723f8a92134e9ff27..542c7839023485c6997ceafe62380c58a67e04ab 100644 GIT binary patch delta 31 ncmZoL|6?|xgoWekKADXbXG9pUZ*~gR}zx(4`BW delta 33 pcmexk)?hxNgeCoclk~=lGa`&PH@k|SX4=drp~uX~Fxgt#5diCE3&#Ke diff --git a/windows/src/desktop/kmshell/main/initprog.pas b/windows/src/desktop/kmshell/main/initprog.pas index e467279026..a548d91df0 100644 --- a/windows/src/desktop/kmshell/main/initprog.pas +++ b/windows/src/desktop/kmshell/main/initprog.pas @@ -88,7 +88,11 @@ type fmBaseKeyboard, // I4169 fmUpgradeMnemonicLayout, // I4553 fmRepair, - fmKeepInTouch); // I4773 + fmKeepInTouch, + + // Commands from Keyman Engine + fmShowHint, + fmShowHelp); // I4773 var ApplicationRunning: Boolean = False; @@ -108,6 +112,7 @@ uses KeymanPaths, KLog, kmint, + KMShellHints, KeymanMutex, OnlineUpdateCheck, ExternalExceptionHandler, @@ -118,6 +123,7 @@ uses UfrmInstallKeyboardLanguage, //UfrmSelectLanguage, UfrmSplash, + UfrmHelp, UfrmHTML, UfrmKeepInTouch, UfrmMain, @@ -254,6 +260,11 @@ begin FQuery := Trim(FQuery); end else if Copy(s, 1, 3) = '-ur' then UnRegCRC := StrToIntDef('$'+Copy(s, 4, 8), 0) + + // Controls from Keyman Engine + else if s = '-showhint' then FMode := fmShowHint + else if s = '-showhelp' then FMode := fmShowHelp + else Exit; end else @@ -493,6 +504,13 @@ begin ExitCode := 0; fmKeepInTouch: ShowKeepInTouchForm(True); // I4658 + + fmShowHint: + if ShowKMShellHintQuery(FirstKeyboardFileName) = mrOk + then ExitCode := 0 + else ExitCode := 1; + fmShowHelp: + TfrmHelp.Execute(FirstKeyboardFileName, SecondKeyboardFileName); end; if FMode <> fmMain then diff --git a/windows/src/desktop/kmshell/util/KMShellHints.pas b/windows/src/desktop/kmshell/util/KMShellHints.pas index 9240914907..6905325605 100644 --- a/windows/src/desktop/kmshell/util/KMShellHints.pas +++ b/windows/src/desktop/kmshell/util/KMShellHints.pas @@ -35,8 +35,8 @@ uses SysUtils, Windows; -procedure ShowKMShellHint(AHint: TKeymanHint); -function ShowKMShellHintQuery(AHint: TKeymanHint; AButtons: TMsgDlgButtons; ADefaultResult: TModalResult): TModalResult; +function ShowKMShellHintQuery(AHint: TKeymanHint; AButtons: TMsgDlgButtons; ADefaultResult: TModalResult): TModalResult; overload; +function ShowKMShellHintQuery(AHint: string): TModalResult; overload; implementation @@ -45,12 +45,20 @@ uses UfrmHint, XMLRenderer; -procedure ShowKMShellHint(AHint: TKeymanHint); +function ShowKMShellHintQuery(AHint: string): TModalResult; overload; +var + h: TKeymanHint; begin - ShowKMShellHintQuery(AHint, [mbOk], mrOk); + h := GetHintFromName(AHint); + if h = KH_NULL then + Exit(mrOk); + + if KeymanHintData[h].IsQuestion + then Result := ShowKMShellHintQuery(h, mbOKCancel, mrOk) + else Result := ShowKMShellHintQuery(h, [mbOk], mrOk); end; -function ShowKMShellHintQuery(AHint: TKeymanHint; AButtons: TMsgDlgButtons; ADefaultResult: TModalResult): TModalResult; +function ShowKMShellHintQuery(AHint: TKeymanHint; AButtons: TMsgDlgButtons; ADefaultResult: TModalResult): TModalResult; overload; begin Result := ADefaultResult; if IsHintEnabled(AHint) then diff --git a/windows/src/engine/keyman/KeymanDesktopShell.pas b/windows/src/engine/keyman/KeymanDesktopShell.pas index 52f5b38c01..7042241ff5 100644 --- a/windows/src/engine/keyman/KeymanDesktopShell.pas +++ b/windows/src/engine/keyman/KeymanDesktopShell.pas @@ -2,11 +2,16 @@ unit KeymanDesktopShell; interface +uses + keymanapi_tlb; + type TKeymanDesktopShell = class class function RunKeymanConfiguration(params: string = ''): Boolean; + class function WaitForKeymanConfiguration(const params: string; var ec: Cardinal): Boolean; class function IsTextEditorVisible: Boolean; static; class function OpenHelp(topic: string): Boolean; + class function OpenHelpJump(const topic: string; ActiveKeyboard: IKeymanKeyboardInstalled): Boolean; private class function GetRootPath: string; class function GetRootDir: string; @@ -42,6 +47,12 @@ begin Result := TUtilExecute.Shell(0, GetShellPath, GetRootPath, params); end; +class function TKeymanDesktopShell.WaitForKeymanConfiguration( + const params: string; var ec: Cardinal): Boolean; +begin + Result := TUtilExecute.WaitForProcess('"'+GetShellPath+'" '+params, GetRootPath, ec); +end; + const STextEditorClassName = 'TfrmTextEditor'; // I4265 @@ -62,4 +73,11 @@ begin Result := RunKeymanConfiguration('-h '+cleantopic); end; +class function TKeymanDesktopShell.OpenHelpJump(const topic: string; ActiveKeyboard: IKeymanKeyboardInstalled): Boolean; +begin + if ActiveKeyboard = nil + then Result := RunKeymanConfiguration('-showhelp '+topic) + else Result := RunKeymanConfiguration('-showhelp "'+topic+'" "'+ActiveKeyboard.ID+'"'); +end; + end. diff --git a/windows/src/engine/keyman/KeymanHints.pas b/windows/src/engine/keyman/KeymanHints.pas index 68bd7914af..808befe7a4 100644 --- a/windows/src/engine/keyman/KeymanHints.pas +++ b/windows/src/engine/keyman/KeymanHints.pas @@ -23,12 +23,8 @@ unit KeymanHints; // I3306 interface uses - Classes, - Consts, - Controls, - Dialogs, - Forms, - Graphics, + System.Classes, + Vcl.Controls, HintConsts, Math, Messages, @@ -36,61 +32,50 @@ uses SysUtils, Windows; -function ShowKeymanHint(AHint: TKeymanHint): TModalResult; // I4242 -function ShowKeymanHintQuery(AHint: TKeymanHint; AButtons: TMsgDlgButtons; ADefaultResult: TModalResult): TModalResult; +function ShowKeymanHint(AHint: TKeymanHint): Boolean; // I4242 implementation uses Hints, keymanapi_TLB, - kmint, - UfrmHint, + KeymanDesktopShell, + kmint; // UfrmKeyman7Main, - XMLRenderer; +// XMLRenderer; -function ShowKeymanHint(AHint: TKeymanHint): TModalResult; // I4242 -begin - Result := ShowKeymanHintQuery(AHint, [mbOk], mrOk); // I4242 -end; +var + InHint: Boolean = False; -function ShowKeymanHintQuery(AHint: TKeymanHint; AButtons: TMsgDlgButtons; ADefaultResult: TModalResult): TModalResult; +function ShowKeymanHint(AHint: TKeymanHint): Boolean; var - hwnd: THandle; +// hwnd: THandle; + ec: Cardinal; begin - Result := ADefaultResult; + if InHint then + Exit(False); - if TfrmHint.Instance <> nil then // I4242 - begin - TfrmHint.Instance.BringToFront; - Exit(mrCancel); - end; + Result := True; - if not Assigned(kmcom) then Exit; - hwnd := kmcom.Control.LastFocusWindow; + InHint := True; + try + if not Assigned(kmcom) then Exit; + // hwnd := kmcom.Control.LastFocusWindow; - if IsHintEnabled(AHint) then - begin - if FileExists(GetXMLTemplatePath('hint.xsl')+'hint.xsl') then + if not IsHintEnabled(AHint) then Exit; + + if KeymanHintData[AHint].IsQuestion then begin - with TfrmHint.Create(nil) do // I4242 - try - Hint := AHint; - Buttons := AButtons; - DefaultResult := ADefaultResult; // I3554 -> removed fsStayOnStop - Result := ShowModal; - finally - Free; - end; - end; + //TODO: Make this background with a post message to main to close + TKeymanDesktopShell.WaitForKeymanConfiguration('-showhint '+GetHintName(AHint), ec); + if ec = 1 then + Result := False + end + else + TKeymanDesktopShell.RunKeymanConfiguration('-showhint '+GetHintName(AHint)); + finally + InHint := False; end; - - if not Assigned(kmcom) then Exit; // This can happen if Keyman exits while the hint window is visible - - AttachThreadInput(GetCurrentThreadId, GetWindowThreadProcessId(hwnd, nil), TRUE); - Windows.SetForegroundWindow(kmcom.Control.LastActiveWindow); - Windows.SetFocus(hwnd); - AttachThreadInput(GetCurrentThreadId, GetwindowThreadProcessId(hwnd, nil), FALSE); end; end. diff --git a/windows/src/engine/keyman/UfrmKeyman7Main.pas b/windows/src/engine/keyman/UfrmKeyman7Main.pas index 3317b57d82..c2a9d86ee3 100644 --- a/windows/src/engine/keyman/UfrmKeyman7Main.pas +++ b/windows/src/engine/keyman/UfrmKeyman7Main.pas @@ -394,7 +394,6 @@ implementation uses DebugPaths, - UfrmHelp, UILanguages, UfrmOSKCharacterMap, utilstr, @@ -1141,7 +1140,7 @@ end; procedure TfrmKeyman7Main.MnuExitKeyman(Sender: TObject); begin - if ShowKeymanHintQuery(KH_EXITPRODUCT, mbOkCancel, mrOk) = mrCancel then Exit; + if not ShowKeymanHint(KH_EXITPRODUCT) then Exit; UnloadProduct; end; @@ -1550,19 +1549,7 @@ end; procedure TfrmKeyman7Main.MnuOpenProductHelp(Sender: TObject); begin - with TfrmHelp.Create(Self) do // I1236 - Integrate keyboard help with Keyman help - try - HelpJump := 'context_traymenu'; - ActiveKeyboard := Self.ActiveKeyboard; - ShowModal; - case HelpTarget of - htNone: ; - htProduct: OpenProductHelp; - htKeyboard: OpenKeyboardHelp; - end; - finally - Free; - end; + TKeymanDesktopShell.OpenHelpJump('context_traymenu', Self.ActiveKeyboard); end; procedure TfrmKeyman7Main.MnuRunProgram(Sender: TObject); // I4606 diff --git a/windows/src/engine/keyman/keyman.dpr b/windows/src/engine/keyman/keyman.dpr index 6fecaeed22..6d965fdfa5 100644 --- a/windows/src/engine/keyman/keyman.dpr +++ b/windows/src/engine/keyman/keyman.dpr @@ -74,10 +74,8 @@ uses UfrmKeymanBase in '..\..\global\delphi\ui\UfrmKeymanBase.pas' {frmKeymanBase: TTntForm}, UfrmWebContainer in '..\..\global\delphi\ui\UfrmWebContainer.pas' {frmWebContainer: TTntForm}, XMLRenderer in '..\..\global\delphi\ui\XMLRenderer.pas', - UfrmHint in '..\..\global\delphi\hints\UfrmHint.pas' {frmHint}, GenericXMLRenderer in '..\..\global\delphi\ui\GenericXMLRenderer.pas', Hints in '..\..\global\delphi\hints\Hints.pas', - UfrmHelp in 'UfrmHelp.pas' {frmHelp: TTntForm}, UfrmOSKKeyboardUsage in 'viskbd\UfrmOSKKeyboardUsage.pas' {frmOSKKeyboardUsage}, utilcheckfonts in '..\..\global\delphi\general\utilcheckfonts.pas', findfonts in '..\..\global\delphi\general\findfonts.pas', diff --git a/windows/src/engine/keyman/keyman.dproj b/windows/src/engine/keyman/keyman.dproj index edfb6f0ba3..f2d522f0cf 100644 --- a/windows/src/engine/keyman/keyman.dproj +++ b/windows/src/engine/keyman/keyman.dproj @@ -7,7 +7,7 @@ 1 Console VCL - 18.7 + 18.8 Win32
@@ -181,15 +181,8 @@ TTntForm
- -
frmHint
-
- -
frmHelp
- TTntForm -
frmOSKKeyboardUsage
@@ -359,12 +352,20 @@ classes 1 + + classes + 1 + res\xml 1 + + res\xml + 1 + @@ -377,138 +378,242 @@ library\lib\armeabi 1 + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + library\lib\mips 1 + + library\lib\mips + 1 + library\lib\armeabi-v7a 1 + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + res\drawable 1 + + res\drawable + 1 + res\values 1 + + res\values + 1 + res\values-v21 1 + + res\values-v21 + 1 + res\values 1 + + res\values + 1 + res\drawable 1 + + res\drawable + 1 + res\drawable-xxhdpi 1 + + res\drawable-xxhdpi + 1 + res\drawable-ldpi 1 + + res\drawable-ldpi + 1 + res\drawable-mdpi 1 + + res\drawable-mdpi + 1 + res\drawable-hdpi 1 + + res\drawable-hdpi + 1 + res\drawable-xhdpi 1 + + res\drawable-xhdpi + 1 + res\drawable-mdpi 1 + + res\drawable-mdpi + 1 + res\drawable-hdpi 1 + + res\drawable-hdpi + 1 + res\drawable-xhdpi 1 + + res\drawable-xhdpi + 1 + res\drawable-xxhdpi 1 + + res\drawable-xxhdpi + 1 + res\drawable-xxxhdpi 1 + + res\drawable-xxxhdpi + 1 + res\drawable-small 1 + + res\drawable-small + 1 + res\drawable-normal 1 + + res\drawable-normal + 1 + res\drawable-large 1 + + res\drawable-large + 1 + res\drawable-xlarge 1 + + res\drawable-xlarge + 1 + res\values 1 + + res\values + 1 + @@ -578,6 +683,9 @@ 0 + + 0 + 0 @@ -909,6 +1017,9 @@ 1 + + 1 + @@ -952,6 +1063,10 @@ library\lib\armeabi-v7a 1 + + library\lib\arm64-v8a + 1 + 1 @@ -974,6 +1089,12 @@ 0 + + + library\lib\armeabi-v7a + 1 + + 1 @@ -1011,6 +1132,7 @@ + 12 diff --git a/windows/src/engine/keyman/touchkeyboard/Keyman.System.FrameworkInputPane.pas b/windows/src/engine/keyman/touchkeyboard/Keyman.System.FrameworkInputPane.pas index 76cc66009d..f4374a858a 100644 --- a/windows/src/engine/keyman/touchkeyboard/Keyman.System.FrameworkInputPane.pas +++ b/windows/src/engine/keyman/touchkeyboard/Keyman.System.FrameworkInputPane.pas @@ -1,3 +1,18 @@ +{ + Copyright (C) 2019-2020 SIL International + + Checks for visibility of Windows touch keyboard + "framework input pane" to control whether or not + Keyman's serialized input pathway is enabled. + + When Keyman's serialized input pathway is enabled, the + first keystroke causes the touch panel to be dismissed, + as the touch panel sees the re-injection of the keystroke + as coming from hardware. + + So we don't serialize input while the touch panel is + visible. +} unit Keyman.System.FrameworkInputPane; interface diff --git a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas index 732c4c7d23..e4c3c0c666 100644 --- a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas +++ b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas @@ -296,7 +296,6 @@ uses KeymanDesktopShell, RegistryKeys, Keyman.System.Util.RenderLanguageIcon, - UfrmHelp, UfrmKeyman7Main, UnicodeData, utildir, @@ -1623,27 +1622,7 @@ end; procedure TfrmVisualKeyboard.BtnHelpClick(Sender: TObject); begin - with TfrmHelp.Create(Self) do // I1251 - Combine help with keyboard help - try - HelpJump := 'context_onscreenkeyboard'; - ActiveKeyboard := frmKeyman7Main.ActiveKeyboard;// KeymanInterface.Control.ActiveKeyboard; - ShowModal; - case HelpTarget of - htNone: ; - htProduct: OpenProductHelp; - htKeyboard: OpenKeyboardHelp; - end; - finally - Free; - end; - - {case ActivePage of - apKeyboard: prod.OpenHelp('context_onscreenkeyboard'); - apCharacterMap: prod.OpenHelp('context_charactermap'); - apEntryHelper: prod.OpenHelp('context_entryhelper'); - apKeyboardUsage: prod.OpenHelp('context_keyboardusage'); - apFontHelper: - end;} + TKeymanDesktopShell.OpenHelpJump('context_onscreenkeyboard', frmKeyman7Main.ActiveKeyboard); end; procedure TfrmVisualKeyboard.BtnHideHint(Sender: TObject); diff --git a/windows/src/engine/kmcomapi/kmcomapi.dproj b/windows/src/engine/kmcomapi/kmcomapi.dproj index 6a79524cfd..3b014b9652 100644 --- a/windows/src/engine/kmcomapi/kmcomapi.dproj +++ b/windows/src/engine/kmcomapi/kmcomapi.dproj @@ -7,7 +7,7 @@ 3 Library VCL - 18.4 + 18.8 Win32 @@ -389,7 +389,6 @@ 1 - Contents\MacOS 0 @@ -398,6 +397,20 @@ classes 1 + + classes + 1 + + + + + res\xml + 1 + + + res\xml + 1 + @@ -410,90 +423,242 @@ library\lib\armeabi 1 + + library\lib\armeabi + 1 + + + + + library\lib\armeabi-v7a + 1 + library\lib\mips 1 + + library\lib\mips + 1 + library\lib\armeabi-v7a 1 + + library\lib\arm64-v8a + 1 + + + + + library\lib\armeabi-v7a + 1 + res\drawable 1 + + res\drawable + 1 + res\values 1 + + res\values + 1 + + + + + res\values-v21 + 1 + + + res\values-v21 + 1 + + + + + res\values + 1 + + + res\values + 1 + res\drawable 1 + + res\drawable + 1 + res\drawable-xxhdpi 1 + + res\drawable-xxhdpi + 1 + res\drawable-ldpi 1 + + res\drawable-ldpi + 1 + res\drawable-mdpi 1 + + res\drawable-mdpi + 1 + res\drawable-hdpi 1 + + res\drawable-hdpi + 1 + res\drawable-xhdpi 1 + + res\drawable-xhdpi + 1 + + + + + res\drawable-mdpi + 1 + + + res\drawable-mdpi + 1 + + + + + res\drawable-hdpi + 1 + + + res\drawable-hdpi + 1 + + + + + res\drawable-xhdpi + 1 + + + res\drawable-xhdpi + 1 + + + + + res\drawable-xxhdpi + 1 + + + res\drawable-xxhdpi + 1 + + + + + res\drawable-xxxhdpi + 1 + + + res\drawable-xxxhdpi + 1 + res\drawable-small 1 + + res\drawable-small + 1 + res\drawable-normal 1 + + res\drawable-normal + 1 + res\drawable-large 1 + + res\drawable-large + 1 + res\drawable-xlarge 1 + + res\drawable-xlarge + 1 + + + + + res\values + 1 + + + res\values + 1 + @@ -511,6 +676,10 @@ 1 .framework + + 1 + .framework + 0 @@ -520,6 +689,10 @@ 1 .dylib + + 1 + .dylib + 0 .dll;.bpl @@ -542,6 +715,10 @@ 1 .dylib + + 1 + .dylib + 0 .bpl @@ -551,6 +728,9 @@ 0 + + 0 + 0 @@ -563,6 +743,9 @@ 0 + + 0 + 0 @@ -578,6 +761,17 @@ 1 + + + 1 + + + 1 + + + 1 + + 1 @@ -589,6 +783,39 @@ 1 + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + 1 @@ -600,6 +827,61 @@ 1 + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + 1 @@ -611,6 +893,116 @@ 1 + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + 1 @@ -644,10 +1036,35 @@ 1 + + + 1 + + + 1 + + + 1 + + + + + 1 + + + 1 + + + 1 + + 1 + + 1 + @@ -673,6 +1090,7 @@ 1 + @@ -680,12 +1098,20 @@ Contents\Resources 1 + + Contents\Resources + 1 + library\lib\armeabi-v7a 1 + + library\lib\arm64-v8a + 1 + 1 @@ -701,10 +1127,19 @@ 1 + + 1 + 0 + + + library\lib\armeabi-v7a + 1 + + 1 @@ -740,7 +1175,9 @@ + + 12 diff --git a/windows/src/global/delphi/hints/HintConsts.pas b/windows/src/global/delphi/hints/HintConsts.pas index 30c9f4c442..d202906ad1 100644 --- a/windows/src/global/delphi/hints/HintConsts.pas +++ b/windows/src/global/delphi/hints/HintConsts.pas @@ -29,6 +29,21 @@ type KH_OSKHINTBAR ); + TKeymanHintData = record + IsQuestion: Boolean; // True = OK+Cancel buttons; False = OK button only + end; + +const + KeymanHintData: array[TKeymanHint] of TKeymanHintData = ( + (IsQuestion: False), + (IsQuestion: False), + (IsQuestion: True), + (IsQuestion: False), + (IsQuestion: False), + (IsQuestion: False) + ); + implementation + end. diff --git a/windows/src/global/delphi/hints/Hints.pas b/windows/src/global/delphi/hints/Hints.pas index c6f7f17d8c..86ca962ad8 100644 --- a/windows/src/global/delphi/hints/Hints.pas +++ b/windows/src/global/delphi/hints/Hints.pas @@ -33,6 +33,7 @@ procedure EnableAllHints; procedure ResetAllHints; function GetHintName(const Hint: TKeymanHint): string; +function GetHintFromName(const Name: string): TKeymanHint; implementation @@ -44,6 +45,17 @@ begin Result := GetEnumName(TypeInfo(TKeymanHint), Ord(Hint)); end; +function GetHintFromName(const Name: string): TKeymanHint; +var + v: Integer; +begin + v := GetEnumValue(TypeInfo(TKeymanHint), Name); + if v < 0 then + Result := KH_NULL + else + Result := TKeymanHint(v); +end; + function IsHintEnabled(Hint: TKeymanHint): Boolean; var HintName: string; -- GitLab From 7c9b154119616a356cd183ef0bd92ea5bb7f7964 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 23 Feb 2020 18:57:00 +0700 Subject: [PATCH 28/39] feat(windows): remove all web from keyman We no longer have any web components in keyman.exe. Note that font helper is incomplete at this point. --- .../src/engine/keyman/Menu_KeyboardItems.pas | 8 +- windows/src/engine/keyman/UfrmKeyman7Main.pas | 22 +- windows/src/engine/keyman/keyman.dpr | 8 - windows/src/engine/keyman/keyman.dproj | 18 - windows/src/engine/keyman/main.pas | 13 +- .../keyman/viskbd/UfrmOSKFontHelper.dfm | 23 + .../keyman/viskbd/UfrmOSKFontHelper.pas | 186 ++---- .../keyman/viskbd/UfrmOSKKeyboardUsage.dfm | 11 - .../keyman/viskbd/UfrmOSKKeyboardUsage.pas | 603 ------------------ .../engine/keyman/viskbd/UfrmOSKWelcome.dfm | 40 -- .../keyman/viskbd/UfrmVisualKeyboard.dfm | 26 +- .../keyman/viskbd/UfrmVisualKeyboard.pas | 167 +---- 12 files changed, 101 insertions(+), 1024 deletions(-) delete mode 100644 windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.dfm delete mode 100644 windows/src/engine/keyman/viskbd/UfrmOSKKeyboardUsage.pas delete mode 100644 windows/src/engine/keyman/viskbd/UfrmOSKWelcome.dfm diff --git a/windows/src/engine/keyman/Menu_KeyboardItems.pas b/windows/src/engine/keyman/Menu_KeyboardItems.pas index 5bcca238f7..4fd1d61aaa 100644 --- a/windows/src/engine/keyman/Menu_KeyboardItems.pas +++ b/windows/src/engine/keyman/Menu_KeyboardItems.pas @@ -320,7 +320,8 @@ begin end; - if (cmi.ItemType = _mitKeyboardsList) or (cmi.Action = _miaSwitchKeymanOff) then Continue; + if (cmi.ItemType = _mitKeyboardsList) or (cmi.Action = _miaSwitchKeymanOff) or + (cmi.Action = miaOSK_ViewKeyboardUsage) then Continue; mi := CreateKeymanMenuItem(FKeyman, FMenu, cmi); @@ -342,11 +343,6 @@ begin mi.Checked := frmKeyman7Main.VisualKeyboardVisible(apKeyboard); mi.OnClick := frmKeyman7Main.MnuVisualKeyboard; end; - miaOSK_ViewKeyboardUsage: - begin - mi.Checked := frmKeyman7Main.VisualKeyboardVisible(apKeyboardUsage); - mi.OnClick := frmKeyman7Main.MnuKeyboardUsage; - end; miaOSK_ViewFontHelper: begin mi.Checked := frmKeyman7Main.VisualKeyboardVisible(apFontHelper); diff --git a/windows/src/engine/keyman/UfrmKeyman7Main.pas b/windows/src/engine/keyman/UfrmKeyman7Main.pas index c2a9d86ee3..de5121a98d 100644 --- a/windows/src/engine/keyman/UfrmKeyman7Main.pas +++ b/windows/src/engine/keyman/UfrmKeyman7Main.pas @@ -302,7 +302,6 @@ type procedure HotkeyWndProc(var Message: TMessage); procedure DoLanguageHotkey(Index: Integer); - procedure CEFShutdownComplete(Sender: TObject); protected procedure DoInterfaceHotkey(Target: Integer); @@ -332,7 +331,6 @@ type procedure MnuVisualKeyboard(Sender: TObject); procedure MnuCharacterMap(Sender: TObject); procedure MnuFontHelper(Sender: TObject); - procedure MnuKeyboardUsage(Sender: TObject); procedure MnuRunProgram(Sender: TObject); procedure MnuSelectKeyboard(Sender: TObject); // I4606 @@ -411,7 +409,6 @@ uses RegistryKeys, klog, GetOsVersion, - Keyman.System.CEFManager, System.Win.ComObj, {tlhelp32,} VistaMessages, Vcl.AxCtrls, @@ -695,18 +692,10 @@ begin FClosingApp := True; ReleaseMutex(hProgramMutex); // We are not controlling Keyman any more - another copy of Keyman.exe may start - if not (csDestroying in ComponentState) then - begin - FInitializeCEF.StartShutdown(CEFShutdownComplete); - end; + Close; end; end; -procedure TfrmKeyman7Main.CEFShutdownComplete(Sender: TObject); -begin - Close; -end; - { TRunningProduct } constructor TRunningProduct.Create(AOwner: TComponent); @@ -901,7 +890,6 @@ begin khKeyboardMenu: ShowMenu(FRunningProduct.FTrayIcon, milLeft, True, Rect(0,0,0,0)); // I1377 - Show the menu down near the tray when hotkey is pressed // I3990 khVisualKeyboard: MnuVisualKeyboard(nil); khKeymanConfiguration: TKeymanDesktopShell.RunKeymanConfiguration('-c 0'); - khKeyboardUsage: MnuKeyboardUsage(nil); khFontHelper: MnuFontHelper(nil); khCharacterMap: MnuCharacterMap(nil); khTextEditor: MnuOpenTextEditor(nil); @@ -1618,14 +1606,6 @@ begin //TOUCH end; end; -procedure TfrmKeyman7Main.MnuKeyboardUsage(Sender: TObject); -begin - SetLastFocus; // I1289 - Focus not returned to active app when OSK opened - if VisualKeyboardVisible(apKeyboardUsage) - then HideVisualKeyboard - else ShowVisualKeyboard(apKeyboardUsage); -end; - procedure TfrmKeyman7Main.MnuFontHelper(Sender: TObject); begin SetLastFocus; // I1289 - Focus not returned to active app when OSK opened diff --git a/windows/src/engine/keyman/keyman.dpr b/windows/src/engine/keyman/keyman.dpr index 6d965fdfa5..f3644256a0 100644 --- a/windows/src/engine/keyman/keyman.dpr +++ b/windows/src/engine/keyman/keyman.dpr @@ -72,15 +72,10 @@ uses HintConsts in '..\..\global\delphi\hints\HintConsts.pas', KeymanHints in 'KeymanHints.pas', UfrmKeymanBase in '..\..\global\delphi\ui\UfrmKeymanBase.pas' {frmKeymanBase: TTntForm}, - UfrmWebContainer in '..\..\global\delphi\ui\UfrmWebContainer.pas' {frmWebContainer: TTntForm}, - XMLRenderer in '..\..\global\delphi\ui\XMLRenderer.pas', - GenericXMLRenderer in '..\..\global\delphi\ui\GenericXMLRenderer.pas', Hints in '..\..\global\delphi\hints\Hints.pas', - UfrmOSKKeyboardUsage in 'viskbd\UfrmOSKKeyboardUsage.pas' {frmOSKKeyboardUsage}, utilcheckfonts in '..\..\global\delphi\general\utilcheckfonts.pas', findfonts in '..\..\global\delphi\general\findfonts.pas', WideStringClass in '..\..\global\delphi\general\WideStringClass.pas', - WebBrowserManager in '..\..\global\delphi\comp\WebBrowserManager.pas', ErrLogPath in '..\..\global\delphi\general\ErrLogPath.pas', UFixupMissingFile in '..\..\global\delphi\ui\UFixupMissingFile.pas', utiluac in '..\..\global\delphi\general\utiluac.pas', @@ -101,7 +96,6 @@ uses utilexecute in '..\..\global\delphi\general\utilexecute.pas', KeymanVersion in '..\..\global\delphi\general\KeymanVersion.pas', MSXMLDomCreate in '..\..\global\delphi\general\MSXMLDomCreate.pas', - UfrmScriptError in '..\..\global\delphi\general\UfrmScriptError.pas' {frmScriptError}, OnScreenKeyboardData in '..\..\global\delphi\visualkeyboard\OnScreenKeyboardData.pas', Keyman.System.Util.RenderLanguageIcon in '..\..\global\delphi\ui\Keyman.System.Util.RenderLanguageIcon.pas', TempFileManager in '..\..\global\delphi\general\TempFileManager.pas', @@ -135,8 +129,6 @@ uses Keyman.System.SharedBuffers in 'Keyman.System.SharedBuffers.pas', Keyman.System.Security in '..\..\global\delphi\general\Keyman.System.Security.pas', Keyman.Winapi.VersionHelpers in '..\..\global\delphi\winapi\Keyman.Winapi.VersionHelpers.pas', - Keyman.System.CEFManager in '..\..\global\delphi\chromium\Keyman.System.CEFManager.pas', - Keyman.UI.UframeCEFHost in '..\..\global\delphi\chromium\Keyman.UI.UframeCEFHost.pas' {frameCEFHost}, Keyman.System.FrameworkInputPane in 'touchkeyboard\Keyman.System.FrameworkInputPane.pas'; {$R ICONS.RES} diff --git a/windows/src/engine/keyman/keyman.dproj b/windows/src/engine/keyman/keyman.dproj index f2d522f0cf..8348fef0ed 100644 --- a/windows/src/engine/keyman/keyman.dproj +++ b/windows/src/engine/keyman/keyman.dproj @@ -176,20 +176,10 @@
frmKeymanBase
TTntForm
- -
frmWebContainer
- TTntForm -
- - - -
frmOSKKeyboardUsage
-
- @@ -218,9 +208,6 @@ - -
frmScriptError
-
@@ -254,11 +241,6 @@ - - -
frameCEFHost
- dfm -
diff --git a/windows/src/engine/keyman/main.pas b/windows/src/engine/keyman/main.pas index 65dbd8847e..03715b1045 100644 --- a/windows/src/engine/keyman/main.pas +++ b/windows/src/engine/keyman/main.pas @@ -39,7 +39,6 @@ uses System.SysUtils, GetOsVersion, - Keyman.System.CEFManager, Keyman.System.Security, Keyman.Winapi.VersionHelpers, KeymanVersion, @@ -64,16 +63,8 @@ procedure RunProgram; forward; procedure Run; begin - FInitializeCEF := TCEFManager.Create; - try - if FInitializeCEF.Start then - begin - RunProgram; - frmKeyman7Main.Free; - end; - finally - FInitializeCEF.Free; - end; + RunProgram; + frmKeyman7Main.Free; end; procedure RunProgram; diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm index 1415b615bc..c807490da5 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm +++ b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm @@ -7,4 +7,27 @@ inherited frmOSKFontHelper: TfrmOSKFontHelper ExplicitHeight = 339 PixelsPerInch = 96 TextHeight = 13 + object panNoKeyboard: TPanel + Left = 8 + Top = 8 + Width = 185 + Height = 41 + Caption = 'panNoKeyboard' + TabOrder = 0 + end + object panFonts: TPanel + Left = 8 + Top = 63 + Width = 569 + Height = 218 + Caption = 'panFonts' + TabOrder = 1 + object gridFonts: TDrawGrid + Left = 24 + Top = 16 + Width = 497 + Height = 161 + TabOrder = 0 + end + end end diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas index d469a8fafa..f17832f5fd 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas @@ -40,9 +40,8 @@ uses System.Contnrs, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, UfrmOSKPlugInBase, - keymanapi_TLB, xmlrenderer, UfrmKeymanBase, utilcheckfonts, - UserMessages, Keyman.UI.UframeCEFHost, - TempFileManager; + keymanapi_TLB, UfrmKeymanBase, utilcheckfonts, + UserMessages, Vcl.Grids, Vcl.ExtCtrls; type TKeyboardProps = record @@ -52,24 +51,21 @@ type HasWelcome: Boolean; end; - TfrmOSKFontHelper = class(TfrmOSKPlugInBase) // I2721 + TfrmOSKFontHelper = class(TfrmOSKPlugInBase) + panNoKeyboard: TPanel; + panFonts: TPanel; + gridFonts: TDrawGrid; // I2721 procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); private - {$MESSAGE HINT 'TODO: Refactor to use TWebBrowserManager'} - cef: TframeCEFHost; - FXML: string; // I4181 - FXMLFileName: TTempFile; // I4181 - FXMLRenderers: TXMLRenderers; - FDialogName: WideString; + FCharsData: array of string; + FSelectedKeyboard: TCheckFontKeyboard; FCheckFontsThread: TCheckFontsThread; FCheckFontKeyboards: TCheckFontKeyboards; FLastSelectedKeyboardID: WideString; FLastSelectedKeymanID: Integer; FLastSelectedKeyboardName: WideString; - procedure Content_Render; - procedure WMUser_ContentRender(var Message: TMessage); message WM_USER_ContentRender; procedure WMUser_FontChange(var Message: TMessage); message WM_USER_FontChange; // I3390 // I3519 procedure CMFontChange(var Message: TMessage); message CM_FONTCHANGE; @@ -77,11 +73,7 @@ type procedure CheckFontsThreadComplete(Sender: TObject); procedure DisplayKeyboardFonts; procedure StartCheckingFonts(Keyboard: IKeymanKeyboardInstalled); - procedure Do_Content_Render(const AXML: WideString); - procedure cefCommand(Sender: TObject; const command: string; params: TStringList); - procedure cefLoadEnd(Sender: TObject); - procedure cefPreKeySyncEvent(Sender: TObject; e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); - procedure cefKeyEvent(Sender: TObject; e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); + procedure SetDisplay(const msg: string); public { Public declarations } procedure SelectKeyboard(KeymanID: Integer); @@ -94,17 +86,10 @@ uses KLog, kmint, custinterfaces, - uCEFTypes, - uCEFConstants, UfrmKeyman7Main, UfrmVisualKeyboard, Unicode, - USendInputString, - utilexecute, - utilhttp, - utilsystem, - utilxml, - WideStringClass; + USendInputString; {$R *.dfm} @@ -134,73 +119,6 @@ begin DisplayKeyboardFonts; // Displays default details end; -procedure TfrmOSKFontHelper.cefCommand(Sender: TObject; const command: string; params: TStringList); -begin - FireCommand(command, params); -end; - -procedure TfrmOSKFontHelper.cefKeyEvent(Sender: TObject; - e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); -begin - if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then - begin - if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then - PostMessage(Handle, WM_USER_ContentRender, 0, 0) - else if e.event.windows_key_code = VK_F1 then - Application.HelpJump('context_'+lowercase(FDialogName)); - end; -end; - -procedure TfrmOSKFontHelper.cefLoadEnd(Sender: TObject); -begin - FreeAndNil(FXMLFileName); // I4181 -end; - - -procedure TfrmOSKFontHelper.cefPreKeySyncEvent(Sender: TObject; - e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); -begin - if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then - if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then - Handled := True - else if e.event.windows_key_code = VK_F1 then - Handled := True; -end; - -{$MESSAGE HINT 'TODO: Support context menu'} -{procedure TfrmOSKFontHelper.webShowContextMenu(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; - const Context: IDispatch; var Result: HRESULT); -begin - PostMessage(Handle, WM_CONTEXTMENU, web.Handle, MAKELONG(ppt.X, ppt.Y)); - Result := S_OK; -//Result := S_FALSE; -end;} - - -procedure TfrmOSKFontHelper.WMUser_ContentRender(var Message: TMessage); -begin - DisplayKeyboardFonts; // I3216 // I3520 -end; - -procedure TfrmOSKFontHelper.Content_Render; -var - AdditionalData: WideString; -begin - AdditionalData := FXML; - - FreeAndNil(FXMLFileName); // I4181 - - if not FileExists(GetXMLTemplatePath(FXMLRenderers.RenderTemplate)+FXMLRenderers.RenderTemplate) then - Exit; - - FXMLFileName := FXMLRenderers.RenderToFile(False, AdditionalData); - - FDialogName := ChangeFileExt(ExtractFileName(FXMLRenderers.RenderTemplate), ''); - //HelpType := htKeyword; - //HelpKeyword := FDialogName; -end; - procedure TfrmOSKFontHelper.FireCommand(const command: WideString; params: TStringList); var hwnd: THandle; @@ -210,9 +128,9 @@ var s: WideString; v: Integer; begin - if command = 'link' then TUtilExecute.URL(params.Values['url']) // I3349 - else if command = 'tutorial' then //(ActiveProduct as IKeymanProduct2).OpenTutorial - else if command = 'osk' then frmKeyman7Main.frmVisualKeyboard.ActivePage := apKeyboard +// if command = 'link' then TUtilExecute.URL(params.Values['url']) // I3349 +// else if command = 'tutorial' then //(ActiveProduct as IKeymanProduct2).OpenTutorial + if command = 'osk' then frmKeyman7Main.frmVisualKeyboard.ActivePage := apKeyboard else if command = 'welcome' then frmKeyman7Main.MnuOpenKeyboardHelp(nil) else if command = 'help' then frmKeyman7Main. MnuOpenProductHelp(frmKeyman7Main.frmVisualKeyboard) else if command = '' then @@ -221,10 +139,12 @@ begin begin hwnd := kmcom.Control.LastFocusWindow; + // TODO: something like this will be issued by the grid in the future + ch := Trim(params.Values['chars']); // I1429 - fix U+xxxx in insertchars URL - + n := Pos(' ', ch); if n = 0 then n := Length(ch)+1; while ch <> '' do @@ -257,15 +177,6 @@ procedure TfrmOSKFontHelper.FormCreate(Sender: TObject); begin inherited; FCheckFontKeyboards := TCheckFontKeyboards.Create; - - cef := TframeCEFHost.Create(Self); - cef.Parent := Self; - cef.Visible := True; - cef.ShouldOpenRemoteUrlsInBrowser := True; - cef.OnCommand := cefCommand; - cef.OnLoadEnd := cefLoadEnd; - cef.OnKeyEvent := cefKeyEvent; - cef.OnPreKeySyncEvent := cefPreKeySyncEvent; end; procedure TfrmOSKFontHelper.FormDestroy(Sender: TObject); @@ -278,7 +189,6 @@ begin FCheckFontsThread := nil; end; - FreeAndNil(FXMLFileName); // I4181 FreeAndNil(FCheckFontKeyboards); end; @@ -327,12 +237,11 @@ begin if Keyboard.Encodings = keANSI then begin - // I1533 - hint for non-Unicode keyboard. - Do_Content_Render(''); + SetDisplay('The selected keyboard is not a Unicode keyboard'); end else begin - Do_Content_Render(''); + SetDisplay('Please wait while searching for related fonts for keyboard '+FLastSelectedKeyboardName); FCheckFontsThread := TCheckFontsThread.Create; FCheckFontsThread.FreeOnTerminate := True; @@ -346,44 +255,39 @@ procedure TfrmOSKFontHelper.DisplayKeyboardFonts; var FKeyboard: TCheckFontKeyboard; J: Integer; - - function CharCode(ch: WideChar): WideString; - begin - Result := IntToHex(Ord(ch), 4); - end; - var - FFontsData: WideString; i: Integer; ch,ch2: WideChar; begin - FFontsData := ''; - FKeyboard := FCheckFontKeyboards.Keyboards[FLastSelectedKeyboardID]; if (FLastSelectedKeyboardID <> '') and Assigned(FKeyboard) then begin - FFontsData := ''; - + SetLength(FCharsData, Length(FKeyboard.Chars)); + J := 0; I := 1; while I <= Length(FKeyboard.Chars) do // I2712 begin ch := FKeyboard.Chars[I]; - if Uni_IsSurrogate1(ch) and (I < Length(FKeyboard.Chars)) then + if Uni_IsSurrogate1(ch) and (I < Length(FKeyboard.Chars)) and Uni_IsSurrogate2(FKeyboard.Chars[I+1]) then begin ch2 := FKeyboard.Chars[I+1]; - FFontsData := FFontsData + ''+XmlEncode(ch+ch2)+''; + FCharsData[J] := ch + ch2; Inc(I); end else - FFontsData := FFontsData + ''+XmlEncode(ch)+''; + FCharsData[J] := ch; Inc(I); + Inc(J); end; - FFontsData := FFontsData + ''; + SetLength(FCharsData, J); + + gridFonts.ColCount := Length(FCharsData) + 1; + gridFonts.RowCount := FKeyboard.Fonts.Count + 1; - FFontsData := FFontsData + ''; + FSelectedKeyboard := FKeyboard; - for I := 0 to FKeyboard.Fonts.Count - 1 do +(* for I := 0 to FKeyboard.Fonts.Count - 1 do begin FFontsData := FFontsData + ' nil; - Result.HasWelcome := APackage.WelcomeFile <> nil; -end; - - -function TfrmOSKKeyboardUsage.HasKeyboardUsage(KeymanID: Integer): Boolean; -var - i: Integer; - kbds: IKeymanKeyboardsInstalled; - pkg: IKeymanPackageInstalled; -begin - Result := False; - - if KeymanID = -1 then - Exit; - - kbds := kmcom.Keyboards; - for i := 0 to kbds.Count - 1 do - begin - if kbds[i].KeymanID = KeymanID then - begin - pkg := kbds[i].OwnerPackage; - if pkg <> nil then - begin - // find if package has welcome - Result := GetKeyboardProps(pkg, kbds[i]).UsageFileName <> ''; - pkg := nil; - Exit; - end; - end; - end; - -end; - -procedure TfrmOSKKeyboardUsage.SelectKeyboard(KeymanID: Integer); -var - FFileName_: WideString; - i: Integer; - kbds: IKeymanKeyboardsInstalled; - pkg: IKeymanPackageInstalled; - FProps: TKeyboardProps; -begin - FXML := frmKeyman7Main.frmVisualKeyboard.GetToolbarPositionXML; - - if FLastActiveKeymanID = KeymanID then Exit; - FLastActiveKeymanID := KeymanID; - - if KeymanID = -1 then - begin - // show the default welcome - "Keyman is running - choose a keyboard to get started" - FXMLRenderers := TXMLRenderers.Create; - FXMLRenderers.RenderTemplate := 'Usage_Off.xsl'; - FXML := FXML + ''; - with kmcom.Keyboards do - begin - for i := 0 to Count - 1 do - begin - if not Items[i].Loaded then Continue; - - FXML := FXML + ''; - end; - end; - FXML := FXML + ''; - Content_Render; - FXMLRenderers.Free; - - if not Assigned(FXMLFileName) then - Exit; // I4268 - FFileName_ := FXMLFileName.Name; // I4181 - end - else - begin - FFileName_ := ''; - - kbds := kmcom.Keyboards; - for i := 0 to kbds.Count - 1 do - begin - if kbds[i].KeymanID = KeymanID then - begin - pkg := kbds[i].OwnerPackage; - if pkg <> nil then - begin - // find if package has welcome - FProps := GetKeyboardProps(pkg, kbds[i]); - FFileName_ := FProps.UsageFileName; - FXML := ''+XMLEncode(FProps.KeyboardName)+''; - if FProps.HasOSK then FXML := FXML + ''; - if FProps.HasWelcome then FXML := FXML + ''; - pkg := nil; - end - else - begin - FFileName_ := ''; - FXML := ''+XMLEncode(kbds[i].Name)+''; - end; - Break; - end; - end; - - if FFileName_ = '' then - begin - FXMLRenderers := TXMLRenderers.Create; - FXMLRenderers.RenderTemplate := 'Usage_Keyboard.xsl'; - Content_Render; - FXMLRenderers.Free; - - if not Assigned(FXMLFileName) then - Exit; // I4268 - FFileName_ := FXMLFileName.Name; // I4181 - end; - end; - - // show the "no welcome" welcome - if (FFileName_ <> '') and FileExists(FFileName_) then - cef.Navigate(FFileName_); -end; - - -procedure TfrmOSKKeyboardUsage.do_keybd_event(bVk: Byte; bScan: Byte; dwFlags, dwExtraInfo: DWORD); // I3214 // I3521 -begin - KL.Log('kbdKeyPressed: keybd_event vk=%x scan=%x flags=%x', [bVk, bScan, dwFlags]); - SetLength(FInput, Length(FInput)+1); - with FInput[High(FInput)] do - begin - Itype := INPUT_KEYBOARD; - ki.wVk := bVk; - ki.wScan := $FF; - ki.dwFlags := dwFlags; - ki.dwExtraInfo := dwExtraInfo; - end; - //keybd_event(bVk, bScan, dwFlags, dwExtraInfo); -end; - -function TfrmOSKKeyboardUsage.GetTag(var s: WideString): WideString; // I3214 // I3521 -var - n: Integer; - ch: WideChar; - function IsWhiteSpace: Boolean; - begin - Result := CharInSet(s[n], [#1..#32]); - end; - function Finished: Boolean; - begin - Result := n > Length(s); - end; - function IsPunctuation: Boolean; - begin - Result := CharInSet(s[n], ['(',')','[',']','>']); - end; - function IsQuote: Boolean; - begin - Result := CharInSet(s[n], ['''','"']); - end; - function IsNumber: Boolean; - begin - Result := CharInSet(s[n], ['0'..'9']); - end; -begin - Result := ''; - n := 1; - while not Finished and IsWhiteSpace do Inc(n); - if Finished then Exit; - - Delete(s,1,n-1); n := 1; - - { The next character determines the tag type } - - case s[n] of - 'a'..'z','A'..'Z', '$', '&', '_': { a symbol name or potentially xvvv dvvv U+vvvv - allow any characters apart from ' " ( ) [ ] (whitespace) to continue it } - begin - while not Finished and not IsWhiteSpace and not IsPunctuation and not IsQuote do Inc(n); - Dec(n); - end; - '''','"': { a string } - begin - ch := s[n]; Inc(n); - while not Finished and (s[n] <> ch) do Inc(n); - end; - '0'..'9': { an 'octal' value (usually) } - begin - while not Finished and IsNumber do Inc(n); - Dec(n); - end; - {else punctuation - do nothing} - end; - - Result := Copy(s,1,n); - Delete(s,1,n); -end; - -function TfrmOSKKeyboardUsage.ParseKey(var s: WideString; var key: Integer; var shiftstate: TExtShiftState; var commandtype: Integer): Boolean; // I3214 // I3521 -var - u: WideString; -begin - Result := False; - - commandtype := 0; - shiftstate := []; - key := $FFFF; - - if GetTag(s) <> '[' then Exit; - - u := UpperCase(GetTag(s)); - - if u = '+' then - begin - commandtype := 1; u := UpperCase(GetTag(s)); - end - else if u = '-' then - begin - commandtype := 2; u := UpperCase(GetTag(s)); - end - else if u = '~' then - begin - commandtype := 3; u := UpperCase(GetTag(s)); - end; - - while u <> ']' do - begin - if u = 'SHIFT' then Include(shiftstate, essShift) - else if u = 'CTRL' then Include(shiftstate, essCtrl) - else if u = 'ALT' then Include(shiftstate, essAlt) - else if u = 'LCTRL' then Include(shiftstate, essLCtrl) - else if u = 'LALT' then Include(shiftstate, essLAlt) - else if u = 'RCTRL' then Include(shiftstate, essRCtrl) - else if u = 'RALT' then Include(shiftstate, essRAlt) - else - begin - if key <> $FFFF then Exit; - key := FindVKeyName(u); - if key = $FFFF then Exit; - end; - u := UpperCase(GetTag(s)); - end; - - Result := (key <> $FFFF) or (commandtype <> 0); -end; - -function TfrmOSKKeyboardUsage.GetAsyncShiftState: TExtShiftState; // I3214 // I3521 -begin - Result := []; - if (GetAsyncKeyState(VK_SHIFT) and $8000) = $8000 then Result := Result + [essShift]; - if (GetAsyncKeyState(VK_CONTROL) and $8000) = $8000 then Result := Result + [essCtrl]; - if (GetAsyncKeyState(VK_MENU) and $8000) = $8000 then Result := Result + [essAlt]; - if (GetAsyncKeyState(VK_LCONTROL) and $8000) = $8000 then Result := Result + [essLCtrl]; - if (GetAsyncKeyState(VK_RCONTROL) and $8000) = $8000 then Result := Result + [essRCtrl]; - if (GetAsyncKeyState(VK_LMENU) and $8000) = $8000 then Result := Result + [essLAlt]; - if (GetAsyncKeyState(VK_RMENU) and $8000) = $8000 then Result := Result + [essRAlt]; -end; - -procedure TfrmOSKKeyboardUsage.SendKeys(keys: WideString); // I3214 // I3521 - - procedure PrepState(fkcss, ass: TExtShiftState; shift: TExtShiftStateValue; vk: Integer); - var - FExtended: Dword; - begin - if vk in [VK_RCONTROL, VK_RMENU] then FExtended := KEYEVENTF_EXTENDEDKEY else FExtended := 0; - if (shift in fkcss) and not (shift in ass) then do_keybd_event(vk, 0, FExtended, 0) - else if not (shift in fkcss) and (shift in ass) then do_keybd_event(vk, 0, FExtended or KEYEVENTF_KEYUP, 0); - end; - - procedure FinalState(fkcss, ass: TExtShiftState; shift: TExtShiftStateValue; vk: Integer); - var - FExtended: Dword; - begin - if vk in [VK_RCONTROL, VK_RMENU] then FExtended := KEYEVENTF_EXTENDEDKEY else FExtended := 0; - if (shift in fkcss) and not (shift in ass) then do_keybd_event(vk, 0, FExtended or KEYEVENTF_KEYUP, 0) - else if not (shift in fkcss) and (shift in ass) then do_keybd_event(vk, 0, FExtended, 0); - end; - -var - key, commandtype: Integer; - shiftstate: TExtShiftState; - ass: TExtShiftState; - flags: Integer; -begin - { format: [CTRL SHIFT ALT K_XXXX][...] } - { format: [+CTRL][-CTRL] } - { format: [+K_XXXX][-K_XXXX] } - { format: [~K_XXXX] - this does not reset the shift state } - - SetLength(FInput, 0); - - while ParseKey(keys, key, shiftstate, commandtype) do - begin - if commandtype = 3 then - begin - do_keybd_event(key, 0, 0, 0); - do_keybd_event(key, 0, KEYEVENTF_KEYUP, 0); - end - else if commandtype = 0 then - begin - ass := GetAsyncShiftState; - KL.Log('SendKey: key=%x kbdShift=%s asyncShift=%s ', [key, ExtShiftStateToString(shiftstate), ExtShiftStateToString(ass)]); - - PrepState(shiftstate, ass, essShift, VK_SHIFT); - PrepState(shiftstate, ass, essCtrl, VK_CONTROL); - PrepState(shiftstate, ass, essAlt, VK_MENU); - PrepState(shiftstate, ass, essLCtrl, VK_LCONTROL); - PrepState(shiftstate, ass, essLAlt, VK_LMENU); - PrepState(shiftstate, ass, essRCtrl, VK_RCONTROL); - PrepState(shiftstate, ass, essRAlt, VK_RMENU); - - do_keybd_event(key, 0, 0, 0); - do_keybd_event(key, 0, KEYEVENTF_KEYUP, 0); - - FinalState(shiftstate, ass, essShift, VK_SHIFT); - FinalState(shiftstate, ass, essCtrl, VK_CONTROL); - FinalState(shiftstate, ass, essAlt, VK_MENU); - FinalState(shiftstate, ass, essLCtrl, VK_LCONTROL); - FinalState(shiftstate, ass, essLAlt, VK_LMENU); - FinalState(shiftstate, ass, essRCtrl, VK_RCONTROL); - FinalState(shiftstate, ass, essRAlt, VK_RMENU); - end - else - begin - if commandtype = 1 then flags := 0 else flags := KEYEVENTF_KEYUP; - - if key = $FFFF then - begin - if essShift in shiftstate then do_keybd_event(VK_SHIFT, 0, flags, 0); - if essCtrl in shiftstate then do_keybd_event(VK_CONTROL, 0, flags, 0); - if essAlt in shiftstate then do_keybd_event(VK_MENU, 0, flags, 0); - if essLCtrl in shiftstate then do_keybd_event(VK_LCONTROL, 0, flags, 0); - if essLAlt in shiftstate then do_keybd_event(VK_LMENU, 0, flags, 0); - if essRCtrl in shiftstate then do_keybd_event(VK_RCONTROL, 0, flags or KEYEVENTF_EXTENDEDKEY, 0); - if essRAlt in shiftstate then do_keybd_event(VK_RMENU, 0, flags or KEYEVENTF_EXTENDEDKEY, 0); - end - else - do_keybd_event(key, 0, flags, 0); - end; - end; - - if Length(FInput) > 0 then - Windows.SendInput(Length(FInput), FInput[0], sizeof(FInput[0])); -end; - -procedure TfrmOSKKeyboardUsage.SendChars(const chars: string); -var - ch, s, t: string; - n, v: Integer; - hwnd: THandle; -begin - hwnd := kmcom.Control.LastFocusWindow; - - if wm_keyman_char = 0 then - wm_keyman_char := RegisterWindowMessage('WM_KEYMANCHAR'); - - ch := Trim(chars); - - // I1429 - fix U+xxxx in insertchars URL - - n := Pos(' ', ch); if n = 0 then n := Length(ch)+1; - t := ''; - - while ch <> '' do - begin - s := Copy(ch, 1, n-1); if s = '' then Break; - - if Copy(s,1,2) = 'U+' then v := StrToIntDef('$'+Copy(s,3,6),0) - else if s[1] = 'x' then v := StrToIntDef('$'+Copy(s,2,6),0) - else if s[1] = 'd' then v := StrToIntDef(Copy(s,2,7), 0) - else v := 0; - - if (v > 32) and (v <= $10FFFF) then - t := t + Uni_UTF32CharToUTF16(v); - - Delete(ch, 1, n); ch := Trim(ch); - n := Pos(' ', ch); - if n = 0 then n := Length(ch)+1; - end; - - if t <> '' then - SendInputString(hwnd, t); -end; - -procedure TfrmOSKKeyboardUsage.cefCommand(Sender: TObject; const command: string; params: TStringList); -begin - FireCommand(command, params); -end; - -procedure TfrmOSKKeyboardUsage.cefKeyEvent(Sender: TObject; - e: TCEFHostKeyEventData; wasShortcut, wasHandled: Boolean); -begin - if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then - begin - if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then - PostMessage(Handle, WM_USER_ContentRender, 0, 0) - else if e.event.windows_key_code = VK_F1 then - Application.HelpJump('context_'+lowercase(FDialogName)); - end; -end; - -procedure TfrmOSKKeyboardUsage.cefLoadEnd(Sender: TObject); -begin - FreeAndNil(FXMLFileName); // I4181 - frmKeyman7Main.frmVisualKeyboard.SetTopMost(True); // I4593 -end; - -procedure TfrmOSKKeyboardUsage.cefPreKeySyncEvent(Sender: TObject; - e: TCEFHostKeyEventData; out isShortcut, Handled: Boolean); -begin - if e.event.kind in [KEYEVENT_RAWKEYDOWN, KEYEVENT_KEYDOWN] then - if (e.event.windows_key_code = VK_F5) and ((e.event.modifiers and EVENTFLAG_CONTROL_DOWN) = EVENTFLAG_CONTROL_DOWN) then - Handled := True - else if e.event.windows_key_code = VK_F1 then - Handled := True; -end; - -{$MESSAGE HINT 'TODO: Support context menu'} -{ -procedure TfrmOSKKeyboardUsage.webShowContextMenu(Sender: TCustomEmbeddedWB; - const dwID: Cardinal; const ppt: PPoint; const CommandTarget: IInterface; - const Context: IDispatch; var Result: HRESULT); -begin - PostMessage(Handle, WM_CONTEXTMENU, web.Handle, MAKELONG(ppt.X, ppt.Y)); - Result := S_OK; -end; -} - - -procedure TfrmOSKKeyboardUsage.WMUser_ContentRender(var Message: TMessage); -begin - Content_Render; -end; - -procedure TfrmOSKKeyboardUsage.Content_Render; -var - AdditionalData: WideString; -begin - AdditionalData := FXML; - - FreeAndNil(FXMLFileName); // I4181 - - if not FileExists(GetXMLTemplatePath(FXMLRenderers.RenderTemplate)+FXMLRenderers.RenderTemplate) then - Exit; - - FXMLFileName := FXMLRenderers.RenderToFile(False, AdditionalData); - - FDialogName := ChangeFileExt(ExtractFileName(FXMLRenderers.RenderTemplate), ''); - //HelpType := htKeyword; - //HelpKeyword := FDialogName; -end; - -procedure TfrmOSKKeyboardUsage.FireCommand(const command: WideString; params: TStringList); -begin - if command = 'link' then TUtilExecute.URL(params.Values['url']) // I3349 - else if command = 'tutorial' then - //(ActiveProduct as IKeymanProduct2).OpenTutorial - else if command = 'osk' then - frmKeyman7Main.frmVisualKeyboard.ActivePage := apKeyboard - else if command = 'welcome' then - frmKeyman7Main.MnuOpenKeyboardHelp(nil) - else if command = 'config' then - frmKeyman7Main.MnuOpenKeymanConfiguration(frmKeyman7Main.frmVisualKeyboard) - else if command = 'help' then - frmKeyman7Main.MnuOpenProductHelp(frmKeyman7Main.frmVisualKeyboard) - else if command = 'insertkeys' then - SendKeys(params.Values['keys']) // I3214 // I3521 - else if command = 'insertchars' then - SendChars(params.Values['chars']); -end; - -procedure TfrmOSKKeyboardUsage.FormCreate(Sender: TObject); -begin - inherited; - FLastActiveKeymanID := -2; - - cef := TframeCEFHost.Create(Self); - cef.Parent := Self; - cef.Visible := True; - cef.ShouldOpenRemoteUrlsInBrowser := True; - cef.OnCommand := cefCommand; - cef.OnLoadEnd := cefLoadEnd; - cef.OnKeyEvent := cefKeyEvent; - cef.OnPreKeySyncEvent := cefPreKeySyncEvent; -end; - -procedure TfrmOSKKeyboardUsage.FormDestroy(Sender: TObject); -begin - inherited; - FreeAndNil(FXMLFileName); // I4181 -end; - -end. diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKWelcome.dfm b/windows/src/engine/keyman/viskbd/UfrmOSKWelcome.dfm deleted file mode 100644 index f9b5809377..0000000000 --- a/windows/src/engine/keyman/viskbd/UfrmOSKWelcome.dfm +++ /dev/null @@ -1,40 +0,0 @@ -inherited frmOSKKeyboardUsage: TfrmOSKKeyboardUsage - Caption = 'frmOSKKeyboardUsage' - ClientHeight = 339 - ClientWidth = 635 - PixelsPerInch = 96 - TextHeight = 13 - object web: TEmbeddedWB - Left = 0 - Top = 0 - Width = 635 - Height = 339 - Align = alClient - TabOrder = 0 - DownloadOptions = [DLCTL_DLIMAGES, DLCTL_VIDEOS, DLCTL_BGSOUNDS] - UserInterfaceOptions = [] - PrintOptions.Margins.Left = 19.050000000000000000 - PrintOptions.Margins.Right = 19.050000000000000000 - PrintOptions.Margins.Top = 19.050000000000000000 - PrintOptions.Margins.Bottom = 19.050000000000000000 - PrintOptions.Header = '&w&bPage &p of &P' - PrintOptions.HTMLHeader.Strings = ( - '') - PrintOptions.Footer = '&u&b&d' - PrintOptions.Orientation = poPortrait - ReplaceCaption = False - EnableDDE = False - fpExceptions = True - PassAllKeys = False - ExplicitLeft = 32 - ExplicitTop = 8 - ExplicitWidth = 461 - ExplicitHeight = 265 - ControlData = { - 4C000000A52F0000631B00000000000000000000000000000000000000000000 - 000000004C000000000000000000000001000000E0D057007335CF11AE690800 - 2B2E12620C000000000000004C0000000114020000000000C000000000000046 - 8000000000000000000000000000000000000000000000000000000000000000 - 00000000000000000100000000000000000000000000000000000000} - end -end diff --git a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.dfm b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.dfm index 9fd98ce1d9..980f100039 100644 --- a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.dfm +++ b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.dfm @@ -45,27 +45,29 @@ object frmVisualKeyboard: TfrmVisualKeyboard Left = 0 Top = 27 Width = 547 - Height = 198 + Height = 219 Align = alClient BevelOuter = bvNone TabOrder = 0 Visible = False + ExplicitHeight = 198 end object panEntryHelper: TPanel Left = 0 Top = 27 Width = 547 - Height = 198 + Height = 219 Align = alClient BevelOuter = bvNone TabOrder = 1 Visible = False + ExplicitHeight = 198 end object panKeyboard: TPanel Left = 0 Top = 27 Width = 547 - Height = 198 + Height = 219 Margins.Left = 2 Margins.Top = 1 Margins.Right = 2 @@ -76,6 +78,7 @@ object frmVisualKeyboard: TfrmVisualKeyboard ParentBackground = False TabOrder = 2 VerticalAlignment = taAlignTop + ExplicitHeight = 198 end object status: TStatusBar Left = 0 @@ -212,7 +215,7 @@ object frmVisualKeyboard: TfrmVisualKeyboard Left = 0 Top = 27 Width = 547 - Height = 198 + Height = 219 Margins.Left = 2 Margins.Top = 1 Margins.Right = 2 @@ -224,21 +227,13 @@ object frmVisualKeyboard: TfrmVisualKeyboard TabOrder = 5 VerticalAlignment = taAlignTop Visible = False - end - object panHint: TPanel - Left = 0 - Top = 225 - Width = 547 - Height = 21 - Align = alBottom - BevelOuter = bvNone - TabOrder = 6 + ExplicitHeight = 198 end object panFontHelper: TPanel Left = 0 Top = 27 Width = 547 - Height = 198 + Height = 219 Margins.Left = 2 Margins.Top = 1 Margins.Right = 2 @@ -247,9 +242,10 @@ object frmVisualKeyboard: TfrmVisualKeyboard BevelOuter = bvNone ParentBackground = False ParentColor = True - TabOrder = 7 + TabOrder = 6 VerticalAlignment = taAlignTop Visible = False + ExplicitHeight = 198 end end object tmrFade: TTimer diff --git a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas index e4c3c0c666..9f2ed3fc7d 100644 --- a/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas +++ b/windows/src/engine/keyman/viskbd/UfrmVisualKeyboard.pas @@ -90,16 +90,15 @@ uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, Menus, ActiveX, keymanapi_TLB, utilstr, custinterfaces, ImgList, UfrmOSKPlugInBase, - UfrmOSKOnScreenKeyboard, UfrmOSKCharacterMap, UfrmOSKKeyboardUsage, + UfrmOSKOnScreenKeyboard, UfrmOSKCharacterMap, UfrmOSKEntryHelper, Buttons, ToolWin, PaintPanel, exImageList, Menu_KeyboardItems, ComCtrls, StdCtrls, UfrmOSKFontHelper, LangSwitchManager, - Keyman.UI.UframeCEFHost, - WebBrowserManager, UserMessages, System.ImageList; + UserMessages, System.ImageList; type - TOSKActivePage = (apKeyboard, apCharacterMap, apEntryHelper, apKeyboardUsage, apFontHelper, apUndefined); + TOSKActivePage = (apKeyboard, apCharacterMap, apEntryHelper, apFontHelper, apUndefined); TKeymanToolButton = class(TToolButton) // I4606 private @@ -139,8 +138,6 @@ type tbRight: TToolBar; mnuPopup: TPopupMenu; ilKeyboards: TexImageList; - panKeyboardUsage: TPanel; - panHint: TPanel; panFontHelper: TPanel; tbKeyboards: TToolBar; procedure FormCreate(Sender: TObject); @@ -154,8 +151,6 @@ type procedure mnuPopupPopup(Sender: TObject); procedure panTopResize(Sender: TObject); procedure FormDeactivate(Sender: TObject); - procedure BtnShowHint(Sender: TObject); - procedure BtnHideHint(Sender: TObject); function FormHelp(Command: Word; Data: NativeInt; var CallHelp: Boolean): Boolean; procedure TitleMouseDown(Sender: TObject; Button: TMouseButton; @@ -170,8 +165,6 @@ type Button: TToolButton; State: TCustomDrawState; Stage: TCustomDrawStage; var Flags: TTBCustomDrawFlags; var DefaultDraw: Boolean); // I4849 private - cefHint: TframeCEFHost; - webHintManager: TWebBrowserManager; btnKeyboardHelp: TToolButton; cmi: IKeymanCustomisationMenuItem; FFadeVisualKeyboard: Boolean; @@ -181,7 +174,6 @@ type FOnScreenKeyboard: TfrmOSKOnScreenKeyboard; FCharacterMap: TfrmOSKCharacterMap; FEntryHelper: TfrmOSKEntryHelper; - FKeyboardUsage: TfrmOSKKeyboardUsage; FFontHelper: TfrmOSKFontHelper; SizeMoveStartPos: TPoint; SizeMoveStartRect: TRect; @@ -225,18 +217,12 @@ type procedure LoadFontHelper; procedure RefreshToolbar; - procedure LoadKeyboardUsage; procedure UpdateActivePage; - procedure LoadHintSettings; - procedure ToggleHintPanel; - procedure webHintFireCommand(Sender: TObject; const command: WideString; - params: TStringList); - procedure webHintResize(Sender: TObject; X, Y: Integer); - procedure CreateWebHintManager; procedure AdjustToClosestMonitor(var x, y, cx, cy: Integer); - function IsHintBarEnabled: Boolean; - procedure KeyboardButtonClick(Sender: TObject); // I4390 + procedure KeyboardButtonClick(Sender: TObject); + procedure BtnHideHint(Sender: TObject); + procedure BtnShowHint(Sender: TObject); protected procedure CreateParams(var Params: TCreateParams); override; public @@ -265,7 +251,6 @@ type procedure MnuOSK_ViewKeyboard(Sender: TObject); procedure MnuOSK_ViewCharMap(Sender: TObject); procedure MnuOSK_ViewEntryHelper(Sender: TObject); - procedure MnuOSK_ViewKeyboardUsage(Sender: TObject); procedure MnuOSK_ViewFontHelper(Sender: TObject); procedure MnuOSK_Close(Sender: TObject); @@ -323,33 +308,10 @@ type TOSKHintWindow = class(THintWindow) end; -procedure TfrmVisualKeyboard.webHintResize(Sender: TObject; X, Y: Integer); -begin - panHint.Height := Y + 2; -end; - -procedure TfrmVisualKeyboard.CreateWebHintManager; -begin - if Assigned(webHintManager) then Exit; - - webHintManager := TWebBrowserManager.Create(Self); // I1256 - hint system - webHintManager.WebBrowser := cefHint; - webHintManager.OnFireCommand := webHintFireCommand; - webHintManager.OnResize := webHintResize; - webHintManager.RenderTemplate := 'VKHints.xsl'; -end; - procedure TfrmVisualKeyboard.FormCreate(Sender: TObject); begin inherited; - cefHint := TframeCEFHost.Create(Self); - cefHint.Parent := panHint; - cefHint.Visible := True; - cefHint.ShouldOpenRemoteUrlsInBrowser := True; - - CreateWebHintManager; - FToolbarHintWindow := TOSKHintWindow.Create(Self); FToolbarHintWindow.Color := clInfoBk; FToolbarHintWindow.Font.Color := clInfoText; @@ -418,7 +380,9 @@ begin { Text Entry Helper Test } - if (CustMenuItems.Items[i].Action = miaOSK_ViewEntryHelper) then Continue; + if (CustMenuItems.Items[i].Action = miaOSK_ViewEntryHelper) or + (CustMenuItems.Items[i].Action = miaOSK_ViewKeyboardUsage) then + Continue; if (CustMenuItems.Items[i].Action = miaSelectKeyboard) then // I4606 begin @@ -462,7 +426,7 @@ begin DesiredTarget := $FFFFFFFF; case CustMenuItems.Items[i].Action of miaOSK_ViewKeyboard, miaOSK_ViewCharMap, - miaOSK_ViewEntryHelper, miaOSK_ViewKeyboardUsage, // I1373,I1374 - keyboard usage and font helper + miaOSK_ViewEntryHelper, // I1373,I1374 - keyboard usage and font helper miaOSK_ViewFontHelper: begin btn.Style := tbsCheck; @@ -534,11 +498,6 @@ begin btn.OnClick := MnuOSK_ViewEntryHelper; btn.Down := ActivePage = apEntryHelper; end; - miaOSK_ViewKeyboardUsage: - begin - btn.OnClick := MnuOSK_ViewKeyboardUsage; - btn.Down := ActivePage = apKeyboardUsage; - end; miaOSK_ViewFontHelper: begin btn.OnClick := MnuOSK_ViewFontHelper; @@ -664,7 +623,6 @@ begin FreeAndNil(FOnScreenKeyboard); FreeAndNil(FCharacterMap); FreeAndNil(FEntryHelper); - FreeAndNil(FKeyboardUsage); FreeAndNil(FFontHelper); cmi := nil; @@ -765,40 +723,6 @@ begin Params.ExStyle := Params.ExStyle or (WS_EX_NOACTIVATE or WS_EX_TOOLWINDOW); // I3677 // I4208 end; -function TfrmVisualKeyboard.IsHintBarEnabled: Boolean; // I4390 -begin - Result := IsHintEnabled(KH_OSKHINTBAR); -end; - -procedure TfrmVisualKeyboard.LoadHintSettings; // I1256 - Hint System -begin - if not webHintManager.TemplateExists then - begin - if panHint.Visible then ToggleHintPanel; - end - else if (IsHintBarEnabled <> panHint.Visible) then - begin - ToggleHintPanel; - end; -end; - -procedure TfrmVisualKeyboard.ToggleHintPanel; // I1256 - Hint System -begin - if panHint.Visible then - begin - panHint.Visible := False; - UpdateConstraints; - SetBounds(Left, Top+panHint.Height, Width, Height-panHint.Height); - end - else - begin - panHint.Visible := True; - SetBounds(Left, Top-panHint.Height, Width, Height+panHint.Height); - UpdateConstraints; - webHintManager.Content_Render; - end; -end; - procedure TfrmVisualKeyboard.TitleMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); const @@ -1228,34 +1152,17 @@ begin FUpdatingToolbar := False; end; -procedure TfrmVisualKeyboard.webHintFireCommand(Sender: TObject; const command: WideString; - params: TStringList); -begin - // I1256 - hint system - - if command = 'closehintbar' then - begin - DisableHint(KH_OSKHINTBAR); - if panHint.Visible then ToggleHintPanel; - end; -end; - procedure TfrmVisualKeyboard.PreRefreshKeyman; begin - FreeAndNil(webHintManager); end; procedure TfrmVisualKeyboard.RefreshKeyman; begin - CreateWebHintManager; - // Reload table of visual keyboard references if Assigned(FOnScreenKeyboard) then FOnScreenKeyboard.RefreshKeyboards; RefreshToolbar; // I4606 - - LoadHintSettings; end; procedure TfrmVisualKeyboard.SaveSettings; @@ -1287,7 +1194,6 @@ procedure TfrmVisualKeyboard.SetActivePage(Page: TOSKActivePage); miaOSK_ViewKeyboard: Toolbar.Buttons[i].Down := Page = apKeyboard; miaOSK_ViewCharMap: Toolbar.Buttons[i].Down := Page = apCharacterMap; miaOSK_ViewEntryHelper: Toolbar.Buttons[i].Down := Page = apEntryHelper; - miaOSK_ViewKeyboardUsage: Toolbar.Buttons[i].Down := Page = apKeyboardUsage; miaOSK_ViewFontHelper: Toolbar.Buttons[i].Down := Page = apFontHelper; end; end; @@ -1305,7 +1211,6 @@ begin panKeyboard.Visible := Page = apKeyboard; panCharMap.Visible := Page = apCharacterMap; panEntryHelper.Visible := Page = apEntryHelper; - panKeyboardUsage.Visible := Page = apKeyboardUsage; panFontHelper.Visible := Page = apFontHelper; UpdateButtons(tbLeft); @@ -1319,7 +1224,6 @@ begin if panKeyboard.Visible then Result := apKeyboard else if panCharMap.Visible then Result := apCharacterMap else if panEntryHelper.Visible then Result := apEntryHelper - else if panKeyboardUsage.Visible then Result := apKeyboardUsage else { if panFontHelper.Visible then } Result := apFontHelper; end; @@ -1397,19 +1301,9 @@ procedure TfrmVisualKeyboard.LoadSettings; begin SetBounds(Screen.WorkAreaRect.Right - Width, Screen.WorkAreaRect.Bottom - Height, Width, Height); end; -var - xml: string; begin FFadeVisualKeyboard := False; - LoadHintSettings; - - xml := ''; - - if panHint.Visible then - webHintManager.Content_Render(False, xml); - - with TRegistryErrorControlled.Create do // I2890 try RootKey := HKEY_CURRENT_USER; @@ -1498,11 +1392,6 @@ begin ActivePage := apKeyboard; end; -procedure TfrmVisualKeyboard.MnuOSK_ViewKeyboardUsage(Sender: TObject); -begin - ActivePage := apKeyboardUsage; -end; - procedure TfrmVisualKeyboard.MnuOSK_ViewFontHelper(Sender: TObject); begin ActivePage := apFontHelper; @@ -1568,26 +1457,12 @@ begin FFontHelper.SelectKeyboard(frmKeyman7Main.ActiveKeymanID); // I3949 end; -procedure TfrmVisualKeyboard.LoadKeyboardUsage; -begin - if not Assigned(FKeyboardUsage) then - begin - SetTopMost(False); // I4208 - FKeyboardUsage := TfrmOSKKeyboardUsage.Create(Self); - FKeyboardUsage.Parent := panKeyboardUsage; - FKeyboardUsage.Align := alClient; - FKeyboardUsage.Visible := True; - end; - FKeyboardUsage.SelectKeyboard(frmKeyman7Main.ActiveKeymanID); // I3949 -end; - procedure TfrmVisualKeyboard.UpdatePanels; begin case ActivePage of apKeyboard: LoadKeyboard; apCharacterMap: LoadCharacterMap; apEntryHelper: LoadEntryHelper; - apKeyboardUsage: LoadKeyboardUsage; apFontHelper: LoadFontHelper; end; @@ -1601,7 +1476,6 @@ begin apKeyboard: Result := FOnScreenKeyboard; apCharacterMap: Result := FCharacterMap; apEntryHelper: Result := FEntryHelper; - apKeyboardUsage: Result := FKeyboardUsage; apFontHelper: Result := FFontHelper; else Result := nil; end; @@ -1639,9 +1513,6 @@ begin FOnScreenKeyboard.SelectKeyboard(frmKeyman7Main.ActiveKeymanID, FUnicode); // I3949 // I4359 end; - if Assigned(FKeyboardUsage) and (ActivePage = apKeyboardUsage) then - FKeyboardUsage.SelectKeyboard(frmKeyman7Main.ActiveKeymanID); // I3949 - if Assigned(FFontHelper) and (ActivePage = apFontHelper) then FFontHelper.SelectKeyboard(frmKeyman7Main.ActiveKeymanID); // I3949 @@ -1654,20 +1525,12 @@ end; procedure TfrmVisualKeyboard.UpdateActivePage; begin - if ActivePage in [apUndefined, apKeyboard, apKeyboardUsage] then // I2287 + if ActivePage in [apUndefined, apKeyboard] then // I2287 begin - if frmKeyman7Main.Option_AutoSwitchOSKPages then - begin - { Select either Keyboard Usage or VK, depending on whether or not the VK exists } - LoadKeyboard; - if (frmKeyman7Main.ActiveKeymanID = KEYMANID_NONKEYMAN) or FOnScreenKeyboard.HasVisualKeyboard(frmKeyman7Main.ActiveKeymanID) then // I3949 - ActivePage := apKeyboard - else - begin - LoadKeyboardUsage; - ActivePage := apKeyboardUsage; - end; - end; + {$MESSAGE HINT 'eliminate Option_AutoSwitchOSKPages'} + LoadKeyboard; + if (frmKeyman7Main.ActiveKeymanID = KEYMANID_NONKEYMAN) or FOnScreenKeyboard.HasVisualKeyboard(frmKeyman7Main.ActiveKeymanID) then // I3949 + ActivePage := apKeyboard end; end; -- GitLab From 2cae0353b578ce303e7167871e94a4d7b4354b3c Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 24 Feb 2020 10:44:33 +0700 Subject: [PATCH 29/39] chore(windows): move cef to desktop Moves the CEF components to Desktop instead of Engine. --- windows/src/desktop/Makefile | 6 +++- windows/src/desktop/inst/Makefile | 6 ++-- windows/src/desktop/inst/download.in | 18 +++++++++++ windows/src/desktop/inst/keymandesktop.wxs | 5 +++ windows/src/desktop/kmbrowserhost/Makefile | 29 ++++++++++++++++++ .../kmbrowserhost/kmbrowserhost.dpr | 0 .../kmbrowserhost/kmbrowserhost.dproj | 0 .../kmbrowserhost/kmbrowserhost.res | Bin .../kmbrowserhost/manifest.in | 4 +-- .../kmbrowserhost/manifest.rc | 0 .../kmbrowserhost/version.in | 2 +- windows/src/engine/Makefile | 6 +--- windows/src/engine/inst/.gitignore | 1 + windows/src/engine/inst/Makefile | 10 +++--- windows/src/engine/inst/components.wxs | 26 +++++++--------- windows/src/engine/inst/download.in | 18 ----------- windows/src/engine/kmbrowserhost/Makefile | 29 ------------------ .../src/global/delphi/general/KeymanPaths.pas | 12 ++++---- 18 files changed, 86 insertions(+), 86 deletions(-) create mode 100644 windows/src/desktop/kmbrowserhost/Makefile rename windows/src/{engine => desktop}/kmbrowserhost/kmbrowserhost.dpr (100%) rename windows/src/{engine => desktop}/kmbrowserhost/kmbrowserhost.dproj (100%) rename windows/src/{engine => desktop}/kmbrowserhost/kmbrowserhost.res (100%) rename windows/src/{engine => desktop}/kmbrowserhost/manifest.in (87%) rename windows/src/{engine => desktop}/kmbrowserhost/manifest.rc (100%) rename windows/src/{engine => desktop}/kmbrowserhost/version.in (91%) create mode 100644 windows/src/engine/inst/.gitignore delete mode 100644 windows/src/engine/kmbrowserhost/Makefile diff --git a/windows/src/desktop/Makefile b/windows/src/desktop/Makefile index 8f5f5f542c..77f84360aa 100644 --- a/windows/src/desktop/Makefile +++ b/windows/src/desktop/Makefile @@ -2,7 +2,7 @@ # Keyman Desktop Makefile # -TARGETS=kmshell setup insthelp +TARGETS=kmshell kmbrowserhost setup insthelp RELEASE_TARGETS=help CLEANS=inst clean-desktop MANIFESTS=kmshell setup insthelp @@ -15,6 +15,10 @@ kmshell: cd $(ROOT)\src\desktop\kmshell $(MAKE) $(TARGET) +kmbrowserhost: + cd $(ROOT)\src\desktop\kmbrowserhost + $(MAKE) $(TARGET) + setup: cd $(ROOT)\src\desktop\setup $(MAKE) $(TARGET) diff --git a/windows/src/desktop/inst/Makefile b/windows/src/desktop/inst/Makefile index ded13edb17..661157ced1 100644 --- a/windows/src/desktop/inst/Makefile +++ b/windows/src/desktop/inst/Makefile @@ -6,7 +6,7 @@ # ---------------------------------------------------------------------- -DESKTOP_FILES=keymandesktop.wixobj desktopui.wixobj +DESKTOP_FILES=keymandesktop.wixobj desktopui.wixobj cef.wixobj manual-setup: check setup @@ -30,7 +30,7 @@ prereq-resources: desktop: prereq $(MAKE) -fdownload.mak candle-desktop - $(WIXLIGHT) -dWixUILicenseRtf=License.rtf -out keymandesktop.msi -ext WixUIExtension $(DESKTOP_FILES) + $(WIXLIGHT) -dWixUILicenseRtf=License.rtf -out keymandesktop.msi -ext WixUIExtension $(DESKTOP_FILES) $(SIGNCODE) /d "Keyman Desktop" keymandesktop.msi $(ROOT)\bin\buildtools\buildpkg -m keymandesktop.msi -s $(ROOT)\bin\desktop -l license.html $(SIGNCODE) /d "Keyman Desktop" keymandesktop.exe @@ -49,6 +49,7 @@ clean: -del /Q desktop_resources.dll -del /Q desktop_resources.res -del /Q desktopui.wxs + -del /Q cef.wxs check: if not exist $(ROOT)\src\engine\inst\keymanengine.msm $(MAKE) check-engine @@ -70,4 +71,3 @@ check-unicodedata: # ---------------------------------------------------------------------- # EOF # ---------------------------------------------------------------------- - \ No newline at end of file diff --git a/windows/src/desktop/inst/download.in b/windows/src/desktop/inst/download.in index 6dcaf5b27a..41309ed048 100644 --- a/windows/src/desktop/inst/download.in +++ b/windows/src/desktop/inst/download.in @@ -4,6 +4,10 @@ !include ..\..\defines.mak +# We use different directories so that heat generates +# different identifiers for the various folders +KEYMAN_WIX_TEMP_CEF=$(TEMP)\keyman_wix_build\cef + default: echo Please don't call this file directly -- used by Makefile @@ -19,7 +23,21 @@ prepareredist: clean: rem clean +candle: candle-desktop candle-cef + candle-desktop: $(WIXHEAT) dir ..\kmshell\xml -o desktopui.wxs -ag -cg DesktopUI -dr INSTALLDIR -suid -var var.DESKTOPUISOURCE -wx -nologo $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dPRODUCTID=$GUID1 -dDESKTOPUISOURCE=..\kmshell\xml keymandesktop.wxs desktopui.wxs +heat-cef: + # We copy the files to a temp folder in order to exclude .git and README.md from harvesting + -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) + mkdir $(KEYMAN_WIX_TEMP_CEF) + xcopy $(KEYMAN_CEF4DELPHI_ROOT)\* $(KEYMAN_WIX_TEMP_CEF)\ /s + $(WIXHEAT) dir $(KEYMAN_WIX_TEMP_CEF) -o cef.wxs -ag -cg CEF -dr INSTALLDIR -var var.CefSourceDir -wx -nologo + # When we candle/light build, we can grab the source files from the proper root so go ahead and delete the temp folder again + -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) + +candle-cef: heat-cef + $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -ext WixUtilExtension keymanengine.wxs components.wxs + $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs diff --git a/windows/src/desktop/inst/keymandesktop.wxs b/windows/src/desktop/inst/keymandesktop.wxs index 64051cc6e0..5a1b3f2306 100644 --- a/windows/src/desktop/inst/keymandesktop.wxs +++ b/windows/src/desktop/inst/keymandesktop.wxs @@ -135,6 +135,10 @@ + + + + @@ -254,6 +258,7 @@ + diff --git a/windows/src/desktop/kmbrowserhost/Makefile b/windows/src/desktop/kmbrowserhost/Makefile new file mode 100644 index 0000000000..aebf6cc5b1 --- /dev/null +++ b/windows/src/desktop/kmbrowserhost/Makefile @@ -0,0 +1,29 @@ +# +# KMBrowserHost Makefile +# + +!include ..\..\Defines.mak + +build: version.res manifest.res dirs + $(DELPHI_MSBUILD) kmbrowserhost.dproj /p:Platform=Win32 + + $(TDS2DBG) $(WIN32_TARGET_PATH)\kmbrowserhost.exe + $(MAKEJCLDBG) $(WIN32_TARGET_PATH)\kmbrowserhost.map + $(COPY) $(WIN32_TARGET_PATH)\kmbrowserhost.exe $(PROGRAM)\desktop + if exist $(WIN32_TARGET_PATH)\kmbrowserhost.dbg $(COPY) $(WIN32_TARGET_PATH)\kmbrowserhost.dbg $(DEBUGPATH)\desktop + +clean: def-clean + -del kmbrowserhost.exe + -rd /s/q Win32 + -rd /s/q Win64 + +signcode: + $(SIGNCODE) /d "Keyman Desktop" $(PROGRAM)\desktop\kmbrowserhost.exe + +install: + $(COPY) $(PROGRAM)\desktop\kmbrowserhost.exe "$(INSTALLPATH_KEYMANDESKTOP)" + +backup: + $(WZZIP) $(BUILD)\desktop\kmbrowserhost.zip $(BACKUPDEFAULTS) $(WIN32_TARGET_PATH)\kmbrowserhost.exe $(WIN32_TARGET_PATH)\kmbrowserhost.dbg + +!include ..\..\Target.mak diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dpr b/windows/src/desktop/kmbrowserhost/kmbrowserhost.dpr similarity index 100% rename from windows/src/engine/kmbrowserhost/kmbrowserhost.dpr rename to windows/src/desktop/kmbrowserhost/kmbrowserhost.dpr diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.dproj b/windows/src/desktop/kmbrowserhost/kmbrowserhost.dproj similarity index 100% rename from windows/src/engine/kmbrowserhost/kmbrowserhost.dproj rename to windows/src/desktop/kmbrowserhost/kmbrowserhost.dproj diff --git a/windows/src/engine/kmbrowserhost/kmbrowserhost.res b/windows/src/desktop/kmbrowserhost/kmbrowserhost.res similarity index 100% rename from windows/src/engine/kmbrowserhost/kmbrowserhost.res rename to windows/src/desktop/kmbrowserhost/kmbrowserhost.res diff --git a/windows/src/engine/kmbrowserhost/manifest.in b/windows/src/desktop/kmbrowserhost/manifest.in similarity index 87% rename from windows/src/engine/kmbrowserhost/manifest.in rename to windows/src/desktop/kmbrowserhost/manifest.in index c10ce80303..3453c33d9a 100644 --- a/windows/src/engine/kmbrowserhost/manifest.in +++ b/windows/src/desktop/kmbrowserhost/manifest.in @@ -1,7 +1,7 @@ - - Keyman Engine Browser Host Process + + Keyman Desktop Browser Host Process diff --git a/windows/src/engine/kmbrowserhost/manifest.rc b/windows/src/desktop/kmbrowserhost/manifest.rc similarity index 100% rename from windows/src/engine/kmbrowserhost/manifest.rc rename to windows/src/desktop/kmbrowserhost/manifest.rc diff --git a/windows/src/engine/kmbrowserhost/version.in b/windows/src/desktop/kmbrowserhost/version.in similarity index 91% rename from windows/src/engine/kmbrowserhost/version.in rename to windows/src/desktop/kmbrowserhost/version.in index cea239c042..03eb932cfe 100644 --- a/windows/src/engine/kmbrowserhost/version.in +++ b/windows/src/desktop/kmbrowserhost/version.in @@ -12,7 +12,7 @@ BLOCK "0C0904E4" BEGIN VALUE "CompanyName", "SIL International\0" - VALUE "FileDescription", "Keyman Engine Browser Host Process\0" + VALUE "FileDescription", "Keyman Browser Host Process\0" VALUE "FileVersion", "$VERSION\0" VALUE "InternalName", "KMBROWSERHOST\0" VALUE "LegalCopyright", "© SIL International\0" diff --git a/windows/src/engine/Makefile b/windows/src/engine/Makefile index a117d448f2..af28b83448 100644 --- a/windows/src/engine/Makefile +++ b/windows/src/engine/Makefile @@ -4,7 +4,7 @@ # ---------------------------------------------------------------------- -TARGETS=keyman32 kmcomapi keyman kmbrowserhost tsysinfox64 tsysinfo keyman64 keymanx64 mcompile inst kmtip +TARGETS=keyman32 kmcomapi keyman tsysinfox64 tsysinfo keyman64 keymanx64 mcompile inst kmtip MANIFESTS=keyman tsysinfo tsysinfox64 keymanx64 mcompile CLEANS=clean-engine @@ -16,10 +16,6 @@ keyman: cd $(ROOT)\src\engine\keyman $(MAKE) $(TARGET) -kmbrowserhost: - cd $(ROOT)\src\engine\kmbrowserhost - $(MAKE) $(TARGET) - kmcomapi: cd $(ROOT)\src\engine\kmcomapi $(MAKE) $(TARGET) diff --git a/windows/src/engine/inst/.gitignore b/windows/src/engine/inst/.gitignore new file mode 100644 index 0000000000..d52b4c6291 --- /dev/null +++ b/windows/src/engine/inst/.gitignore @@ -0,0 +1 @@ +cef.wxs \ No newline at end of file diff --git a/windows/src/engine/inst/Makefile b/windows/src/engine/inst/Makefile index f03af726e3..339f72205c 100644 --- a/windows/src/engine/inst/Makefile +++ b/windows/src/engine/inst/Makefile @@ -6,7 +6,7 @@ # ---------------------------------------------------------------------- -ENGINE_FILES=keymanengine.wixobj components.wixobj cef.wixobj +ENGINE_FILES=keymanengine.wixobj components.wixobj setup: msm copy @@ -22,7 +22,7 @@ backup: cd $(ROOT)\src\engine\inst\insthelper $(MAKE) backup -msm: +msm: # # Copy files for installation # @@ -35,11 +35,11 @@ msm: $(MAKE) -fdownload.mak prepareredist $(MAKE) -fdownload.mak candle - + # warning 1072 relates to Error table defined by WixUtilExtension. Doesn't really affect us. $(WIXLIGHT) -sw1072 -ext WixUtilExtension $(ENGINE_FILES) -o keymanengine.msm -copy: +copy: # # Sign the installation archive # @@ -64,7 +64,6 @@ clean: -del /Q *.msm -del /Q *.wixobj -del /Q *.wixpdb - -del /Q cef.wxs install: rem nothing @@ -76,4 +75,3 @@ install: # ---------------------------------------------------------------------- # EOF # ---------------------------------------------------------------------- - \ No newline at end of file diff --git a/windows/src/engine/inst/components.wxs b/windows/src/engine/inst/components.wxs index 30d434814b..1603a6756e 100644 --- a/windows/src/engine/inst/components.wxs +++ b/windows/src/engine/inst/components.wxs @@ -1,5 +1,5 @@  - @@ -50,7 +50,7 @@ - + VersionNT64 @@ -99,7 +99,7 @@ - + @@ -108,10 +108,6 @@ - - - - @@ -147,16 +143,16 @@ - + - + - + --> + @@ -173,10 +169,10 @@ - + VersionNT >= 602 - + @@ -192,7 +188,7 @@ - + VersionNT64 @@ -207,7 +203,7 @@ - + diff --git a/windows/src/engine/inst/download.in b/windows/src/engine/inst/download.in index 6bf70c2d93..f54bad55c8 100644 --- a/windows/src/engine/inst/download.in +++ b/windows/src/engine/inst/download.in @@ -4,12 +4,6 @@ !include ..\..\defines.mak -# It would be good to have a single merge module for CEF but it's not critical -# as we will end up using the CEF from Keyman Engine in Keyman Developer - -# We use different directories so that heat generates -# different identifiers for the various folders -KEYMAN_WIX_TEMP_CEF=$(TEMP)\keyman_wix_build\cef default: echo Please don't call this file directly -- used by Makefile @@ -24,15 +18,3 @@ prepareredist: clean: rem -heat-cef: - # We copy the files to a temp folder in order to exclude .git and README.md from harvesting - -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) - mkdir $(KEYMAN_WIX_TEMP_CEF) - xcopy $(KEYMAN_CEF4DELPHI_ROOT)\* $(KEYMAN_WIX_TEMP_CEF)\ /s - $(WIXHEAT) dir $(KEYMAN_WIX_TEMP_CEF) -o cef.wxs -ag -cg CEF -dr INSTALLDIR -var var.CefSourceDir -wx -nologo - # When we candle/light build, we can grab the source files from the proper root so go ahead and delete the temp folder again - -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) - -candle: heat-cef - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -ext WixUtilExtension keymanengine.wxs components.wxs - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs diff --git a/windows/src/engine/kmbrowserhost/Makefile b/windows/src/engine/kmbrowserhost/Makefile deleted file mode 100644 index 53cbcaae61..0000000000 --- a/windows/src/engine/kmbrowserhost/Makefile +++ /dev/null @@ -1,29 +0,0 @@ -# -# KMBrowserHost Makefile -# - -!include ..\..\Defines.mak - -build: version.res manifest.res dirs - $(DELPHI_MSBUILD) kmbrowserhost.dproj /p:Platform=Win32 - - $(TDS2DBG) $(WIN32_TARGET_PATH)\kmbrowserhost.exe - $(MAKEJCLDBG) $(WIN32_TARGET_PATH)\kmbrowserhost.map - $(COPY) $(WIN32_TARGET_PATH)\kmbrowserhost.exe $(PROGRAM)\engine - if exist $(WIN32_TARGET_PATH)\kmbrowserhost.dbg $(COPY) $(WIN32_TARGET_PATH)\kmbrowserhost.dbg $(DEBUGPATH)\engine - -clean: def-clean - -del kmbrowserhost.exe - -rd /s/q Win32 - -rd /s/q Win64 - -signcode: - $(SIGNCODE) /d "Keyman Engine" $(PROGRAM)\engine\kmbrowserhost.exe - -install: - $(COPY) $(PROGRAM)\engine\kmbrowserhost.exe "$(INSTALLPATH_KEYMANENGINE)" - -backup: - $(WZZIP) $(BUILD)\engine\kmbrowserhost.zip $(BACKUPDEFAULTS) $(WIN32_TARGET_PATH)\kmbrowserhost.exe $(WIN32_TARGET_PATH)\kmbrowserhost.dbg - -!include ..\..\Target.mak diff --git a/windows/src/global/delphi/general/KeymanPaths.pas b/windows/src/global/delphi/general/KeymanPaths.pas index 5ee82eb1f9..06025cc68f 100644 --- a/windows/src/global/delphi/general/KeymanPaths.pas +++ b/windows/src/global/delphi/general/KeymanPaths.pas @@ -224,15 +224,15 @@ begin begin Result := GetEnvironmentVariable(S_CEF_EnvVar); if Result = '' - then Result := KeymanEngineInstallPath+S_CEF_SubFolder + then Result := KeymanDesktopInstallPath+S_CEF_SubFolder else Result := IncludeTrailingPathDelimiter(Result); end; end; class function TKeymanPaths.CEFSubprocessPath: string; begin - // Normal install location - in Keyman Engine install folder - Result := KeymanEngineInstallPath(S_CEF_SubProcess); + // Normal install location - in Keyman Desktop install folder + Result := KeymanDesktopInstallPath(S_CEF_SubProcess); if FileExists(Result) then Exit; // Same folder as executable @@ -240,14 +240,14 @@ begin if FileExists(Result) then Exit; // Source repo, bin folder - Result := ExtractFilePath(ParamStr(0)) + '..\engine\' + S_CEF_SubProcess; + Result := ExtractFilePath(ParamStr(0)) + '..\desktop\' + S_CEF_SubProcess; if FileExists(Result) then Exit; // Source repo, source folder - Result := ExtractFilePath(ParamStr(0)) + '..\..\engine\kmbrowserhost\win32\debug\' + S_CEF_SubProcess; + Result := ExtractFilePath(ParamStr(0)) + '..\..\desktop\kmbrowserhost\win32\debug\' + S_CEF_SubProcess; if FileExists(Result) then Exit; - Result := ExtractFilePath(ParamStr(0)) + '..\..\engine\kmbrowserhost\win32\release\' + S_CEF_SubProcess; + Result := ExtractFilePath(ParamStr(0)) + '..\..\desktop\kmbrowserhost\win32\release\' + S_CEF_SubProcess; end; class function TKeymanPaths.CEFDataPath(const mode: string): string; -- GitLab From fc21a38afd01c43a622ab1fbf89601d64f15377e Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 24 Feb 2020 11:08:51 +0700 Subject: [PATCH 30/39] fix(windows): inst makefiles mssing candle target --- windows/src/desktop/inst/Makefile | 2 +- windows/src/engine/inst/Makefile | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/windows/src/desktop/inst/Makefile b/windows/src/desktop/inst/Makefile index 661157ced1..f59ca143d1 100644 --- a/windows/src/desktop/inst/Makefile +++ b/windows/src/desktop/inst/Makefile @@ -29,7 +29,7 @@ prereq-resources: $(SIGNCODE) /d "Keyman Desktop Resources" desktop_resources.dll desktop: prereq - $(MAKE) -fdownload.mak candle-desktop + $(MAKE) -fdownload.mak candle $(WIXLIGHT) -dWixUILicenseRtf=License.rtf -out keymandesktop.msi -ext WixUIExtension $(DESKTOP_FILES) $(SIGNCODE) /d "Keyman Desktop" keymandesktop.msi $(ROOT)\bin\buildtools\buildpkg -m keymandesktop.msi -s $(ROOT)\bin\desktop -l license.html diff --git a/windows/src/engine/inst/Makefile b/windows/src/engine/inst/Makefile index 339f72205c..786de936f6 100644 --- a/windows/src/engine/inst/Makefile +++ b/windows/src/engine/inst/Makefile @@ -34,7 +34,6 @@ msm: # $(MAKE) -fdownload.mak prepareredist - $(MAKE) -fdownload.mak candle # warning 1072 relates to Error table defined by WixUtilExtension. Doesn't really affect us. $(WIXLIGHT) -sw1072 -ext WixUtilExtension $(ENGINE_FILES) -o keymanengine.msm -- GitLab From b71858520afdd2ca3cc9e5b26d48250bf23a8622 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 24 Feb 2020 11:39:20 +0700 Subject: [PATCH 31/39] feat(windows): reimplement font helper Reimplements the font helper in pure Delphi controls. This avoids the issue we had in the past with embedding a web browser into the OSK component. As a bonus, the OSK now opens *substantially* faster, making Keyman feel a whole lot nicer. --- .../src/desktop/kmshell/xml/fonthelper.xsl | 211 ----------- .../keyman/viskbd/UfrmOSKFontHelper.dfm | 77 +++- .../keyman/viskbd/UfrmOSKFontHelper.pas | 357 +++++++++++++----- 3 files changed, 324 insertions(+), 321 deletions(-) delete mode 100644 windows/src/desktop/kmshell/xml/fonthelper.xsl diff --git a/windows/src/desktop/kmshell/xml/fonthelper.xsl b/windows/src/desktop/kmshell/xml/fonthelper.xsl deleted file mode 100644 index 51eb8c685b..0000000000 --- a/windows/src/desktop/kmshell/xml/fonthelper.xsl +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - - - - - - - - - fonts - - - - - - - - - -
-
-
- -
-
-
-
- - - -
- - - - - -
-
- -
-
- - - - - -
-
- - - -
-
- -
- -
-
- - - -
-
-
-
-
- -
-
- - - - - - -
-
- - - -
-
-
-
- -
-
-
-
- - - - -
-
-
-
-
-
-
- -
-
-
- - - info.png - - - - -
-
-
-
- -
-
-
-
-
-
-
-
-
- - - - -
- - - - font_ - - - - - % - - - - - - - char excluded - U+ - - - - - -
diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm index c807490da5..f35ec037fd 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm +++ b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.dfm @@ -8,26 +8,73 @@ inherited frmOSKFontHelper: TfrmOSKFontHelper PixelsPerInch = 96 TextHeight = 13 object panNoKeyboard: TPanel - Left = 8 - Top = 8 - Width = 185 - Height = 41 - Caption = 'panNoKeyboard' + Left = 0 + Top = 0 + Width = 635 + Height = 339 + Align = alClient + BevelOuter = bvNone TabOrder = 0 end object panFonts: TPanel - Left = 8 - Top = 63 - Width = 569 - Height = 218 - Caption = 'panFonts' + Left = 0 + Top = 0 + Width = 635 + Height = 339 + Align = alClient + BevelOuter = bvNone TabOrder = 1 - object gridFonts: TDrawGrid - Left = 24 - Top = 16 - Width = 497 - Height = 161 + object grid: TDrawGrid + Left = 0 + Top = 0 + Width = 635 + Height = 318 + Align = alClient + DefaultRowHeight = 20 + FixedCols = 0 + FixedRows = 0 TabOrder = 0 + OnDblClick = gridDblClick + OnDrawCell = gridDrawCell + OnKeyDown = gridKeyDown + OnMouseWheelDown = gridMouseWheelDown + OnMouseWheelUp = gridMouseWheelUp + ExplicitTop = -3 + end + object panControls: TPanel + Left = 0 + Top = 318 + Width = 635 + Height = 21 + Align = alBottom + BevelOuter = bvNone + TabOrder = 1 + DesignSize = ( + 635 + 21) + object tbSize: TTrackBar + Left = 594 + Top = 0 + Width = 41 + Height = 21 + Hint = 'Display Size' + Margins.Left = 0 + Margins.Top = 0 + Margins.Right = 0 + Margins.Bottom = 0 + Anchors = [akTop, akRight] + LineSize = 5 + Max = 100 + Min = 20 + ParentShowHint = False + PageSize = 5 + Frequency = 20 + Position = 50 + ShowHint = True + TabOrder = 0 + ThumbLength = 10 + OnChange = tbSizeChange + end end end end diff --git a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas index f17832f5fd..187a85591f 100644 --- a/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas +++ b/windows/src/engine/keyman/viskbd/UfrmOSKFontHelper.pas @@ -37,11 +37,27 @@ unit UfrmOSKFontHelper; // I3306 interface uses + System.Classes, System.Contnrs, - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, UfrmOSKPlugInBase, - keymanapi_TLB, UfrmKeymanBase, utilcheckfonts, - UserMessages, Vcl.Grids, Vcl.ExtCtrls; + System.SysUtils, + System.Types, + System.Variants, + Vcl.ComCtrls, + Vcl.Controls, + Vcl.Dialogs, + Vcl.ExtCtrls, + Vcl.Forms, + Vcl.Graphics, + Vcl.Grids, + Winapi.Messages, + Winapi.Windows, + + ClearTypeDrawCharacter, + keymanapi_TLB, + UfrmKeymanBase, + UfrmOSKPlugInBase, + UserMessages, + utilcheckfonts; type TKeyboardProps = record @@ -54,26 +70,42 @@ type TfrmOSKFontHelper = class(TfrmOSKPlugInBase) panNoKeyboard: TPanel; panFonts: TPanel; - gridFonts: TDrawGrid; // I2721 + grid: TDrawGrid; + panControls: TPanel; + tbSize: TTrackBar; // I2721 procedure FormDestroy(Sender: TObject); procedure FormCreate(Sender: TObject); + procedure gridDrawCell(Sender: TObject; ACol, ARow: Integer; + Rect: TRect; State: TGridDrawState); + procedure tbSizeChange(Sender: TObject); + procedure gridKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); + procedure gridMouseWheelDown(Sender: TObject; Shift: TShiftState; + MousePos: TPoint; var Handled: Boolean); + procedure gridMouseWheelUp(Sender: TObject; Shift: TShiftState; + MousePos: TPoint; var Handled: Boolean); + procedure gridDblClick(Sender: TObject); private - FCharsData: array of string; + FChars: array of Cardinal; // UTF-32 codepoints + FDrawChar: TCleartypeDrawCharacter; + FDrawCellBitmap: Vcl.Graphics.TBitmap; + FSelectedKeyboard: TCheckFontKeyboard; FCheckFontsThread: TCheckFontsThread; FCheckFontKeyboards: TCheckFontKeyboards; FLastSelectedKeyboardID: WideString; FLastSelectedKeymanID: Integer; - FLastSelectedKeyboardName: WideString; procedure WMUser_FontChange(var Message: TMessage); message WM_USER_FontChange; // I3390 // I3519 procedure CMFontChange(var Message: TMessage); message CM_FONTCHANGE; - procedure FireCommand(const command: WideString; params: TStringList); procedure CheckFontsThreadComplete(Sender: TObject); procedure DisplayKeyboardFonts; procedure StartCheckingFonts(Keyboard: IKeymanKeyboardInstalled); procedure SetDisplay(const msg: string); + procedure FormatGrid; + function GetFontSize: Integer; + procedure InsertCharacter; public { Public declarations } procedure SelectKeyboard(KeymanID: Integer); @@ -82,10 +114,10 @@ type implementation uses + System.Math, + findfonts, - KLog, kmint, - custinterfaces, UfrmKeyman7Main, UfrmVisualKeyboard, Unicode, @@ -100,6 +132,8 @@ var i: Integer; kbds: IKeymanKeyboardsInstalled; begin + FSelectedKeyboard := nil; + if KeymanID <> -1 then begin kbds := kmcom.Keyboards; @@ -113,83 +147,200 @@ begin end; end; - FLastSelectedKeyboardName := ''; FLastSelectedKeyboardID := ''; FLastSelectedKeymanID := -1; DisplayKeyboardFonts; // Displays default details end; -procedure TfrmOSKFontHelper.FireCommand(const command: WideString; params: TStringList); -var - hwnd: THandle; - text: string; - ch: WideString; - n: Integer; - s: WideString; - v: Integer; +procedure TfrmOSKFontHelper.FormCreate(Sender: TObject); +begin + inherited; + FCheckFontKeyboards := TCheckFontKeyboards.Create; + FDrawCellBitmap := Vcl.Graphics.TBitmap.Create; + FDrawChar := TCleartypeDrawCharacter.Create; +end; + +procedure TfrmOSKFontHelper.FormDestroy(Sender: TObject); begin -// if command = 'link' then TUtilExecute.URL(params.Values['url']) // I3349 -// else if command = 'tutorial' then //(ActiveProduct as IKeymanProduct2).OpenTutorial - if command = 'osk' then frmKeyman7Main.frmVisualKeyboard.ActivePage := apKeyboard - else if command = 'welcome' then frmKeyman7Main.MnuOpenKeyboardHelp(nil) - else if command = 'help' then frmKeyman7Main. MnuOpenProductHelp(frmKeyman7Main.frmVisualKeyboard) - else if command = '' then - - else if command = 'insertchars' then + inherited; + if Assigned(FCheckFontsThread) then // I1698, I2120, I2323, I2565 begin - hwnd := kmcom.Control.LastFocusWindow; + FCheckFontsThread.OnTerminate := nil; + FCheckFontsThread.Terminate; + FCheckFontsThread := nil; + end; - // TODO: something like this will be issued by the grid in the future + FreeAndNil(FCheckFontKeyboards); + FreeAndNil(FDrawCellBitmap); + FreeAndNil(FDrawChar); +end; - ch := Trim(params.Values['chars']); +procedure TfrmOSKFontHelper.gridDblClick(Sender: TObject); +begin + InsertCharacter; +end; + +procedure TfrmOSKFontHelper.gridDrawCell(Sender: TObject; ACol, + ARow: Integer; Rect: TRect; State: TGridDrawState); +var + FFontInfo: TFindFontResult; + RectBmp: TRect; + uc: Integer; + ch: string; +begin + if not Assigned(FSelectedKeyboard) or (FSelectedKeyboard.Fonts.Count <= ARow) then + Exit; - // I1429 - fix U+xxxx in insertchars URL + FFontInfo := FSelectedKeyboard.Fonts[ARow]; - n := Pos(' ', ch); if n = 0 then n := Length(ch)+1; + if ACol = 0 then + begin + // Font name + grid.Canvas.Font := grid.Font; + grid.Canvas.TextRect(Rect, Rect.Left, (Rect.Bottom + Rect.Top - grid.Canvas.TextHeight('A')) div 2, FFontInfo.FontName) + end + else if ACol = 1 then + begin + // % Coverage + grid.Canvas.Font := grid.Font; + grid.Canvas.TextRect(Rect, Rect.Left, (Rect.Bottom + Rect.Top - grid.Canvas.TextHeight('A')) div 2, Format('%d%%', [FFontInfo.Coverage])) + end + else + begin +// grid.Canvas.Font.Name := FFontInfo.FontName; +// grid.Canvas.TextRect(Rect, Rect.Left, Rect.Top, FCharsData[ACol-2]); + { Draw a character cell } - while ch <> '' do + RectBmp := System.Types.Rect(0, 0, Rect.Right-Rect.Left, Rect.Bottom-Rect.Top); + with FDrawCellBitmap.Canvas do begin - s := Copy(ch, 1, n-1); if s = '' then Break; + { Draw a character cell } + if gdSelected in State then + begin + if gdFocused in State then + begin + Font.Color := clHighlightText; + Brush.Color := clHighlight; + end + else + begin + Font.Color := clHighlightText; + Brush.Color := clGray; + end; + end + else + begin + Font.Color := clWindowText; + Brush.Color := clWindow; + end; + FillRect(RectBmp); - if Copy(s,1,2) = 'U+' then v := StrToIntDef('$'+Copy(s,3,6),0) - else if s[1] = 'x' then v := StrToIntDef('$'+Copy(s,2,6),0) - else if s[1] = 'd' then v := StrToIntDef(Copy(s,2,7), 0) - else v := 0; + { Retrieve character } - if (v > 32) and (v <= $10FFFF) then + uc := FChars[ACol-2]; + + if uc = 0 then begin - if Uni_IsSurrogate(v) - then text := text + Uni_UTF32ToSurrogate1(v) + Uni_UTF32ToSurrogate2(v) - else text := text + Char(v); + grid.Canvas.Brush.Color := clWindow; + grid.Canvas.FillRect(Rect); + Exit; end; - Delete(ch, 1, n); ch := Trim(ch); - n := Pos(' ', ch); - if n = 0 then n := Length(ch)+1; + ch := Uni_UTF32CharToUTF16(uc); + + FDrawChar.SetFontDetails(FFontInfo.FontName, GetFontSize); // I4807 + FDrawChar.Color := Font.Color; +// case DisplayQuality of +// NONANTIALIASED_QUALITY: FDrawChar.DisplayQuality := ctPlain; +// ANTIALIASED_QUALITY: FDrawChar.DisplayQuality := ctAntialias; +// else + FDrawChar.DisplayQuality := ctCleartype; +// end; + FDrawChar.DrawText(Handle, TA_CENTER or TA_TOP, RectBmp.Right div 2, 0, RectBmp, ch); + + { Draw U+nnnn } + + if grid.DefaultColWidth > 35 then + begin + Font.Size := 7; + Font.Name := 'Arial'; + SetTextAlign(Handle, TA_CENTER or TA_TOP); + TextOut(RectBmp.Right div 2, RectBmp.Bottom - TextHeight('a'), 'U+'+IntToHex(uc,4)); + end; + + { Draw grid } + + Pen.Color := $c0c0c0; + MoveTo(RectBmp.Right-1, 0); + LineTo(RectBmp.Right-1, RectBmp.Bottom); + MoveTo(0, RectBmp.Bottom-1); + LineTo(RectBmp.Right, RectBmp.Bottom-1); end; - if text <> '' then - SendInputString(hwnd, text); // I4412 + grid.Canvas.Draw(Rect.Left, Rect.Top, FDrawCellBitmap); end; end; -procedure TfrmOSKFontHelper.FormCreate(Sender: TObject); +procedure TfrmOSKFontHelper.gridKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); begin - inherited; - FCheckFontKeyboards := TCheckFontKeyboards.Create; + if Key = 107 { Numpad + } then + begin + if tbSize.Position < tbSize.Max then + tbSize.Position := tbSize.Position + tbSize.PageSize; + end + else if Key = 109 { Numpad - } then + begin + if tbSize.Position > tbSize.Min then + tbSize.Position := tbSize.Position - tbSize.PageSize; + end + else if Key = VK_RETURN then + InsertCharacter + else + Exit; + Key := 0; end; -procedure TfrmOSKFontHelper.FormDestroy(Sender: TObject); +procedure TfrmOSKFontHelper.InsertCharacter; +var + ch: string; + hwnd: THandle; begin - inherited; - if Assigned(FCheckFontsThread) then // I1698, I2120, I2323, I2565 + if grid.Col < 2 then + Exit; + + if not Assigned(FSelectedKeyboard) then + Exit; + + if grid.Col - 2 >= Length(FChars) then + Exit; + + ch := Uni_UTF32CharToUTF16(FChars[grid.Col-2]); + + hwnd := kmcom.Control.LastFocusWindow; + SendInputString(hwnd, ch); // I4412 +end; + +procedure TfrmOSKFontHelper.gridMouseWheelDown(Sender: TObject; + Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); +begin + if ssCtrl in Shift then begin - FCheckFontsThread.OnTerminate := nil; - FCheckFontsThread.Terminate; - FCheckFontsThread := nil; + Handled := True; + if tbSize.Position < tbSize.Max then + tbSize.Position := tbSize.Position + tbSize.PageSize; end; +end; - FreeAndNil(FCheckFontKeyboards); +procedure TfrmOSKFontHelper.gridMouseWheelUp(Sender: TObject; + Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); +begin + if ssCtrl in Shift then + begin + Handled := True; + if tbSize.Position > tbSize.Min then + tbSize.Position := tbSize.Position - tbSize.PageSize; + end; end; procedure TfrmOSKFontHelper.CheckFontsThreadComplete(Sender: TObject); @@ -217,6 +368,7 @@ end; procedure TfrmOSKFontHelper.WMUser_FontChange(var Message: TMessage); // I3390 // I3519 begin + FSelectedKeyboard := nil; FCheckFontKeyboards.Clear; SelectKeyboard(FLastSelectedKeymanID); end; @@ -224,7 +376,6 @@ end; procedure TfrmOSKFontHelper.StartCheckingFonts(Keyboard: IKeymanKeyboardInstalled); begin FLastSelectedKeyboardID := Keyboard.ID; - FLastSelectedKeyboardName := Keyboard.Name; FLastSelectedKeymanID := Keyboard.KeymanID; if FCheckFontKeyboards.Keyboards[FLastSelectedKeyboardID] <> nil then @@ -241,7 +392,7 @@ begin end else begin - SetDisplay('Please wait while searching for related fonts for keyboard '+FLastSelectedKeyboardName); + SetDisplay('Please wait while searching for related fonts for keyboard '+Keyboard.Name); FCheckFontsThread := TCheckFontsThread.Create; FCheckFontsThread.FreeOnTerminate := True; @@ -251,6 +402,38 @@ begin end; end; +procedure TfrmOSKFontHelper.tbSizeChange(Sender: TObject); +begin + FormatGrid; +end; + +procedure TfrmOSKFontHelper.FormatGrid; +var + i: Integer; + m: Integer; +begin + grid.DefaultColWidth := tbSize.Position; + grid.DefaultRowHeight := tbSize.Position; + + Canvas.Font := grid.Font; + + m := 64; + + if Assigned(FSelectedKeyboard) then + for i := 0 to grid.RowCount - 1 do + m := System.Math.Max(m, Canvas.TextWidth(FSelectedKeyboard.Fonts[i].FontName) + 6); + + grid.ColWidths[0] := m; + grid.ColWidths[1] := Canvas.TextWidth('100%') + 6; + + for i := 2 to grid.ColCount - 1 do + grid.ColWidths[i] := tbSize.Position; + grid.Invalidate; + + FDrawCellBitmap.Width := grid.DefaultColWidth; + FDrawCellBitmap.Height := grid.DefaultRowHeight; +end; + procedure TfrmOSKFontHelper.DisplayKeyboardFonts; var FKeyboard: TCheckFontKeyboard; @@ -259,10 +442,11 @@ var i: Integer; ch,ch2: WideChar; begin + FSelectedKeyboard := nil; FKeyboard := FCheckFontKeyboards.Keyboards[FLastSelectedKeyboardID]; if (FLastSelectedKeyboardID <> '') and Assigned(FKeyboard) then begin - SetLength(FCharsData, Length(FKeyboard.Chars)); + SetLength(FChars, Length(FKeyboard.Chars)); J := 0; I := 1; while I <= Length(FKeyboard.Chars) do // I2712 @@ -271,53 +455,29 @@ begin if Uni_IsSurrogate1(ch) and (I < Length(FKeyboard.Chars)) and Uni_IsSurrogate2(FKeyboard.Chars[I+1]) then begin ch2 := FKeyboard.Chars[I+1]; - FCharsData[J] := ch + ch2; + FChars[J] := Uni_SurrogateToUTF32(ch, ch2); Inc(I); end else - FCharsData[J] := ch; + FChars[J] := Ord(ch); Inc(I); Inc(J); end; - SetLength(FCharsData, J); - - gridFonts.ColCount := Length(FCharsData) + 1; - gridFonts.RowCount := FKeyboard.Fonts.Count + 1; + SetLength(FChars, J); - FSelectedKeyboard := FKeyboard; + grid.ColCount := Length(FChars) + 2; + grid.RowCount := FKeyboard.Fonts.Count; -(* for I := 0 to FKeyboard.Fonts.Count - 1 do - begin - FFontsData := FFontsData + ''; //'; - - FFontsData := FFontsData + ''; - J := 1; - while J <= Length(FKeyboard.Fonts[I].ExcludedChars) do // I2712 + for i := 0 to FKeyboard.Fonts.Count - 1 do + if FKeyboard.Fonts[i].Coverage < 50 then begin - ch := FKeyboard.Fonts[I].ExcludedChars[J]; - if Uni_IsSurrogate1(ch) and (J < Length(FKeyboard.Fonts[I].ExcludedChars)) then - begin - ch2 := FKeyboard.Fonts[I].ExcludedChars[J+1]; - FFontsData := FFontsData + ''; - Inc(J); - end - else - FFontsData := FFontsData + ''; - Inc(J); + grid.RowCount := i; + Break; end; - FFontsData := FFontsData + ''; - FFontsData := FFontsData + ''; - end; - FFontsData := FFontsData + '
'; - {finally - FFonts.Free; - end;} -*) + FSelectedKeyboard := FKeyboard; + FormatGrid; SetDisplay(''); end else @@ -344,4 +504,11 @@ begin end; end; +function TfrmOSKFontHelper.GetFontSize: Integer; // I4807 +begin + if grid.DefaultColWidth < 36 + then Result := grid.DefaultRowHeight + else Result := grid.DefaultRowHeight - 12; +end; + end. -- GitLab From 21e5fc19e34caaf6b8e62363e064002f7af12d01 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 24 Feb 2020 12:00:42 +0700 Subject: [PATCH 32/39] fix(windows): engine install not building --- windows/src/engine/inst/Makefile | 1 + windows/src/engine/inst/download.in | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/windows/src/engine/inst/Makefile b/windows/src/engine/inst/Makefile index 786de936f6..339f72205c 100644 --- a/windows/src/engine/inst/Makefile +++ b/windows/src/engine/inst/Makefile @@ -34,6 +34,7 @@ msm: # $(MAKE) -fdownload.mak prepareredist + $(MAKE) -fdownload.mak candle # warning 1072 relates to Error table defined by WixUtilExtension. Doesn't really affect us. $(WIXLIGHT) -sw1072 -ext WixUtilExtension $(ENGINE_FILES) -o keymanengine.msm diff --git a/windows/src/engine/inst/download.in b/windows/src/engine/inst/download.in index f54bad55c8..7de5f73386 100644 --- a/windows/src/engine/inst/download.in +++ b/windows/src/engine/inst/download.in @@ -4,7 +4,6 @@ !include ..\..\defines.mak - default: echo Please don't call this file directly -- used by Makefile @@ -18,3 +17,5 @@ prepareredist: clean: rem +candle: + $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -ext WixUtilExtension keymanengine.wxs components.wxs -- GitLab From d2387863e95501cd3c417dfce29ed81c20496e4a Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 24 Feb 2020 13:16:10 +0700 Subject: [PATCH 33/39] fix(windows): cef refs still not 100% --- windows/src/desktop/inst/keymandesktop.wxs | 1 + windows/src/engine/inst/keymanengine.wxs | 15 +++++++-------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/windows/src/desktop/inst/keymandesktop.wxs b/windows/src/desktop/inst/keymandesktop.wxs index 5a1b3f2306..e6407ca92d 100644 --- a/windows/src/desktop/inst/keymandesktop.wxs +++ b/windows/src/desktop/inst/keymandesktop.wxs @@ -263,6 +263,7 @@ + diff --git a/windows/src/engine/inst/keymanengine.wxs b/windows/src/engine/inst/keymanengine.wxs index 02a3283d5b..1d3b09eb4c 100644 --- a/windows/src/engine/inst/keymanengine.wxs +++ b/windows/src/engine/inst/keymanengine.wxs @@ -1,13 +1,12 @@  - - + - - + @@ -16,8 +15,8 @@ - @@ -81,7 +80,7 @@ - + -- GitLab From 217e60b063304196d4fa998bb00379f868c6cf02 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Mon, 24 Feb 2020 21:45:21 +0700 Subject: [PATCH 34/39] fix(windows): and again wxs --- windows/src/desktop/inst/download.in | 1 - 1 file changed, 1 deletion(-) diff --git a/windows/src/desktop/inst/download.in b/windows/src/desktop/inst/download.in index 41309ed048..08ec07a826 100644 --- a/windows/src/desktop/inst/download.in +++ b/windows/src/desktop/inst/download.in @@ -39,5 +39,4 @@ heat-cef: -rmdir /s/q $(KEYMAN_WIX_TEMP_CEF) candle-cef: heat-cef - $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -ext WixUtilExtension keymanengine.wxs components.wxs $(WIXCANDLE) -dVERSION=$VERSION -dRELEASE=$RELEASE -dCefSourceDir=$(KEYMAN_CEF4DELPHI_ROOT) cef.wxs -- GitLab From 7638b32bc8eb4bac52789193974059fcaa9fbc20 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 29 Feb 2020 20:08:51 +0700 Subject: [PATCH 35/39] feat(windows): asynchronous hint window --- windows/src/desktop/kmshell/main/initprog.pas | 19 ++++++--- .../src/desktop/kmshell/util/KMShellHints.pas | 20 ++++++--- .../src/engine/keyman/KeymanDesktopShell.pas | 12 +++--- windows/src/engine/keyman/KeymanHints.pas | 42 ++++++++----------- windows/src/engine/keyman/UfrmKeyman7Main.pas | 6 +++ .../delphi/general/KeymanControlMessages.pas | 2 + 6 files changed, 59 insertions(+), 42 deletions(-) diff --git a/windows/src/desktop/kmshell/main/initprog.pas b/windows/src/desktop/kmshell/main/initprog.pas index a548d91df0..bc915322ec 100644 --- a/windows/src/desktop/kmshell/main/initprog.pas +++ b/windows/src/desktop/kmshell/main/initprog.pas @@ -193,7 +193,7 @@ begin end; function Init(var FMode: TKMShellMode; KeyboardFileNames: TWideStrings; var FSilent, FForce, FNoWelcome: Boolean; - var FLogFile, FQuery: string; var FDisablePackages: string; var FStartWithConfiguration: Boolean): Boolean; + var FLogFile, FQuery: string; var FDisablePackages: string; var FStartWithConfiguration: Boolean; var FParentWindow: THandle): Boolean; var s: string; i: Integer; @@ -263,6 +263,11 @@ begin // Controls from Keyman Engine else if s = '-showhint' then FMode := fmShowHint + else if s = '-parentwindow' then + begin + Inc(i); + FParentWindow := StrToIntDef(ParamStr(i), 0); + end else if s = '-showhelp' then FMode := fmShowHelp else Exit; @@ -286,7 +291,7 @@ begin end; procedure RunKMCOM(FMode: TKMShellMode; KeyboardFileNames: TWideStrings; FSilent, FForce, FNoWelcome: Boolean; - FLogFile, FQuery: string; FDisablePackages: string; FStartWithConfiguration: Boolean); forward; + FLogFile, FQuery: string; FDisablePackages: string; FStartWithConfiguration: Boolean; FParentWindow: THandle); forward; procedure Run; var @@ -295,6 +300,7 @@ var FSilent: Boolean; FNoWelcome: Boolean; FForce: Boolean; + FParentWindow: THandle; FLogFile: string; FDisablePackages: string; FStartWithConfiguration: Boolean; @@ -314,7 +320,8 @@ begin KeyboardFileNames := TWideStringList.Create; try - if not Init(FMode, KeyboardFileNames, FSilent, FForce, FNoWelcome, FLogFile, FQuery, FDisablePackages, FStartWithConfiguration) then + FParentWindow := 0; + if not Init(FMode, KeyboardFileNames, FSilent, FForce, FNoWelcome, FLogFile, FQuery, FDisablePackages, FStartWithConfiguration, FParentWindow) then begin //TODO: TUtilExecute.Shell(PChar('hh.exe mk:@MSITStore:'+ExtractFilePath(KMShellExe)+'keyman.chm::/context/keyman_usage.html'), SW_SHOWNORMAL); Exit; @@ -322,7 +329,7 @@ begin if not LoadKMCOM then Exit; try - RunKMCOM(FMode, KeyboardFileNames, FSilent, FForce, FNoWelcome, FLogFile, FQuery, FDisablePackages, FStartWithConfiguration); + RunKMCOM(FMode, KeyboardFileNames, FSilent, FForce, FNoWelcome, FLogFile, FQuery, FDisablePackages, FStartWithConfiguration, FParentWindow); finally kmcom := nil; end; @@ -332,7 +339,7 @@ begin end; procedure RunKMCOM(FMode: TKMShellMode; KeyboardFileNames: TWideStrings; FSilent, FForce, FNoWelcome: Boolean; - FLogFile, FQuery: string; FDisablePackages: string; FStartWithConfiguration: Boolean); + FLogFile, FQuery: string; FDisablePackages: string; FStartWithConfiguration: Boolean; FParentWindow: THandle); var FIcon: string; FMutex: TKeymanMutex; // I2720 @@ -506,7 +513,7 @@ begin ShowKeepInTouchForm(True); // I4658 fmShowHint: - if ShowKMShellHintQuery(FirstKeyboardFileName) = mrOk + if ShowKMShellHintQuery(FParentWindow, FirstKeyboardFileName) = mrOk then ExitCode := 0 else ExitCode := 1; fmShowHelp: diff --git a/windows/src/desktop/kmshell/util/KMShellHints.pas b/windows/src/desktop/kmshell/util/KMShellHints.pas index 6905325605..2d1fd93d0c 100644 --- a/windows/src/desktop/kmshell/util/KMShellHints.pas +++ b/windows/src/desktop/kmshell/util/KMShellHints.pas @@ -35,17 +35,18 @@ uses SysUtils, Windows; -function ShowKMShellHintQuery(AHint: TKeymanHint; AButtons: TMsgDlgButtons; ADefaultResult: TModalResult): TModalResult; overload; -function ShowKMShellHintQuery(AHint: string): TModalResult; overload; +function ShowKMShellHintQuery(AParentWindow: THandle; AHint: TKeymanHint; AButtons: TMsgDlgButtons; ADefaultResult: TModalResult): TModalResult; overload; +function ShowKMShellHintQuery(AParentWindow: THandle; AHint: string): TModalResult; overload; implementation uses Hints, + KeymanControlMessages, UfrmHint, XMLRenderer; -function ShowKMShellHintQuery(AHint: string): TModalResult; overload; +function ShowKMShellHintQuery(AParentWindow: THandle; AHint: string): TModalResult; overload; var h: TKeymanHint; begin @@ -54,11 +55,13 @@ begin Exit(mrOk); if KeymanHintData[h].IsQuestion - then Result := ShowKMShellHintQuery(h, mbOKCancel, mrOk) - else Result := ShowKMShellHintQuery(h, [mbOk], mrOk); + then Result := ShowKMShellHintQuery(AParentWindow, h, mbOKCancel, mrOk) + else Result := ShowKMShellHintQuery(AParentWindow, h, [mbOk], mrOk); end; -function ShowKMShellHintQuery(AHint: TKeymanHint; AButtons: TMsgDlgButtons; ADefaultResult: TModalResult): TModalResult; overload; +function ShowKMShellHintQuery(AParentWindow: THandle; AHint: TKeymanHint; AButtons: TMsgDlgButtons; ADefaultResult: TModalResult): TModalResult; overload +var + wm_keyman_control: Integer; begin Result := ADefaultResult; if IsHintEnabled(AHint) then @@ -72,6 +75,11 @@ begin DefaultResult := ADefaultResult; FormStyle := fsStayOnTop; Result := ShowModal; + if AParentWindow <> 0 then + begin + wm_keyman_control := RegisterWindowMessage('WM_KEYMAN_CONTROL'); + PostMessage(AParentWindow, wm_keyman_control, MAKELONG(KMC_HINTRESPONSE, Result), Ord(AHint)); + end; finally Free; end; diff --git a/windows/src/engine/keyman/KeymanDesktopShell.pas b/windows/src/engine/keyman/KeymanDesktopShell.pas index 7042241ff5..58a9231baf 100644 --- a/windows/src/engine/keyman/KeymanDesktopShell.pas +++ b/windows/src/engine/keyman/KeymanDesktopShell.pas @@ -3,12 +3,13 @@ unit KeymanDesktopShell; interface uses - keymanapi_tlb; + keymanapi_tlb, + utilexecute; type TKeymanDesktopShell = class class function RunKeymanConfiguration(params: string = ''): Boolean; - class function WaitForKeymanConfiguration(const params: string; var ec: Cardinal): Boolean; + class function WaitForKeymanConfiguration(const params: string; var ec: Cardinal; Callback: TUtilExecuteCallbackWaitEvent = nil): Boolean; class function IsTextEditorVisible: Boolean; static; class function OpenHelp(topic: string): Boolean; class function OpenHelpJump(const topic: string; ActiveKeyboard: IKeymanKeyboardInstalled): Boolean; @@ -24,8 +25,7 @@ uses System.SysUtils, Winapi.Windows, - KeymanPaths, - utilexecute; + KeymanPaths; class function TKeymanDesktopShell.GetRootDir: string; begin @@ -48,9 +48,9 @@ begin end; class function TKeymanDesktopShell.WaitForKeymanConfiguration( - const params: string; var ec: Cardinal): Boolean; + const params: string; var ec: Cardinal; Callback: TUtilExecuteCallbackWaitEvent): Boolean; begin - Result := TUtilExecute.WaitForProcess('"'+GetShellPath+'" '+params, GetRootPath, ec); + Result := TUtilExecute.WaitForProcess('"'+GetShellPath+'" '+params, GetRootPath, ec, Callback); end; const diff --git a/windows/src/engine/keyman/KeymanHints.pas b/windows/src/engine/keyman/KeymanHints.pas index 808befe7a4..70870800c0 100644 --- a/windows/src/engine/keyman/KeymanHints.pas +++ b/windows/src/engine/keyman/KeymanHints.pas @@ -25,6 +25,7 @@ interface uses System.Classes, Vcl.Controls, + Vcl.Forms, HintConsts, Math, Messages, @@ -33,6 +34,7 @@ uses Windows; function ShowKeymanHint(AHint: TKeymanHint): Boolean; // I4242 +procedure ResetHintState; implementation @@ -41,41 +43,33 @@ uses keymanapi_TLB, KeymanDesktopShell, kmint; -// UfrmKeyman7Main, -// XMLRenderer; var InHint: Boolean = False; +procedure ResetHintState; +begin + InHint := False; +end; + function ShowKeymanHint(AHint: TKeymanHint): Boolean; -var -// hwnd: THandle; - ec: Cardinal; begin if InHint then - Exit(False); + Exit(True); Result := True; - InHint := True; - try - if not Assigned(kmcom) then Exit; - // hwnd := kmcom.Control.LastFocusWindow; - - if not IsHintEnabled(AHint) then Exit; - - if KeymanHintData[AHint].IsQuestion then - begin - //TODO: Make this background with a post message to main to close - TKeymanDesktopShell.WaitForKeymanConfiguration('-showhint '+GetHintName(AHint), ec); - if ec = 1 then - Result := False - end - else - TKeymanDesktopShell.RunKeymanConfiguration('-showhint '+GetHintName(AHint)); - finally + if not Assigned(kmcom) then Exit; + if not IsHintEnabled(AHint) then Exit; + + InHint := True; // will be reset by the hint response + + // We will receive the response and process asynchronously via + // wm_keyman_control message KMC_HINTRESPONSE + if not TKeymanDesktopShell.RunKeymanConfiguration('-showhint '+GetHintName(AHint)+' -parentwindow '+IntToStr(Application.MainForm.Handle)) then InHint := False; - end; + + Result := not KeymanHintData[AHint].IsQuestion; end; end. diff --git a/windows/src/engine/keyman/UfrmKeyman7Main.pas b/windows/src/engine/keyman/UfrmKeyman7Main.pas index de5121a98d..f743a221f8 100644 --- a/windows/src/engine/keyman/UfrmKeyman7Main.pas +++ b/windows/src/engine/keyman/UfrmKeyman7Main.pas @@ -855,6 +855,12 @@ begin // Record the active profile ProcessProfileChange(LParam); end; + KMC_HINTRESPONSE: + begin + ResetHintState; + if (TKeymanHint(lParam) = KH_EXITPRODUCT) and (wParam = mrOk) then + UnloadProduct; + end; //TOUCH KMC_CONTEXT: //TOUCH begin //TOUCH if LParam <> 0 then diff --git a/windows/src/global/delphi/general/KeymanControlMessages.pas b/windows/src/global/delphi/general/KeymanControlMessages.pas index f144738477..000f998d9b 100644 --- a/windows/src/global/delphi/general/KeymanControlMessages.pas +++ b/windows/src/global/delphi/general/KeymanControlMessages.pas @@ -52,6 +52,8 @@ const KMC_PROFILECHANGED = 18; // 9.0.426.0 // I3933 + KMC_HINTRESPONSE = 19; // 14.0 HIWORD(wParam) = ModalResult, lParam = hint enum + PC_UPDATE = 0; PC_UPDATE_LANGUAGESWITCH = 1; PC_HOTKEYCHANGE = 2; -- GitLab From e38ae8c61317462502111f14fd8d90e32ed62bc6 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sat, 29 Feb 2020 20:27:44 +0700 Subject: [PATCH 36/39] chore(windows): cleanup for review --- .../install/UfrmInstallKeyboardFromWeb.pas | 27 +------------------ windows/src/desktop/kmshell/main/UfrmHTML.pas | 26 ------------------ 2 files changed, 1 insertion(+), 52 deletions(-) diff --git a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas index b023f1c0c2..ab05f7e99b 100644 --- a/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas +++ b/windows/src/desktop/kmshell/install/UfrmInstallKeyboardFromWeb.pas @@ -44,7 +44,6 @@ type FXML: WideString; FURL: WideString; FFileName: WideString; - FDownloadOnly: Boolean; procedure Download(params: TStringList); procedure DoDownload(AOwner: TfrmDownloadProgress; var Result: Boolean); @@ -137,20 +136,7 @@ var end; end; - if FDownloadOnly then - begin - dlgSaveFile.DefaultExt := Copy(ExtractFileExt(FTempFileName), 2, 10); - dlgSaveFile.FileName := ExtractFileName(FTempFileName); - while dlgSaveFile.Execute do - begin - if not CopyFile(PChar(FTempFileName), PChar(dlgSaveFile.FileName), False) then - ShowMessage('Unable to save to file '+dlgSaveFile.FileName+' - '+SysErrorMessage(GetLastError)) - else - Break; - end; - end - else - if InstallFile(Self, FTempFileName, False, False, '') then Result := True; // I4414 + if InstallFile(Self, FTempFileName, False, False, '') then Result := True; // I4414 finally if FileExists(FTempFileName) then DeleteFile(FTempFileName); @@ -198,17 +184,6 @@ procedure TfrmInstallKeyboardFromWeb.Download(params: TStringList); begin FURL := params.Values['url']; FFilename := params.Values['filename']; - FDownloadOnly := False; - - // Query document>> -{$MESSAGE HINT 'support downloadonly checkbox'} -{TODO: support downloadonly if Assigned(web.Document) then - begin - doc := web.Document as IHTMLDocument3; - elem := doc.getElementById('chkDownloadOnly'); - if Assigned(elem) then - FDownloadOnly := (elem as IHTMLInputElement).checked; - end;} with TfrmDownloadProgress.Create(Self) do try diff --git a/windows/src/desktop/kmshell/main/UfrmHTML.pas b/windows/src/desktop/kmshell/main/UfrmHTML.pas index 0055a6776b..407e17ca21 100644 --- a/windows/src/desktop/kmshell/main/UfrmHTML.pas +++ b/windows/src/desktop/kmshell/main/UfrmHTML.pas @@ -84,32 +84,6 @@ begin cef.Navigate(FileName); end; -{$MESSAGE HINT 'TODO: support navigation state changes'} -{procedure TfrmHTML.webCommandStateChange(ASender: TObject; Command: Integer; - Enable: WordBool); -begin - if Command = CSC_NAVIGATEFORWARD then - cmdForward.Enabled := Enable - else if Command = CSC_NAVIGATEBACK then - cmdBack.Enabled := Enable; -end;} - -{procedure TfrmHTML.webKeyDown(Sender: TObject; var Key: Word; ScanCode: Word; - Shift: TShiftState); -begin - inherited; - if Key = VK_ESCAPE then - Close; -end;} - -{procedure TfrmHTML.webNewWindow3(ASender: TObject; var ppDisp: IDispatch; - var Cancel: WordBool; dwFlags: Cardinal; const bstrUrlContext, - bstrUrl: WideString); -begin - Cancel := True; - TUtilExecute.URL(bstrUrl); // I3349 -end;} - procedure TfrmHTML.SetText(const Value: string); var buf, buf1: array[0..260] of char; -- GitLab From fd502e6f9c75f3058183f7362e0f0b867b40d8ee Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 1 Mar 2020 08:17:42 +0700 Subject: [PATCH 37/39] chore(developer): restore CEF in installer --- windows/src/desktop/kmshell/kmshell.res | Bin 7036 -> 7036 bytes windows/src/developer/inst/Makefile | 1 + windows/src/developer/inst/kmdev.wxs | 1 + windows/src/engine/inst/.gitignore | 1 - 4 files changed, 2 insertions(+), 1 deletion(-) delete mode 100644 windows/src/engine/inst/.gitignore diff --git a/windows/src/desktop/kmshell/kmshell.res b/windows/src/desktop/kmshell/kmshell.res index 542c7839023485c6997ceafe62380c58a67e04ab..344aa5d1224e5b940fa48c55a777ae0b42f2446b 100644 GIT binary patch delta 14 Vcmexk_Qz~O33H6}k&Wf7(f~8c1@8a= delta 14 Vcmexk_Qz~O2{XsleH+VJr2#d(22TJ0 diff --git a/windows/src/developer/inst/Makefile b/windows/src/developer/inst/Makefile index e1a8078675..a7bc4a378e 100644 --- a/windows/src/developer/inst/Makefile +++ b/windows/src/developer/inst/Makefile @@ -60,6 +60,7 @@ clean: -del /Q *.exe -del /Q *.wixpdb -del /Q xml.wxs + -del /Q cef.wxs -del /Q templates.wxs -del /Q kmlmc.wxs diff --git a/windows/src/developer/inst/kmdev.wxs b/windows/src/developer/inst/kmdev.wxs index 54c83801a1..911d1cf95e 100644 --- a/windows/src/developer/inst/kmdev.wxs +++ b/windows/src/developer/inst/kmdev.wxs @@ -349,6 +349,7 @@ + diff --git a/windows/src/engine/inst/.gitignore b/windows/src/engine/inst/.gitignore deleted file mode 100644 index d52b4c6291..0000000000 --- a/windows/src/engine/inst/.gitignore +++ /dev/null @@ -1 +0,0 @@ -cef.wxs \ No newline at end of file -- GitLab From 3dcfccd337cb8ff0e76acb286b933c4d109f29f7 Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 1 Mar 2020 08:21:06 +0700 Subject: [PATCH 38/39] fix(windows): char const for copyright --- ...eyman.Developer.UI.Project.UfrmNewModelProjectParameters.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.pas b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.pas index e95c1153e7..d89549421b 100644 --- a/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.pas +++ b/windows/src/developer/TIKE/project/Keyman.Developer.UI.Project.UfrmNewModelProjectParameters.pas @@ -457,7 +457,7 @@ end; procedure TfrmNewModelProjectParameters.UpdateAuthorIDFromAuthor; begin editAuthorID.Text := TLexicalModelUtils.CleanLexicalModelIDComponent(Author); - editCopyright.Text := '� '+FormatDateTime('yyyy', Now)+' '+Author; + editCopyright.Text := Char($00A9 {copyright})+' '+FormatDateTime('yyyy', Now)+' '+Author; end; procedure TfrmNewModelProjectParameters.UpdateUniqFromModelName; -- GitLab From 0d96f4dc7fa85f23cb3200692f5b4ecff83a552d Mon Sep 17 00:00:00 2001 From: Marc Durdin Date: Sun, 8 Mar 2020 20:36:22 +1100 Subject: [PATCH 39/39] chore: address review comments --- windows/src/developer/history.md | 9 --------- 1 file changed, 9 deletions(-) diff --git a/windows/src/developer/history.md b/windows/src/developer/history.md index b3ab958beb..70d8bec4a4 100644 --- a/windows/src/developer/history.md +++ b/windows/src/developer/history.md @@ -149,15 +149,6 @@ ## 2019-02-26 11.0.1351.0 stable * Not released -## 2019-04-06 11.0.1353.0 stable -* Bug fix: For large keyboards, Keyman Developer would generate a .js file that Chrome was unable to parse (#1717) - -## 2019-02-27 11.0.1352.0 stable -* No changes - -## 2019-02-26 11.0.1351.0 stable -* Not released - ## 2019-02-25 11.0.1350.0 stable * 11.0 Stable release -- GitLab