![]() |
Transparentes Label zur Laufzeit verschieben
:hi: Hallo erstmal
Gibt es eine Möglichkeit ein Label welches auf einem Image abgebildet ist zur Laufzeit zu verschieben? Ich habe schon einiges gelesen aber das entspricht nicht meinen Vorstellungen. z.B. könnte man das Label Temporär auf ein Panel setzten und dann verschieben. Problem ist dann das das Panel nicht trasparent wird :cry: . Drag&Drop funzt auch net weil andere Panels und Labels auch auf der Image sitzen. Das Label müsste während dem Verschieben sichtbar bleiben. Kann mir jemand helfen? |
Re: Transparentes Label zur Laufzeit verschieben
hallo,
ich versteh jetzt grad nicht so genau was du meinst... |
Re: Transparentes Label zur Laufzeit verschieben
Zitat:
|
Re: Transparentes Label zur Laufzeit verschieben
verschieben tut man indem man label1.top und label1.left verändert... :)
|
Re: Transparentes Label zur Laufzeit verschieben
Also das man das Label mit .Top und .left verschieben kann weis ich auch
Folgende Situation: Ich habe ein Hintergrundbild (TImage). Auf diesem Bild soll der Anwender per Maus labels und weitere bilder erstellen, verschieben und größe ändern können wie in der IDE. Das mit den Bildern geht mit einem Image auf einem Panel
Delphi-Quellcode:
mit der Maus verschoben werden kann.
procedure TForm1.WinControlMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); begin if (Sender is TImage) then Sender:=(Sender as TImage).Parent; if (Sender is TWinControl) then begin ReleaseCapture; //Fängt alle Mausereignisse ab TWinControl(Sender).Perform(WM_SysCommand, $F012, 0); end; end; ein Label ist aber kein TWinControl somit geht das nicht. Jetzt verstanden? |
Re: Transparentes Label zur Laufzeit verschieben
dann kannst du eben nicht mit perform arbeiten sondern musst im OnMouseMove reagieren.
|
Re: Transparentes Label zur Laufzeit verschieben
Hallo,
wenn Du anstatt TLabel TStaticText verwendest funktioniert die Sache mit Perfom. TStaticText ist ein Nachfahre von TWinControl. |
Re: Transparentes Label zur Laufzeit verschieben
Bei StaticText funktioniert bei mir aber nicht Transparent ich brauch das aber damit der anwender beim bewegen sieht wo er es hinzieht. z.b. wenn er mehrere Labels mit selber Caption leicht versetzt übereinander legt um einen 3d effekt der schrift zu erzeugen.
OnMouseMove funktioniert nicht da ich andere Labels und Bilder im fenster habe und die dann seperat abfragen müsste. oder hat da einer ne Lösung dafür. |
Re: Transparentes Label zur Laufzeit verschieben
Damit kannst Du Labels verschieben.
Delphi-Quellcode:
private
{ Private-Deklarationen } fOffsetX, fOffsetY : Integer; procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Var lPt : TPoint; begin lPt := TLabel(Sender).ScreenToClient(Mouse.CursorPos); fOffsetX := lPt.X; fOffsetY := lPt.Y; end; procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin If ( ssLeft In Shift ) Then Begin TLabel(Sender).Left := TLabel(Sender).Left + X - fOffsetX; TLabel(Sender).Top := TLabel(Sender).Top + Y - fOffsetY; End; end; |
Re: Transparentes Label zur Laufzeit verschieben
:thumb: Alles klar funzt super musste noch bisschen umschreiben aber jetzt sieht das Professionell aus.
Vielen Dank |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 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