Форум: "Начинающим";
Текущий архив: 2006.08.20;
Скачать: [xml.tar.bz2];
ВнизВизуализация длительной загрузки Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.034 c