Retrouver un composant d'après son nom

{à la place d'écrire ...}

Edit1.Text := 'Text 1';
Edit2.Text := 'Text 2';
Edit3.Text := 'Text 3';
Edit4.Text := 'Text 4';
{...}
Edit10.Text := 'Text 10';

{Il est plus simple de...}

for i := 1 to 10 do
TEdit(FindComponent('Edit'+IntToStr(i))).Text := 'Text' + IntToStr(i);

{ou}

for i:= 1 to 10 do
(Findcomponent('Edit'+IntToStr(i)) as TEdit).Text := IntToStr(i);

{Exemple : trouver un composant sur n'importe quelle Form}

function FindComponentEx( const Name: string): TComponent;
var
FormName: string;
CompName: string;
P: Integer;
Found: Boolean;
Form: TForm;
I: Integer;
begin
// Split up in a valid form and a valid component name
P := Pos('.', Name);
if P = 0 then
begin
raise Exception.Create('No valid form name given');
end;
FormName := Copy(Name, 1, P - 1);
CompName := Copy(Name, P + 1, High(Integer));
Found := False;
// find the form
for I := 0 to Screen.FormCount - 1 do
begin
Form := Screen.Forms[I];
// case insensitive comparing
if AnsiSameText(Form.Name, FormName) then
begin
Found := True;
Break;
end;
end;
if Found then
begin
for I := 0 to Form.ComponentCount - 1 do
begin
Result := Form.Components[I];
if AnsiSameText(Result.Name, CompName) then Exit;
end;
end;
Result := nil;
end;

procedure TFrom1.Button1Click(Sender: TObject);
var
C: TComponent;
begin
C := FindComponentEx('MyForm10.Edit2');
TEdit(C).Caption := 'Hello';
end;
Ajouter un commentaire
Pseudo
Adresse email
Site internet (optionnel)
Votre commentaire
Fiche de l'article
Mise a jour17/09/2002
VisualisationVu 1642 fois
PublicInternaute zz
CategorieDelphi - Trucs et astuces - Objet
Auteur de l'article
SwissDelphiCenter SwissDelphiCenter
connecté le 02/11/2011
329 articles dans la section
Contacter l'auteur