как инициализировать форму, созданную дизайнером в delphi? - PullRequest
0 голосов
/ 07 мая 2020

как инициализировать форму, если, например, у меня есть одна форма, созданная с помощью конструктора, и я хочу, чтобы вторая форма была отдельной, но работала бы в моем полноэкранном режиме. вторая форма также имеет параметры, в которые я хочу записать, но получаю нарушение доступа.

Сейчас я пытаюсь получить доступ к этим переменным второй формы в методе formcreate первой формы. но, как я уже сказал, у меня нарушение прав доступа, поэтому я предполагаю, что мне нужно инициализировать вторую форму для доступа к переменным в этой форме, но я не знаю, как это сделать, и где подходящий способ сделать это

1 Ответ

3 голосов
/ 07 мая 2020

Вы делаете это неправильно. Инициализация одной формы не должна зависеть от существования другой формы. Вы должны сделать одно из трех:

1) (Предпочтительно) Переместить поля из TForm2 в неформальный CLASS, определенный в UNIT, который вы включаете в Form1.PAS и Form2.PAS, и что затем вы создаете из своего TForm1.FormCreate

2) (Только если вы не можете сделать 1) Отложите доступ к полям Form2 до OnActivate Form1 и убедитесь, что OnActivate вызывается только один раз:

PROCEDURE TForm1.OnActivate(Sender : TObject);
  BEGIN
    OnActivate:=NIL;
    <Access Form2.Field>
  END;

3) (Только если 1 или 2 невозможно отменить) Создать экземпляр Form2 с FormCreate Form1 (и удалить его из автоматически созданных форм):

PROCEDURE TForm1.FormCreate(Sender : TObject);
  BEGIN
    Application.CreateForm(Form2,TForm2); // Or Form2:=TForm2.Create(Application);
    <Access Form2.Field>
  END;

Из этих трех вариантов 1) является абсолютно предпочтительным. ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...