У меня есть TImage на TPanel и другая (пустая) TPanels. Я хочу перетащить изображение от первой до второй панели с помощью перетаскивания.
Я действительно хочу видеть изображение, пока оно перемещается с одной панели на другой (полупрозрачный).
Думаю, я должен использовать TDragObject.GetDragImages
, но я не могу понять, как построить всю магию.
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;
Обновление - я нашел полезную статью: Внедрение профессионального перетаскивания в приложения VCL/CLX