![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TprogresssBar с отображением процентов [D7, XP]
kyn66 © (2010-04-06 15:54:00)Добрый день, мастера. В приложениях где происходит некоторый циклический процесс отображаю его с помощью ProgressBar и метки в процентном соотношении. Вот такой код:
Var
Nzap,
NzapV,
NzapC : Integer;
begin
DM1.ClientTbl.First;
PB1.Position := 0;
PB1.Max := DM1.ClientTbl.RecordCount;
NzapC := Trunc(DM1.ClientTbl.RecordCount/100);
Nzap := 0;
NzapV := 0;
While not DM1.ClientTbl.EOF do
begin
Inc(Nzap);
if Nzap >= NzapC then
begin
Inc(NzapV);
ProcLab.Caption := IntToStr(NzapV) + ' %';
Nzap := 0;
end;
Application.ProcessMessages;
...
end;
...
Код всегда отрабатывал отлично. Но сегодня сталкнулся с ситуацией, когда кол-во записей меньше 100 и предоставляемая процентная информация оказалась неверной. Т.е. ppfgbctq в таблице 80, NzapC равен 0, ну и соответственно проценты показываются только до 80.
Каким образом модернезировать код, чтобы для всех ситуаций правильно было показание процентов вне зависимости от кол-ва записей. ?
Andy BitOff (2010-04-06 19:29:00) [1]И эти люди занимаются программирование. Куда катится мир. =(
Dennis I. Komarov (2010-04-06 16:40:00) [2]
> Медвежонок Пятачок © (06.04.10 15:59) [1]
То ли сейчас еще будет...
kyn66 (2010-04-06 16:39:00) [3]2 12
Большое спасибо. Я так и сделал. Поставил просто увеличивающийся Nzap вместо RecNo. (Думал успею отписаться до ответа).
12 (2010-04-06 16:36:00) [4]ну примерно же ж..
DM1.ClientTbl.RecNo - Nzap
kyn66 (2010-04-06 16:33:00) [5]2 12
Таблица проиндексирована по ключу(два поля) и поэтому получается блуждающий RecNo.
12 (2010-04-06 16:08:00) [6]ProcLab.Caption := IntToStr(round(DM1.ClientTbl.RecNo/DM1.ClientTbl.RecordCount*100)) + ' %';
Медвежонок Пятачок (2010-04-06 15:59:00) [7]боже, какая прелесть