Суть проблемы: Я создаю отчет (набор 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;
|
|