checkbox multiples [résolu]

checkbox multiples [résolu] - Delphi/Pascal - Programmation

Marsh Posté le 20-08-2003 à 17:49:14    

Salut.
Voilà je veut tester l'état de 9 checkbox(checkbox1, checkbox2,...) et je voudrait savoir s'il y a moyen de remplacer le n° du checkbox(ex: checkbox1) par une variable compteur que j'incrémenterai au fur et à mesure.
 
D'avance merci. :)


Message édité par amsterdam le 20-08-2003 à 19:51:04
Reply

Marsh Posté le 20-08-2003 à 17:49:14   

Reply

Marsh Posté le 20-08-2003 à 18:31:48    

Oui c est possible de le faire  
en utilisant la fonction:
FindComponent(var aName: string);
voici un exemple

Code :
  1. for i := 1 to 4 do begin
  2.   //Green
  3.   with TLabel(FindComponent('Lb_Etage'+IntToStr(i))) do begin
  4.     Caption := 'Et'+IntToStr(i)+' Marche';
  5.     Color   :=  clGreen;
  6.   end;//with
  7. end;//for


 
Voila je pense qu a terme rien ne t empche d utiliser un matrice de nom indexé par un compteur (i dans cet exemple)
 
@++
 
Ar@mi$ @->--


Message édité par KrzAramis le 20-08-2003 à 18:32:19
Reply

Marsh Posté le 20-08-2003 à 18:36:47    

OK je vais voir çà.  :jap:  
Merci. :)

Reply

Marsh Posté le 20-08-2003 à 18:42:43    

Dans le cas du TCheckBox tu peux parfaitement tester la propriete "checked" de maniere recurant avec la meme method
 
 :D

Reply

Marsh Posté le 20-08-2003 à 18:50:25    

Ne pas oublier que niveau performances FindComponent est nettement plus lourd.
Bon dans la plupart des cas c'est pas une catastrophe...  


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

Marsh Posté le 20-08-2003 à 19:01:22    

as tu qqc de mieux a nous propose ?  [:ddr555]

Reply

Marsh Posté le 20-08-2003 à 19:06:57    

Oui :
 
en private de la Form :
FCheckboxes: array [1..9] of TCheckbox;
 
dans le OnCreate de la Form :
 
FCheckboxes[1] := Checkbox1;
...
FCheckboxes[9] := Checkbox9;
 
puis on accède aux checkboxes via FCheckbox[], c'est plus propre, et on ne doit pas se baser sur les noms (dans le code posté, si on change le nom des checkbox, ça compile, puis ça plantera à l'exécution. Alors que dans mon code on verra l'erreur à la compilation, et c'est nettement plus optimisé :o


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

Marsh Posté le 20-08-2003 à 19:19:38    

C'est en effet bien mieux pour moi car j'était en train de ramer avec le findcomponent (pas taper).
Ca fonctionne nickel.
Merci à tous les deux.  :jap:  :jap:  :jap:

Reply

Marsh Posté le 20-08-2003 à 21:22:02    

antp a écrit :

Oui :
 
en private de la Form :
FCheckboxes: array [1..9] of TCheckbox;
 
dans le OnCreate de la Form :
 
FCheckboxes[1] := Checkbox1;
...
FCheckboxes[9] := Checkbox9;
 
puis on accède aux checkboxes via FCheckbox[], c'est plus propre, et on ne doit pas se baser sur les noms (dans le code posté, si on change le nom des checkbox, ça compile, puis ça plantera à l'exécution. Alors que dans mon code on verra l'erreur à la compilation, et c'est nettement plus optimisé :o


 
ca veux donc dire que tu dois creer dynamiquement les composants ? ou alors lorsque tu analyse les proprietes du passe par  

Code :
  1. FCheckboxes[1] as TCheckbox ;


 
ou alors je dois comprendre l exemple comme un record de nom des check box ?
 
@++

Reply

Marsh Posté le 20-08-2003 à 21:28:42    

:heink: bah non, t'as tes compos Checkbox1 à 9, rien ne t'empêche de copier leur référence dans un array [:spamafote]


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

Marsh Posté le 20-08-2003 à 21:28:42   

Reply

Marsh Posté le 20-08-2003 à 22:29:53    

antp a écrit :

:heink: bah non, t'as tes compos Checkbox1 à 9, rien ne t'empêche de copier leur référence dans un array [:spamafote]


ben voila ! t es redevenu mechant avec moi  :(  si j ai pose la question c est que je ne saivais pas  :sweat:  
 
@++


Message édité par KrzAramis le 20-08-2003 à 22:30:19
Reply

Sujets relatifs:

Leave a Replay

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