Почему form.show вызывается перед form.create в firemonkey?


10

Если основная форма не установлена ??для видимости в дизайнере, тогда вызов OnCreate заставит форму быть видимой после завершения строительства (и, следовательно, после того, как она была запущена).procedure TApplication.CreateMainForm; var I: Integer; begin if FMainForm = nil then begin // here creating form... end; if FMainForm <> nil then FMainForm.Visible := True; //** force visible here end;

Visible

В противном случае Visibleсвойство формы устанавливается во время вызова TCommonCustomForm.Loaded(), который вызывается потоковой системой DFM во время построения формы и, таким образом, запускается, OnShowкогда форма становится видимой. OnCreateне не вызываются , пока после завершения строительства, после того, как ДФМ потоковый.

Суть в том, что вы не должны делать предположений о том, когда эти события будут выполнены. Если вам нужно контролировать порядок, в котором все происходит, вам нужно сделать это явно.

Дельфы, FireMonkey, Дельфи-10-сиэттл,

delphi,firemonkey,delphi-10-seattle,

4

Ответов: 1


10

Если основная форма не установлена ??для видимости в дизайнере, тогда вызов OnCreate заставит форму быть видимой после завершения строительства (и, следовательно, после того, как она была запущена).procedure TApplication.CreateMainForm; var I: Integer; begin if FMainForm = nil then begin // here creating form... end; if FMainForm <> nil then FMainForm.Visible := True; //** force visible here end;

Visible

В противном случае Visibleсвойство формы устанавливается во время вызова TCommonCustomForm.Loaded(), который вызывается потоковой системой DFM во время построения формы и, таким образом, запускается, OnShowкогда форма становится видимой. OnCreateне не вызываются , пока после завершения строительства, после того, как ДФМ потоковый.

Суть в том, что вы не должны делать предположений о том, когда эти события будут выполнены. Если вам нужно контролировать порядок, в котором все происходит, вам нужно сделать это явно.

Дельфы, FireMonkey, Дельфи-10-сиэттл,
Похожие вопросы