![]() |
|
|
#1
|
||||
|
||||
|
Уважаемые специалисты помогите с ProgressBarom начинающему.
Подскажите где я ошибаюсь. После нажатия BitBtn2 идет выгрузка в Excel, хотелось бы чтобы процесс формирования документа отображался на ProgressBar. У меня получается что при нажатии кнопки БАР сдвигается на 20% и стоит до окончания формирования документа. Открывается Exel с отчетом и показывает БАР что отработал на 100% .Подскажите где я на грабли наступил. И вторая просьба. Как сделать чтобы ProgressBar работал не по таймеру а брал реально отработанный код? Заранее благодарю!!! Код:
procedure TForm3.BitBtn2Click(Sender: TObject);
var
Excel,Colum,Rows:Variant;
begin
Excel:=CreateOleObject('Excel.Application');
Excel.Workbooks.Add;
Excel.ActiveSheet.PageSetup.LeftMargin:= Excel.Application.InchesToPoints(0.80);
Excel.ActiveSheet.PageSetup.RightMargin:= Excel.Application.InchesToPoints(0.80);
Excel.ActiveSheet.PageSetup.TopMargin:= Excel.Application.InchesToPoints(1.0);
Excel.ActiveSheet.PageSetup.BottomMargin:= Excel.Application.InchesToPoints(1.0);
Excel.ActiveSheet.PageSetup.Orientation:= 2;
begin
ProgressBar1.Position := ProgressBar1.Position + 20;
if ProgressBar1.Position <= 100 then
begin
Timer1.Enabled := True;
Excel.ActiveWorkBook.WorkSheets[1].Name:='4 кв';
Excel.ActiveWorkBook.WorkSheets['4 кв'].Range['A1'].Select;
Excel.Selection.RowHeight:=5.25;
{остальная часть программы}
Excel.Visible:=True; ![]() Последний раз редактировалось Admin, 14.10.2008 в 10:22. |
|
#2
|
|||
|
|||
|
1) Интересно, почему именно +20 ?
2) Сначала уясните, что для Вас 100%, и если это число константа, то легко выяснить чему должен равняться шаг прогресса.То есть можно явнр указать Progressbar1.position:=.. и от туда плясать. Если не константа, то Progressbar1.max:= наша переменная ; Progressbar1.stepby(1); В вашем случае Progressbar1.max = количеству операций, как я понимаю |
|
#3
|
||||
|
||||
|
Простите за молчание. без интернета сидел.
1) +20 - для примера. Как уже писал, после нажатия кнопки сдвигается на 20% и стоит до окончания выгрузки. Потом сразу 100%. Ставлю 40, сдвигается на 40%, и также до конца выгрузки. 2) Да 100% или максимум равняется количеству операций. Спасибо за помощь!!! |
|
#4
|
|||
|
|||
|
Не вижу как происходит собственно выгрузка. Если она идет в цикле построчно, то:
Код:
for i:=0 to LineCount - 1 do begin //Выгрузка очередной строки ProgressBar1.Position:=Round(i/LineCount); end; |