Also, wie das Bild am Mauszeiger kleiben bleibt, das weiß ich leider nicht.
Ich verstehe auch nicht, warum du die Drag & Drop Funktion nicht nutzen willst.
Dafür ist sie doch da.
Ich habe da zwei Beispiele. Eins mit Drag & Drop und eins ohne.
Das Image2 ist auf das Image1 zu ziehen.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
Image2.DragMode := dmAutomatic;
end;
procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if Source is TImage then
Accept := true;
end;
procedure TForm1.Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if Source is TImage then
begin
TImage(Sender).Picture.Icon.Assign(TImage(Source).Picture.Icon);
end;
end;
Zweites Beispiel:
Delphi-Quellcode:
.....
private
FDragImage: TImage;
public
end;
procedure TForm1.Image2MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FDragImage := TImage(Sender); // Image merken
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if FDragImage <> nil then
begin
TImage(Sender).Picture.Icon.Assign(FDragImage.Picture.Icon); // gemerktes Image ablegen
FDragImage := nil;
end;
end;
Hier gibt es noch eine Schwierigkeit.
Sollte das gemerkte Image nicht gedroppt werden, dann muss es wieder mit nil besetzt werden.
Mein Beispiel ist also so einfach nicht anzuwenden.
Ich hoffe aber, es gibt dir vielleicht neue Ideen.