📄 cmpexwebbrowser.pas
字号:
begin
FillChar (pInfo, SizeOf (pInfo), 0);
pInfo.cbSize := sizeof (TDOCHOSTUIINFO);
pInfo.cbSize := SizeOf(pInfo);
pInfo.dwFlags := 0;
if not UIProperties.EnableScrollBars then
pInfo.dwFlags := pInfo.dwFlags or DOCHOSTUIFLAG_SCROLL_NO;
if UIProperties.FlatScrollBars then
pInfo.dwFlags := pInfo.dwFlags or DOCHOSTUIFLAG_FLAT_SCROLLBAR;
if not UIProperties.Has3DBorder then
pInfo.dwFlags := pInfo.dwFlags or DOCHOSTUIFLAG_NO3DBORDER;
if UIProperties.OpenLinksInNewWindow then
pInfo.dwFlags := pInfo.dwFlags or DOCHOSTUIFLAG_OPENNEWWIN;
if not UIProperties.EnableScripting then
pInfo.dwFlags := pInfo.dwFlags or DOCHOSTUIFLAG_DISABLE_SCRIPT_INACTIVE;
result := S_OK;
end;
function TExWebBrowser.GetOptionKeyPath(var pchKey: POLESTR;
const dw: DWORD): HRESULT;
begin
result := S_FALSE;
end;
function TExWebBrowser.GetURL: string;
begin
if (csDesigning in ComponentState) then
result := fURL
else
result := self.LocationURL
end;
function TExWebBrowser.HideUI: HRESULT;
begin
result := S_OK;
end;
function TExWebBrowser.Invoke(DispID: Integer; const IID: TGUID;
LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo,
ArgErr: Pointer): HResult;
const
DISPID_AMBIENT_DLCONTROL = -5512;
DLCTL_DLIMAGES = $00000010;
DLCTL_NO_SCRIPTS = $00000080;
DLCTL_NO_JAVA = $00000100;
DLCTL_NO_RUNACTIVEXCTLS = $00000200;
DLCTL_NO_DLACTIVEXCTLS = $00000400;
DLCTL_DOWNLOADONLY = $00000800;
var
ort : HRESULT;
dlc : Integer;
begin
result := inherited Invoke (DispID, IID, LocaleID, Flags, Params, VarResult, ExcepInfo, ArgErr);
if (Flags and DISPATCH_PROPERTYGET <> 0) and (VarResult <> nil) then
begin
ort := result;
result := S_OK;
case DispID of
(*
DISPID_AMBIENT_USERMODE:
PVariant(VarResult)^ := True; // not (csDesigning in ComponentState);
*)
DISPID_AMBIENT_DLCONTROL:
begin
if UIProperties.ShowImages then
dlc := DLCTL_DLIMAGES
else
dlc := 0;
if not UIProperties.EnableJava then
dlc := dlc or DLCTL_NO_JAVA;
if not UIProperties.EnableScripting then
dlc := dlc or DLCTL_NO_SCRIPTS;
if not UIProperties.EnableDownloadActiveX then
dlc := dlc or DLCTL_NO_DLACTIVEXCTLS;
if not UIPRoperties.ShowActiveX then
dlc := dlc or DLCTL_NO_RUNACTIVEXCTLS;
PVariant(VarResult)^ := dlc
end;
else
result := ort
end
end
end;
procedure TExWebBrowser.Loaded;
begin
inherited;
if not (csDesigning in ComponentState) then
if fURL = '' then
Navigate ('about:blank')
else
Navigate (fURL);
end;
procedure TExWebBrowser.LoadFromStream(s: TStream; takeOwnership: boolean);
var
ownership : TStreamOwnership;
persistStreamInit : IPersistStreamInit;
adapter : TStreamAdapter;
begin
if Document = Nil then
Navigate ('about:blank');
if Supports (Document, IPersistStreamInit, persistStreamInit) then
begin
if takeOwnership then
ownership := soOwned
else
ownership := soReference;
adapter := TStreamAdapter.Create(s, ownership);
OleCheck (persistStreamInit.InitNew);
OleCheck (persistStreamInit.Load(adapter))
end
end;
procedure TExWebBrowser.LoadFromString(const st: string);
begin
LoadFromStream (TStringStream.Create(st), True);
end;
function TExWebBrowser.OnDocWindowActivate(const fActivate: BOOL): HRESULT;
begin
result := S_OK;
end;
function TExWebBrowser.OnFrameWindowActivate(
const fActivate: BOOL): HRESULT;
begin
result := S_OK;
end;
function TExWebBrowser.ResizeBorder(const prcBorder: PRECT;
const pUIWindow: IOleInPlaceUIWindow; const fRameWindow: BOOL): HRESULT;
begin
result := S_OK;
end;
procedure TExWebBrowser.SetURL(const Value: string);
begin
fURL := Value;
if (csLoading in ComponentState) or (csDesigning in ComponentState) then
Exit;
if Value = '' then
Navigate ('about:blank')
else
Navigate (value);
end;
function TExWebBrowser.ShowContextMenu(const dwID: DWORD;
const ppt: PPOINT; const pcmdtReserved: IInterface;
const pdispReserved: IDispatch): HRESULT;
begin
if UIProperties.EnableContextMenu then
result := S_FALSE
else
begin
result := S_OK;
if Assigned (PopupMenu) then
PopupMenu.Popup(ppt.X, ppt.Y)
end;
end;
function TExWebBrowser.ShowUI(const dwID: DWORD;
const pActiveObject: IOleInPlaceActiveObject;
const pCommandTarget: IOleCommandTarget; const pFrame: IOleInPlaceFrame;
const pDoc: IOleInPlaceUIWindow): HRESULT;
begin
result := S_FALSE; // IE will display the UI
end;
function TExWebBrowser.TranslateAccelerator(const lpMsg: PMSG;
const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT;
begin
result := S_FALSE;
end;
function TExWebBrowser.TranslateUrl(const dwTranslate: DWORD;
const pchURLIn: POLESTR; var ppchURLOut: POLESTR): HRESULT;
begin
result := S_FALSE; // URL was not translated
end;
function TExWebBrowser.UpdateUI: HRESULT;
begin
result := S_FALSE;
end;
{ TUIProperties }
constructor TUIProperties.Create(AOwner: TExWebBrowser);
begin
fOwner := AOwner;
fShowImages := True;
fShowActiveX := True;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -