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

C++Builder Discussion :

gerer 2 combobox avec bde


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut gerer 2 combobox avec bde
    Re bonjour.

    Voila je voudrais savoir si c'est possible de faire un combobox1 qui affichera une liste de choix et en fonction du choix choisi le combobox2 affiche les choix par rapport aux choix choisi au combobox1 ?

    par ex :

    combobox1 voiture ->>> combobox2 : ferrari, mazda

    combobox1 audio ->>> combobox2 : chainehifi , casque

    je dois creer une base de donnéees pour chaque combobox ou une seul pour les deux ? je vois pas trop comment faire

    merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Il y a plusieurs façons de faire :
    - soit utiliser des combobox superposés dont il suffit d'en ramener un au premier plan
    - soit assigner des TStringList à un seul combobox.

    Pour ces deux façons de faire, on peut utiliser soit
    - un switch
    - ou bien simplifier le code en liant chaque objet (TStringList ou TCombobox) à leur item du TComboBox principal à l'aide de ...Items->Objects.

    Voici un exemple à l'aide de deux TComboBox et de deux TStringList.
    On a donc :
    - ChoixPrincipal et ChoixSecondaire (nos deux TComboBox)
    - ChoixVoiture et ChoixHiFi (nos deux TStringList pour le ChoixSecondaire)

    Je déclare dans la classe de TForm1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public:		// Déclarations de l'utilisateur
     
    TStringList *ChoixVoitures;
    TStringList *ChoixHiFi;
    Dans le constructeur de TForm1, j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ChoixVoitures = new TStringList;
    ChoixVoitures->Add("Citroen");
    ChoixVoitures->Add("Opel");
    // etc...
    ChoixPrincipal->Items->Objects[0] = ChoixVoitures;
     
    ChoixHiFi = new TStringList;
    ChoixHiFi->Add("Teac");
    ChoixHiFi->Add("Akai");
    // etc...
    ChoixPrincipal->Items->Objects[1] = ChoixHiFi;
    Dans la OnChange de ChoixPrincipal :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void __fastcall TForm1::ChoixPrincipalChange(TObject *Sender)
    {
    int n = ChoixPrincipal->ItemIndex;
    if(n >= 0)
        {
        TStringList *Chaines = (TStringList*)ChoixPrincipal->Items->Objects[n];
        ChoixSecondaire->Items->Assign(Chaines);
        ChoixSecondaire->ItemIndex = 0;
        }
    }
    Ne pas oublier de libérer les deux TStringList, quand on quitte le programme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
    {
    ChoixVoitures->Clear(); delete ChoixVoitures;
    ChoixHiFi->Clear(); delete ChoixHiFi;
    }
    On peut ainsi réaliser un rafraichissement en cascade (vers d'autres TComboBox, vers des choix de plus en plus sélectifs)

    Ce n'est qu'un exemple, d'autres te diront de le faire avec un switch...

    A plus !

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    merci pour ton aide mais je sais pas si c'est exactement cela que je veux faire.

    Enfait mon combobox1 va rechercher les valeurs dans ma bdd apellée choixprincipale.db.

    Donc mon combobox1 m'affichera voitures,multimedia,new ( si je selectionne new alors un edit en dessous passe en enable et je peux rajouter directment un choixprincipal dans mon combobox1.

    et donc en fonction du choix que j'ai fais dans le combobox1, le combobox2 va rechercher dans ma bdd choix2.bd qui aura un lien avec ma bdd choixprincipale.db

    et comment je dois agencé ma base de donnée pour la recherche du combobox2 ?

    merci en tous cas

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    en fait j'ai deja fait ceci :

    void __fastcall TNproduits::ComboBox1Change(TObject *Sender)
    {
    switch ( ComboBox1->ItemIndex)
    {
    case 0 : // Choix pour hommes
    ComboBox2->Clear();
    ComboBox2->Items[0].Text="Auto";
    ComboBox2->AddItem("choixhomme2",0);
    ComboBox2->AddItem("choixhomme3",0);
    ComboBox2->Enabled = "true";
    break;

    case 1 : // Choix pour femmes
    ComboBox2->Clear();
    ComboBox2->Items[0].Text= "Parfums";
    ComboBox2->AddItem("choix femmes 2",0);
    ComboBox2->Enabled = "true";
    break;

    case 2 : // Choix pour enfants
    ComboBox2->Clear();
    ComboBox2->Items[0].Text= "jouet";
    ComboBox2->Enabled = "true";
    break;


    }

    }
    mais le probleme avec ca c'est que par la suite je ne pourais rajouter aucun choix dans les combobox1 et combobox2 => c'est pour cela que j'aurais voulu stocker mes coix dans une base de données.

    Donc j'aurais voulu ce que j'ai mis dans le prededent message

  5. #5
    Membre chevronné Avatar de winow
    Inscrit en
    Novembre 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 60

    Informations forums :
    Inscription : Novembre 2004
    Messages : 669
    Par défaut
    Bonjour

    Tu peut stocker le contenu des combobox dans des fichiers ou dans la base du registre
    a chaque fois que tu rajoute un nouveau nom tu l'enregistre dans ce fichier ou dans la BDR
    et a l'ouverture du logiciel les importer

    A+

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    593
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 593
    Par défaut
    comment faire pour que le combobox1 affiche ma table1 sous paradox 7 ?

Discussions similaires

  1. PB de chargement de combobox avec une requete
    Par bubu1905 dans le forum Bases de données
    Réponses: 9
    Dernier message: 23/03/2005, 16h14
  2. Réponses: 2
    Dernier message: 26/07/2004, 13h34
  3. Problème de mémoire avec BDE
    Par Machuet dans le forum Bases de données
    Réponses: 3
    Dernier message: 13/07/2004, 10h11
  4. Comment bien gerer la mémoire avec les TStringList?
    Par david_chardonnet dans le forum Langage
    Réponses: 5
    Dernier message: 18/06/2003, 09h57
  5. comment creer un alias dynamique avec BDE et ODBC
    Par david33 dans le forum C++Builder
    Réponses: 2
    Dernier message: 12/07/2002, 11h50

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