Einzelnen Beitrag anzeigen

Monday

Registriert seit: 24. Aug 2012
103 Beiträge
 
FreePascal / Lazarus
 
#1

Bild bewegen, wie Name übermitteln?

  Alt 24. Jan 2016, 14:30
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
  Mit Zitat antworten Zitat