Das
DragAcceptFiles im Frame-Create kannst du weglassen. Das Form muss weiterhin das DropFiles übernehmen, kann aber die Message einfach an das Frame weiterreichen. Die Methode im Frame muss dann auch kein Message-Handler mehr sein.
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(
Handle,True);
end;
procedure TForm1.WMDROPFILES(
var Message: TWMDropFiles);
begin
MyFrame1.HandleDropFiles(
Message);
end;
procedure TMyFrame.HandleDropFiles(
var Message: TWMDropFiles);
const
MAXFILENAME = 255;
var
cnt, fileCount : integer;
fileName :
array [0..MAXFILENAME]
of char;
begin
// how many files dropped?
fileCount := DragQueryFile(
Message.Drop, $FFFFFFFF, fileName, MAXFILENAME) ;
// query for file names
for cnt := 0
to -1 + fileCount
do
begin
DragQueryFile(
Message.Drop, cnt, fileName, MAXFILENAME) ;
//do something with the file(s)
memo1.Lines.Insert(0, fileName) ;
end;
//release memory
DragFinish(
Message.Drop) ;
end;