![]() |
Drag & Drop von Image zu Image (nicht über D&D-Funkt
Hi,
ich möchte ein Bild aus einem Image per Drag&Drop in ein anderes ziehen können. Dabei weiß ich das es eine Funktion von Delphi gibt, welche ich aber nicht benutzen will. Ich möchte gerne: Das Bild soll wenn möglich immer am Mauszeiger sein ^^. Soll dann von einem Image in ein anderes gelegt werden. Wenn das Bild aus Image 1 zu Image 2 gebracht wurde, soll sich das Bild in Image 1 ändern. Hoffe ihr versteht was ich meine, vielleicht kann mir das mal jemand erklären wie das genuaer gehen soll. Ich habe irgendwie keinen Plan wie ich weitermachen soll, Kann mir niemand weiterhelfen? Das hier ist mal ein Auszugs des Anfangs:
Delphi-Quellcode:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer); begin KoX:=Mouse.CursorPos.X; Label1.Caption:=inttostr(KoX); KoY:=Mouse.CursorPos.Y; Label2.Caption:=inttostr(KoY); end; procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin KoX:=Mouse.CursorPos.X; KoY:=Mouse.CursorPos.Y; image1.Left:=KoY; end; |
Re: Drag & Drop von Image zu Image (nicht über D&D-F
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:
Zweites Beispiel:
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;
Delphi-Quellcode:
Hier gibt es noch eine Schwierigkeit.
.....
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; 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. |
Re: Drag & Drop von Image zu Image (nicht über D&D-F
Hi,
Du kannst Z.b. auf ein Klick auf einer Image Komponente das Bitmap einer Variable übergeben:
Delphi-Quellcode:
Dann einfach bei OnMouseMove von der Image Komponente per TCanvas.Draw() aufs Formular Zeichen dabei immer vorher Refresh; aufrufen. Dann bei Image "OnMouseUp" prüfen ob du über die anderer Image Komponente bist. Wenn ja, dann das Bitmap an der Image Komponente übergeben. Und ebenfals nochmal Refresh; aufrufen.
Var Bitmap: TBitmap
MFG Sven! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz