Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Application.ProcessMessages & ProgressBar, Параллельная работа ProgressBar 
:(
    Опции темы
csander
  Дата 24.3.2010, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 13.5.2007

Репутация: нет
Всего: нет



Суть проблемы:
Я создаю отчет (набор XML файлов). Количество файлов варьируется от 10 до 30. Чтобы показать процесс создания этих файлов я использую ProgressBar. Но ProgressBar "заполняется" на 100% только по окончании создания файлов. 
Можно ли обойтись без TThread?

Создаем ProgressBar:
Код

procedure TForm1.FormCreate(Sender: TObject);
begin
  ProgressBar := TProgressBar.Create(StatusBar2);
  ProgressBar.Parent := StatusBar2;
  ProgressBar.Position := 0;
  ProgressBar.Visible :=false;
  ProgressBar.Left := StatusBar2.Panels[0].Width+StatusBar2.Panels[1].Width + 1;
  ProgressBar.Height := 17;
  ProgressBar.Width := 150;
  ProgressBar.Top := 2;
end;


Создаем отчет:
Код

procedure TForm1.XMLreportCreate(Sender: TObject);
var
  XML: TStringList;
  error,i,j: integer;
  stream : TStream;
  ext:string;
begin
  {$IOChecks off}
  MkDir('Отчеты');
  error := IOResult;
  ProgressBar.Visible := true;
  ProgressBar.Min := 0;
  ProgressBar.Max := 23;
  ProgressBar.Position :=0;
  StatusBar2.Panels[3].Text := 'Создание отчета...';
  stream := TMemoryStream.Create;
  XML := TStringList. Create;
  XML.Clear;
  XML.Add ('.........');
  .........................
  XML.SaveToFile('Отчеты\Report1.xml');
  ProgressBar.StepBy(1);
  FreeAndNil(stream);
  Application.ProcessMessages();
  stream := TMemoryStream.Create;
  XML.Clear;
  XML.Add ('........');
  ...............................
  XML.SaveToFile('Отчеты\Report2.xml');
  ProgressBar.StepBy(1);
  FreeAndNil(stream);
  Application.ProcessMessages();
  //и т.д.
  FreeAndNil (XML);
  StatusBar2.Panels[3].Text := 'Отчет создан...';
  ProgressBar.Visible := false;
end;

PM MAIL   Вверх
Данкинг
Дата 24.3.2010, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 9
Всего: 130



Ну так а с Application.ProcessMessages что не получается?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
csander
Дата 24.3.2010, 08:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 13.5.2007

Репутация: нет
Всего: нет



у меня уже стоит Application.ProcessMessages. Во время процесса появляется только первое деление и все. В конце сразу полностью заполняется.
PM MAIL   Вверх
Dom
Дата 24.3.2010, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 121
Регистрация: 7.8.2005

Репутация: 1
Всего: 4



Мммм, может поставить перед вызовом Application.ProcessMessages что-то вроде ProgressBar.Refresh?
PM MAIL   Вверх
former
Дата 24.3.2010, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


MEMS Expert
***


Профиль
Группа: Завсегдатай
Сообщений: 1166
Регистрация: 1.3.2006
Где: Россия

Репутация: 5
Всего: 17



csander, ты только в двух местах увеличиваешь значение Position. А максимальное значение у тебя 23.
Код

ProgressBar.Max := 23;


Это сообщение отредактировал(а) former - 24.3.2010, 09:05


--------------------
Достаточно снизить уровень мышления, чтобы иные почувствовали почву под ногами.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0780 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.