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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
6-96899
Ghost.
2002-11-29 15:10
2003.01.30
URL браузера...конкретно IE


14-97035
Дмитрий К.К.
2003-01-14 11:47
2003.01.30
Библиотека RX


3-96597
chum
2003-01-13 14:28
2003.01.30
TQuery


1-96830
Kair
2003-01-20 20:16
2003.01.30
То, сё


3-96576
Big_Rom
2003-01-09 21:21
2003.01.30
вот такой вопрос про dbf