![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Форумчанин
Регистрация: 06.09.2007
Сообщений: 908
|
![]()
Здравствуйте, уважаемые программисты!
Сейчас постараюсь изложить суть своей проблемы: у меня программа работающая с БД, при запуске открывается около минуты и поэтому я хочу сделать форму показываущую загрузку программы, ну знаете как в играх или в каких-лобо программах. Если я правильно мыслю, то, что бы это сделать я: создаю форму(пишу там загрузка программы и т.д.)->подклучаю к главной форме(на котором вся БД)->и по событии FormCreate пишу: form1.Show; form2.close; Да и еще, посколько форму загрузки я создал после своей главной формы, то что бы установить приоритет, т.е. сделать, что бы окно загрузки отображалось в первую очередь, я из пункта меню делаю: проект->опции->и в выпадающем списке выбираю эту окно загрузки. Но такой вариант не катит! Ошибка заключается в том, что сам этот код нельзя писать по событии FormCreate. Подскажите, пожалуйста, как мне правильно реализовать свою задачу? |
![]() |
![]() |
![]() |
#2 |
Реанимируюсь...
Участник клуба
Регистрация: 19.07.2007
Сообщений: 1,445
|
![]()
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе... P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows" |
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 06.09.2007
Сообщений: 908
|
![]()
AlDelta, спасибо за ссылку! Буду теперь разбираться.
Все перебрал по ссылкам, десятки раз перечитывал, почти весь день убил на это, но к сожалению так и не смог разобраться, что к чему. Эх... ладно на сегодня, пожалуй хватит. Завтра снова в бой, но должен же я сделать эту заставку, а казалоль такая простая вещь. Последний раз редактировалось zetrix; 04.02.2008 в 21:36. |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
![]()
В принципе, всё не так уж и сложно. Допустим, имеется главная форма (TMainForm) и форма-заставка (TSplashForm). Нужно убрать форму-заставку из списка автосоздаваемых (в опциях проекта), а в исходниках проекта записать нечто следующее:
Код:
В главной форме, в обработчике OnCreate можно форму-заставку удалить. А еще лучше это сделать в обработчике OnShow, т.е. непосредственно перед появлением главной формы на экране, когда вся инициализация уже гарантированно закончилась. Например: Код:
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 06.09.2007
Сообщений: 908
|
![]()
Все ребят, спасибо большое, все получилось!
|
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 06.09.2007
Сообщений: 908
|
![]()
Все ребят, получилось
![]() Если кому не составит труда, то объясните, пожалуйста, я правда даже не знаю как правильно назвать этот раздел, где содержится информация об используемых формах. Для чего используется этот раздел, ну понятно, что я его использовал для создания заставки, но ведь это не основное его назначение? Что это за зверь такой? Что б не быть голословным и пояснить, что я имею ввиду привожу код этого раздела: Код HTML:
program BDDiska; uses Forms, FormDisk in 'FormDisk.pas' {Form1}, PoiskTowaraUnit2 in 'PoiskTowaraUnit2.pas' {Form2}, spravka_o_razrabotchike in 'spravka_o_razrabotchike.pas' {Form3}, zayavka_na_sotrudnichestvo in 'zayavka_na_sotrudnichestvo.pas' {Form4}, karta_stavrop in 'karta_stavrop.pas' {Form5}, zagruzka in 'zagruzka.pas' {Form6}; {$R *.res} begin Application.Initialize; Form6:=TForm6.Create(Application); form6.Visible:=true; form6.BringToFront; Application.ProcessMessages; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm3, Form3); Application.CreateForm(TForm4, Form4); Application.CreateForm(TForm5, Form5); Application.Run; end. И еще для полного понимания Jeni или кто знает, поясните, пожалуйста, вот эту строчку кода: form6.BringToFront; // form6 - эта форма заставки. |
![]() |
![]() |
![]() |
#7 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Эта строчка помешает окно на перед чтоб его увидеть можно было.
I'm learning to live...
|
![]() |
![]() |
![]() |
#8 | |||
Форумчанин
Регистрация: 31.05.2007
Сообщений: 486
|
![]()
Я не совсем понял, что именно требуется пояснить, но попробую (так, как я понял вопрос).
Цитата:
Цитата:
Цитата:
Application.CreateForm(TFormX, FormX); - последовательное создание форм. Форма, которая таким образом создается первой и является главной. Application.Run; - собственно запуск программы. По большому счету запускается процедура обработки сообщений - циклически просматривает очередь сообщений для данной программы. Если сообщение есть - вызывается некоторый обработчик сообщения (в итоге эти сообщения воспринимаются компонентами как события). Если сообщений нет - цикл повторяется. И так до выхода из программы. Это, конечно, упрощенная модель. form6.BringToFront; - необязательная строка, но без нее форма-заставка может оказаться иногда закрыта другими окнами. Application.ProcessMessages; - тоже необязательно, но очень желательно, т.к. прорисовка окон (и вообще, любых компонентов) имеет очень низкий приоритет. В результате, если, например, главная форма в момент создания выполняет ресурсоемкие операции, то заставка, хотя формально и запустится, но может просто не прорисоваться на экране. |
|||
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
![]()
[QUOTE=фЁдОр;72445]
program BDDiska; uses Forms, FormDisk in 'FormDisk.pas' {Form1}, PoiskTowaraUnit2 in 'PoiskTowaraUnit2.pas' {Form2}, spravka_o_razrabotchike in 'spravka_o_razrabotchike.pas' {Form3}, zayavka_na_sotrudnichestvo in 'zayavka_na_sotrudnichestvo.pas' {Form4}, karta_stavrop in 'karta_stavrop.pas' {Form5}, zagruzka in 'zagruzka.pas' {Form6}; {$R *.res} begin Application.Initialize; Form6:=TForm6.Create(Application); form6.Visible:=true; form6.BringToFront; Application.ProcessMessages; Application.CreateForm(TForm1, Form1); Application.CreateForm(TForm2, Form2); Application.CreateForm(TForm3, Form3); Application.CreateForm(TForm4, Form4); Application.CreateForm(TForm5, Form5); Application.Run; end. [QUOTE] Вообщето правильнее формы динамически создавать и удалять из памяти когда нужно, может здесь такой случай что всё сразу надо создать ![]() |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 06.09.2007
Сообщений: 908
|
![]()
Спасибо, ребят, большое, что просветили меня! Правда интересно стало, что формы можно создавать и удалять динамически, с целью экономии памяти, но это, пожалуй, для следующей темы. Правда, чуть позже.
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
помощь в событии onkeydown | Titan123 | Общие вопросы Delphi | 2 | 11.08.2008 17:26 |
Открытие нового окна, при нажатии на кнопку(Delphi). | sergey31 | Помощь студентам | 2 | 24.05.2008 14:48 |
открытие окна в Delphi | R11 | Помощь студентам | 3 | 14.02.2008 16:23 |
Программа отлично работает при событии Button1Click, и отказывается работать в FormCreate | xTANATOSx | Общие вопросы Delphi | 3 | 19.09.2007 08:02 |
открытие окна в delphi | dima00 | Общие вопросы Delphi | 14 | 27.06.2007 23:25 |