当用DRAG-DROP拖曳是如何捕获当前鼠标位置

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        Panel1: TPanel;
        Label1: TLabel;
        procedure Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
          State: TDragState; var Accept: Boolean);
        procedure Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
        procedure Button1EndDrag(Sender, Target: TObject; X, Y: Integer);
        procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
          State: TDragState; var Accept: Boolean);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
      Accept := True;
      Caption := Format('X: [%d] Y: [%d]', [X, Y]);
    end;procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
      Caption := Format('X: [%d] Y: [%d]', [X, Y]);
    end;procedure TForm1.Button1EndDrag(Sender, Target: TObject; X, Y: Integer);
    begin
      TButton(Sender).Parent := TWinControl(Target);
      TButton(Sender).Left := X;
      TButton(Sender).Top := Y;
      Label1.Caption := TWinControl(Sender).Parent.Name;
    end;procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
      Accept := True;
    end;end.