Сначала создайте форму Delphi, но не основную форму

Delphi 10.3.3

В мобильном FMX-проекте я хочу создать форму перед основной.

Эта форма содержит компоненты привязки приложений, которые взаимодействуют с Codesite. Он должен быть создан в первую очередь, чтобы основная форма FormCreate () могла его использовать.

Однако создание этой формы сначала приводит к тому, что она становится основной формой.

Как мне создать форму раньше всех остальных, но чтобы она не стала основной формой?


person Mike at Bookup    schedule 08.02.2020    source источник
comment
Возможно, в FMX все по-другому, но в VCL вы просто создаете его, вызывая конструктор, а не Application.CreateForm.   -  person David Heffernan    schedule 08.02.2020


Ответы (1)


Используйте TDataModule для размещения этих компонентов привязки вместо формы. В файле проекта (.dpr) переместите создание модуля данных перед основной формой. Его установочный код будет запущен перед основной формой, и компоненты будут доступны во время основных форм OnCreate.

TDataModule нейтральна к работе с рамой и имеет свойство ClassGroup, которое определяет структуру. Он контролирует, какие компоненты можно выбрать на палитре инструментов.

person Tom Brunberg    schedule 08.02.2020
comment
Я добавил TDataModule. Я не могу найти, где он создан, но это после вызова FormCreate () основной формы. - person Mike at Bookup; 11.02.2020
comment
@Mike Он добавляется в файл вашего проекта (.dpr), который вы можете увидеть, если выберете Project - View source в меню. Тогда просто сделайте то, что я уже сказал в своем ответе: В вашем файле проекта (.dpr) переместите создание модуля данных перед основной формой. Например. строка типа Application.CreateForm(TDataModule26, DataModule26); перемещена до создания первой фактической формы: Application.CreateForm(TForm25, Form25); - person Tom Brunberg; 11.02.2020
comment
Это было странно. После добавления в проект он там не появился. Я работал над этим, удаляя его из проекта и добавляя строки в его блоки инициализации и завершения, чтобы создать и освободить его. Тем не менее, я попытался еще раз добавить его обратно в проект, и, конечно же, на этот раз он добавил Application.CreateForm (TCodeSite, Codesite); в конце. Спасибо еще раз. - person Mike at Bookup; 11.02.2020