• 使用HTML界面的Delphi开发环境建立


    1 SHDocVw_TLB是shdocvw.dll的类型库导入单元,没有的话就改成shdocvw(delphi自带),或者在“Project”菜单下选“Import Type Library”,在弹出的对话框中再选择“Microsoft Internet Controls”,再点“Create Unit”即可。但是把第二个webbrowser改为webbrowser2.但以后其他工程要用就要改回来了.

    2 安装EmbeddedWB_D2005_Update12.zip,它包含了IEConst,IEUtil等.

    3 安装zoc,在demo中.

    4 安装的路径,就是有dcu的路径加入delphi的环境变量 .

    附Zoc代码:

    unit ZoCWebBrowser;

    interface

    uses
      Variants,
      IEConst, IEUtils, Registry, Windows, Messages, SysUtils, Classes, Graphics,
      Controls, Forms, Dialogs, EXTCtrls, OleCtrls, SHDocVw_tlb,
      ActiveX, shlObj, Wininet, Urlmon, shellapi, MSHTML;

    type
    //zoc 2003-9-15 IDocHostUIHandler
      TShowContextMenuEvent = function(const dwID: DWORD; const ppt: PPOINT;
        const pcmdtReserved: IUnknown; const pdispReserved: IDispatch): HRESULT of object;
      TGetHostInfoEvent = function(var pInfo: TDOCHOSTUIINFO): HRESULT of object;
      TShowUIEvent = function(const dwID: DWORD; const pActiveObject:
        IOleInPlaceActiveObject;
        const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame;
        const pDoc: IOleInPlaceUIWindow): HRESULT of object;
      THideUIEvent = function: HRESULT of object;
      TUpdateUIEvent = function: HRESULT of object;
      TEnableModelessEvent = function(const fEnable: BOOL): HRESULT of object;
      TOnDocWindowActivateEvent = function(const fActivate: BOOL): HRESULT of object;
      TOnFrameWindowActivateEvent = function(const fActivate: BOOL): HRESULT of object;
      TResizeBorderEvent = function(const prcBorder: PRECT;
        const pUIWindow: IOleInPlaceUIWindow;
        const fRameWindow: BOOL): HRESULT of object;
      TTranslateAcceleratorEvent = function(const lpMsg: PMSG; const pguidCmdGroup: PGUID;
        const nCmdID: DWORD): HRESULT of object;
      TGetOptionKeyPathEvent = function(var pchKey: POLESTR; const dw: DWORD): HRESULT of
        object;
      TGetDropTargetEvent = function(const pDropTarget: IDropTarget;
        out ppDropTarget: IDropTarget): HRESULT of object;
      TGetExternalEvent = function(out ppDispatch: IDispatch): HRESULT of object;
      TTranslateUrlEvent = function(const dwTranslate: DWORD; const pchURLIn: POLESTR;
        var ppchURLOut: POLESTR): HRESULT of object;
      TFilterDataObjectEvent = function(const pDO: IDataObject;
        out ppDORet: IDataObject): HRESULT of object;
    //zoc 2003-9-15 IDocHostUIHandler

    //zoc 2003-9-15 IDocHostUIHandler2
      TGetOverrideKeyPathEvent = function(pchKey: POLESTR; dw: DWORD): HRESULT of object;
    //zoc 2003-9-15 IDocHostUIHandler2


    //zoc 2003-9-15 IDocHostShowUI
      TShowMessageEvent = function(hwnd: THandle;
        lpstrText: POLESTR; lpstrCaption: POLESTR; dwType: longint; lpstrHelpFile: POLESTR;
        dwHelpContext: longint; var plResult: LRESULT): HRESULT of object;
      TShowHelpEvent = function(hwnd: THandle; pszHelpFile: POLESTR; uCommand: integer;
        dwData: longint; ptMouse: TPoint;
        var pDispatchObjectHit: IDispatch): HRESULT of object;
    //zoc 2003-9-15 IDocHostShowUI

      TZoCWebBrowser = class(TWebBrowser2, IDocHostUIHandler, IDocHostUIHandler2,
        IDocHostShowUI)
      private
    //zoc 2003-9-15 IDocHostUIHandler
        FOnEnableModeless: TEnableModelessEvent;
        FOnFilterDataObject: TFilterDataObjectEvent;
        FOnGetDropTarget: TGetDropTargetEvent;
        FOnGetExternal: TGetExternalEvent;
        FOnGethostinfo: TGetHostInfoEvent;
        FOnGetOptionKeyPath: TGetOptionKeyPathEvent;
        FOnHideUI: THideUIEvent;
        FOnOnDocWindowActivate: TOnDocWindowActivateEvent;
        FOnOnFrameWindowActivate: TOnFrameWindowActivateEvent;
        FOnResizeBorder: TResizeBorderEvent;
        FOnShowContextmenu: TShowContextMenuEvent;
        FOnShowUI: TShowUIEvent;
        FOnTranslateAccelerator: TTranslateAcceleratorEvent;
        FOnTranslateUrL: TTranslateUrlEvent;
        FOnUpdateUI: TUpdateUIEvent;
    //zoc 2003-9-15 IDocHostUIHandler

    //zoc 2003-9-15 IDocHostUIHandler2
        FOnGetOverrideKeyPath: TGetOverrideKeypathEvent;
    //zoc 2003-9-15 IDocHostUIHandler2


    //zoc 2003-9-15 IDocHostShowUI
        FOnShowMessage: TShowMessageEvent;
        FOnShowHelp: TShowHelpEvent;
    //zoc 2003-9-15 IDocHostShowUI

        FUserInterfaceValue: Cardinal;
        FHelpFile: string;
      protected
        { Protected declarations }
    //zoc 2003-9-15 IDocHostUIHandler
        function ShowContextMenu(const dwID: DWORD; const ppt: PPOINT;
          const pcmdtReserved: IUnknown; const pdispReserved: 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(var 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;
          var ppchURLOut: POLESTR): HRESULT; stdcall;
        function FilterDataObject(const pDO: IDataObject;
          out ppDORet: IDataObject): HRESULT; stdcall;
    //zoc 2003-9-15 IDocHostUIHandler

    //zoc 2003-9-15 IDocHostUIHandler2
        function GetOverrideKeyPath(pchKey: POLESTR; dw: DWORD): HRESULT; stdcall;
    //zoc 2003-9-15 IDocHostUIHandler2

    //zoc 2003-9-15 IDocHostShowUI
        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;
    //zoc 2003-9-15 IDocHostShowUI

      public
        { Public declarations }
      published
        { Published declarations }
        property HelpFile: string read FHelpFile write FHelpFile;
    //zoc 2003-9-15 IDocHostUIHandler
        property OnShowContextMenu: TShowContextMenuEvent read FOnShowContextmenu write
          FOnShowContextmenu;
        property OnGetHostInfo: TGetHostInfoEvent read FOnGethostinfo write fongethostinfo;
        property OnShowUI: TShowUIEvent read FOnShowUI write FOnShowUI;
        property OnHideUI: THideUIEvent read FOnHideUI write FOnHideUI;
        property OnUpdateUI: TUpdateUIEvent read FOnUpdateUI write FOnUpdateUI;
        property OnEnableModeless: TEnableModelessEvent read FOnEnableModeless write
          FOnEnableModeless;
        property OnOnDocWindowActivate: TOnDocWindowActivateEvent read FOnOnDocWindowActivate
          write FOnOnDocWindowActivate;
        property OnOnFrameWindowActivate: TOnFrameWindowActivateEvent read
          FOnOnFrameWindowActivate write FOnOnFrameWindowActivate;
        property OnResizeBorder: TResizeBorderEvent read FOnResizeBorder write
          FOnResizeBorder;
        property OnTranslateAccelerator: TTranslateAcceleratorEvent read
          FOnTranslateAccelerator write FOnTranslateAccelerator;
        property OnGetOptionKeyPath: TGetOptionKeyPathEvent read FOnGetOptionKeyPath write
          FOnGetOptionKeyPath;
        property OnGetDropTarget: TGetDropTargetEvent read FOnGetDropTarget write
          FOnGetDropTarget;
        property OnGetExternal: TGetExternalEvent read FOnGetExternal write FOnGetExternal;
        property OnTranslateUrl: TTranslateUrlEvent read FOnTranslateUrL write
          FOnTranslateUrL;
        property OnFilterDataObject: TFilterDataObjectEvent read FOnFilterDataObject write
          FOnFilterDataObject;
    //zoc 2003-9-15 IDocHostUIHandler

    //zoc 2003-9-15 IDocHostUIHandler2
        property OnGetOverrideKeyPath: TGetOVerrideKeypathEvent read FOnGetOverrideKeyPath write FOnGetOverrideKeyPath;
    //zoc 2003-9-15 IDocHostUIHandler2

    //zoc 2003-9-15 IDocHostShowUI
        property OnShowMessage: TShowMessageEvent read FOnShowMessage write FOnShowMessage;
        property OnShowHelp: TShowHelpEvent read FOnShowHelp write FOnShowHelp;
    //zoc 2003-9-15 IDocHostShowUI
      end;

    procedure Register;

    implementation

    var
      Saved8087CW: Word;

    //zoc 2003-9-15 IDocHostUIHandler

    function TZoCWebBrowser.ShowContextMenu(const dwID: DWORD; const ppt: PPOINT;
      const pcmdtReserved: IUnknown; const pdispReserved: IDispatch): HRESULT;
    begin
      if Assigned(FOnShowContextmenu) then
        RESULT := FOnSHowContextmenu(dwID, ppt,
          pcmdtreserved, pdispreserved)
      else
        RESULT := S_FALSE;
    end;

    function TZoCWebBrowser.GetHostInfo(var pInfo: TDOCHOSTUIINFO): HRESULT;
    begin
      pInfo.cbSize := SizeOf(pInfo);
      pInfo.dwFlags := FUserInterfaceValue;
      pInfo.dwDoubleClick := DOCHOSTUIDBLCLK_DEFAULT;
      if Assigned(FOnGetHostInfo) then
        Result := FOnGetHostInfo(pInfo)
      else
        Result := S_OK;
    end;

    function TZoCWebBrowser.ShowUI(const dwID: DWORD;
      const pActiveObject: IOleInPlaceActiveObject;
      const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame;
      const pDoc: IOleInPlaceUIWindow): HRESULT;
    begin
      if Assigned(FOnShowUI) then
        Result := FOnShowUI(dwID, pActiveObject, pCommandTarget, pFrame, pDoc)
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.HideUI: HRESULT;
    begin
      if Assigned(FOnHideUI) then
        Result := FOnHideUI
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.UpdateUI: HRESULT;
    begin
      if Assigned(FOnUpdateUI) then
        Result := FOnUpdateUI
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.EnableModeless(const fEnable: BOOL): HRESULT;
    begin
      if Assigned(FOnEnableModeless) then
        Result := FOnEnableModeless(fEnable)
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.OnDocWindowActivate(const fActivate: BOOL): HRESULT;
    begin
      if Assigned(FOnOnDocWindowActivate) then
        Result := FOnOnDocWindowActivate(fActivate)
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.OnFrameWindowActivate(const fActivate: BOOL): HRESULT;
    begin
      if Assigned(FOnOnFrameWindowActivate) then
        Result := FOnOnFrameWindowActivate(fActivate)
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.ResizeBorder(const prcBorder: PRECT;
      const pUIWindow: IOleInPlaceUIWindow; const fRameWindow: BOOL): HRESULT;
    begin
      if Assigned(FOnResizeBorder) then
        Result := FOnResizeBorder(prcBorder, pUIWindow, fRameWindow)
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.TranslateAccelerator(const lpMsg: PMSG;
      const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT;
    begin
      if Assigned(FOnTranslateAccelerator) then
        Result := FOnTranslateAccelerator(lpMsg, pguidCmdGroup, nCmdID)
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.GetOptionKeyPath(var pchKey: POLESTR; const dw: DWORD): HRESULT;
    begin
      if Assigned(FOnGetOptionKeyPath) then
        Result := FOnGetOptionKeyPath(pchKey, dw)
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.GetDropTarget(const pDropTarget: IDropTarget;
      out ppDropTarget: IDropTarget): HRESULT;
    begin
      if Assigned(FOnGetDropTarget) then
        Result := FOnGetDropTarget(pDropTarget, ppDropTarget)
      else
        Result := S_OK;
    end;

    function TZoCWebBrowser.GetExternal(out ppDispatch: IDispatch): HRESULT;
    begin
      if Assigned(FOnGetExternal) then
        Result := FOnGetExternal(ppDispatch)
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.TranslateUrl(const dwTranslate: DWORD;
      const pchURLIn: POLESTR; var ppchURLOut: POLESTR): HRESULT;
    begin
      if Assigned(FOnTranslateUrl) then
        Result := FOnTranslateUrl(dwTranslate, pchUrlIn, ppchUrlOut)
      else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.FilterDataObject(const pDO: IDataObject;
      out ppDORet: IDataObject): HRESULT;
    begin
      if Assigned(FOnFilterDataObject) then
        Result := FOnFilterDataObject(pDO, ppDORet)
      else
        Result := S_FALSE;
    end;

    //zoc 2003-9-15 IDocHostUIHandler

    //zoc 2003-9-15 IDocHostUIHandler2

    function TZoCWebBrowser.GetOverrideKeyPath(pchKey: POLESTR;
      dw: DWORD): HRESULT;
    begin
      if Assigned(FOnGetOverrideKeyPath) then RESULT := FOnGetOverrideKeyPath(pchkey, dw) else
        Result := S_OK;
    end;

    //zoc 2003-9-15 IDocHostUIHandler2


    //zoc 2003-9-15 IDocHostShowUI
    function TZoCWebBrowser.ShowMessage(hwnd: THandle; lpstrText: POLESTR;
      lpstrCaption: POLESTR; dwType: longint; lpstrHelpFile: POLESTR;
      dwHelpContext: longint; var plResult: LRESULT): HRESULT;
    begin
      if Assigned(FOnShowMessage) then
        Result := FOnShowMessage(hwnd, lpstrText, lpStrCaption, dwType, lpStrHelpFile, dwHelpContext, plResult) else
        Result := S_FALSE;
    end;

    function TZoCWebBrowser.ShowHelp(hwnd: THandle; pszHelpFile: POLESTR;
      uCommand: integer; dwData: longint; ptMouse: TPoint;
      var pDispatchObjectHit: IDispatch): HRESULT;
    begin
      Result := S_OK;
      if Assigned(FOnShowHelp) then
        Result := FOnShowHelp(hwnd, pszHelpFile, uCommand, dwData, ptMouse, pDispatchObjectHit) else
        if FHelpFile <> '' then HtmlHelp(hwnd, Pchar(FHelpFile), ucommand, dwData) else
          Result := S_FALSE;
    end;

    //zoc 2003-9-15 IDocHostShowUI

    procedure Register;
    begin
      RegisterComponents('EoC', [TZoCWebBrowser]);
    end;

    initialization
      Saved8087CW := Default8087CW;
    {$IFDEF VER120}
      bMsgHandler := False;
    {$ENDIF}
      OleInitialize(nil);
    finalization
      Set8087CW(Saved8087CW);
      try
        OleUninitialize;
      except end;

    end.

  • 相关阅读:
    怎么用js实现jq的removeClass方法
    减少事件绑定次数
    JS setAttribute兼容
    css3常用动画+动画库
    小tip: transition与visibility
    image的srcset属性
    jqeury点击空白关闭弹窗
    卡片翻转效果
    div+css 圆角加阴影
    函数
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/1298783.html
Copyright © 2020-2023  润新知