Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 

Re: Drag & Drop vom Explorer in ListView

  Alt 21. Mai 2007, 22:06
Hi,

mit Subclassing geht es bei mir dann aber doch.
Delphi-Quellcode:
  private
    OldWindowProc: TWndMethod;
    procedure LvSubClassWndProc(var Message: TMessage);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses
  shellapi;

{$R *.dfm}

procedure TForm1.LvSubClassWndProc(var Message: TMessage);
var
  i, Counts, Size: Integer;
  PCharFileName: PChar;
begin
  if Message.Msg = WM_DROPFILES then
  begin
    PCharFileName:=nil;
    Counts := DragQueryFile(Message.WParam, $FFFFFFFF, PCharFileName, 255);
    for i := 0 to Counts - 1 do
    begin
      Size:=DragQueryFile(Message.WParam, i, nil, 0) + 1;
      PCharFileName:=StrAlloc(Size);
      DragQueryFile(Message.WParam, i, PCharFileName, Size);
      showmessage(String(PCharFileName));
      StrDispose(PCharFileName);
    end;
    DragFinish(Message.WParam);
  end;
  OldWindowProc(Message);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldWindowProc:= listview1.WindowProc;
  listview1.WindowProc:= LvSubClassWndProc;
  DragAcceptFiles(listview1.Handle, True);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  listview1.WindowProc:= OldWindowProc;
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat