Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.039 c
1-1152188848
DVM
2006-07-06 16:27
2006.08.20
Цвет текста на кнопке TToolBar при включенных темах


3-1150146676
vvQuad
2006-06-13 01:11
2006.08.20
DBGrid, Query и печать


2-1153490304
Destroyer
2006-07-21 17:58
2006.08.20
Заполнение буфера


2-1154428209
DelphiLexx
2006-08-01 14:30
2006.08.20
external без описания имени модуля


1-1152080005
Zilog_
2006-07-05 10:13
2006.08.20
Нужна помощь в переводе файлов заголовков из С++ в Delphi





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский