Bonjour,
Je sais que ce n'est pas dutout le moment, vu que tout le monde doit être occupé par les prépas du nouvel an.Je vais comme même exposer mon problème en cas où.
Je souhaiterai donc remplir une TList avec l'état actuel de 12 checkboxs.
Càd que si je configure mes 12 checkboxs en ordre comme suit:
True, True,False,True,False,False,True,True,False,False,False et True. Ma Tlist se remplit comme suit:
2,2,1,2,1,1,2,2,1,1,1 et 2.
Sachant que ma TList se remlit avec le principe de:
Si checkbox cochée: ContenuTlist = 2;
Si checkbox pas cochée: ContenuTlist = 1;
En même temps, il faut que le contenu de ma list s'actualise en fonction de si je coche ou pas la checkbox.
Je vous serai vraiment reconnaissante de votre aide.
korgis
Messages postés420Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention 6 mai 201917 31 déc. 2013 à 23:26
Salut,
Pas grand chose à rajouter à ce que dit dubois77.
Simplement, si tes CheckBox s'appellent "CheckBox1", "CheckBox2", etc jusqu'à 12, tu peux simplifier en n'utilisant que l'évènement "CheckBox1Click" et en automatisant tout dans l'évènement "OnCreate" du Form, comme ceci :
procedure TForm1.FormCreate(Sender: TObject);
const
CheckBoxCount = 12; // nombre de CheckBox
var
i: Integer;
begin
for i := 0 to CheckBoxCount - 1 do
begin
TCheckBox(FindComponent('CheckBox' + IntToStr(i + 1))).Tag := i;
TCheckBox(FindComponent('CheckBox' + IntToStr(i + 1))).OnClick := CheckBox1Click;
MyList.Items.Append('1');
end;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
const
Chk: array[Boolean] of string = ('1', '2');
begin
MyList.Items[(Sender as TCheckBox).Tag] := Chk[(Sender as TCheckBox).Checked];
end;
En fait je ne peux pas effectuer l'affectation vu que la liste renvoie des pointeur et que ce que je veux affecter moi, se sont des entiers :( j'ai essayé de faire un tans-type avec "pointer" mais ça me revois une autre exception ;(
dubois77
Messages postés675Date d'inscriptionjeudi 17 avril 2008StatutMembreDernière intervention19 février 201914 2 janv. 2014 à 13:51
Juste une petite remarque :
Dans la boucle for i := 0 to ConfigRobot.Count-1 do
tu as :
cbo := TComboBox(FindComponent('Combobox' + IntToStr(i)));
chb := TCheckBox(FindComponent('CheckBox' + IntToStr(i)));
lab := TLabel(FindComponent('Label' + IntToStr(i)));
cbo et lab ne sont jamais utilisés : à quoi servent-ils
es-tu sur qu'il existe autant de Combobox1, Combobox2 ... que de ConfigRobot.Count-1 sur ta fiche
sinon ça plante !
korgis
Messages postés420Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention 6 mai 201917 2 janv. 2014 à 16:11
Sauf erreur, mais ton code est difficile à lire car tu n'utilises pas les balises de mise en forme du code fournies gracieusement par CCM/CodeS-SourceS (en haut à droite de la box de saisie) :
- tu libères "ConfigRobot" après la boucle, mais tu ne le crées nulle part !
- tu ne nous précise pas ce sont "ON_STATUS" et "OFF_STATUS", et pourquoi utiliser à cet endroit des pointer ?
korgis
Messages postés420Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention 6 mai 201917 2 janv. 2014 à 16:12
Je voulais écrire :
tu ne nous précise pas ce QUE sont "ON_STATUS" et "OFF_STATUS"
Salut,
* En fait, je suis obligée d'utiliser le pointer vu qu'une List renvoie ça.
* ON_STATUS, OFF_STATUS c'est des types que j'ai déclaré tout au début et pour me référencier, je les ai nomé ainsi, mais en gros, ON_STATUS=2, et OFF_STATUS=2.
* CCM/[/ CodeS-SourceS] ?????je ne le retrouve nul part :(
*Merci Korgis, c'étais bien ça, en fait j'utilisé la taille de la liste ConfigRobot sans même pas l'avoir crée.Du coup ben la boucle allait de 0 à 0, c'est pour ça que ça plantait,en plus j'ai crée les 2 liste à l'intérieur de la boucle, et c'était ça l'excéption.
*ça fonctionne très bien.
Merci encore pour votre aide :) c'est très gentil ;)