Zu einem anderen Zweck in einem anderen Programm geschrieben, aber es könnte auch dir helfen:
Delphi-Quellcode:
procedure FindControls(wc: TWinControl; s: TStrings; c: TClass; recurse: Boolean = False);
var
i: Integer;
cc: TWinControl;
begin
for i := 0
to Pred(wc.ControlCount)
do
begin
cc := wc.Controls[i]
as TWinControl;
if cc is c
then
s.AddObject(
cc.
Name,
cc);
if recurse
and (
cc.ControlCount > 0)
then
FindControls(
cc, s, c, recurse);
end;
end;
Mit dieser Routine suche ich alle Controls einer bestimmten Klasse (wahlweise rekursiv) und speichere ihren Namen und einen Zeiger in einer StringListe:
Delphi-Quellcode:
procedure TDemoForm.DemoButtonClick(Sender: TObject);
begin
with ListBox do
begin
Items.Clear;
FindControls(self, Items, TEdit, true);
end;
end;
marabu