Die direkten Methoden zum Neu-Ordnen (SetZOrder und SetZOrderPosition) sind leider nicht erreichbar, da diese als
protected bzw. als
private deklariert sind. Aber folgende Funktion sollte helfen.
Delphi-Quellcode:
procedure MoveControlUpInZOrder(Sender: TObject);
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
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;
finally
List.Free;
end;
end;
end;
...
...