Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.10.2008, 08:09
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
Печаль 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  
Старый 15.10.2008, 23:53
bone01 bone01 вне форума
Прохожий
 
Регистрация: 15.10.2008
Сообщения: 2
Репутация: 10
По умолчанию

1) Интересно, почему именно +20 ?
2) Сначала уясните, что для Вас 100%, и если это число константа, то легко выяснить чему должен равняться шаг прогресса.То есть можно явнр указать Progressbar1.position:=.. и от туда плясать.
Если не константа, то Progressbar1.max:= наша переменная ;
Progressbar1.stepby(1);
В вашем случае Progressbar1.max = количеству операций, как я понимаю
Ответить с цитированием
  #3  
Старый 21.10.2008, 08:59
Аватар для fofka
fofka fofka вне форума
Начинающий
 
Регистрация: 12.10.2008
Сообщения: 163
Репутация: -1588
Смущение

Простите за молчание. без интернета сидел.
1) +20 - для примера. Как уже писал, после нажатия кнопки сдвигается на 20% и стоит до окончания выгрузки. Потом сразу 100%. Ставлю 40, сдвигается на 40%, и также до конца выгрузки.
2) Да 100% или максимум равняется количеству операций.
Спасибо за помощь!!!
Ответить с цитированием
  #4  
Старый 21.10.2008, 09:37
Grunch Grunch вне форума
Новичок
 
Регистрация: 08.04.2008
Адрес: Краснодар
Сообщения: 52
Репутация: 10
По умолчанию

Не вижу как происходит собственно выгрузка. Если она идет в цикле построчно, то:
Код:
for i:=0 to LineCount - 1 do
begin
  //Выгрузка очередной строки
  ProgressBar1.Position:=Round(i/LineCount);
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:44.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter