Mam obraz na TPanel i inne (puste) TPanels. Chcę przeciągnąć obraz z pierwszego do drugiego panelu za pomocą przeciągania i upuszczania.Przenoszenie obrazów podczas przeciągania i upuszczania
Rzeczywiście chcę zobaczyć obraz, gdy przechodzi on z jednego panelu do innego (półprzezroczysty) .
Myślę, że powinienem użyć TDragObject.GetDragImages
, ale nie mogę wymyślić, jak skonstruować całą magię.
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.ControlStyle := Image1.ControlStyle + [csDisplayDragImage]; // ???
TImage(Sender).BeginDrag(False);
end;
procedure TForm1.Image1StartDrag(Sender: TObject; var DragObject: TDragObject);
begin
// ???
end;
procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
if (Source is TImage) then
Accept := TImage(Source).Parent <> Sender;
end;
procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
if (Source is TImage) then
begin
TImage(Source).Parent := TPanel(Sender);
TImage(Source).Align := alClient;
end;
end;
Update - Znalazłem przydatnych artykuł: Implementing Professional Drag & Drop In VCL/CLX Applications
dziękuję @bummi. Twój kod był bardzo pomocny! – ZigiZ