2

私は、実際には追加機能を備えたTwebbrowserであるcutomized webbrowserを作成しようとしています。これは、ページが30秒以内に読み込まれないときにイベントTimerOutをディスパッチします。

そこで、Twebbrowserから継承するタイマーをTwebbrowsersTimerOutに追加しました。

アイデアは、BeforeNavigateまたはDownloadBeginイベントでこのタイマーを昼食し、onDownloadCompleteイベントでカウンターを停止することです。

問題は、これらのイベントをオーバーライドする方法がわからないことです。 さらにグローバルに、既存のコンポーネントからのイベントをオーバーライドする方法がわかりません。誰かがTwebBrowserコンポーネント、特にそのイベントをオーバーライドするのを手伝ってくれるでしょうか。

よろしく

4

1 に答える 1

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;
于 2010-11-20T03:35:57.503 に答える