Текущий архив: 2005.01.02;
Скачать: CL | DM;
ВнизПроцесс загрузки Найти похожие ветки
← →
Dell3r © (2004-12-04 10:43) [0]Как в StatusBar отобразить ProgressBar который будет отслеживать процесс загрузки Базы данных. Я просто размещаю ПРОГРЕССБАР на СТАТУСБАРЕ, но он на разных машинах по разному убегает с нужного места(СТАТУС) и процесс отслеживания проходит очень быстро, он уже закончится, а через 3 сек. ГРИД отображает данные.
Вот как я это делаю. pb (ProgressBar)
pb.position:=0;
pb.max:=Query1.RecordCount;
i:=1;
with Query1 do
begin
Close;
Open;
While not EOF do
begin
ComboBox1.items.add(FieldByName("Name").AsString);
i:=i+1;
pb.Position:=i;
Next;
end;
First;
pb.Position:=0;
← →
Digitman © (2004-12-04 11:58) [1]Query1.Last;
pb.max:=Query1.RecordCount;
Query1.First;
← →
sniknik © (2004-12-04 14:23) [2]во это FieldByName("Name") еще за цикл вынеси (пару сотых секунды сэкономиш на загрузке)
var fName: TField;
...
fName:= FieldByName("Name");
...
ComboBox1.items.add(fName.AsString);
и потом после
Close;
Open;
RecordCount вполне может поменяться (сетевая база?) устанавливать pb.max надо после него в этом случае.
и после pb.Position:=i; нужно или перерисовывать прогресс бар принудительно или processmessage вызвать (кстати и так часто накаждый инкремент позицию изменять тоже зря, менять нужно только если это даст видимое на прогрессе приращение. а так только тормоза)
← →
sniknik © (2004-12-04 14:26) [3]еще забыл перед изменением (до цикла) делай
ComboBox1.Items.BeginUpdate
после
ComboBox1.Items.EndUpdate
Страницы: 1 вся ветка
Текущий архив: 2005.01.02;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.041 c