Delphi - когда вызывать DragAcceptFiles

У меня есть

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, Верно) в показанном положении по-прежнему не работает. Если я перемещу его в начало процедуры (чтобы он выполнялся дважды), он действительно работал:

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 ;

Весь найденный мной пример кода, похоже, вызывает DragAccept во время OnCreate. Мои эксперименты показывают, что это слишком рано, как и первый пожар OnShow. Я' Я уверен, что что-то не так с моим кодом в другом месте, но что может быть причиной этого?

5
задан rossmcm 13 October 2010 в 21:00
поделиться