Einzelnen Beitrag anzeigen

Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Buttons/Controls sortieren

  Alt 15. Sep 2017, 09:13
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?
Alex Winzer
  Mit Zitat antworten Zitat