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

Delphi Discussion :

TAG pour chaque element d'une TListBox


Sujet :

Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 26
    Par défaut TAG pour chaque element d'une TListBox
    Bonjour,

    Je voudrais associer dans chaque ligne que j'insere dans ma TlistBox un identifiant (ou un tag).
    car il me faudrait qu'une fois la List remplie je puisse double cliquer sur une ligne et recuperer cet identifiant.

    vous voyez?

    je ne trouve pas beaucoup dinformations la dessus a vrai dire.

  2. #2
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Salut

    TList.Items étant du type TStrings, tu peux utiliser la propriété 'objects'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaListBox.Items.Objects[ MaListBox.ItemIndex ] := TObject( UnEntier );
    ou bien
    MaListBox.ITems.AddObject( machaine, TObject( Monentier ) )
    Etant donné que l'entier doit être de type Longint (ou Integer), sur 4 octets quoi.
    et à l'inverse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UnEntier := Integer( MaListBox.Items.Objects[ MaListBox.ItemIndex ] );
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 26
    Par défaut
    Violent
    ca marche nickel!! merci bcp

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Et dans ton entier tu peux même stoquer en plus d'un identifiant, des Booleens par exemple pour indiquer l'etat du champ.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 26
    Par défaut
    Bon en fait le souci c'est que jutilise un string et ca marche nickel lorsque jai un enregistrement dans la TlistBox.

    par contre la ou ca devient genant c lorsqu'il ya plusieurs enregistrement, je ne recupere pas vraiment la bonne valeur ou du moins il semble y avoir une erreur de conversion car mon string contient des donnees a la fin (du genre #3###00).

    jai utilise ceci :

    pour inserer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ListBox.Items.Add(Values[0]);
    ListBox.Items.Objects[ ListBox.Items.count - 1 ] := Tobject(Values[1]);
    Values[0] etant mon libelle et Values[1] mon identifiant (tous 2 des strings)

    pour lire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TfrmJukebox.ResultBoxDblClick(Sender: TObject);
    var
    UID: String;
    begin
      index:= ResultBox.ItemIndex;
      if index = -1 then exit;
     
      UID := String(ResultBox.Items.objects[index]);
     
    end;

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Par défaut
    Il ne faut pas l'utiliser comme cela.

    Utilises cette méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var  id: Integer;
           S: String;
     
      id := 99;
      S := 'Item';
     
      ListBox1.Items.AddObject(S, TObject(id));
    TObject est un pointeur qui occupe 4 octets en mémoire.
    Tu peux stoquer 32 bits d'informations à cet emplacement.
    Un integer étant stoqué sur 32 bits, tu peux placer un entier pour referencer la chaine ou bien 2 word de 16 bits en utilisant l'operateur shl si tu a besoin de 2 valeurs numeriques associées.

  7. #7
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    J'avais précisé qu'en tant qu'objet tu pouvais mettre une variable qui prend maximum 4 octets en mémoire (la taille d'un TObject comme l'a dit Fabrice).

    Tu peux donc mettre, un entier, un boolean, un pointer, un double...
    Mais en aucun cas une chaine.

    ou bien il faut allouer un espace spécifique pour cela. Allouer une classe et y mettre l'objet (c'est d'ailleurs l'utilité de Objects...)

    Mais ce problème précis a déjà été soulevé, et si j'ai le temps je rechercherai le fil de discussion à ce propos.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  8. #8
    Membre Expert
    Avatar de aityahia
    Homme Profil pro
    CIEPTAL CARS SPA
    Inscrit en
    Mars 2006
    Messages
    1 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : Algérie

    Informations professionnelles :
    Activité : CIEPTAL CARS SPA
    Secteur : Transports

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 938
    Par défaut
    dans le titre de ton post vous dit un Tag donc impique que tu a besoin de stocker une valeur entiere

    moi je vais opté pour une autres solutions je créer un Tableau de types Voulu et je fai la liason avec l'itemIndex de ma liste et l'indice du tableau

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 26
    Par défaut
    ah oui pas mal la derniere solution en fait.

  10. #10
    Membre éclairé Avatar de zemeilleurofgreg
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    515
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 515
    Par défaut
    ou encore mieux...
    Créer une structure !!

  11. #11
    Membre Expert Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 553
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 553
    Par défaut
    Pour moi la solution la plus simple est de créer une deuxième TStringList que tu remplis en même temps que ton
    ListBox.Items
    Du coup tu peux récupérer les valeurs de cette TStringList avec l'index de ton
    ListBox.Items

Discussions similaires

  1. convertir chaque element d'une liste
    Par fripette dans le forum Bioinformatique
    Réponses: 15
    Dernier message: 10/08/2007, 11h11
  2. [vba]un onglet tabstrip pour chaque terme d' une colonne
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 12/03/2007, 09h33
  3. Réponses: 5
    Dernier message: 16/02/2007, 16h03
  4. [CSS] largeur fixe pour les elements d'une liste
    Par arnolpourri dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 24/05/2006, 13h25
  5. Réponses: 2
    Dernier message: 20/04/2006, 14h33

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