Suppression de lignes dans un TListView

cs_fouroulou Messages postés 31 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 7 avril 2008 - 11 juin 2005 à 11:07
cs_fouroulou Messages postés 31 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 7 avril 2008 - 14 juin 2005 à 10:41
Bonjour tout monde,
voilà j'ai une listview composée de 4 colonnes , j' y ajoute des éléments avec un bouton Ajouter et j'aimerais afficher le contenu d'une ligne dans 2 combobox et 2 edit, et enfin effacer une ligne sélectionnée,mon problème c'est l'affichage , j'ai crée une procedure Afficher mais ça ne marche pas, s'il y'a qq 1 qui pourrait m'aider ça serai génial.

procedure TForm1.Ajouterclick(sender:TObject);
var ListItem:TListItem;
begin
ListItem:= ListView1.Items.Add;
ListItem.Caption:=ComboBox1.Text;
ListItem.SubItems.Add:=Edit1.Text;
ListItem.SubItems.Add:=Edit2.Text;
ListItem.SubItems.Add:=ComboBox2.Text;
Edit1.Text:='';
Edit2.Text:='';
comboBox1.ItemIndex:=-1;
comboBox2.ItemIndex:=-1;
end;

procedure TForm1.Effacerclick(sender:TObject);
begin
Listview1.DeleteSelected;
end;

procedure TForml.Afficher(sender:TObject);// j'ai du doute sur cette procedure
begin
if Listview1.RowSelect then

ComboBox1.Text: =Listview1.selected.caption;
Edit1.Text:=Listview1.selected.SubItems[0];
Edit2.Text:=Listview1.selected.SubItems[1];
ComboBox2.Text:=Listview1.selected.SubItems[2];

end;

Merci encore .

6 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
11 juin 2005 à 12:45
Tu as dû oublier quelque chose...et te tromper ailleurs

procedure TForml.Afficher(sender:TObject);// j'ai du doute sur cette procedure
begin
if Listview1.RowSelect then
begin
<STRIKE>ComboBox1.Text:=Listview1.selected.caption;</STRIKE>
Combobox1.ItemIndex := ComboBox1.Items.IndexOf(ListView1.Selected.caption);
Edit1.Text:=Listview1.selected.SubItems[0];
Edit2.Text:=Listview1.selected.SubItems[1];
<STRIKE>ComboBox2.Text:=Listview1.selected.SubItems[2];</STRIKE>
Combobox2.ItemIndex := ComboBox2.Items.IndexOf(ListView1.Selected.SubItems[2]);

end;
end;


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_fouroulou Messages postés 31 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 7 avril 2008
13 juin 2005 à 10:51
bonjour,
je vous remercie pour votre réponse, mais apparemment on s'est mal compris, ou la procedure Afficher manque de paramètres.
L e problème c'est quand je selectionne une ligne, rien ne s'affiche dans les comboBox et les Tedit.
Moi je doute sur les paramètres de la procedure Afficher ou bien sur les propriétes de la TlistView.

Merci encore
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
13 juin 2005 à 11:56
La propriété RowSelect du composant TListView est-elle bien à True ?
Si elle est à False, c'est normal que ça ne fonctionne pas.
Je pense qu'il serait préférable d'utiliser la propriété Selected comme tu le fais pour le reste du code :
if Listview1.Selected <> nil then 
begin
  Combobox1.ItemIndex :=  ComboBox1.Items.IndexOf(ListView1.Selected.caption);
  Edit1.Text := Listview1.selected.SubItems[0];
  Edit2.Text := Listview1.selected.SubItems[1];
  Combobox2.ItemIndex := ComboBox2.Items.IndexOf(ListView1.Selected.SubItems[2]);
 end ;

Et l&#224;, pas de probl&#232;me ! 


<HR color =#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_fouroulou Messages postés 31 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 7 avril 2008
13 juin 2005 à 17:05
merci encore une fois, mais je suis désolé de vous dire que ça ne marche pas encore.

Je vais essayer de me creuser un peu plus la tête
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
13 juin 2005 à 21:17
Alors c'est que le problème est ailleurs car la solution donnée a été vérifiée et fonctionne.
Au vu du code que tu as fourni, j'ai présumé que la propriété ViewStyle était vsReport. Est-ce bien ton cas ?


<HR color=#008000>
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
cs_fouroulou Messages postés 31 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 7 avril 2008
14 juin 2005 à 10:41
Bonjour,

Merci pour toute cette attention, j'ai trouvé l'erreur c'etait la procedure Afficher, il fallait mettre:

procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem; Selected: Boolean);

avec la condition if ListView1.Rowselect

Maintenant il y'a un autre problème qui est apparu: il y'a 3 boutons; l'un pour ajouter dans la listview, le second pour effacer une ligne selectionnée, le dernier pour modifier une ligne selectionnée(grace à la procedure ci dessus), le problème c'est que je peux pas passer d'une ligne selectionnée à une autre soit en cliquant soit par les flèches haut et bas du clavier, sans que je vois apparaitre un message d'erreur:

la classe objet n'est pas définie à une instance objet

Merci encore , et bonne journée
0
Rejoignez-nous