Thema: Delphi Reihenfolge von TImages

Einzelnen Beitrag anzeigen

Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: Unterhaching
11.412 Beiträge
 
Delphi 12 Athens
 
#4
  Alt 26. Mai 2003, 15:52
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;
......
Daniel Lizbeth
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat