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