Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прогресс бар [D6, Paradox]


Ross ©   (2002-02-17 18:39:00) 

Здравствуйте. Подскажите, как отобразить форму с прогрессом пока выполняются 12 запросов. В принципе я это знаю, но не могу сделать только связку: Пока запросы выполняются отобразить состояние в прогрессе. Поделитесь как вы это делаете.
Спасибо.
Ростислав


AlexNord   (2002-03-11 03:54:00) [1]

Мдяяя у самого проблема такая, я думаю нгадо на потоки разделять все, потому что арос когда запускается выборка занимает время и непонятно сколько там записей в нем, а стопорить прогрес бар и потом когда выборка окончилась добиват его до количества выбранных записей это не выход из положения, если запрос большой, то такой глюк выходит визуальный..:(((


Natalishka   (2002-02-25 07:18:00) [2]

может так
Procedure TForm1.btnWorkStar(Sender: tObject);
lable 10;
var s:real;
begin
btnWorkStart.Enable:=false;
btnWorkBreak.Enable:=true;
s:=0
ProgressBar1.Max:=Table1.RecordCount;
Table1.DisableControls;
Table1.First
while not Table1.EOF do begin
s:=s+Table1.FieldByName("поле").as...
Application.ProgressMessages;
ProgressBar1.Position:=Table1.RecNo;
Lable.caption:=
IntToStr(Round(ProgressBar1.possition/ProgressBar1.Max*100))+"%";
IF
WorkBreak then goto 10;
Table1.next;
end;
10:
Table1.EnableControls;
ProgressBar1.Position:=0;

btnWORKSTART.Enable:=true;
btnWorkBreak.Enable:=False;
WorkBreak:=false;
end;

//
var Form1: TForm1;
WorkBreak: boolean;


ne   (2002-02-25 06:01:00) [3]

Отобразить точно ход выполнения запроса в принципе невозможно
Единственный выход который я нашел - это загонять каждый запрос в отдельный поток - при этом основная форма остается свободной - и на ней гонять прогресс
когда запрос кончается - в терминате потока снимать прогресс
я сделал так - пользователи довольны
в дельфях есть примеры как это сделать + на здесь это уже обсуждалось - полазь и найди


bas   (2002-02-22 16:35:00) [4]

Делай как в IExpoler, т.е. вроде прогресс бар работает, а вроде и нет, а после того как запрос выполнился прогресс до конца доводи. Ну да нужен б. процесс паралельный создавать


Ross   (2002-02-22 16:28:00) [5]

А может как нибудь все это связать с таймером, лейблу в начале процедуры, лейблу в конце. От первой и до второй лейблы - это время пока выполняется процедура. Вот это и связать с прогрессом. Или я глупость сказал...
Ваше мнение...
Спасибо.
Ростислав


Johnmen   (2002-02-22 10:40:00) [6]

>Ross © : Полноценно отобразить ProgressBar при выполнении запроса невозможно !!! Лучше давай заставку типа "ЖДИТЕ".


Desdechado   (2002-02-22 10:28:00) [7]

progressbar.max:=12;
progressbar.position:= 0;
q1.ExecSQL;
progressBar.StepBy( 1 );
q2.ExecSQL;
progressBar.StepBy( 1 );
...
q12.ExecSQL;
progressBar.StepBy( 1 );

:)


Ross   (2002-02-21 20:52:00) [8]

Все равно не получается. ДБПрогресс из RX не поддерживает это, В то же время мне нужно немножко другое:
Пока идет Query1.Open, потом Query2.Open, Query3.Open и.т.д., именно этоотображать в прогрессе.
Спасибо.
Ростислав


VladP   (2002-02-18 18:50:00) [9]

По моему в RXLib есть компонент DBProgress. Попробуй его.


wdr   (2002-02-18 06:07:00) [10]

Проссумирой кол-во записей во всех таоих запросах и присвой это значение твоему ProgressBar1.Max
а дальше так:
ProgressBar1.Step:=1;
while not query1.Eof do begin
...
...
ProgressBar1.SteepIt;
end;
while not query2.Eof do begin
...
...
ProgressBar1.SteepIt;
end;

и т.д.


Наверх

Титульная страница Поиск, карта сайта Написать письмо