Erst einmal danke für die Antwort.
Ich habe jetzt auch gegrübelt und am Ende
getrickst. Meine Überlegung war die, dass erst die "Höhe" und dann der linke Abstand entscheidend ist. Also habe ich mir erstmal so beholfen:
Delphi-Quellcode:
With TStringList.Create Do
Try
Sorted:= True;
For I:= 0 To Pred(ScrollBox1.ControlCount) Do // alle Buttons durchgehen
If (ScrollBox1.Controls[I] Is TBitBtn) Then
Begin
lItem:= (ScrollBox1.Controls[I] As TBitBtn);
AddObject(
FormatFloat('00000', lItem.Top) + // von oben nach unten
FormatFloat('00000', lItem.Left), // von links nach rechts
lItem); // Object anhängen
End;
For I:= 0 To Pred(Count) Do // Listenplatz = Taborder
(Objects[I] As TBitBtn).TabOrder:= I;
Finally
Free;
End;
Ich werde mir aber auf jeden Fall Deine Version mal ansehen, weil meine "Wurschprogrammiererei" einen Nachteil hat: ab einer bestimmten Auflösung klappt es nicht mehr.
Eine Nachfrage habe ich dann aber noch:
Irgend jemand muss ja dieses
BtnCompare();
aufrufen. Ich vermute mal, die
TList
. Wie bringe ich sie dazu? Nach meiner Recherche müsste es mit Deinem Codebeispiel so gehen:
Delphi-Quellcode:
TList.Sort(@BtnCompare);
Refresh;
Ist das richtig?