2010-11-19 15 views
2

J'essaie de faire un webbrowser cutomisé qui est en fait un Twebbrowser qui a une fonctionnalité supplémentaire: il envoie un événement TimerOut quand la page ne se charge pas dans les 30 secondes. SO J'ai ajouté un temporisateur dans TwebbrowsersTimerOut qui hérite de Twebbrowser. L'idée serait de lancer cette minuterie sur l'événement BeforeNavigate ou DownloadBegin: et d'arrêter le compteur sur l'événement onDownloadComplete.delphi override webbrowserH

problème est que je ne sais pas comment passer outre ces événements: et plus globalement comment passer outre les événements de composants existants: quelqu'un peut me aider avec des composants TWebBrowser prépondérants et especailly ses événements?

concernant

Répondre

1

En général, les événements sont des propriétés tout à fait normal qui peuvent être définies dans votre descendant personnalisé. Vous pouvez essentiellement intercepter l'événement et fournir votre propre contrôleur.

Par exemple, Je viens de créer un composant qui l'emportaient sur l'événement 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;