Разрабатывается Класс "СтатусБар" где предусмотрена возможность наличия графического элемента "СкроллБар". Требуется визуальное наблюдение процесса. Обычно некий цикл некого действия, например:
// заполнить таблицу значениями из книги
Sheet = Excel.Sheets.GetValue(1);
ВсегоСтрок = Sheet.Cells(1, 1).SpecialCells(11).Row;
СтатусБар.РазмерШкалы = ВсегоСтрок;
for i = 2 to ВсегоСтрок do
TzData.NewLine();
for ii = 1 to ColList.GetListSize() do
ExcelValue = Sheet.Cells(i, ColList.GetValue(ii).NomColumn).Value;
if ii = 1 then
if EmptyValue(ExcelValue) = 1 then
TzData.DeleteLine();
break;
endif;
endif;
TzData.SetValue(TzData.LinesCnt(), ColList.GetValue(ii).ID, ExcelValue);
enddo;
СтатусБар.УстановитьПрогресс(i);
enddo;
СтатусБар.ЗакрытьПрогресс();
В этом примере мы обращаемся к книге Excel и всё в порядке, всё красиво и все видим, но если в этом цикле закомментировать само обращение к листу Excel, то, всё, обновления отображения прогресса не происходит. Т.е. если мы поставим скроллбар к заполнению некой таблицы значений или базы данных визуального обновления объекта не происходит и прогресса не видно. Не помогают ни Форма.Обновить(),
ни РасширениеФормы.Обновить().
Сам процесс прогресса в классе выгядит следующим образом:
// +++- recop --- 190322 --------------------------------------------------------------
procedure УстановитьПрогресс(Value) export
var Width,Percent;
if Value < РазмерШкалы then
Width = Окр((IVr.ProgressBar.Width * Value) / РазмерШкалы);
Percent = Окр((100*Value) / РазмерШкалы);
else
Width = IVr.ProgressBar.Width;
Percent = 100;
endif;
IVr.ProgressBar.GflAX.NewBitmap(IVr.ProgressBar.Width, IVr.ProgressBar.Height, ЦветФона);
IVr.ProgressBar.GflAX.DrawFillRectangle(0, 0, Width, IVr.ProgressBar.Height);
IVr.ProgressBar.GflAX.TextOut(String(Percent)+"%", Int(IVr.ProgressBar.Width/2-20), 1, ЦветШрифта);
objProgressBar.ПоказатьКартинку(IVr.ProgressBar.GflAX, "");
endprocedure // УстановитьПрогресс()
Может кто подскажет как решить эту проблему?