Dafür ist es ja eine Community
Also so kannst du deine Komponenten iterieren und deren Position zur Form bestimmen
Delphi-Quellcode:
var
i: Integer;
begin
for i := 0 to Self.ComponentCount - 1 do
if Self.Components[i].ClassType = TEdit then
ShowMessage(IntToStr(TEdit(Self.Components[i]).Left));
end;
Hab das jetzt mal beispielsweise für ein Edit gemacht. Musst du natürlich auf deine Komponenten überarbeiten. Wenn du das OO machen willst, musst du über eine Liste verfügen, die über alle instanzierten Objekte bescheid weiß. Da wäre es vielleicht sogar besser wenn du über diese Klasse dann sogar die gesamte Erstellung der Komponenten auf der Form regelst und ihr die Darstellungs- und Verwaltungsintelligenz überträgst.
Edit:
Zitat:
wenn nötig könnte man auch PosX/PosY (aber das hat man eigendlich schon mit Left/Top) als Eigenschaft in die Kombo mit einfließen lassen
Das ist in der Komponente doch schon enthalten.
Edit2:
Mal nur reinweg zum probieren geht das auch so
Delphi-Quellcode:
var
i: Integer;
o : TObject;
begin
o := nil;
for i := 0 to Self.ComponentCount - 1 do
if Self.Components[i].ClassType = TEdit then
begin
if TEdit(Self.Components[i]).Left > TButton(Sender).Left then
if o = nil then
o := Self.Components[i]
else
if TEdit(Self.Components[i]).Left < TEdit(o).Left then
o := Self.Components[i];
end;
ShowMessage(TEdit(o).Text);
end;
Lars S.
Wer nicht mit der Zeit geht, geht mit der Zeit.