{
       модуль с подпрограммами отображения хода процесса.
	   здесь же формируются окно прогресса и выполняется управление
	   контролами хода процесса.
       эти переменные беруться из текущей открытой формы и в явном
     виде объявляться не должны!
       переменные и их инициализацию в begin end. следует расскомментировать
     при отладке скриптов.
     
    при использовании "родных" окон AzkExchange можно обращаться непосредственно
    к ProgressBar и StatusBar. но это делать крайне не рекомендуется!
}
var
  { дополнительные контролы прогресс и контрол баров.
    при этом они будут отображаться паралельно основным контролам.
    это используется, если для отображения процессов создается отдельное окно,
    а не окна Azkexchange. }
  vProgressBar: TProgressBar;
  vStatusBar: TStatusBar;

{ открепляет дополнительные контролы прогресс и контрол баров}
procedure DetachProgressControl;
begin
  vProgressBar := NIL;
  vStatusBar   := NIL;
end;

{ прицепляем дополнительные контролы прогресс и контрол баров. }
procedure AttachProgressControl( aProgressBar: TProgressBar = NIL;
                                 aStatusBar: TStatusBar = NIL);
begin
  vProgressBar := aProgressBar;
  vStatusBar   := aStatusBar;
end;

procedure InitializeProgressControl;
begin
  DetachProgressControl;
end;

procedure FinalizeProgressControl;
begin
  DetachProgressControl;
end;

procedure ShowProgress( xProgress: integer);
begin
  if (vProgressBar <> NIL)
    then vProgressBar.Position := xProgress;
  if (ProgressBar <> nil) 
    then ProgressBar.Position := xProgress;
end;
  
procedure SetProgress( xMin, xMax: integer);  
begin
  if (vProgressBar <> NIL) then begin
    vProgressBar.Min := xMin;
    vProgressBar.Max := xMax;
  end;
  if (ProgressBar <> nil) then begin
    ProgressBar.Min := xMin;  
    ProgressBar.Max := xMax;
  end;
end;

procedure SetProgressBarMax( xMax: integer);
begin
  if (vProgressBar <> nil)
    then vProgressBar.Max := xMax;
  if (ProgressBar <> nil)
    then ProgressBar.Max := xMax;
end;

procedure ShowProgressNext;
begin
  if (vProgressBar <> nil)
    then vProgressBar.Position := vProgressBar.Position + 1;
  if (ProgressBar <> nil)
    then ProgressBar.Position := ProgressBar.Position + 1;
end;

procedure SetProgressBar( xMin, xMax: integer);
begin
  SetProgress( xMin, xMax);
end;

procedure StatusBarSimpleText( xText: string);
begin
  if (vStatusBar <> nil)
    then vStatusBar.SimpleText := xText;
  if (StatusBar <> nil)
    then StatusBar.SimpleText := xText;
end;

begin
  InitializeProgressControl;
end.
