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.