[Delphi] - Question d'héritage (pour les pros)

- Question d'héritage (pour les pros) [Delphi] - Programmation

Marsh Posté le 09-03-2001 à 16:38:30    

Bon voila, c'est tout con: je fais un composant TEdit customisé, qui a un comportement par défaut pour l'évènement OnKeyPress. MAIS, quand j'instancie mon composant, pas moyen de mettre un inherited dans la procédure qui prend en charge l'évènement, pour déclencher à la fois les actions que j'ai mises par défaut ET celles que j'ajoute dans le code de mon prog. !!
 
Je vois pas comment faire, vu qu'on ne peut pas prévoir à l'avance le nom de la procédure qui va gérer l'évènement, pour chaque composant ...
 
Z'avez une idée, les gourous Delphi ??


---------------
"D'abord arrêter le chimique, et après reprendre l'école ..."  
Reply

Marsh Posté le 09-03-2001 à 16:38:30   

Reply

Marsh Posté le 09-03-2001 à 17:01:04    

Tu l'as mis ou ton code qui modifie le comportement de OnKeyPress ?
 
si tu as les sources de la VCL et que tu remontes la hierarchie, tu as TEdit->TCustomEdit->TWinControl...  
 
dans TWinControl tu as la procedure qui gere l'appel de l'evenement uTilisateur OnKeyPress:

Citation :


procedure TWinControl.KeyPress(var Key: Word);
begin
  if Assigned(FOnKeyPress) then FOnKeyPress(Self, Key);
end;


 
cette procedure est dynamic et protected donc tu peux l'overrider dans le code de ton composant:
 

Citation :


procedure TZeroCoolEdit.KeyPress(var Key: Word); override
...
procedure TZeroCoolEdit.KeyPress(var Key: Word);
begin
  // Ajoute ici ton code personnalise a faire _avant_ l'appel du gestionnaire d'evenement
  inherited;
  // Ajoute ici ton code personnalise a faire _apres_ l'appel du gestionnaire d'evenement
end;


 
donc comme ca ton code personnalise est effectue et la procedure assignee par l'utilisateur de ton composant le sera aussi...

 

[edit]--Message édité par JWhy--[/edit]


---------------
www.alliancefrancophone.org ... Home is where the heart is
Reply

Marsh Posté le 12-03-2001 à 11:15:09    

Raaah-la-la, mais oui putain !!! trop con moi ...
 
Au lieu d'hériter KeyPress, j'avais assigné par défaut à FOnKeyPress une procédure que j'avais ajoutée au composant, et qui contenait donc le code ... mais forcément, elle était remplacée par celle que Delphi crée quand on clique sur OnKeyPress dans l'inspecteur d'objets ...
 
Voila voila ... thanks donc.


---------------
"D'abord arrêter le chimique, et après reprendre l'école ..."  
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed