Как правильно обратиться к другой форме?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Как правильно обратиться к другой форме?

Сообщение GAMER » 06.02.2015 14:18:49

Есть Form1 и Form2.
В первой форме идет вызов
Application.CreateForm(TForm2,Form2);

Вызываю (создаю) 2 экземпляра Form2.

Как правильно обратиться к свойствам первого экземпляра Form2 и второго экземпляра Form2?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Как правильно обратиться к другой форме?

Сообщение zub » 06.02.2015 14:37:13

переделать процедуру создания так, чтобы созданные формы создавались не в Form2 а в ваши переменные через которые к формам вдальнейшем будет обращение
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как правильно обратиться к другой форме?

Сообщение GAMER » 06.02.2015 14:47:38

Э-э-э, не понимаю. Можно примерчик простой?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Как правильно обратиться к другой форме?

Сообщение zub » 06.02.2015 15:15:54

грубо говоря
Код: Выделить всё
var
  Form2a,Form2b:TForm2
...
Application.CreateForm(TForm2,Form2a);
Application.CreateForm(TForm2,Form2b);
...
Form2a.doSomething;
Form2b.doSomething;
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как правильно обратиться к другой форме?

Сообщение GAMER » 06.02.2015 15:24:58

Спасибо за подсказку, так и понял. Но что-то коряво закрытие форм работает. Разбираюсь.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Как правильно обратиться к другой форме?

Сообщение qivi » 06.02.2015 16:45:25

А разве не правильнее:

Код: Выделить всё
var
  Form2a,Form2b:TForm2
...

Form2a:=TForm2.Create(Self);
Form2b:=TForm2.Create(Self);



Ну по крайней мере я так практиковал.
Аватара пользователя
qivi
энтузиаст
 
Сообщения: 703
Зарегистрирован: 19.01.2009 13:45:54
Откуда: Россия

Re: Как правильно обратиться к другой форме?

Сообщение GAMER » 06.02.2015 17:03:10

Application.CreateForm(TForm2,Form2a);
Form2a:=TForm2.Create(Self);
Считаются идентичными. Как-то обсуждалось на данном форуме, вроде.

Меня смущает одна проблемка, пока не готов ее описать, так как не знаю, я туплю или баг таки.

Добавлено спустя 16 минут 47 секунд:
Проблемка следующая.
Создаю дочерные формы:
Application.CreateForm(TFrmFoto,FrmFoto1);
Application.CreateForm(TFrmFoto,FrmFoto2);
В дочерной форме есть такое:
Код: Выделить всё
public
    { public declarations }
    Stip: AnsiString;         

В основной форме вызываю: FrmFoto1.Stip:='1'; и FrmFoto2.Stip:='27';
При этом, когда делаю FrmFoto1.Close; то при деббагинге вижу значение Stip='27';
Почему?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Как правильно обратиться к другой форме?

Сообщение zub » 06.02.2015 17:26:56

емнип разница в том что первая форма созданная через Application.CreateForm будет главной и при закрытии ее закроется приложение, простой конструктор не устанавливает главную форму. Также раньше нельзя было создать CreateForm не наформошлепаную форму (без ресурсов), сейчас это регулируется через переменную RequireDerivedFormResource

Добавлено спустя 4 минуты 23 секунды:
>>Почему?
Телепаты в отпуске, сделай минимальный пример, по пути наверно сам разберешся))
zub
долгожитель
 
Сообщения: 2887
Зарегистрирован: 14.11.2005 23:51:26

Re: Как правильно обратиться к другой форме?

Сообщение GAMER » 06.02.2015 18:00:31

Да, стоит написать пример с нуля, возможно где-то в коде что-то не так.

PS. По ходу у меня бага где-то. Тестовый пример отработал правильно.

Добавлено спустя 25 минут 36 секунд:
Нашел багу у себя. Как всегда, не там где думал изначально :) Спасибо за подсказки.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 252

Рейтинг@Mail.ru
cron