Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Transparentes Label zur Laufzeit verschieben (https://www.delphipraxis.net/41112-transparentes-label-zur-laufzeit-verschieben.html)

TeTSuO 26. Feb 2005 05:15


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?

edosoft 26. Feb 2005 09:03

Re: Transparentes Label zur Laufzeit verschieben
 
hallo,

ich versteh jetzt grad nicht so genau was du meinst...

Kidix 26. Feb 2005 09:13

Re: Transparentes Label zur Laufzeit verschieben
 
Zitat:

Zitat von TeTSuO
: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?

wie hast du es denn bis jetzt probiert?

edosoft 26. Feb 2005 10:03

Re: Transparentes Label zur Laufzeit verschieben
 
verschieben tut man indem man label1.top und label1.left verändert... :)

TeTSuO 26. Feb 2005 11:42

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:
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;
mit der Maus verschoben werden kann.

ein Label ist aber kein TWinControl somit geht das nicht.

Jetzt verstanden?

SirThornberry 26. Feb 2005 11:45

Re: Transparentes Label zur Laufzeit verschieben
 
dann kannst du eben nicht mit perform arbeiten sondern musst im OnMouseMove reagieren.

Jens Schumann 26. Feb 2005 11:54

Re: Transparentes Label zur Laufzeit verschieben
 
Hallo,
wenn Du anstatt TLabel TStaticText verwendest funktioniert die Sache mit Perfom.
TStaticText ist ein Nachfahre von TWinControl.

TeTSuO 26. Feb 2005 12:03

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.

smart 26. Feb 2005 12:08

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;

TeTSuO 26. Feb 2005 21:00

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 02:59 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz