Pb avec bcp de combobox

Résolu
gilore Messages postés 15 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 26 novembre 2006 - 1 oct. 2006 à 12:03
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 5 oct. 2006 à 10:58
je vous explique mon souci, j'ai 15 combobox dans lesquels je veux afficher une liste de choix variable (qui sont également au nombre de 15 maxi),
j'ai donc tapé le code suivant :

 for I:=1 to 15  do

if options.Components[I] is Tcombobox then
  if LowerCase((options.Components[I] as Tcombobox).Name)='combobox'+IntToStr(I) then
 
  (options.Components[I] as tcombobox).clear;


  if options.Components[I] is Tcombobox then
  if LowerCase((options.Components[I] as Tcombobox).Name)='combobox'+IntToStr(I) then
  (options.Components[I] as tcombobox).items.BeginUpdate;


  if options.Components[I] is Tcombobox then
  if LowerCase((options.Components[I] as Tcombobox).Name)='combobox'+IntToStr(I) then
  (options.Components[I] as tcombobox).items.add('nomlotA');


  if options.Components[I] is Tcombobox then
  if LowerCase((options.Components[I] as Tcombobox).Name)='combobox'+IntToStr(I) then
  (options.Components[I] as tcombobox).items.endupdate;

seulement voila! à la compilation la liste dans les 15 combobox ne s'affiche pas ...
quelq'un pourrait il me dire ou mon code n'est pas bon ???

merci d'avance.....

6 réponses

f0xi Messages postés 4204 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 34
3 oct. 2006 à 08:35
findcompo c'est bien, mais c'est un peu relou et surtout pas souvent fiable.

le mieux :

var
   CBXA : array of TComboBox;

procedure TForm1.OnCreate(sender : tobject);
begin
    SetLength(CBXA,15);
    CBXA[0]  := ComboBox1;
    CBXA[1]  := ComboBox2;
    CBXA[2]  := ComboBox3;
    CBXA[3]  := ComboBox4;
    CBXA[4]  := ComboBox5;
    CBXA[5]  := ComboBox6;
    CBXA[6]  := ComboBox7;
    CBXA[7]  := ComboBox8;
    CBXA[8]  := ComboBox9;
    CBXA[9]  := ComboBox10;
    CBXA[10] := ComboBox11;
    CBXA[11] := ComboBox12;
    CBXA[12] := ComboBox13;
    CBXA[13] := ComboBox14;
    CBXA[14] := ComboBox15;
end;

et ensuite ça nous permet d'acceder plus facilement a ces derniers.

var i : integer;
begin
  for i := 1 to 15 do
      with CBXA[0].items do begin
        Clear;     
        BeginUpdate;
        Add('NomLot'+inttostr(i));
        EndUpdate;
      end;
  for i := 1 to 14 do
      CBXA[i].Items.Assign(CBXA[0].Items);
     
end;

<hr size="2" width="100%" />Croc (click me)
3
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
1 oct. 2006 à 13:22
Salut,

essaye déjà comme ça

Var I, J : Integer

For I:= 1 to 15  do
With TComboBox(FindComponent('ComboBox' + IntToStr(I))) do
Begin
  BeginUpdate;
  Clear;
  For J : = 1 to 15 do
  Item.Add('NomLot' + IntToStr(J));
  EndUpdate;
End;

@+
Cirec
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
2 oct. 2006 à 12:00
Ne pas oublier de cliquer sur Réponse Acceptée si elle vous convient

@+
Cirec
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
3 oct. 2006 à 12:35
Salut,
"findcompo c'est bien, mais c'est un peu relou et surtout pas souvent fiable"

tu peux nous en dire un peut plus ... ça fait maintenant très longtemps que j'utilise cette méthode et je n'ai jamais eu de problème avec

elle est même utilisée en interne par Delphi !!!

@+
Cirec
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gilore Messages postés 15 Date d'inscription mardi 27 juin 2006 Statut Membre Dernière intervention 26 novembre 2006
5 oct. 2006 à 06:57
merci à toi F0xi, ta proposition à fonctionner, ce qui n'est malheureusement pas le cas de celle de Cirec...

mais merci à lui quand même

a+
Gilore
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
5 oct. 2006 à 10:58
1°) Il faut dire pourquoi ça ne fonctionne pas
2°) un petit survole du code aurait permit de trouver ce qui manquait :

procedure TfrmMain.Button6Click(Sender: TObject);
Var I, J : Integer;
Begin
For I:= 1 to 15  do
With TComboBox(FindComponent('ComboBox' + IntToStr(I))).Items do
Begin
  BeginUpdate;
  Clear;
  For J : = 1 to 15 do
  Add('NomLot' + IntToStr(J));
  EndUpdate;
End;
End;

Voilà un code 100% fonctionnel et sans rallonge

 
@+
Cirec

<hr size="2" />
0
Rejoignez-nous