AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Bild bewegen, wie Name übermitteln?
Thema durchsuchen
Ansicht
Themen-Optionen

Bild bewegen, wie Name übermitteln?

Ein Thema von Monday · begonnen am 24. Jan 2016 · letzter Beitrag vom 24. Jan 2016
Antwort Antwort
Monday

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

Bild bewegen, wie Name übermitteln?

  Alt 24. Jan 2016, 13: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
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Bild bewegen, wie Name übermitteln?

  Alt 24. Jan 2016, 13:57
Mach Dir doch im Formular eine Eigenschaft vom Typ TImage.
Delphi-Quellcode:
 ...
   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;
(Nur hingedaddelt und nicht getestet.)

Geändert von nahpets (24. Jan 2016 um 13:58 Uhr) Grund: Fehler entfernt...
  Mit Zitat antworten Zitat
Monday

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

AW: Bild bewegen, wie Name übermitteln?

  Alt 24. Jan 2016, 16:55
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 Uhr.
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