两个快速问题
如何将焦点设置到 TWebBrowser?这样,鼠标滚轮就可以在不必先单击 TWebBrwoser 显示区域的情况下滚动显示内容。它有一个 setfocus 方法,但似乎没有起作用。
在 TWebBrowser 中,右键单击一个已显示的链接并选择属性。确定和取消按钮都被禁用,无法关闭对话框。您需要结束任务来终止应用程序。
有什么想法吗?
谢谢, Jason。
两个快速问题
如何将焦点设置到 TWebBrowser?这样,鼠标滚轮就可以在不必先单击 TWebBrwoser 显示区域的情况下滚动显示内容。它有一个 setfocus 方法,但似乎没有起作用。
在 TWebBrowser 中,右键单击一个已显示的链接并选择属性。确定和取消按钮都被禁用,无法关闭对话框。您需要结束任务来终止应用程序。
有什么想法吗?
谢谢, Jason。
在经过大量的网络搜索后,回答问题1的答案是....
with WebBrowser1 do
if Document <> nil then
with Application as IOleobject do
DoVerb(OLEIVERB_UIACTIVATE, nil, WebBrowser1, 0, Handle, GetClientRect);
OnCommandStateChange
事件:procedure TWebBrowserFrame.CommandStateChange(Sender: TObject;
Command: Integer; Enable: WordBool);
var
Doc: IHTMLDocument2; // document object
Sel: IHTMLSelectionObject; // current selection
begin
// Check we have a valid web browser triggering this event
if not Assigned(Sender) or not (Sender is TWebBrowser) then
Exit;
// Check we have required command
if TOleEnum(Command) <> CSC_UPDATECOMMANDS then
Exit;
// Get ref to document object and check not nil
Doc := Browser.Document as IHTMLDocument2;
if not Assigned(Doc) then
Exit;
// Get ref to current selection
Sel := Doc.selection as IHTMLSelectionObject;
// If selection is of correct type then we have a mouse click
if Assigned(Sel) and (Sel.type_ = 'Text') then
begin
// Make the web browser the form's active control
(Sender as TWebBrowser).SetFocus;
Doc.parentWindow.focus;
end;
end;
文章中还有很多细节,请确保你把它们全部阅读。