2010-11-19 8 views
2

Ich versuche, einen cutomized Webbrowser zu machen, der eigentlich ein Twebbrowser ist, der eine zusätzliche Funktion hat: er löst ein Event TimerOut aus, wenn die Seite nicht innerhalb von 30 Sekunden geladen wird.delphi override webbrowserH

SO habe ich einen Timer in TwebbrowsersTimerOut hinzugefügt, der von Twebbrowser ableitet.

Die Idee wäre, diesen Timer auf dem BeforeNavigate oder DownloadBegin-Ereignis zu Mittag zu essen: und stoppen Sie den Zähler auf dem Ereignis onDownloadComplete.

Problem ist, dass ich keine Ahnung habe, wie diese Ereignisse zu überschreiben: und global wie Ereignisse von vorhandenen Komponenten überschreiben: kann mir jemand helfen, TwebBrowser-Komponenten und vor allem ihre Ereignisse zu überschreiben?

Grüße

Antwort

1

Im Allgemeinen Ereignisse sind nur ganz normale Eigenschaften, die in der benutzerdefinierten Nachkommen eingestellt werden können. Sie können das Ereignis grundsätzlich abfangen und Ihren eigenen Controller bereitstellen.

Zum Beispiel habe ich gerade eine Komponente, die das Ereignis OnExit overrode ...

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;