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

Вниз

Логотип с ProgressBar   Найти похожие ветки 

 
Viktop   (2005-03-08 10:50) [0]

Как сделать, чтобы при запуске приложения появлялось окно с ProgressBar и отображало процесс создания остальных форм.


 
Anatoly Podgoretsky ©   (2005-03-08 10:52) [1]

LogoForm.Show


 
Paul-M   (2005-03-08 13:53) [2]

1. Создаеться форма LogoForm и все причиндалы на ней (Прогрессбары, имаджи и тд...)
2. В своойствах проекта в разделе про автоматически-создаваемые формы оставить автоматически создаваемую только "Заставочную форму"
3. В ней в событии OnShow в ручную создавать все формы, которые используються в приложении, соответственно в этот момент можешь делать с Прогрессбаром что хочешь
4. После создания всех форм Скрыть Заставку, а в событии Onhide вызвать метов Show главной формы

Путанно, но хоть так попытался ...


 
Юрий Зотов ©   (2005-03-08 15:15) [3]

> Paul-M   (08.03.05 13:53) [2]

Вряд ли это хорошее решение. Если заставочная форма сделана главной, то уничтожить ее нельзя и она будет бесполезно отнимать ресурсы.

Но ведь никто не мешает создать и показать заставочную форму, не делая ее главной. Тогда после загрузки программы ее можно будет спокойно уничтожить.


 
Viktop   (2005-03-12 05:52) [4]

В инете прочитал как создавать заставки к программа. Там говорилось, что необходимо создать отдельный проект, настроить вид формы как надо, сохраньть всё это и получившийся pas-файл кинуть в папку с проектом, затем подключить этот модуль в Project.dpr.
На этой форме у меня находится ProgressBar. При создании (автоматическом) каждой формы я хотел написать что-то типа этого SplashForm.ProgressBar, но ничего не получилось


 
KSergey ©   (2005-03-12 08:25) [5]

> Там говорилось, что необходимо создать отдельный проект,

Как-то не очень понятно зачем...
Вообще, действительно часто советуют пихать создание заставки в dpr.
Мое мнение - лучше упихать его в OnCreate главной формы (при условии, что процесс создания других автокрейтных форм весьма быстр, основную работу по инициализации приложений вынести туда же - в OnCreate главной формы). Это спасает от необработанных исключений, если таковые возникнут, кототые выпускать "наружу" в dpr - недопустимо. Хотя и там их можно придавить, конечно же.


 
Viktop   (2005-03-12 11:42) [6]

Мне тоже не очень-то понятно зачем.
Статья здесь http://www.delphiworld.narod.ru/base/show_splash2.html


 
Юрий Зотов ©   (2005-03-13 07:14) [7]

ИМХО, лучшее решение - действительно отдельный проект, но в виде DLL, а не Exe, причем написанной "на чистом API". В этой DLL для показа Splash-окна запускается отдельный поток со своим циклом выборки сообщений.

Почему это лучше? Во-первых, не раздувается Exe из-за одной малоиспользуемой формы. Во-вторых, такое Splash-окно будет нормально перерисовываться независимо от того, какие операции выполняются при старте программы (плохой перерисовкой Splash-окон грешат многие даже очень известные программы). В-третьих, если Splash-окно отражает логотип фирмы, то одна и та же DLL может использоваться для всех продуктов этой фирмы (получаем единообразие стиля и экономию кода).


 
Viktop   (2005-03-13 07:41) [8]

to Юрий Зотов
Если не затруднит, то можно по подробнее про создание DLL.
Код на создание окна WinAPI у меня есть, но это "чистая" форма. Как можно добавить прогрессбар и обновлять его?


 
Юрий Зотов ©   (2005-03-13 07:59) [9]

> Viktop   (13.03.05 07:41) [8]

> по подробнее про создание DLL.

Меню File - New - DLL. Подробнее про все остальное - это надо книжку писать.

> Как можно добавить прогрессбар

Поскольку это чистое окно (а не форма) и поскольку оно работает в отдельном потоке, то дельфишный прогресссбар тут не подойдет. Самое простое - рисовать свой при обработке WM_PAINT.

> и обновлять его

Из основной программы периодически посылать Splash-окну любое пользовательское сообщение, передавая в параметрах процент готовности. Получив его, окно запоминает этот процент и выполняет перерисовку.


 
Dell3r ©   (2005-03-13 12:38) [10]

На мой взгляд сначала нужно научиться вообще выводить заставку, потом научиться работать с DLL, и только потом задавать вопросы про создание DLL


 
Новичек :)   (2005-03-13 13:51) [11]

А как правильно обработать WM_PAINT ?
А то у меня отрисовывается только клиентская часть окна и не отрисовывается заголовок :)


 
Юрий Зотов ©   (2005-03-13 14:24) [12]

> Новичек :)   (13.03.05 13:51) [11]

Так WM_PAINT и служит именно для отрисовки клиентской области. А для отрисовки неклиентской области используется WM_NCPAINT.


 
Новичек :)   (2005-03-13 14:28) [13]

> Юрий Зотов ©   (13.03.05 14:24) [12]

Огромное спасибо :)



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

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

Наверх




Память: 0.5 MB
Время: 0.052 c
1-1110525335
seregka
2005-03-11 10:15
2005.03.27
Добавление информации в exe


1-1110810251
Chrom
2005-03-14 17:24
2005.03.27
Можно ли заблокировать клавиатуру и мышь программно?


14-1109786649
_silver
2005-03-02 21:04
2005.03.27
Белгородская сходка.


3-1109307125
alex_pv2
2005-02-25 07:52
2005.03.27
ADO+MSSQL


3-1108722587
Phoenix9000
2005-02-18 13:29
2005.03.27
Срочно. База данных Microsoft Access и программа для работы с ней