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;N'est pas correct ...Components[i] n'accepte pas Items ... auriez-vous une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part form.Components[i].Items.Add(requete.FieldByName(sChamp).AsString);
En espérant être assez clair,
merci de votre aide.
Partager