AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Buttons/Controls sortieren

Ein Thema von Schwedenbitter · begonnen am 14. Sep 2017 · letzter Beitrag vom 18. Sep 2017
 
samso

Registriert seit: 29. Mär 2009
440 Beiträge
 
#2

AW: Buttons/Controls sortieren

  Alt 15. Sep 2017, 06:59
Ich würde zunächst ein temporäre Liste (LButtons: TList) mit allen Buttons mit füllen. Diese Liste würde ich sortieren und zwar mit einer Vergleichsfunktionen die dafür sorgt, dass die Buttons entsprechend der (gedachten) Zeile und Spalte bewertet werden. Ein Button ist dann in einer anderen Zeile, wenn seine Y-Position mindestens um die Höhe des Buttons von dem anderen Button abweicht.

Delphi-Quellcode:
function BtnCompare(P1, P2: Pointer): Integer;
var
  btn1, btn2: TBitButton;
begin
  btn1 := TObject(P1) as TBitButton;
  btn2 := TObject(P2) as TBitButton;
  if btn1.Top>btn2.Top+btn2.Height
  then // btn1 ist tiefer als btn2
    Result := 1
  else
  if btn1.Top+btn1.Height<btn2.Top
  then // btn1 ist höher als btn2
    Result := -1
  else // die beiden Knöpfe sind in der gleichen Zeile
    Result := btn2.Left-btn1.Left;
end;
Nachdem ich nun ein Liste habe, in der die Buttons in der Lese-Reihenfolgen geordnet sind, brauche ich nur noch durch die Liste zu gehen und alle Taborder-Werte gleich dem Index zu setzen.
Delphi-Quellcode:
  for i:=0 to LButtons.Count-1 do
    TBitButton(LButtons[i]).TabOrder := i;
Danach kann die temporäre Liste wieder frei geben werden.

Geändert von samso (15. Sep 2017 um 07:06 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz