Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Две формы одного класса [D7, XP]


Виталька 2006 ©   (2006-09-07 12:59:00) 

Здравствуйте,  мастера.
Такая вроде несложная задача, но чето никак:(
У меня есть форма myForm ксасса TmyForm.
И я хочу создать ещё одну форму myFormR того же класса.
Написал
Application.CreateForm(TmyForm, myFormR);
и в модуле формы
var myForm, myFormR: TmyForm
Но при запуске создаётся форма myForm_1, и соответственно
все  обращения к myFormR на неё не влияют:(
В чём дело?


Виталька 2006   (2006-09-07 19:30:00) [1]

>А ты присваивал имя? Типа MyFormR.name:='MyFormR';?
Нет) Теперь всё понял. Запутался в понятиях "имя формы" и "переменная формы". Спасибо!


evvcom   (2006-09-07 16:33:00) [2]

> [4] Loginov Dmitry ©   (07.09.06 15:59)
> переменную формы можно использовать в обработчике события
> OnCreate.

С вариантом "несколько объектов класса TMyForm" этого делать нельзя, но можно использовать в обработчике Sender


Ega23   (2006-09-07 16:12:00) [3]


> Это что, как бы внутренее имя этой формы?


У тебя у базового класса уже есть Name=myForm


Германн   (2006-09-07 16:10:00) [4]


> 1. если у меня вторая форма называется myFormR, то при просмотре
> в Evaluate значения Self.name отображается myForm_1.

А ты присваивал имя? Типа MyFormR.name:='MyFormR';?


Loginov Dmitry   (2006-09-07 15:59:00) [5]

> 2. MyFormR:=TMyForm.Create(Application) эквивалентно Application.CreateForm(TmyForm, myFormR) ?


Не совсем.
CreateForm сначала инициализирует указатель, а только потом создает объект. Таким образом переменную формы можно использовать в обработчике события OnCreate.


Виталька 2006   (2006-09-07 13:21:00) [6]

Теперь работает.
Но остались вопросы:
1. если у меня вторая форма называется myFormR, то при просмотре в Evaluate значения Self.name отображается myForm_1. Это что, как бы внутренее имя этой формы?
2. MyFormR:=TMyForm.Create(Application)эквивалентно Application.CreateForm(TmyForm, myFormR)?


Ega23   (2006-09-07 13:05:00) [7]

var
MyFormR:TMyForm
begin
MyFormR:=TMyForm.Create(Application) (или от nil, если сам убивать будешь)


Loginov Dmitry   (2006-09-07 13:04:00) [8]

Обманываете.
Если
Application.CreateForm(TmyForm, myFormR);
выполнится, то указатель myFormR будет инициализирован.


Наверх

Титульная страница Поиск, карта сайта Написать письмо