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 :

remplissage d'un combobox en fonction de la valeur d'un autre combobox


Sujet :

Delphi

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut remplissage d'un combobox en fonction de la valeur d'un autre combobox
    bonjour,

    j'ai une combobox (cb1) qui affiche 2 valeurs par ex.
    je veux qu'en sélectionnant la première valeur de cb1, remplir une autre combobox (cb2) avec une liste lst1, et pour la deuxième valeur une autre liste lst2

    voila ce que j'ai fait, mé je sé pas ou placer le code en fait!! ya pas d'évenement onselectedindex ou un truc dans le genre.. g placé donc ça sous l'évènement OnChange mé ça marche pas..

    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
     
    //au tt début
    lst1 := TStringList.Create;
    lst2 := := TStringList.Create;
    lst1.add('valeur11');
    lst1.add('valeur21');
    lst2.add('valeur12');
    lst2.add('valeur22');
     
    //dans implementation...
    procedure TForm1.cb1Change(Sender: TObject);
    begin
    if cb1.SelText = 'TXT' then cb2.Items := lst1
    else if cb1.SelText = 'XML' then cb2.Items := lst2;
    end;
    et j'ai fixé les valeurs par défaut de cb1 sur l'évenement Form.Create comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cb1.SelText := cb1.Items[0];-- en l'occurrence ici c 'TXT'
    voila..
    je crois que c'est simple mais j'ai pas su surtout où le faire!!

    Merci

  2. #2
    Membre éclairé Avatar de slimjoe
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2005
    Messages : 647
    Points : 789
    Points
    789
    Par défaut
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      lst1 := TStringList.Create;
      lst2 := TStringList.Create;
      lst1.add('valeur11');
      lst1.add('valeur21');
     
      lst2.add('valeur12');
      lst2.add('valeur22');
     
      cb1.Style := csDropDownList;
      cb1.Items.Add('TXT');
      cb1.Items.Add('XML');
      cb1.ItemIndex := 0;
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      lst1.Free;
      lst2.Free;
    end;
     
    procedure TForm1.cb1Change(Sender: TObject);
    begin
      if cb1.ItemIndex = -1 then
        exit;
     
      if cb1.Items[cb1.ItemIndex] = 'TXT' then
        cb2.Items.Assign(lst1)
      else if cb1.Items[cb1.ItemIndex] = 'XML' then
        cb2.Items.Assign(lst2);
    end;
    [EDIT]

    (Oops! Enregistré trop vite )

    Plusieurs choses sont à noter...

    Tout d'abord, tu dois toujours détruire les objets que tu créés.

    Ensuite, Items de TCombobox est un objet de type TStrings. Si tu remplaces la référence de Items par une autre, tu vas perdre la référence originale de Items (je n'ai pas testé, mais je crois que non seulement ça va planter éventuellement quand le TCombobox va supprimer l'objet mais le Items original risque de provoquer un beau memory leak). La méthode Assign copie les élément d'un TStrings dans un autre.

    L'utilisation d'un TCombobox de style csDropDownList t'assure que l'utilisateur ne choisse que ce qui se retrrouve dans la liste et rien d'autre.

    Enfin, SetText sert à connaître le texte sélectionné avec la souris. Quand je dis sélectionné, c'est pas celui qui a été choisi dans la liste mais celui que tu sélectionnes comme pour faire un copier/coller d'une partie de texte. En utilisant l'ItemIndex (c'est l'index de l'item sélectionné dans la liste) et la collection des items, on est certain d'avoir de qu'on veut. Si tu veux absolument jouer avec des comparaisons de texte, c'est la propriété Text que tu dois utiliser.

    Enfin...

    voila ce que j'ai fait, je pas ou placer le code en fait!! ya pas d'évenement onselectedindex ou un truc dans le genre.. g placé donc ça sous l'évènement OnChange ça marche pas..
    ... essaye de laisser les SMS sur ton portable stp. C'est difficile à lire pour ceux qui voudraient t'aider et ça ne laisse pas archives très claires pour ceux qui auraient le même problème que toi et seraient intéressés par la solution apportée.

    Bon dev!

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    365
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 365
    Points : 83
    Points
    83
    Par défaut
    merci..
    c clair qu'il faut détruire ttes les instances TStringList.. t'inquiètes pas je le prévois bien

    là ça marche nickel...
    donc Merci bien...


    (PS: sorry pour le langage SMS, mais c'était juste cette phrase.. je me suis égaré... )

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Charger une Combobox en fonction de la sélection d'une autre
    Par CARNIBAL dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 17/09/2010, 10h49
  2. [AC-2007] Remplir une combobox en fonction d'une valeur de formulaire
    Par Bluuuh dans le forum IHM
    Réponses: 3
    Dernier message: 11/07/2010, 22h16
  3. Réponses: 10
    Dernier message: 30/03/2009, 14h30
  4. Réponses: 12
    Dernier message: 13/02/2007, 14h21
  5. Réponses: 5
    Dernier message: 30/12/2006, 15h35

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