开发者

delphi override webbrowserH

开发者 https://www.devze.com 2023-01-26 14:43 出处:网络
I try to make a cutomized webbrowser which infact is a Twebbrowser that has an extra feature: it dispatch an event TimerOut when the page does not load within 30 seconds.

I try to make a cutomized webbrowser which infact is a Twebbrowser that has an extra feature: it dispatch an event TimerOut when the page does not load within 30 seconds.

SO I added an timer in TwebbrowsersTimerOut that inherits from Twebbrowser.

The idea would be to lunch this timer on the BeforeNavigate or DownloadBegin event: and stop the counter on the onDownloadComplete event.

Trouble is that I hav开发者_JAVA百科e no idea how to override these events: and more globally how to override events from existing components: can someone help me with overriding TwebBrowser components and especailly its events ?

regards


In general, events are just normal properties which can be set in your custom descendant. You can basically intercept the event and provide your own controller.

For example, I just created a Component that overrode the OnExit event...

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;
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号