appeller une procedure Tobject dans une procedure ...

appeller une procedure Tobject dans une procedure ... - Delphi/Pascal - Programmation

Marsh Posté le 26-06-2003 à 12:10:24    


Voila quand je fait par exemple dans ma procedure ( qui n'est pas une Tobject ) :  
 
buttonClick(sender);
ou form1.ButtonClick(sender);  
 
Il me dit : sender undeclared identifier .  
 
help !

Reply

Marsh Posté le 26-06-2003 à 12:10:24   

Reply

Marsh Posté le 26-06-2003 à 12:13:04    

piloud a écrit :


Voila quand je fait par exemple dans ma procedure ( qui n'est pas une Tobject ) :  
 
buttonClick(sender);
ou form1.ButtonClick(sender);  
 
Il me dit : sender undeclared identifier .  
 
help !  


Le bon code c est :

Code :
  1. buttonClick(Self);
  2. ou form1.ButtonClick(Self);


 
normalement il te le propose quand tu fais ctrl + espace  [:ddr555]  
 
@->--


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 26-06-2003 à 12:15:59    

ca marche :) !
merci !  
 
 
mais sender marche dans les procedure Tobject

Reply

Marsh Posté le 26-06-2003 à 12:44:29    

krzAramis a écrit :


Le bon code c est :

Code :
  1. buttonClick(Self);
  2. ou form1.ButtonClick(Self);




 
le bon code c'est plutôt de passer en sender l'objet sur lequel l'action est effectuée, donc dans ce cas-ci Button plutôt que Self :o


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-06-2003 à 12:48:36    

antp a écrit :


 
le bon code c'est plutôt de passer en sender l'objet sur lequel l'action est effectuée, donc dans ce cas-ci Button plutôt que Self :o


T es mechant avec moi en ce moment antp hum ? :??:  
Ca aurai ete cool si tu avais conclu (attention code non verifie):

Code :
  1. buttonClick(TButton);
  2. ou form1.ButtonClick(Tbutton);


 
j ai juste ?
et pourquoi c est mieux ?
 
@->--


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 26-06-2003 à 12:52:46    

heu non là tu balances un TClass au lieu d'un TObject :D
 


  buttonClick(Button);  
  ou form1.ButtonClick(Button);


(ou button1 ou autre, le nom du bouton quoi)
 
ceci parce que quand tu lies plusieurs composants à un même événement, il faut bien savoir sur lequel tu as cliqué.
Ici on provoque le clic, mais on veut émuler le clic sur un bouton.
Dans le cas où on aurait un truc du genre :
 
if Sender = Button1 then
 ...
else
if Sender = Button2 then
 ...
 
il vaut mieux passer le bouton plutôt que la Form en paramètre :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-06-2003 à 13:09:02    

Est ce que ca veut dire que quand je gere des TEdit avec les characteres que je veux pas je peux coder tout dans la procedure et juste adapter en sachant qui est le Sender ! mais c est trop cool !
D habitude je code les evenement un a un !
 
Merci antp
 
@->--
 
PS: je ma plante car pas delphi sous la main :-/


---------------
The Only Way for Evils to Triumph is for Good Men to do Nothing @->-- Cours Réseaux@->-- Mon Site
Reply

Marsh Posté le 26-06-2003 à 13:14:28    

ouais tu peux faire un truc genre :
 


if Sender is TEdit then
  with Sender as TEdit do
  begin
    Color := clYellow;
  end;


 
dans un OnEnter relié à tous tes edits, et remettre en clWindow dans le OnExit, pour que l'Edit actif soit en jaune (c'est moche de le faire en clYellow mais c'est juste pour l'exemple :D) , t'auras juste deux procédures pour l'ensemble de tes TEdit ;)


Message édité par antp le 26-06-2003 à 13:15:00

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 26-06-2003 à 14:25:15    


Etant donné qu'ici c'est d'aucun bouton qu'il clique et si on suit la logique du sender ca aurait du être
 
ButtonClick(nil)
 
[:neowen]


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 03-07-2003 à 17:05:55    

antp a écrit :

heu non là tu balances un TClass au lieu d'un TObject :D
 


  buttonClick(Button);  
  ou form1.ButtonClick(Button);


(ou button1 ou autre, le nom du bouton quoi)
 
ceci parce que quand tu lies plusieurs composants à un même événement, il faut bien savoir sur lequel tu as cliqué.
Ici on provoque le clic, mais on veut émuler le clic sur un bouton.
Dans le cas où on aurait un truc du genre :
 
if Sender = Button1 then
 ...
else
if Sender = Button2 then
 ...
 
il vaut mieux passer le bouton plutôt que la Form en paramètre :D


 
Ben pk ?  
Self envoie à la procedure le type (voire le nom je sais plus) du sender donc self marche de la même façon que button1 dans ce cas !!!!
 
Après tu prends le sender rentrer en paramètre dans ta procédure et tu fais  
if sender = button1 then ...

Reply

Marsh Posté le 03-07-2003 à 17:05:55   

Reply

Marsh Posté le 03-07-2003 à 17:17:21    

oui sauf que lui il voulait faire : buttonClick(TButton)  ce qui est totalement différent comme l'a dit antp

Reply

Marsh Posté le 03-07-2003 à 17:33:44    

ah !!
là d'accord !!!  :D

Reply

Sujets relatifs:

Leave a Replay

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