我有
procedure TMainForm.FormCreate(Sender: TObject);
begin
DragAcceptFiles (Handle, True ) ;
end ;
但表单不接受拖动的文件 - 没有放置光标,没有触发 WM_DROPFILES 消息。
我的 FormShow 事件中有以下构造(出于不同的原因 - 在创建表单后我只想执行一次代码,并且 FormShow 在初始化期间多次触发):
procedure TMainForm.FormShow(Sender: TObject);
begin
if (not FRunOnce) then // as FormShow can be called twice - if Form.Position assigned to
begin
DragAcceptFiles (Handle, True ) ;
FRunOnce := True ;
end ;
end ;
所示位置的 DragAcceptFiles (Handle, True ) 仍然不起作用。如果我将它移到例程的顶部(因此它执行两次),它确实有效:
procedure TMainForm.FormShow(Sender: TObject);
begin
DragAcceptFiles (Handle, True ) ;
if (not FRunOnce) then // as FormShow can be called twice - if Form.Position assigned to
begin
FRunOnce := True ;
end ;
end ;
我发现的所有示例代码似乎都在 OnCreate 期间调用了 DragAccept。我的实验表明这还为时过早,就像 OnShow 的第一次大火一样。我确定我的代码在其他地方有问题,但可能是什么原因造成的?