Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];

Вниз

Как показать юзеру что прога работает и не повисла   Найти похожие ветки 

 
falcon_k   (2003-01-22 02:09) [0]

Приветствую многоуважаемый All!

Поделитесь опытом, как отобразить процесс выполнения проги во время обращения к базе и каких либо вычислений, если этот процесс занимает
некоторое время, а юзеру кажется что прога зависла.
Как вариант выводить ProgressBar по циклу в окне типа "Ждите ответа ...".
Но как это организовать, если главный поток программы занят работай над процессом.


 
mrcat   (2003-01-22 02:14) [1]

Например, Application.ProcessMessage;


 
Спрашивающий   (2003-01-22 02:21) [2]

Стандартно- TProgressBar или TGauge можешь не стандартно запустить на время выполнение цикла работу какого нибудь GIF файла или курсор сделай анимированным.............
На счет "если главный поток программы занят" если данный поток и есть цикл так что нельзя в его тело втавить ну скажем
Gauge1.Visible:=True;
For I:=0 To 10 Do begin
Gauge1.MaxValue:=10;

Gauge.Progress:=i;
.............................
end;
Gauge1.Visible:=False;


 
falcon_k   (2003-01-22 02:36) [3]

2mrcat
Application.ProcessMessage во все места не вставишь.
Например Query1.Open, а выполняется большой и долгий запрос
на сервере.

2Спрашивающий
В тотже Query1.Open - как вставить?

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


 
diks   (2003-01-22 02:43) [4]

Зачем?.. Так мутить... Бросай на форму Progressbar и кнопку
на кнопку брось

procedure TForm1.ButtonXClick(Sender: TObject);
var
i:Integer;
begin
for i:=0 to 100 do
begin
ProgressBar1.Position:=ProgressBar1.Position+1;
Sleep(100);
end;

И напиши типа ждите окончания процесса...


 
falcon_k   (2003-01-22 03:55) [5]

2diks
Тогда в каком месте должно стоять Query1.Open?
Если в этой же кнопке, то пока не выполнится Query1.Open
ProgressBar не обновиться.


 
Big_Rom   (2003-01-22 04:33) [6]

приложение в процессе и все у меня так и никто не жалуется
и плюс курсор меняю


 
Evgeny V   (2003-01-22 05:01) [7]

Я делал оборащение к базе в отдельном потоке,создавл TThread, в нем было свойство мое типа занят=false, перед обращением к базе его=true. Свойство можно или опрашивать, или при его изменении слать сообщение главному окну, на твое усмотрение.


 
falcon_k   (2003-01-22 05:56) [8]

2Evgeny V
Я так и предпологаю, что обращение к базе делать в отдельном
потоке, а ProgressBar обновлять в основном.
Но может есть другие варианты, чтобы изменения ProgressBar
производить в отдельном потоке, а обращение к базе в основном?


 
Спрашивающий   (2003-01-22 06:21) [9]

SendMessage(Форма.Handle,wm_Paint,0,0);//это сообщение позволяет
//во время длительных обращений перерисоваться форме
Query1.Open;




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

Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.008 c
1-96647
bvn123
2003-01-21 12:32
2003.01.30
Будут проблемы? GetMem(Buffer, FileSize); FileSize>1M;


1-96752
neodiX
2003-01-21 19:06
2003.01.30
Перерисовка формы, когда она выходит за границы экрана


4-97090
vicheslav
2002-12-16 12:41
2003.01.30
Flash USB Easy disk


1-96785
tulen
2003-01-22 22:50
2003.01.30
У пробела какой код?


1-96879
New Guy
2003-01-21 13:11
2003.01.30
ReadLn





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