Gérer les cases à cocher des Checklistbox : récupérer seulement les lignes coché [Résolu]

sylviecl
Messages postés
26
Date d'inscription
vendredi 24 septembre 2004
Dernière intervention
1 février 2006
- 1 févr. 2006 à 12:07 - Dernière réponse : Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 5 févr. 2006 à 12:25
Bonjour,
J'essaye de trouver une façon de récupérer rapidement toutes les données cochées d'une checklistbox, pour ensuite les renvoyer à l'utilisateur.
J'y arrive en passant chque champs un par un mais je voulais savoir s'il n'y a pas un moyen plus rapide, du style une propriété qui récupérerait dans une list toutes les données cochées.
Si quelqu'un a une idée, ça m'aiderait beaucoup.
Merci
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
sylviecl
Messages postés
26
Date d'inscription
vendredi 24 septembre 2004
Dernière intervention
1 février 2006
- 1 févr. 2006 à 17:21
3
Merci
en fait, je me suis débrouillée :

//récupération des éléments cochés des checklistbox
ListFAM:=TStringList.Create;
ListART:=TStringList.Create;
for i:=0 to CheckListCatalogue.Items.Count -1 do
begin
if CheckListCatalogue.checked[i] then
ListFAM.Add(Trim(CheckListCatalogue.Items[i]));
end;
for i:=0 to CheckListBox1.Items.Count -1 do
begin
if CheckListBox1.checked[i] then
ListART.Add(Trim(CheckListBox1.Items[i]));
end;

et après j'utilise les stringlist, ce qui fait que mon application est quand même plus rapide que si j'utilisais que le checklistbox
Merci quand même !

Merci sylviecl 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de sylviecl
Nicolas___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
- 1 févr. 2006 à 16:41
0
Merci
for i:= 0 to ComponentCount-1 do
begin
if Components[i] is TCheckBox then
begin
if (Components[i] as TCheckBox).Checked = true then showmessage(((Components[i] as TCheckBox).Name) +' est checké');
end;


end;

Slt
nico
Commenter la réponse de Nicolas___
Nicolas___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
- 1 févr. 2006 à 16:42
0
Merci
zut pas bien lut j ai fait pour les checkbox attend
Commenter la réponse de Nicolas___
Nicolas___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
- 1 févr. 2006 à 16:48
0
Merci
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:= 0 to Checklistbox1.Count-1 do
begin
if Components[0] is TCheckListBox then
begin


if (Components[0] as TCheckListBox).Checked[i] = true then showmessage( (Components[0] as TCheckListBox).Items.Strings[i] +' est checké');
end;


end;


end;

voila exemple ac un Tchecklistbox si tu en veix plusieus suffit de changer Components[0] en Components[1] pour le deuxieme ...

en esperant que c ca que tu veux ...

slt
Commenter la réponse de Nicolas___
Nicolas___
Messages postés
1039
Date d'inscription
jeudi 2 novembre 2000
Dernière intervention
24 avril 2013
- 1 févr. 2006 à 16:52
0
Merci
voila la tu la ds un memo donc sur ta fiche il te faut au min un memo une tchecklistbox et un bouton
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
for i:= 0 to Checklistbox1.Count-1 do
begin
if Components[0] is TCheckListBox then
begin
if (Components[0] as TCheckListBox).Checked[i] = true then memo1.Lines.Add( ( (Components[0] as TCheckListBox).Items.Strings[i] +' est checké'));
end;
end;

slt
Commenter la réponse de Nicolas___
Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 1 févr. 2006 à 17:25
0
Merci
Salut,

il y avait ça aussi :
procedure TForm1.Button2Click(Sender: TObject);
Const
BoolChars : Array[Boolean] Of String = ('Faux', 'Vrai');
Var I : Integer;
begin
Memo1.Clear;
For I : = 0 To Checklistbox1.Items.count - 1 do
Memo1.Lines.Add(Format('Name : %s Checked : %s',
[Checklistbox1.Items[I], BoolChars[Checklistbox1.Checked[I]]]));
end;





@+
Cirec
Commenter la réponse de Cirec
f0xi
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
- 5 févr. 2006 à 03:50
0
Merci
solution plus propre :

function GetChecked(const list : tchecklistbox) : tstringlist;

var x : integer;

begin

if list.count = 0 then exit;

for x := 0 to list.count-1 do

if list.checked[x] then

result.add(list.items[x]);

end;

function GetUnchecked(const list : tchecklistbox) : tstringlist;

var x : integer;

begin

if list.count = 0 then exit;

for x := 0 to list.count-1 do

if not list.checked[x] then

result.add(list.items[x]);

end;


...
begin
ListFAM := TStringList.Create;
ListART := TStringList.Create;

ListFAM.items := GetChecked(CheckListCatalogue);
ListART.items := GetChecked(CheckListBox1);

...

ListFAM.free;
ListART.free;
end;

La theorie c'est quand on sait tout, mais que rien ne fonctionne.
La pratique c'est quand tout fonctionne, mais que personne ne sait pourquoi.
<hr>
Commenter la réponse de f0xi
Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 5 févr. 2006 à 12:25
0
Merci
Salut f0xi,
aurrais-tu un problème avec la propreté
serais-tu maniaque
tu sais ça se soigne très bien aujourd'hui


Bon assé rigolé, un peut de sérieux maintenant,
le seul hic dans ta manière de procéder c'est que tu récupère dans une liste à part les Items Checked où Not Checked peut importe mais pas l'index. En supposant que tu ais plusieurs entrées dans une CheckListBox et que tu dois effectuer un traitement en fonction de leurs états jusque là pas de soucis mais si tu dois remettre à Not Checked que ceux dont le traitement à réussi il te faut une troisième liste puisque tu n'as plus aucune concordance entre les index de la CheckListBox et celle de ta liste où refaire une recherche par nom pour retrouver les Items.

@+
Cirec
Commenter la réponse de Cirec

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.