TListBox à choix multiple

TListBox à choix multiple - Delphi/Pascal - Programmation

Marsh Posté le 08-01-2008 à 14:17:50    

Bonjour,
 
Voila j'ai deux TListBox :
 
- La TListBox1 à choix multiple avec plusieurs Items.
- La TListBox2 qui est vide.
 
Exemple :
 
Je sélectionne plusieurs Items dans la TListBox1.
 
En cliquant sur le TBitBtn1 je voudrais afficher les Items sélectionnés dans la TListBox2.
 
J'ai testé ce code qui ne marche pas vraiment :
 
function Choix(Listbox: TListBox): string;
var
Entier : Integer;
begin
Result := '';
for Entier := 0 to ListBox.SelCount-1 do if (ListBox.Selected[Entier]) then Result := Result+ListBox.Items[Entier]+#13;
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ListBox2.Items.Text := Choix(ListBox1);
end;
 
Merci d'avance pour votre aide.


---------------
Référencement par http://www.logicielreferencement.com
Reply

Marsh Posté le 08-01-2008 à 14:17:50   

Reply

Marsh Posté le 08-01-2008 à 21:13:09    

Salut
 
ta boucle dans la fonction choix ne peut pas se contenter de parcourir le nombre d'items sélectionnés
 
si t'a 20 items et que l'item 2 et le 19 sont selectionnés tu ne vas parcourir que l'item 1 et 2 et hop boucle finie sans aller voir si y en a d'autres...pô bien
 
faut parcourir tout les items:
 

for Entier := 0 to ListBox.Items.count-1 do if (ListBox.Selected[Entier]) then Result := Result+ListBox.Items[Entier]+#13;


 
 :)


Message édité par Flagad'aware le 08-01-2008 à 21:14:04
Reply

Marsh Posté le 08-01-2008 à 22:33:58    

Super merci flagad'aware,
 
Par contre quant je fais :  
 
ListBox2.Items.Add(Choix(ListBox1));
 
 
Dans la ListBox2 sa affiche ceci :
Items1Items2Items3
 
Et enfaîte il faudrait que ce soit à la ligne :
Items1
Items2
Items3
 
Merci d'avance


---------------
Référencement par http://www.logicielreferencement.com
Reply

Marsh Posté le 09-01-2008 à 00:54:17    

pô d'koué :)
 
heu ce que t'a mis avant ça marchait:


procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ListBox2.Items.Text := Choix(ListBox1);
end;


 
si tu fait ListBox2.Items.Add ça te met le résultat dans un seul item donc à la suite  [:barthaliastoxik]

Reply

Marsh Posté le 09-01-2008 à 09:46:58    

Oui mais quant je fais :
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ListBox2.Items.Text := Choix(ListBox1);
end;
 
Ça efface toute la TListBox, et moi je veux ajouter le texte à la suite de ce qu'il y a déjà écrit dedans.


---------------
Référencement par http://www.logicielreferencement.com
Reply

Marsh Posté le 09-01-2008 à 10:11:02    

ah ok
 
bah sois tu te sert de choix comme procédure et au lieux de:
 

Result := Result+ListBox.Items[Entier]+#13;


 
tu fais ton ListBox2.Items.Add;
 
 
sois tu utilise un stringlist que tu remplit dans choix en faisant: StrList.add(ListBox.Items[Entier]); toujours au lieu de result :=...
 
 
et dans ton BitBtn1Click tu boucle sur StrList.Count-1 pour l'ajouter au listbox2
 
c'est toa qui voit

Reply

Marsh Posté le 09-01-2008 à 10:34:57    

J'ai testé ceci qui ne marche pas :
 

Code :
  1. for Entier := 0 to ListBox.Items.count-1 do if (ListBox.Selected[Entier]) then ListBox2.Items.Add;


 
[DCC Erreur] Unit1.pas(61): E2003 Identificateur non déclaré : 'ListBox2'


---------------
Référencement par http://www.logicielreferencement.com
Reply

Marsh Posté le 09-01-2008 à 20:34:35    

erheim :sarcastic:  bah listbox2.items.add koi? , faut mettre quelquechose à y ajouter
 

for Entier := 0 to ListBox.Items.count-1 do if (ListBox.Selected[Entier]) then ListBox2.Items.Add(listbox.items[entier]);


 
au passage: attention aux indications du compliateur qui sont pas toujours à prendre au pied de la lettre


Message édité par Flagad'aware le 09-01-2008 à 20:35:21
Reply

Marsh Posté le 10-01-2008 à 16:17:25    

Merci ca marche :)


---------------
Référencement par http://www.logicielreferencement.com
Reply

Sujets relatifs:

Leave a Replay

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