Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Заставка - ход загрузки программы


Страницы:   1 2

***_Diman_*** ©   (2005-08-08 12:05:00) 

Здраствуйте, Уважаемые!
Пишу прогу, прога загружается долго - грузит справочники. В этот момент ессно непонятно то ли прога сдохла то ли всё-таки работает, нужна в общем заставочка показывающая ход загрузки, индикатор живости программы. Пожалста подскажите как такое реализовать, лучше пните туда где пример лежит, очень нужно. Заранее спасибо.


Игорь Шевченко   (2005-08-10 12:21:00) [1]

Любите Demos - источник кода.


Ольга   (2005-08-10 10:42:00) [2]


> заставка должна быть по возможности самой простецкой
> ни у кого примерчика нету?

Вот самый примитив. Привожу его только для того, чтобы показать, что там смотреть нечего - никаких закидонов. Main - главная форма, FirstForm - заставка.

procedure TMain.FormCreate(Sender: TObject);
begin
 FirstForm:=TFirstForm.create(application);
 FirstForm.Caption:='Электронный журнал v'+versionNumber;
 FirstForm.StaticText1.Caption:=' инициация параметров ...';
 FirstForm.Show;
 application.ProcessMessages;
 FirstForm.StaticText1.Caption:=' связь с SQL сервером ...';
 FirstForm.StaticText1.Repaint;
 ...
 FirstForm.StaticText1.Caption:=' загрузка графиков ...';
 FirstForm.StaticText1.Repaint;
 ...
 FirstForm.Close;
end;


dmitry501   (2005-08-10 07:51:00) [3]

***_Diman_***   (10.08.05 7:48) [30]
Ну вот... Написали аж 30 постов, а ты опять все сначала.... :)


***_Diman_***   (2005-08-10 07:48:00) [4]

ни у кого примерчика нету? или хотя бы порядок действий вкраце - что за чем следует


***_Diman_***   (2005-08-09 15:50:00) [5]

кстати небольшой аддон - прога для КПК (снова я со своими проблемами!) а там МНОГО чего нельзя... например отвратно рисуется графика, а как подшивать к проге ресурсы (банальная вещь!) я так и не понял - компилер для ARMV ресурсы в упор не видит... ну и чёрт с ним конечно. так что заставка должна быть по возможности самой простецкой - лишь бы оператор видел что прога ЖИВА, и кое-чего сообщает (типа справочник такой-то загружен и т.п.)


***_Diman_***   (2005-08-09 15:41:00) [6]

>Юрий Зотов
dll не пойдёт. насчёт знания апи - прогу пишу но некоторые тонкости не всегда понимаю. регистрирую окна, в т.ч. и заставочное, окно судя по всему конечно создаётся :) а вот где именно вытолкнуть его наверх? в WndProc? и чем? SetForegroundWindow? на чистом апи редко доводилось воять, тем более окна, в основном только функционал программ - сами алгоритмы.


den303   (2005-08-09 14:46:00) [7]

Я в своё время делал отдельную программу-сплэш, которая запускала основную прогу и обменивалась с ней сообщениями для отображения загрузки ПрогрессБаром. Потом основная прога, загрузившись, отсылала сообщение о закрытии сплэш-проги. Кстати говоря, и номер версии от главной проги к сплэшу уходил через сообщения


Eraser   (2005-08-09 14:43:00) [8]

Вообще для не больших проектов, которые грузятся довольно быстро (есть исключения) я протиник сплэшов, особенно если он видим не только в процессе загрузки, а по таймеру, определённый "зашитый" интервал времени.


Eraser   (2005-08-09 14:41:00) [9]

Юрий Зотов ©   (09.08.05 11:52) [6]
Кода там действительно копейки, но если уж делать сплэш, то есть прямой смысл делать его с хорошей картинкой - а вот она уже может весить совсем не копейки.

В общем, делал я когда-то именно такой сплэш - DLL получилась более 600 кб. Естественно, именно из-за картинки (24-битный битмап размером 500х400), самого кода там всего-то килобайт на 20.


Для большого проекта, который распространяется на CD 600 Кб не критично, а вот для шароварщиков - лишние 600 Кб серьёзные затраты.
Тут ради экономии места можно картинку ZLib'ом сжать, а при загрузке - разжимать и загружать в TImage.


ANB   (2005-08-09 14:35:00) [10]

