写如下的代码能实现吗?
procedure TForm1.FileListBox1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then 
    with Sender as TFileListBox do 
    begin
      if ItemAtPos(Point(X, Y), True) >= 0 then 
        BeginDrag(False); 
    end;
end;

解决方案 »

  1.   

    把DrogMode设置为dmAutomatic
    在DragDrop事件写啦
      

  2.   

    Source:
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormDragOver(Sender, Source: TObject; X, Y: Integer;
          State: TDragState; var Accept: Boolean);
        procedure FormDragDrop(Sender, Source: TObject; X, Y: Integer);
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
       if Button = mbLeft then
       begin
        Button1.DragMode := dmManual;
        Button1.BeginDrag(False,-1);
       end;
    end;procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
      Accept := Source is TButton;
    end;procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
    begin
      With Button1 do
      begin
        Button1.Left := X;
        Button1.Top := Y;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Caption := 'Hello World!';
    end;end.