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 :
type
TCheckArray = array[1..9] of TCheckbox;
tabAdr = array [1..9] OF string
var
FCheckBoxes : TCheckArray;
procedure TForm1.FormCreate(Sender: TObject);
var
iIndex, iChkCount, iCmpCount, iPos : integer;
chkCheck : TCheckBox;
begin
iCmpCount := Form1.ComponentCount;
// on parcourt tous les composants
foriIndex := 0 to iCmpCount - 1 do
begin
// on ne prend en compte que les checkboxs
if(Form1.Components[iIndex] is TCheckBox) then
begin
chkCheck := (Form1.Components[iIndex] as TCheckBox);
// on verifie sa taille
iflength(chkCheck.Name) = length('ccAdrX' ) then
// on verifie son nom
ifCopy(chkCheck.Name,1,length('ccAdr' )) = 'ccAdr' then
begin
// on assign la checkbox a la bonne position du tableau
// position qui est donnee par le dernier caractere composant le nom
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 :
type
TCheckArray = array[1..9] of TCheckbox;
tabAdr = array [1..9] OF string
var
FCheckBoxes : TCheckArray;
procedure TForm1.FormCreate(Sender: TObject);
var
iIndex, iChkCount, iCmpCount, iPos : integer;
chkCheck : TCheckBox;
begin
iCmpCount := Form1.ComponentCount;
// on parcourt tous les composants
foriIndex := 0 to iCmpCount - 1 do
begin
// on ne prend en compte que les checkboxs
if(Form1.Components[iIndex] is TCheckBox) then
begin
chkCheck := (Form1.Components[iIndex] as TCheckBox);
// on verifie sa taille
iflength(chkCheck.Name) = length('ccAdrX' ) then
// on verifie son nom
ifCopy(chkCheck.Name,1,length('ccAdr' )) = 'ccAdr' then
begin
// on assign la checkbox a la bonne position du tableau
// position qui est donnee par le dernier caractere composant le nom
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;