mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 22:45:39 +02:00
228 lines
5.2 KiB
ObjectPascal
228 lines
5.2 KiB
ObjectPascal
unit U_Animate;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, ComCtrls, ExtCtrls, U_BaseCommon, U_Common, RzPrgres, siComp,
|
||
siLngLnk;
|
||
|
||
|
||
type
|
||
TF_Animate = class(TForm)
|
||
ProgressBar: TProgressBar;
|
||
Animate: TAnimate;
|
||
StatusBar: TStatusBar;
|
||
pbState: TRzProgressBar;
|
||
Timer_Stop: TTimer;
|
||
lng_Forms: TsiLangLinked;
|
||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||
procedure FormHide(Sender: TObject);
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure Timer_StopTimer(Sender: TObject);
|
||
procedure FormDestroy(Sender: TObject);
|
||
private
|
||
FCurrPos: Integer;
|
||
protected
|
||
FLockedFormHandles: TList;
|
||
public
|
||
{ Public declarations }
|
||
|
||
//GAnimateInclude : TAnimateInclude;
|
||
GMaxProgressPos: Integer;
|
||
|
||
procedure LockVisibleForms;
|
||
procedure UnLockForms;
|
||
procedure StartAnimate(ACapt: String; ACommonAVI: TCommonAVI;
|
||
AAnimateInclude: TAnimateInclude; AAsModal: Boolean = false);
|
||
procedure StartProgress(ACapt: String; ACommonAVI: TCommonAVI; AMaxPos: Integer);
|
||
procedure SetProgressPos(APos: integer);
|
||
procedure SetStatusDir(AStatusDir: String);
|
||
procedure SetStatusCompon(AStatusCompon: String);
|
||
procedure StepProgress;
|
||
procedure StopAnimate;
|
||
end;
|
||
{
|
||
var
|
||
F_Animate: TF_Animate;}
|
||
|
||
implementation
|
||
|
||
{$R *.dfm}
|
||
|
||
{ TF_Animate }
|
||
|
||
|
||
procedure TF_Animate.FormCreate(Sender: TObject);
|
||
begin
|
||
FLockedFormHandles := TList.Create;
|
||
|
||
GMaxProgressPos := -1;
|
||
end;
|
||
|
||
procedure TF_Animate.LockVisibleForms;
|
||
var
|
||
i: integer;
|
||
Form: TCustomForm;
|
||
begin
|
||
FLockedFormHandles.Clear;
|
||
for i := 0 to Screen.CustomFormCount - 1 do
|
||
begin
|
||
Form := Screen.CustomForms[i];
|
||
if Form is TForm then
|
||
//if Form.ClassName = 'TFSCS_Main' then
|
||
//if Form.ClassName <> 'TF_MakeEditCrossConnection' then
|
||
if Form <> Self then
|
||
if TForm(Form).Visible then
|
||
if IsWindowEnabled(Form.Handle) then
|
||
begin
|
||
FLockedFormHandles.Add(Pointer(Form.Handle));
|
||
EnableWindow(Form.Handle, False);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_Animate.UnLockForms;
|
||
var
|
||
i: Integer;
|
||
begin
|
||
for i := FLockedFormHandles.Count - 1 downto 0 do
|
||
EnableWindow(HWnd(FLockedFormHandles[i]), true);
|
||
//for i := 0 to FLockedFormHandles.Count - 1 do
|
||
// EnableWindow(HWnd(FLockedFormHandles[i]), true);
|
||
|
||
FLockedFormHandles.Clear;
|
||
end;
|
||
|
||
procedure TF_Animate.StartAnimate(ACapt: String; ACommonAVI: TCommonAVI;
|
||
AAnimateInclude: TAnimateInclude; AAsModal: Boolean = false);
|
||
begin
|
||
Caption := ACapt;
|
||
Animate.CommonAVI := ACommonAVI;
|
||
Animate.Active := true;
|
||
|
||
pbState.Visible := false;
|
||
ProgressBar.Visible := false;
|
||
StatusBar.Visible := false;
|
||
|
||
pbState.Percent := 0;
|
||
|
||
Screen.Cursor := crHourGlass;
|
||
Application.ProcessMessages;
|
||
if AAsModal then
|
||
ShowModal
|
||
else
|
||
Show;
|
||
|
||
case AAnimateInclude of
|
||
aiProgressBar: pbState.Show; //ProgressBar.Show;
|
||
aiStatusBar : StatusBar.Show;
|
||
end;
|
||
|
||
|
||
ProgressBar.Update;
|
||
StatusBar.Update;
|
||
|
||
LockVisibleForms;
|
||
Application.ProcessMessages;
|
||
end;
|
||
|
||
procedure TF_Animate.StartProgress(ACapt: String; ACommonAVI: TCommonAVI; AMaxPos: Integer);
|
||
begin
|
||
Caption := ACapt;
|
||
Animate.CommonAVI := ACommonAVI;
|
||
Animate.Active := true;
|
||
|
||
pbState.Visible := false;
|
||
ProgressBar.Visible := false;
|
||
StatusBar.Visible := false;
|
||
|
||
pbState.Percent := 0;
|
||
FCurrPos := 0;
|
||
GMaxProgressPos := AMaxPos;
|
||
|
||
Screen.Cursor := crHourGlass;
|
||
ProcessMessagesEx;
|
||
|
||
Show;
|
||
pbState.Show;
|
||
|
||
ProcessMessagesEx;
|
||
end;
|
||
|
||
procedure TF_Animate.SetProgressPos(APos: integer);
|
||
begin
|
||
APos := Round(APos / GMaxProgressPos * 100);
|
||
if APos > 100 then
|
||
APos := 100;
|
||
pbState.Percent := APos;
|
||
|
||
//ProgressBar.Position := APos;
|
||
Application.ProcessMessages;
|
||
end;
|
||
|
||
|
||
|
||
procedure TF_Animate.FormClose(Sender: TObject; var Action: TCloseAction);
|
||
begin
|
||
Animate.Active := false;
|
||
ProgressBar.Position := 0;
|
||
StatusBar.Panels[0].Text := '';
|
||
StatusBar.Panels[1].Text := '';
|
||
Screen.Cursor := crDefault;
|
||
end;
|
||
|
||
|
||
procedure TF_Animate.FormHide(Sender: TObject);
|
||
begin
|
||
// ##### <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>s<EFBFBD><73><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
|
||
//Position := poMainFormCenter;
|
||
end;
|
||
|
||
procedure TF_Animate.SetStatusCompon(AStatusCompon: String);
|
||
begin
|
||
StatusBar.Panels[1].Text := AStatusCompon;
|
||
StatusBar.Update;
|
||
end;
|
||
|
||
procedure TF_Animate.SetStatusDir(AStatusDir: String);
|
||
begin
|
||
StatusBar.Panels[0].Text := AStatusDir;
|
||
StatusBar.Update;
|
||
end;
|
||
|
||
procedure TF_Animate.StepProgress;
|
||
begin
|
||
Inc(FCurrPos);
|
||
pbState.Percent := Round(FCurrPos / GMaxProgressPos * 100);
|
||
ProcessMessagesEx;
|
||
end;
|
||
|
||
|
||
procedure TF_Animate.StopAnimate;
|
||
begin
|
||
try
|
||
pbState.Percent := 100;
|
||
Timer_Stop.Enabled := true;
|
||
Application.ProcessMessages;
|
||
Sleep(Timer_Stop.Interval);
|
||
|
||
UnLockForms;
|
||
finally
|
||
UnLockForms;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_Animate.Timer_StopTimer(Sender: TObject);
|
||
begin
|
||
TTimer(Sender).Enabled := false;
|
||
Close;
|
||
end;
|
||
|
||
procedure TF_Animate.FormDestroy(Sender: TObject);
|
||
begin
|
||
FreeAndNil(FLockedFormHandles);
|
||
end;
|
||
|
||
end.
|