Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];

Вниз

Логотип с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.043 c
14-1110059947
0x011001
2005-03-06 00:59
2005.03.27
Сайт


1-1110967349
Marat
2005-03-16 13:02
2005.03.27
DateTimePicker


14-1110258293
Virgo_Style
2005-03-08 08:04
2005.03.27
8 марта


3-1109834628
Arnold
2005-03-03 10:23
2005.03.27
Как узнать индекс записи выбранной из DBGrid


3-1109325288
Mortal
2005-02-25 12:54
2005.03.27
Про тип Data в WinXP и Win98





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский