作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已将文件扩展名与Delphi 2009程序相关联。我一直在使用命令行调用方法将文件名传递给我的Delphi程序,以便可以将其打开。
但是,我发现选择多个文件并同时单击它们时,它会在程序的单独实例中打开每个文件。 I asked about this,显然解决方案是使用one of the other two Windows methods: DDE or IDropTarget。
但是不建议使用DDE,MSDN建议使用IDropTarget方法。另外,Lars Truijens in his answer to me表示如果我已经在运行拖放功能,则IDropTarget可能会更好。
当前,这是我的放置处理程序:
private
procedure WMDropFiles(var WinMsg: TMessage);
message wm_DropFiles;
procedure TLogoAppForm.FormShow(Sender: TObject);
begin
DragAcceptFiles(Handle, true);
end;
procedure TLogoAppForm.WMDropFiles(var WinMsg: TMessage);
// From Delphi 3 - User Interface Design, pg 170
const
BufSize = 255;
var
TempStr : array[0..BufSize] of Char;
NumDroppedFiles, I: integer;
Filenames: TStringList;
begin
NumDroppedFiles := DragQueryFile(TWMDropFiles(WinMsg).Drop, $ffffffff, nil, 0);
if NumDroppedFiles >= 1 then begin
Filenames := TStringList.Create;
for I := 0 to NumDroppedFiles - 1 do begin
DragQueryFile(TWMDropFiles(WinMsg).Drop, I, TempStr, BufSize);
Filenames.Add(TempStr);
end;
OpenFiles(Filenames, '');
Filenames.Free;
end;
DragFinish(TWMDropFiles(WinMsg).Drop);
WinMsg.Result := 0;
end;
最佳答案
This page有一个在Delphi中实现IDropTarget的示例。 Here是来自Jedi Code Formatter的另一个。但是this library可能更好。除其他功能外,它还可以从Windows资源管理器中拖放,因此已经在TDropHandler类中支持IDropTarget。
关于delphi - 如何在Delphi中使IDropTarget与我的Drop Handler一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3613333/
我是一名优秀的程序员,十分优秀!