Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3182 connectés 

 


Dernière réponse
Sujet : [Delphi5] Boucle et contrôle (titre~?)
JWhy j'aurais appris qqchose aujourd'hui ...
 :jap:

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
JWhy j'aurais appris qqchose aujourd'hui ...
 :jap:
antp

Miles V a écrit a écrit :

Le plus simple :
 
  for i := 1 to 9 do
    TCheckBox(FindComponent('ccAdr' + intToStr(i))).Caption := tabAdr[i];




 
J'y ai même pas pensé alors que j'avais utilisé FindComponent il y a une semaine pour un autre problème

Miles V Super, j'ai gagné ! :D
AGA

Miles V a écrit a écrit :

Le plus simple :
 
  for i := 1 to 9 do
    TCheckBox(FindComponent('ccAdr' + intToStr(i))).Caption := tabAdr[i];




bon, ba j'ai choisit ta solution : la plus simple et ressemble à mon idée théorique ET un plus elle MARCHE... :)  :)  :)

Miles V Le plus simple :
 
  for i := 1 to 9 do
    TCheckBox(FindComponent('ccAdr' + intToStr(i))).Caption := tabAdr[i];
antp

rufo a écrit a écrit :

non, en fait, ce qu'il faut faire, c'est récupérer le tableau des composants (control, je crois) de ta fiche.  
Ca ferait un truc du genre:
(NomFichie.Control[i]) as (CheckBox).Caption = tab[i];




 
ça va foirer si il y a autre chose que des checkbox.
tab sera pas assez grand, et les i de control seront pas les mêmes que les i de tab.

rufo moi, je m'en suis servi pour manipuler des onglets...
rufo non, en fait, ce qu'il faut faire, c'est récupérer le tableau des composants (control, je crois) de ta fiche.  
Ca ferait un truc du genre:
(NomFichie.Control[i]) as (CheckBox).Caption = tab[i];
AGA

JWhy a écrit a écrit :

je ne crois pas que ca soit faisaible aussi simplement...
 
il faut, je pense, qu'a la creation de ta form, tu parcours tous tes composants, et si c'est une checkbox avec un nom qui commance par 'ccAdr', l'ajouter a un tableau de checkbox puis apres, utiliser le tableau pour changer les captions de tes checkbox
 
par ex:

Code :
  1. type
  2.   TCheckArray = array[1..9] of TCheckbox;
  3.   tabAdr = array [1..9] OF string
  4. var
  5.   FCheckBoxes : TCheckArray;
  6. procedure TForm1.FormCreate(Sender: TObject);
  7. var
  8.   iIndex, iChkCount, iCmpCount, iPos : integer;
  9.   chkCheck : TCheckBox;
  10. begin
  11.   iCmpCount := Form1.ComponentCount;
  12.   // on parcourt tous les composants
  13.   for iIndex := 0 to iCmpCount - 1 do
  14.   begin
  15.     // on ne prend en compte que les checkboxs
  16.     if (Form1.Components[iIndex] is TCheckBox) then
  17.     begin
  18.       chkCheck := (Form1.Components[iIndex] as TCheckBox);
  19.       // on verifie sa taille
  20.       if length(chkCheck.Name) = length('ccAdrX' ) then
  21.         // on verifie son nom
  22.         if Copy(chkCheck.Name,1,length('ccAdr' )) = 'ccAdr' then
  23.         begin
  24.           // on assign la checkbox a la bonne position du tableau
  25.           // position qui est donnee par le dernier caractere composant le nom
  26.           iPos := StrToInt(chkCheck.Name[length(chkCheck.Name)]);
  27.           FCheckBoxes[iPos] := chkCheck;
  28.         end;
  29.     end;
  30.   end;
  31. end;


 
et donc maintenant, tu as un tableau avec toutes tes checkboxes et tu peux le parcourir dans une boucle pour modifier les captions ou autres proprietes
 
ps: c'est pas dit que le code marche, je l'ai fait comme ca de tete !
 
 




 
merci JWhy faut que j'essaie ce soir
Effectivement tout seul j'aurais pas trouvé!
...Je vais être obligé de mettre dans les crédits de mes miniSofts :
...Avec la participation de JWhy le grand  :lol:  
a+

