![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Несколько 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]>в чём может быть проблема
В момент работы конструктора первой формы вторая еще не создана