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 :

[D7]Fonction généralisant le remplissage d'une ComboBox


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 37
    Points : 29
    Points
    29
    Par défaut [D7]Fonction généralisant le remplissage d'une ComboBox
    Salut,

    dans mon appli, je vais chercher plusieurs fois dans la BDD de quoi remplir la liste de mes diverses ComboBox. ça fonctionne et c'est déjà ça. Seulement, je voudrais faire une fonction généralisant ce traitement et là ben c'est hard pour moi. Cette fonction se trouverait donc dans une unité d'utilitaire pour mes forms.

    Voici ce que j'ai essayé de faire :
    form : c'est la form qui contient le combo box
    cbRemplir : le combo box à remplir
    sChamp : le champ de la table à récupérer
    sTable : la table où l'on récupère les infos
    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    function RemplissageComboBox(form : TForm;cbRemplir : TComboBox; sChamp, sTable :String) : boolean;
    var
       i     : integer;// Variable Compteur
     
    begin
    // Connection à la BDD
    ConnectData(true);
     
    // Initialisation de la requête
    requete.Active := false;
    requete.SQL.Clear;
    // Création de la requête
    requete.SQL.Add('SELECT '+sChamp+' FROM '+sTable+';');
    // Remplir la comboBox
    i:=-1;
    repeat
       i:=i+1;
    until (i< (Form.ComponentCount-1)) or (Form.Components[i].Name = cbRemplir.Name);
    if Form.Components[i].Name = cbRemplir.Name then
       begin
       // Exécution de la requête
       try
          requete.open;
          // Tant que non fin du résultat de la requête
          while not requete.Eof do
             begin
             // Ajout de l'enregistrement dans les items de cbMachines
     
    **** Là je sèche ****
    form.Components[i].Items.Add(requete.FieldByName(sChamp).AsString);
    ******************
             // Enregistrement suivant
             requete.Next;
             end;
       except
          // Historisation des erreurs
          hLog.Add(DateToStr(Date) + ' - ' + TimeToStr(Time) + ' - '+Form.Name+' - Remplissage de '+cbRemplir.Name+' a ECHOUEE.');
       end;// Fin Try
       end;// Fin If
     
    // Déconnection de la BDD
    ConnectData(False);
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form.Components[i].Items.Add(requete.FieldByName(sChamp).AsString);
    N'est pas correct ...Components[i] n'accepte pas Items ... auriez-vous une idée ?

    En espérant être assez clair,
    merci de votre aide.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 184
    Points : 149
    Points
    149
    Par défaut
    Tu passes la combobox en parametre alors t'as pas besoin de la chercher parmis les composants. Utilise cbremplir

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    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
    33
    34
    function RemplissageComboBox(cbRemplir : TComboBox; sChamp, sTable :String) : boolean;
    var
       i     : integer;// Variable Compteur
    
    begin
    // Connection à la BDD
    ConnectData(true);
    
    // Initialisation de la requête
    requete.Active := false;
    requete.SQL.Clear;
    // Création de la requête
    requete.SQL.Add('SELECT '+sChamp+' FROM '+sTable+';');
       // Exécution de la requête
       try
          requete.open;
        cbRemplir.Items.Clear; // On efface ce qu'il y avait dedans
          // Tant que non fin du résultat de la requête
          while not requete.Eof do
             begin
             // Ajout de l'enregistrement dans les items de cbMachines
             
        cbRemplir.Items.Add(requete.FieldByName(sChamp).AsString);
             // Enregistrement suivant
             requete.Next;
             end;
       except
          // Historisation des erreurs
          hLog.Add(DateToStr(Date) + ' - ' + TimeToStr(Time) + ' - '+Form.Name+' - Remplissage de '+cbRemplir.Name+' a ECHOUEE.');
       end;// Fin Try
    // Déconnection de la BDD
    ConnectData(False);
    end;
    Comme l'a dit sfpx, pas besoin de chercher la combobox dans la form vu que tu la passes en paramètre.
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  4. #4
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    ok merci beaucoup.
    J'y avais bien pensé mais comme un abruti je mettais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form.cbRemplir.items.add();
    ....

    Comme quoi j'ai mieux compris que ce que je ne le pensais.

    encore merci.

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

Discussions similaires

  1. Remplissage depuis une Combobox/Bookmark
    Par mafooley dans le forum VBA Word
    Réponses: 3
    Dernier message: 18/08/2009, 14h52
  2. [XL-2003] faire apparaitre un label en fonction d'un choix d'une combobox
    Par revemane dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 11/06/2009, 20h00
  3. Affichage de données différent en fonction de la sélection d'une ComboBox
    Par seiryujay dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 06/02/2009, 12h39
  4. Remplissage d'une comboBox
    Par BountyHunter dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/12/2007, 11h05
  5. Remplissage d'une combobox
    Par Tiresia dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/07/2007, 10h13

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