Einzelnen Beitrag anzeigen

quendolineDD

Registriert seit: 19. Apr 2007
Ort: Dresden
781 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: mit den Cursortasten zum nächstliegen Control springen

  Alt 12. Mai 2009, 12:55
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.
  Mit Zitat antworten Zitat