IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

recuperer les elements selectionnés de mon TListBox


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Points
    50
    Par défaut recuperer les elements selectionnés de mon TListBox
    Bonjour,
    J'ai utilisé un TListBox afin de permettre une selection multiple.
    Maintenant, je veux recuperer les elements selectionnés pour les inserer dans BD (interbase).
    Comment recuperer les items selectionnés dans un TStringList afin que je puisse mettre dans ma BD.

    Merci bien à vous!

  2. #2
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Pour savoir si un item est sélectionné, utilise ListBox1.Selected[Index]. Tu n'as qu'a passer ta liste dans une boucle for et regarder ceux qui sont sélectionnés !

    Bonne chance

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i := 0 to MaListe.Items.Count - 1 do
    begin
      if (MaListe.Selected[i]) then
        MaStringList.Add(MaListe.Items.Strings[i]);
    end;
    Edit : Oops, devancé.

  4. #4
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Points
    50
    Par défaut
    cette ligne du code genere une erreur d'execution " violation d'acces à l'adresse ..."
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     MaStringList.Add(MaListe.Items.Strings[i]);
    Voici mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     for i := 0 to ListBox1.Items.Count - 1 do
    begin
      if (ListBox1.Selected[i]) then
        MaStringList.Add(ListBox1.Items.Strings[i])
    end;
    DataModule1.T_courrierI.FieldValues['DESTINATAIRE']:= MaStringList.Text;
    Merci bien de me corriger!

  5. #5
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Tu as bien créé ta TStringList ?

  6. #6
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Points
    50
    Par défaut
    voici la definition de ma variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var MaStringList :TStringList;
    .

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    La question de Mick était:
    Citation Envoyé par mick605 Voir le message
    Tu as bien créé ta TStringList ?
    Autrement dit, cette ligne est-elle bien présente dans ton code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MaStringList := TStringList.Create;
    Il faut impérativement créer ta liste avant de pouvoir la manipuler.
    Sans oublier de faire un Free quand tu n'as plus besoin de cette liste.

    @+ Claudius.

  8. #8
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 667
    Points : 5 235
    Points
    5 235
    Par défaut
    Il est vrai que j'ai écrit ce code à la volée mais comme le précise Claudius, si tu ne cree pas au préalable ta stringlist ça ne risque pas de fonctionner.

    Allez, je suis de bonne humeur aujourd'hui

    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
     
    procedure RechSelection;
    var MaStringList : TStrings;
    begin
      MaStringList := TStringList.Create;
      try
        for i := 0 to MaListe.Items.Count - 1 do
        begin
          if (MaListe.Selected[i]) then
            MaStringList.Add(MaListe.Items.Strings[i]);
        end;
        DataModule1.T_courrierI.FieldValues['DESTINATAIRE']:= MaStringList.Text;
      finally
        if (Assigned(MaStringList)) then
          FreeAndNil(MaStringList);
      end;
    end;
    Normalement le "if Assigned(MaStringList)" est inutile dans ce cas là mais je l'ai rajouté juste au cas où.

    Edit : Pour faire bien, j'aurais même pu catcher une éventuelle exception sur l'utilisation de ton module de donnée.

  9. #9
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Points
    50
    Par défaut
    ok, vraiment beaucoup de merci;

  10. #10
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 308
    Points : 50
    Points
    50
    Par défaut
    l'insertion du contenu du TListBox marche bien. Maintenant si plusieurs elements selectionnés sont inserrés dans ma BD, et que j'applique une requete le resultat de la requete ne donne pas à chaque fois.
    voici la ligne qui insere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataModule1.T_courrierI.FieldValues['DESTINATAIRE']:= MaStringList.Text;
    l'insertion de plusieurs destinataires na pas de problème.
    QUand je veux afficher les informations par destinataire alors il ya probleme car seul le premier destinataire est pris en compte par la requete.
    Par exemple si dans la liste box j'ai selectionné "toto" et "tata" quand je fais la requete selon le destinataire c'est "toto" qu'il prend en compte.
    la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from courrier where destinataire= :dest
    si l'utilisateur entre "toto" il affiche l'enregistrement mais s'il entre "tata" il n'affiche rien.
    En fait c'est le premier element de la liste qu'il prend en compte.

    Merci bien de m'aider!

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/07/2006, 14h43
  2. [ASP][DOM] Récupérer les éléments d'un XML
    Par Tikate dans le forum XML/XSL et SOAP
    Réponses: 7
    Dernier message: 03/05/2006, 11h51
  3. compter les éléments sélectionné dans un tag select
    Par lemmings dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/04/2006, 14h07
  4. Récupérer les élements d'une structure ...
    Par Franck.H dans le forum GTK+ avec C & C++
    Réponses: 6
    Dernier message: 17/10/2005, 15h48
  5. [VB6] [FileListBox] Récupérer les éléments sélectionnés
    Par tomnie dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/10/2002, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo