- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果我在表单 WebBrowser1: TMyWebBrowser;
上使用以下组件,并且将 OnDocumentComplete = WebBrowser1DocumentComplete
放在表单上,则 TMyWebBrowser.DocumentComplete<即使
也不会触发。WebBrowser1DocumentComplete
过程为空,
触发 TMyWebBrowser.DocumentComplete
的唯一方法是使用 OnDocumentComplete = nil
。
谁能解释一下为什么?谢谢山姆
type
TMyWebBrowser = class(TWebBrowser)
private
{ Private declarations }
protected
{ Protected declarations }
procedure DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
public
{ Public declarations }
Completed: Boolean;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure NavigateUntilCompleted(URL: String);
published
{ Published declarations }
End;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Sam', [TMyWebBrowser]);
end;
constructor TMyWebBrowser.Create(AOwner: TComponent);
begin
inherited;
onDocumentComplete := DocumentComplete;
end;
procedure TMyWebBrowser.DocumentComplete(ASender: TObject;
const pDisp: IDispatch; var URL: OleVariant);
begin
// check that the event is raised for the top-level browser (not frames or iframes)
if pDisp = TMyWebBrowser(ASender).ControlInterface then
begin
Completed := TRUE;
end;
inherited;
end;
最佳答案
您不能为一个事件分配多个方法,但您可以尝试分配 2 个方法并覆盖第一个方法。
类定义
constructor TMyWebBrowser.Create(AOwner: TComponent);
begin
inherited;
// set OnDocumentComplete event
onDocumentComplete := DocumentComplete;
end;
并在您的代码中
var
LMyWebBrowser : TMyWebBrowser;
begin
LMyWebBrowser := TMyWebBrowser.Create( nil );
// now overwriting the value set by constructor
LMyWebBrowser.onDocumentComplete := WebBrowser1Complete;
end;
您可以自行检查
var
LMyWebBrowser : TMyWebBrowser;
begin
LMyWebBrowser := TMyWebBrowser.Create( nil );
// check
if Assigned( LMyWebBrowser.OnDocumentComplete ) then
ShowMessage( 'OnDocumentComplete is already set!' );
end;
关于delphi - OnDocumentComplete 不会在组件上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17444117/
如果我在表单 WebBrowser1: TMyWebBrowser; 上使用以下组件,并且将 OnDocumentComplete = WebBrowser1DocumentComplete 放在表单
我正在 CSHARP 中开发 BHO,但我在 onDocumentComplete 方法中遇到问题。 它在主文档加载的每个 IFRAME 上运行。我怎样才能避免它?我只想处理主窗口中的事件。 publ
我想防止 iframe 元素每次都触发 OnDocumentComplete 事件。例如,一个页面有 4 个 iframe,当我加载此页面时,我的 OnDocumentComplete 事件运行 4
我有一个 IE 浏览器帮助程序对象 (BHO)(用 C++ 编写),它在收到文档完成通知 (OnDocumentComplete) 时记录 iFrame 和主页的高度和宽度。到目前为止,此代码一直运行
我是一名优秀的程序员,十分优秀!