|
#1
|
||||
|
||||
ProgressBar
Уважаемые специалисты помогите с 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; |