10
我在TPanel和其他(空)TPanel上有一個TImage。我想拖動 圖像從第一個到第二個面板使用拖放。拖放時移動圖像
我實際上希望在從一個面板移動到另一個面板時()看到圖像(半透明)。
我想我應該使用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;
更新 - 我發現了一個有用的文章:Implementing Professional Drag & Drop In VCL/CLX Applications
謝謝@bummi。你的代碼非常有幫助! – ZigiZ