![]() |
Reihenfolge von TImages
Hallösche,
weiß jemand, wie die Reihenfolge von TImages organisiert wird? Also wenn ich 2 Images habe, wie kann ich dann festlegen (auch nachträglich) das Image2 über Image1 gemalt wird und umgekehrt. Am Anfang ist die Reihenfolge glaub ich die Reihenfolge, in der die Images erstellt wurden oder? Vielen Dank schonmal Minz |
Im Quelltext das Image, welches "oben" sein soll mit
Delphi-Quellcode:
ansteuern, im Form-Designer mit der rechten Maustaste auf das Bild klicken und den entsprechenden Befehl aus dem PopUp-Menü benutzen.
Image1.BringToFront;
[Edit]...:cat:...[/Edit] |
Danke, habs noch nicht getestet, aber mir scheint,
dass es dann mit mehreren übereinanderliegenden Images Probleme geben könnte. Wenn ich dann 3 Images habe, und den 3. bringtofront mache, dann liegt der vermutlich über image1 und image2. Was ist wenn ich den nur eine Ebene höher haben möchte, also Reihenfolge: von 3 2 1 auf 2 3 1 1 soll nachwievor oben liegen. |
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:
...:cat:...
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; |
Hi schonmal Danke,
sehe ich das jetzt richtig? Ich muss dafür folgendes machen: type TmeinImage=class(TImage) und füge die Prozedur MoveControlUpInZOrder als Methode hinzu. Dann kann ich: var Bild1: TmeinImage Bild1.MoveControlUpInZOrder verwenden. Sag bitte ja :mrgreen: |
Nein :-)
Du kannst die Prozedure direkt einsetzen und für alle Controls nutzen. ;-) Etwas ausführlicher habe ich es mal eben hier beschrieben: ![]() ...:cat:... P.S. Wenn noch Fragen bestehen, weiterhin diesen Thread nutzen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:51 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