![]() |
ZOrder von Controls ändern
Hi, desöfteren wurde bereits nachgefragt, wie sich die Z-Order (Reihenfolge) von Controls ändern läßt.
Im Design-Modus kann dieses einfach durch das Anklicken der entsprechenden Control mit der rechten Maustaste -> entsprechender Menüpunkt geändert werden. Im Code kann man die Befehle
Delphi-Quellcode:
nutzen, aber leider ist es nicht direkt möglich die Control nur um eine Position zu verschieben.
Control.BringToFront;
Control.SendToBack; Folgender Code hilft dabei. Der erste Parameter is die Control, welche verschoben werden soll, der zweite bestimmt die Richtung.
Delphi-Quellcode:
...:cat:...
procedure ChangeControlZOrder(Sender: TObject; MoveUp: Boolean = True);
var I, Curr: Integer; Control: TControl; List: TList; begin if Sender is TControl then begin // sender kann z-order ändern Control := Sender as TControl; // sender ist einer Control (zur Darstellung) zugeordnet if Control.Parent = nil then // nee Exit; // position der control ermitteln Curr := -1; for I := 0 to Pred(Control.Parent.ControlCount) do if Control.Parent.Controls[I] = Sender then begin Curr := I; Break; end; if Curr < 0 then // hm, position nicht gefunden Exit; List := TList.Create; try if MoveUp then begin for I := Curr + 2 to Pred(Control.Parent.ControlCount) do // die restlichen controls merken List.Add(Control.Parent.Controls[I]); // control nach vorne bringen Control.BringToFront; for I := 0 to Pred(List.Count) do // die restlichen controls wieder vorholen TControl(List[I]).BringToFront; end else begin for I := 0 to Curr - 2 do // die restlichen controls merken List.Add(Control.Parent.Controls[I]); // control nach vorne bringen Control.SendToBack; for I := Pred(List.Count) downto 0 do // die restlichen controls wieder vorholen TControl(List[I]).SendToBack; end; finally List.Free; end; end; end; [edit=Matze] Mfg, Matze[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:30 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