переопределить delphi webbrowserH - PullRequest
2 голосов
/ 20 ноября 2010

Я пытаюсь создать сокращенный веб-браузер, в действительности это Twebbrowser, который имеет дополнительную функцию: он отправляет событие TimerOut, когда страница не загружается в течение 30 секунд.

Так что я добавил таймер в TwebbrowsersTimerOut, который наследуется от Twebbrowser.

Идея заключалась бы в том, чтобы запустить этот таймер в событии BeforeNavigate или DownloadBegin: и остановить счетчик в событии onDownloadComplete.

Проблема в том, что я не знаю, как переопределить эти события: и более глобально, как переопределить события из существующих компонентов: может кто-нибудь помочь мне с переопределением компонентов TwebBrowser и, особенно, его событий?

1011 * привет *

1 Ответ

1 голос
/ 20 ноября 2010

В общем случае события - это просто обычные свойства, которые можно установить в своем потомке.Вы можете перехватить событие и предоставить свой собственный контроллер.

Например, я только что создал компонент, который переопределил событие 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;
...