Форум: "Основная";
Текущий архив: 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.076 c