You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

108 lines
2.5 KiB

unit ufrmProgressEC;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, umstMaster, Vcl.ComCtrls, Vcl.ExtCtrls,
Vcl.StdCtrls;
type
TfrmProgressEC = class(TmstMaster)
Label1: TLabel;
Panel1: TPanel;
ProgressBar1: TProgressBar;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
procedure WMMoving(var Msg: TWMMoving); message WM_MOVING;
{ Private declarations }
public
{ Public declarations }
end;
var
frmProgressEC: TfrmProgressEC;
implementation
{$R *.dfm}
uses udtmSystem;
// janela para montar as tabelas de cidades e estados num banco vazio
procedure TfrmProgressEC.Button1Click(Sender: TObject);
var
estados: TStringList;
cidades: TStringList;
i, j: Integer;
begin
inherited;
Screen.Cursor := crHourGlass;
estados := TStringList.Create;
estados.LoadFromFile('estados.sql');
cidades := TStringList.Create;
cidades.LoadFromFile('cidades.sql');
ProgressBar1.Max := (estados.Count) + (cidades.Count);
stbStatus.SimpleText := 'Cadastrando Estados...';
sleep(2000);
for i := 0 to estados.Count - 1 do
begin
dtmSystem.zsqlprocessor1.Script.Text := estados[i];
dtmSystem.zsqlprocessor1.Execute;
ProgressBar1.Position := ProgressBar1.Position + 1;
Application.ProcessMessages;
end;
dtmSystem.tblEstados.Refresh;
stbStatus.SimpleText := 'Cadastrando Cidades...';
for j := 0 to cidades.Count - 1 do
begin
dtmSystem.zsqlprocessor1.Script.Text := cidades[j];
dtmSystem.zsqlprocessor1.Execute;
ProgressBar1.Position := ProgressBar1.Position + 1;
Application.ProcessMessages;
end;
dtmSystem.tblCidades.Refresh;
sleep(2000);
Screen.Cursor := crDefault;
Close;
end;
procedure TfrmProgressEC.FormCreate(Sender: TObject);
begin
inherited;
ProgressBar1.Position := 0;
end;
procedure TfrmProgressEC.WMMoving(var Msg: TWMMoving);
var
workArea: TRect;
begin
workArea := Screen.WorkareaRect;
with Msg.DragRect^ do
begin
if left < workArea.left then
OffsetRect(Msg.DragRect^, workArea.left - left, 0);
if top < workArea.top then
OffsetRect(Msg.DragRect^, 0, workArea.top - top);
if Right > workArea.Right then
OffsetRect(Msg.DragRect^, workArea.Right - Right, 0);
if Bottom > workArea.Bottom then
OffsetRect(Msg.DragRect^, 0, workArea.Bottom - Bottom);
end;
end;
end.