Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.11.16;
Скачать: CL | DM;

Вниз

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

 
Developer   (2008-10-07 05:38) [0]

Здравствуйте,сталкнулся я с такой проблемой.
Создал проект,потом добавил 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.


 
MBo ©   (2008-10-07 07:06) [1]

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


 
pavel_guzhanov ©   (2008-10-07 09:03) [2]

А где form2new.create?


 
pavel_guzhanov ©   (2008-10-07 09:05) [3]


> А где form2new.create?


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


 
Palladin ©   (2008-10-07 09:05) [4]

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


 
MsGuns ©   (2008-10-07 09:18) [5]

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


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


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

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

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

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


 
Palladin ©   (2008-10-07 14:14) [7]


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

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


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


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

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


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


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

Почему ?


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

Всем спасибо :) я нашол решение оказывается оно довольно простое.
нашол на 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;

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


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


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

А это:

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

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


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


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


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


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


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

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


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


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

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


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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2008.11.16;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.014 c
2-1223026415
Развёртка
2008-10-03 13:33
2008.11.16
Развернуть досовское окноий экран программы на весь экран


15-1221736846
Vlad Oshin
2008-09-18 15:20
2008.11.16
не знает ли кто ссылку на PL/SQL Developer, приемы работы?


15-1221713615
avr
2008-09-18 08:53
2008.11.16
Бортовой компьютер на микроконтроллере.


4-1200229460
Navi
2008-01-13 16:04
2008.11.16
Управление LPT - перевести код с VB на Delphi


2-1223449935
JustI
2008-10-08 11:12
2008.11.16
TLargeIntField