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

Вниз

Визуализация длительной загрузки   Найти похожие ветки 

 
Ega23 ©   (2006-07-27 18:04) [0]

Программа достаточно долго (секунд 20-30) грузится. Из БД читается куча параметров, идёт инициализация и т.п.
Хочется сделать что-нибудь, типа сплэш-формы с отображением статуса загрузки (в текстовом виде):
- Загрузка модели из БД
- Инициализация графики
и т.п.

Вижу это так: есть поток, в котором, собственно, сплэш-форма; есть критическая секция, которую поток опрашивает. Если находит новый текст - кладёт на сплэш-форму.
Из основного потока, по мере инициализации данных, идёт отписка сообщений через ту же крит.секцию.

Правильной дорогой иду, или можно проще сделать?


 
Сергей М. ©   (2006-07-27 18:11) [1]

Если сплэш-форма - это VCL-форма, то доп.поток здесь теряет всяческий смысл.


 
Ega23 ©   (2006-07-27 18:14) [2]

А как лучше?


 
Desdechado ©   (2006-07-27 18:15) [3]

здесь тупо в лоб, но вроде должно дышать
 oMsgConnect:=MessageWait(rc_ConnectMsg);
 Application.CreateForm(TMyDataModule, MyDataModule);
 Application.ProcessMessages;
 if oMsgConnect<>nil then
   oMsgConnect.Release;
 if not Application.Terminated then
   Application.CreateForm(TfrmMain, frmMain);
 Application.ProcessMessages;
 if not Application.Terminated then
   Application.ShowMainForm:=True;
 Application.Run;


 
Юрий Зотов ©   (2006-07-27 23:09) [4]

> Ega23 ©   (27.07.06 18:04)  

1. Есть поток, в котором сплэш-окно (не форма VCL). Это обеспечит и нормальную работу окна, и его перерисовку "без задержек".

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

3. По окончании загрузки основной поток убивает сплэш-окно и его поток.


 
Юрий Зотов ©   (2006-07-27 23:25) [5]

> Ega23 ©   (27.07.06 18:04)  

Еще момент - есть смысл поместить-сплэш окно и его поток в DLL. Поскольку после запуска основного окна они уже не будут нужны.


 
Ega23 ©   (2006-07-28 09:04) [6]


> Есть поток, в котором сплэш-окно (не форма VCL).


Вот это хотелось бы по-подробнее. Конкретно - если "не форма VCL", то что?


 
Сергей М. ©   (2006-07-28 09:08) [7]


> если "не форма VCL", то что?


Окно, созданное, например, средствами "чистого WinAPI".


 
@!!ex ©   (2006-07-28 09:13) [8]

В таких случаях просто создавал окно. Средствами WinAPI.
И перерисовывал его в какие то ключевые участви загрузки с новым текстом.


 
Ega23 ©   (2006-07-28 09:15) [9]


> кно, созданное, например, средствами "чистого WinAPI".


Дайте ссылку какую-нить, где подробно почитать об этом можно. А то я с чистым API практически дел не имел никогда.
Или пример кода, я по нему сам разберусь.


 
Ega23 ©   (2006-07-28 09:16) [10]

Тьфу, ничего мне не надо. Это я туплю с утра "нипадецки".

Большое спасибо всем откликнувшимся.



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

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

Наверх




Память: 0.49 MB
Время: 0.036 c
2-1154516059
VitV
2006-08-02 14:54
2006.08.20
DBGrid случайное расположение данных


15-1153951037
SergProger
2006-07-27 01:57
2006.08.20
E-mail и PHP


5-1127570241
bneuro
2005-09-24 17:57
2006.08.20
Помещение в DLL своего компонента


2-1154080034
Sank
2006-07-28 13:47
2006.08.20
опять кодировка


4-1146398027
oto
2006-04-30 15:53
2006.08.20
измененя размери окна