delphi覆盖webbrowserH

时间:2010-11-19 23:18:56

标签: delphi twebbrowser

我尝试制作一个cutomized webbrowser,它实际上是一个具有额外功能的Twebbrowser:当页面在30秒内没有加载时,它会调度一个事件TimerOut。

所以我在TwebbrowsersTimerOut中添加了一个继承自Twebbrowser的计时器。

想法是在BeforeNavigate或DownloadBegin事件上午餐这个计时器:并在onDownloadComplete事件上停止计数器。

麻烦的是,我不知道如何覆盖这些事件:以及更多全局如何覆盖现有组件中的事件:有人可以帮助我覆盖TwebBrowser组件,特别是它的事件吗?

问候

1 个答案:

答案 0 :(得分:1)

通常,事件只是普通属性,可以在自定义后代中设置。您基本上可以拦截事件并提供自己的控制器。

例如,我刚创建了一个覆盖OnExit事件的组件......

interface

TmyWhatever = class(TWhateverAncestor)
private
  fMyOnExit:TNotifyEvent
protected
  procedure CustomOnExitEvent(Sender:TObject);
public
  constructor Create(AOwner:TComponent); override;
published
  //we provide our own OnExit event (to be set by the developer using this component)
  property OnExit:TNotifyEvent read fMyOnExit write fMyOnExit
end;

implementation

constructor TmyWhatever.Create(AOwner:TComponent);
begin
  inherited;

  //setup our event in the parent
  inherited OnExit := CustomOnExitEvent;
end;

procedure TmyWhatever.CustomOnExitEvent(Sender:TObject);
begin
  //perhaps do custom work before the OnExit

  //and then call the intercepted OnExit event, if needed
  if Assigned(fMyOnExit) then
  begin
    fMyOnExit(Sender);
  end;

  //perhaps do custom work after the OnExit 
end;