Bonjour à tous,
Bah, je sais vous allez me dire pourquoi faire compliqué quand on peut faire simple! Ben le RadioButton ne me plait pas, je trouve plus joli les petites cases à cocher. Mais voilà, il faut qu'elle se comportent comme des boutons radio, donc un seul choix possible. Je pensais y arriver en faisant appel à l'identification centralisée des composant sur la fenêtre, mais ça coince.
Tous les évènements des cases à cocher sont centralisées sur le Séparateur Tab (c'est une petite appli de conversion de fichier CSV)
L'algorithme semble fonctionner:
1. Je parcours tous les composants de la fenêtre
2. Lorsque j'identifie une CheckBox, je regarde son nom pour voir s'il correspond à celui de l'évènement
3. Si c'est le Bon Nom -> CS
4. mini boucle d'action pour checker la case sélectionnée et Décherckher les autres
Problème:
Le code ci-dessous est bon avec l'affichage des composants à Décocher, mais si à la place je mets l'action TCheckBox(FindComponent(NomCheckSepar[i])).Checked := False; ça plante (En rouge dans le code) => Voir ci-Dessous
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 procedure TForm1.CkBTabClick(Sender: TObject); Const NomCheckSepar : array[0..4] of String = ('CkBTab','ChBSapce','ChBPtComma','ChBComma','ChBOther'); Var C, i : word; CS : String;// nom de la checkBox choisie begin For C := 0 To ComponentCount -1 do begin if Components[C] is TCheckBox then begin if Components[C].Name = TCheckBox(Sender).Name then begin CS := TCheckBox(Sender).Name; For i := 0 to 4 do if CS = NomCheckSepar[i] then TCheckBox(FindComponent(CS)).Checked := true else Showmessage(NomCheckSepar[i]); //TCheckBox(FindComponent(NomCheckSepar[i])).Checked := False; break; end; end; end; end;
ça vient peut être du nom du composant, je n'ai pas retrouvé le type des noms de composant, j'ai mis du string...
Merci, pour ceux qui sont un peu tordu comme moi, Lol
Partager