Thema: Delphi Move eines TImage

Einzelnen Beitrag anzeigen

Satyr

Registriert seit: 8. Feb 2012
Ort: Essen
305 Beiträge
 
Delphi 10.4 Sydney
 
#1

Move eines TImage

  Alt 27. Jun 2013, 18:30
Guten Abend,

ich werkel gerade an einem kleinem Programm das aus mehreren Bildern eine Art Collage erstellt. Vom Grundgerüst recht einfach.
Eine PaintBox, darauf ein gleichgroßes TImage als optionaler Hintergrund. Darauf erzeuge ich dann wieder TImages mit beliebigen Bildinhalten. Das Canvas der PaintBox wird zum Schluss abgespeichert und ich habe das Bild.
Klappt bis dahin auch wunderbar.
Jetzt wollte ich einbauen das man die oberen TImages verschieben kann.
Erst ein einfaches Drag&Drop versucht, welches aber nicht so funktioniert hat wie es sollte. Das Drop war nicht 100% auf den richtigen Koordinaten und der Mauszeiger nicht das TImage.
Also versuche ich momentan schlicht die Komponente zu bewegen. Mit folgendem Code:

Delphi-Quellcode:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 SetCapture(TWinControl(Sender).Handle);
 GetCursorPos(oldPos);
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
const
  minWidth = 20;
  minHeight = 20;
var
  newPos: TPoint;
  frmPoint : TPoint;
begin
    with TImage(Sender) do
    begin
        GetCursorPos(newPos);
        //Screen.Cursor := crSize;
        Left := Left - oldPos.X + newPos.X;
        Top := Top - oldPos.Y + newPos.Y;
        oldPos := newPos;
    end;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
    Screen.Cursor := crDefault;
    ReleaseCapture;
end;
Das Problem ist, ich kann es nicht mal versuchen zu testen. Sobald der Mauszeiger über dem betreffenden TImage ist, verschwindet dieses. Komplett. Nichts mehr da.
Ich verstehe einfach nicht wieso.

Jemand eine Idee?

Gruß,
Andreas
  Mit Zitat antworten Zitat