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

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

Несколько Form в проекте,Показ Формы.


Developer ©   (2008-10-07 05:38:00) 

Здравствуйте,сталкнулся я с такой проблемой.
Создал проект,потом добавил 2 новых формы в проект,
Теперь главная форма под названием Form1, две другии соотвественно назвал Form3, и самую выжную для моего проекта Form2new.
Теперь задача состоит в том что бы при собатии эта форма Form2new показалась на экране,делаю так.


Procedure TForm1.FormCreate(Sender: TObject);
Begin
//
//

Try
 Form2new.Show;//Пытаемся отобразить форму
Except
ShowMessage('Ошибка');
end;

end;


Возникает ошибка,и форма не отображается,
В Uses конечно же добавлен модуль формы
Uses UnitForm2new;
А в Опциях проекта стоит
Auto-create Forms;
Form1
Form3
Form2new

В свойствах формы Form2new стоит Visible:=False;
И все равно ошибка.
Я решил попробовать поставить Visible:=True;
И закоментировав код ниже

Procedure TForm1.FormCreate(Sender: TObject);
Begin
//
//

// Try
//  Form2new.Show;//Пытаемся отобразить форму
// Except
// ShowMessage('Ошибка');
// end;

end;


Форма спокойно отобразилась,в чём может быть проблема и как правельно отображать формы подскажите?

Ещё добавлю что ошибка возникает если обращаещься к любым обьектам на форме например
Form2new.Button1.Active:=False; Тоже возникает ошибка.

Система Delphi 2007 , Windows Vista Ultimate Sp1.


Developer   (2008-10-07 19:25:00) [1]

Ладно так и сделаю В правую сторону, в любом случае проблем и ошибок пока не возникало,спасибо:)


Германн   (2008-10-07 19:22:00) [2]

прав Ильнее - "в правую сторону"
:)


Developer   (2008-10-07 19:18:00) [3]


> Значит теперь у тебя в программе есть два экземпляра одной
> и той же формы TForm2new.

Почему?,я на экране вижу две разные формы,
Или мне стоит перенести её из
Auto-create Forms;
Form1
Form3
Form2new
В правую сторону?,или удалить её от туда?
как будет правельнее сделать?


Германн   (2008-10-07 18:17:00) [4]


> Да оставил как было,это не трогал.

Значит теперь у тебя в программе есть два экземпляра одной и той же формы TForm2new.


Developer   (2008-10-07 17:47:00) [5]


> > Теперь всё работает отлично.А это:> Auto-create Forms;
> > Form1> Form3> Form2new оставил как было?


Да оставил как было,это не трогал.


Германн   (2008-10-07 16:51:00) [6]


> Теперь всё работает отлично.

А это:

> Auto-create Forms;
> Form1
> Form3
> Form2new

оставил как было?


Developer   (2008-10-07 15:34:00) [7]

Всем спасибо :) я нашол решение оказывается оно довольно простое.
нашол на http://www.delphiworld.narod.ru/base/form_life.html
информацию

Рождение

OnCreate -> OnShow -> OnActivate -> OnPaint -> OnResize -> OnPaint ...

OnCreate

Событие OnCreate возникает при создании TForm и только один раз. При создании формы (у каторой свойство Visible установлено в True), события произойдут в следующем порядке: OnCreate, OnShow, OnActivate, OnPaint. В обработчике события OnCreate можно сделать какие-либо инициализационные действия, однако, любые объекты созданные в OnCreate будут уничтожены в событии OnDestroy.

Procedure TForm1.FormCreate(Sender: TObject);
Begin
//
//

Try
   Form2new:=TForm2new.Create(AppLication);//Этого нехватало
   Form2new.Show;//показываем форму
Except
ShowMessage('Ошибка');//Ошибка не возникает так как теперь всё работает
end;

end;


у Form2new ставим
formstyle:=fsStayOnTop;//что бы она поверх отобразилась
Visible:=False;

Теперь всё работает отлично.


Developer   (2008-10-07 14:22:00) [8]


> ПравЕльно никак не сделать, увы :(

Почему ?


Германн   (2008-10-07 14:18:00) [9]


> Подскажите как правельно сделать?

ПравЕльно никак не сделать, увы :(


Palladin   (2008-10-07 14:14:00) [10]


> а то проект уже 2 дня на одном месте стоит.

:) вот и пусть стоит... нафих нафих...
"убей бобра - спаси дерево!" :)


Developer   (2008-10-07 14:11:00) [11]


> Автопоказ "основной" формы надо делать в событии OnActivate
> гл.формы. А вообще, если Form1 является заставкой (splash),
>  то и делать ее надо как заставку (примеров в инете моря)

если можно то пожалуста более подробно обьяснить, а то я несовсем понел решение проблемы,касаемо Автопоказа что там написать?.

У меня главна форма Form1 она запускается когда запускаеш приложение, потом на форме будет показан видео ролик(в будущем планирую реализовать),потом когда он закончится,должен отобразится Form2new
Что во всех книгах и советуют использовать Show для показа.
Я пишу игру и показ Form2new для меня очень важен там будет и настройки многочисленые и загрузка и .т.д

Подскажите как правельно сделать?,а то проект уже 2 дня на одном месте стоит.


MsGuns   (2008-10-07 09:18:00) [12]

Автопоказ "основной" формы надо делать в событии OnActivate гл.формы. А вообще, если Form1 является заставкой (splash), то и делать ее надо как заставку (примеров в инете моря)


pavel_guzhanov   (2008-10-07 09:05:00) [13]


> А где form2new.create?


Ой, пардон, невнимательно прочитал вопрос :о)


Palladin   (2008-10-07 09:05:00) [14]

в dpr, сразу после создания главной


pavel_guzhanov   (2008-10-07 09:03:00) [15]

А где form2new.create?


MBo   (2008-10-07 07:06:00) [16]

>в чём может быть проблема
В момент работы конструктора первой формы вторая еще не создана


Наверх

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