antp Le système avec les [#...] c'est quoi ? C'est possible de faire un truc de ce genre ?
 
Ça peut tj etre utile...

 

[edit]--Message édité par antp--[/edit]

JWhy je ne crois pas que ca soit faisaible aussi simplement...
 
il faut, je pense, qu'a la creation de ta form, tu parcours tous tes composants, et si c'est une checkbox avec un nom qui commance par 'ccAdr', l'ajouter a un tableau de checkbox puis apres, utiliser le tableau pour changer les captions de tes checkbox
 
par ex:

Code :
  1. type
  2.   TCheckArray = array[1..9] of TCheckbox;
  3.   tabAdr = array [1..9] OF string
  4. var
  5.   FCheckBoxes : TCheckArray;
  6. procedure TForm1.FormCreate(Sender: TObject);
  7. var
  8.   iIndex, iChkCount, iCmpCount, iPos : integer;
  9.   chkCheck : TCheckBox;
  10. begin
  11.   iCmpCount := Form1.ComponentCount;
  12.   // on parcourt tous les composants
  13.   for iIndex := 0 to iCmpCount - 1 do
  14.   begin
  15.     // on ne prend en compte que les checkboxs
  16.     if (Form1.Components[iIndex] is TCheckBox) then
  17.     begin
  18.       chkCheck := (Form1.Components[iIndex] as TCheckBox);
  19.       // on verifie sa taille
  20.       if length(chkCheck.Name) = length('ccAdrX' ) then
  21.         // on verifie son nom
  22.         if Copy(chkCheck.Name,1,length('ccAdr' )) = 'ccAdr' then
  23.         begin
  24.           // on assign la checkbox a la bonne position du tableau
  25.           // position qui est donnee par le dernier caractere composant le nom
  26.           iPos := StrToInt(chkCheck.Name[length(chkCheck.Name)]);
  27.           FCheckBoxes[iPos] := chkCheck;
  28.         end;
  29.     end;
  30.   end;
  31. end;


 
et donc maintenant, tu as un tableau avec toutes tes checkboxes et tu peux le parcourir dans une boucle pour modifier les captions ou autres proprietes
 
ps: c'est pas dit que le code marche, je l'ai fait comme ca de tete !

 

[edit]--Message édité par JWhy--[/edit]

AGA

AGA a écrit a écrit :

La situatiuon :=>>
un fiche + 10 case à cocher (checkbox :) ), leur nom est du type ccAdrX où X represente un nombre (ccAdr1, ccAdr2 etc...)
un tableau du style tabAdr : ARRAY [1..9] OF STRING;
J'ai fait ça :
...
ccAdr1.Caption:=tabAdr[1];
ccAdr2.Caption:=tabAdr[2];
ccAdr3.Caption:=tabAdr[3];
ccAdr4.Caption:=tabAdr[4];
ccAdr5.Caption:=tabAdr[5];
...
 
Et bien figurer vous que je suis sûr qu'on peut faire ça avec une boucle...mais comment ?
For i:=1 TO 9 DO
  ccAdr?i?.caption:=tabAdr[i]
END;
 
Voili :sweat:



[#0055aa]

AGA La situatiuon :=>>
un fiche + 10 case à cocher (checkbox :) ), leur nom est du type ccAdrX où X represente un nombre (ccAdr1, ccAdr2 etc...)
un tableau du style tabAdr : ARRAY [1..9] OF STRING;
J'ai fait ça :
...
ccAdr1.Caption:=tabAdr[1];
ccAdr2.Caption:=tabAdr[2];
ccAdr3.Caption:=tabAdr[3];
ccAdr4.Caption:=tabAdr[4];
ccAdr5.Caption:=tabAdr[5];
...
 
Et bien figurer vous que je suis sûr qu'on peut faire ça avec une boucle...mais comment ?
For i:=1 TO 9 DO
  ccAdr[#0000fa]?i?[#0000fa].caption:=tabAdr[i]
END;
 
Voili :sweat:

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)