![]() |
Bild bewegen, wie Name übermitteln?
Hallo,
ich möchte ein Bild Bewegen. Ich lade dazu eine .png in ein TImage und mithilfe des Timer (und OnMouseDown usw) soll es dann bewegt werden. Da ich mehrere Bilder laden möchte, soll das alles dynamisch vorgehen. Aber wie kann ich im Timer das Bild auch als "Bild" bewegen, weil ich nicht mehr weiß wie das erstellte bild heißt bzw. ich weiß es aber komme nicht mehr ran? Am besten sieht man es im code mit dem "???": Hier ein gekürzter Ausschnitt:
Delphi-Quellcode:
procedure FormShow...
begin // ... // mehrmals mit verschiedenen bilder, in einer schleife: figur := TImage.Create(Self); figur.Picture.LoadFromFile('figuren/rb.png'); figur.OnMouseDown := @Image1MouseDown; //Timer starten = Bewegung starten figur.OnMouseUp := @Image1MouseUp; //Timer beenden = Bewegung beenden figur.OnClick := @Image1click; figur.parent := Form1; figur.Name := 'Image987'; //Nur zum Test figur.Height := laenge-10; figur.Width := breite-10; figur.top := 1*2*laenge+4; figur.left := 1*2*breite+4; figur.Stretch:=True; figur.visible := True; figur.Show; end; procedure TForm1.Image1Click(Sender: TObject); begin if Sender is TImage then begin Label1.Caption := TImage(Sender).Name; // Bild Name merken bei Click end; end; procedure TForm1.Timer1Timer(Sender: TObject); var Bild := TImage; begin // Bild wird bewegt,... { ABER: Image1.Left:= ScreenToClient(Mouse.CursorPos).x; geht ja nicht Wie komme ich an das Bild das bei "Label1.Caption" gemerkt habe?! Bzw. muss ich dort anders vorgehen? } Bild = ???? Bild.Left:= ScreenToClient(Mouse.CursorPos).x, Bild.Top:= ScreenToClient(Mouse.CursorPos).y; end; Wer kann mir bitte weiterhelfen? LG Monday Umgebung: Lazarus |
AW: Bild bewegen, wie Name übermitteln?
Mach Dir doch im Formular eine Eigenschaft vom Typ TImage.
Delphi-Quellcode:
(Nur hingedaddelt und nicht getestet.)
...
fAktuellesBild : TImage; ... procedure TForm1.Image1Click(Sender: TObject); begin if Sender is TImage then begin fAktuellesBild := TImage(Sender); Label1.Caption := fAktuellesBild.Name; // Bild Name merken bei Click end; end; procedure TForm1.Timer1Timer(Sender: TObject); begin fAktuellesBild .Left:= ScreenToClient(Mouse.CursorPos).x, fAktuellesBild .Top:= ScreenToClient(Mouse.CursorPos).y; end; |
AW: Bild bewegen, wie Name übermitteln?
Hallo nahpets,
vielen Dank! Richtig gute Idee. Darauf hätte ich auch kommen können. Klar so funktioniert es einwandfrei. So kann ich mir auch den Umweg über das Label sparen. Lg Monday |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 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