![]() |
Цель - создание окошка содержащее картинку и отображающее процесс запуска программы (как это делается при старте PhotoShop'а).
Имеем - форму frmSplashScreen (не автосоздаваемую) с размещенным на ней экземпляром TImage (imgSplash) и загруженной в него картинкой. На форме имеется также экземпляр TLable (lInfo) куда будем писать информацию о выполняемой работе на этапе загрузки программы (можно было бы выводить прямо на канву, но пусть так будет). Вся работа по инициализации выполняется в обработчике события OnCreate главной формы frmMain (которое до поры, до времени невидимо - Visible:=False), откуда на различных этапах по идее в frmSplashScreen.lInfo.Caption записываются различные строки отражающие идущую работу. Реализация - файл проекта Project.dpr: Код:
Begin Код:
frmSplashScreen.lInfo.Caption:='Инициализация регистров...'; Код:
frmSplashScreen.lInfo.Caption:='Инициализация регистров...'; Итого - SplashScreen реализован, но не до конца - нельзя записывать в него уточняющую информацию об этапах инициализиции. Вопрос - что подскажите, господа? [s]Исправлено: Prisoner, 6:41 8-10-2003[/s] |
У меня есть альтернативный вариант показа сплэш скрина:
Делаешь новую форму, размещаешь на ней все, что угодно, и при запуске программы на событие главной формы OnShow делаешь вот так SplashScreen.ShowModal; У тебя показивается сплэш форма, а главная форма не показывается пока не закроется сплэш..... А дальше делаешь все как ты делал. Изюминка этого метода - простота!!!! Не надо лазить по Project.dpr и нет никакого гемороя!!!! Сам так всегда делаю..... Если будут проблемы пиши.... |
Spiderman
Хм... а порядок создания форм какой в таком случае? Или форма Splash создается там же в OnShow? Оки попробую, в самом деле просто... |
Порядок создания форм не имеет значения!!!!
Дело вот в чем, сначала ведь все формы создаются, а потом показиваються, так ведь? Вот, у тебя формы создадуться, а потом наступит евент OnShow, вот он и покажет твой сплеш!:) |
Естественно у тебя буде вылетать Access vialation, сам подумай, ведь ты свой splash создаешь локально и естественно твоя frmMain о нем ничего не знает, поэтому нужно этот splash перевести в зону видимости frmMain, например введи "переменную" типа TForm в frmMain, далее после создания splasha присвой его этой переменной и далее работай в frmMain с этим объектом как со splash.
|
Время: 05:30. |
Время: 05:30.
© OSzone.net 2001-