А еще можно Create главной формы перекрыть. Тоже работает.


Юрий Зотов   (2005-08-09 13:26:00) [11]

> Игорь Шевченко ©   (09.08.05 13:14) [22]

> инициализация от его действий быстрее не выполнится.

Не выполнится, факт. Но... снова см. [11]. Я ни в коем случае не ставлю себя на одну доску с MS или Borland, но и не считаю, что должен следовать их плохим (ИМХО) примерам.

Считаю, что должен следовать их хорошим примерам (благо, что таких предостаточно). Еще считаю, что качество должно быть. И максимальным. И везде, даже в мелочах.

Вот такая позиция. Можно с ней соглашаться, можно не соглашаться, но спорить по этому поводу смысла, видимо, нет.


Игорь Шевченко   (2005-08-09 13:14:00) [12]

Юрий Зотов ©   (09.08.05 13:06) [21]

Так мы с тобой об этом в прошлый понедельник говорили :)

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


Юрий Зотов   (2005-08-09 13:06:00) [13]

> Игорь Шевченко ©   (09.08.05 12:52) [15]

> С другой стороны, если процесс инициализации настолько долог,
> что пользователь успевает заскучать, то, наверное имеет смысл
> пересмотреть процесс инициализации? Например не
> инициализировать все сразу :)

Инициализация eE-enterprise может длиться и полминуты, и даже намного более (зависит от производительности и загруженности сети, а уж при удаленном соединении с сервером через модем... сам понимаешь). При этом инициализируется только то, без чего ну никак не обойтись. Пересматривать уже нечего.

В основном, по этой причине и был написан такой сплэш. Песня, а не заставка получилась.


Юрий Зотов   (2005-08-09 12:57:00) [14]

> Игорь Шевченко ©   (09.08.05 12:55) [17]

См. [11]. Добавить к этому мне нечего.


Leonid Troyanovsky   (2005-08-09 12:56:00) [15]


> Игорь Шевченко ©   (09.08.05 12:52) [15]
> Leonid Troyanovsky ©   (09.08.05 12:49) [13]
>
> А как заставка должна реагировать на действия пользователя
> ? :)


Ну, хотя бы, таскаться мышкой, или чем-то, что у него в руках.

--
Regards, LVT.


Игорь Шевченко   (2005-08-09 12:55:00) [16]

Юрий Зотов ©   (09.08.05 12:50) [14]

Вот если те же действия проделать с Word, Excel или Visual C, то поведение сплэша такое же, как и в Delphi. Я бы не сильно утверждал, что эти программы писали непрофессионалы.


TUser   (2005-08-09 12:55:00) [17]

> Юрий Зотов ©   (09.08.05 12:38) [11]

Не знаю - по мне лишь бы работало, а красиво ли оно отрисовывается не столь важно. Не думаю, что Delphi менее популярна, чем VS из-за неперерисовки сплеша :)


Leonid Troyanovsky   (2005-08-09 12:53:00) [18]


> Юрий Зотов ©   (09.08.05 12:23) [8]

> > Главной формой надо сделать форму-заставку
>
> И тогда при ее закрытии... приложение завершится. Чтобы
> этого не произошло, придется динамически переназначать свойство
> Application.MainForm, а оно ReadOnly. Поменять его


Заставку, конечно, не надо делать главной.
Т.е., достаточно TFormSplash.Create(nil)

--
Regards, LVT.


Игорь Шевченко   (2005-08-09 12:52:00) [19]

Leonid Troyanovsky ©   (09.08.05 12:49) [13]

А как заставка должна реагировать на действия пользователя ? :)

С другой стороны, если процесс инициализации настолько долог, что пользователь успевает заскучать, то, наверное имеет смысл пересмотреть процесс инициализации ? Например не инициализировать все сразу :)


Юрий Зотов   (2005-08-09 12:50:00) [20]

> Игорь Шевченко ©   (09.08.05 12:39) [12]

Запусти, например, справку. Потом запусти, например, Delphi - появится сплэш. Пока идет загрузка Delphi, повози окном справки по окну сплэша и посмотри, как идет его перерисовка. Кому как, а мне такое ОЧЕНЬ не нравится.

Вот зачем нужен отдельный поток - для качества. Даже в мелочах. Тем более, что этот поток, в общем-то, почти ничего и не делает, дополнительной нагрузки на CPU практически нет, загрузка программы практически не тормозится.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо