crud-delphi/UnitFormPais.pas
2018-08-17 12:28:17 -03:00

409 lines
11 KiB
ObjectPascal

unit UnitFormPais;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, UnitFormPadrao, Vcl.StdCtrls, UnitDados,
Vcl.ToolWin, Vcl.ComCtrls, UnitLista, System.Contnrs, Vcl.ExtDlgs,
Vcl.ExtCtrls;
type
TFormPais = class(TFormPadrao)
edCod: TEdit;
edPais: TEdit;
edNacionalidade: TEdit;
edCodFed: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure FormCreate(Sender: TObject);
procedure btInserirClick(Sender: TObject);
procedure btContarClick(Sender: TObject);
procedure btExcluirClick(Sender: TObject);
procedure btAnteriorClick(Sender: TObject);
procedure btProximoClick(Sender: TObject);
procedure btBuscarClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure btExportarClick(Sender: TObject);
procedure btImportarClick(Sender: TObject);
procedure edCodExit(Sender: TObject);
procedure edFinalKeyPress(Sender: TObject; var Key: Char);
procedure limpaCampos();
procedure cbLimparCamposClick(Sender: TObject);
private
{ Private declarations }
strict private wLista: TLista;
wClear: boolean;
public
{ Public declarations }
end;
TPais = class
private
wpCod: integer;
wpPais: string;
wpNacionalidade: string;
wpCodFed: integer;
public
property wCod: integer read wpCod write wpCod;
property wPais: string read wpPais write wpPais;
property wNacionalidade: string read wpNacionalidade write wpNacionalidade;
property wCodFed: integer read wpCodFed write wpCodFed;
end;
var
FormPais: TFormPais;
wPais: TPais;
Dado3: TDados;
implementation
{$R *.dfm}
uses UnitFormGrid;
procedure TFormPais.limpaCampos();
begin
if wClear then
begin
edCod.Clear;
edPais.Clear;
edNacionalidade.Clear;
edCodFed.Clear;
end;
end;
procedure TFormPais.edFinalKeyPress(Sender: TObject; var Key: Char);
var
wObj: TPais;
wObjGet: TObject;
wcont: Integer;
wIndex: integer;
wMaior: integer;
wNew: boolean;
wZero: boolean;
begin
inherited;
if (ord(key) = 13) or (ord(key) = 9) then
begin
wNew := true;
if (trystrtoint(edCod.Text, windex)) then
begin
wObj := TPais.Create;
with wObj do
begin
wCod := strtoint(edCod.Text);
wPais := edPais.Text;
wNacionalidade := edNacionalidade.Text;
wCodFed := strtoint(edCodFed.Text);
end;
for wCont := 0 to wLista.Count-1 do
begin
wObjGet := wLista.getObjectByIndex(wCont);
with wObjGet as TPais do
if wCod = strtoint(edCod.Text) then
begin
wLista.Update(wCont, wObj);
wNew := false;
if wClear then
limpaCampos();
break;
end;
end;
if wNew = true then
begin
wLista.Inserir(wObj, TPais);
if wClear then
limpaCampos();
end;
end
else
if edCod.Text = '' then
begin
wZero := true;
for wCont := 0 to wLista.Count-1 do
begin
wObjGet := wLista.getObjectByIndex(wCont);
with wobjGet as TPais do
begin
if wCod > wMaior then
wMaior := wCod;
wZero := false;
end;
end;
wObj := TPais.Create;
with wObj do
begin
if wZero then
wCod := 0
else
wCod := wMaior+1;
wPais := edPais.Text;
wNacionalidade := edNacionalidade.Text;
wCodFed := strtoint(edCodFed.Text);
end;
wLista.Inserir(wObj, TPais);
if wClear then
limpaCampos();
end;
// volta pro edit do inicio e altera status bar
for wCont := 0 to ComponentCount-1 do
if (Components[wCont].Tag = 0) and (Components[wCont] is TEdit) then
with Components[wCont] as TEdit do
begin
setFocus;
StatusBar1.Panels[0].Text := 'Aguardando';
end;
end;
end;
procedure TFormPais.edCodExit(Sender: TObject);
var
wObj: TObject;
wCont: Integer;
wIndex: integer;
wNew: boolean;
begin
inherited;
if (trystrtoint(edCod.Text, wIndex)) then
begin
wNew := true;
for wCont := 0 to wLista.Count-1 do
begin
wObj := wLista.getObjectByIndex(wCont);
with wObj as TPais do
if wCod = strtoint(edCod.Text) then
begin
StatusBar1.Panels[0].Text := 'Alterando registro';
edCod.Text := inttostr(wCod);
edPais.Text := wPais;
edNacionalidade.Text := wNacionalidade;
edCodFed.Text := inttostr(wCodFed);
wNew := false;
exit;
end;
end;
if wNew then
StatusBar1.Panels[0].Text := 'Novo registro';
end
else
if edCod.Text = '' then
StatusBar1.Panels[0].Text := 'Novo registro'
else
StatusBar1.Panels[0].Text := 'Aguardando';
end;
procedure TFormPais.btAnteriorClick(Sender: TObject);
var
wObj: TObject;
wObj2: TObject;
wIndex: integer;
I: Integer;
begin
inherited;
if (trystrtoint(edCod.Text, wIndex)) then
begin
for I := 1 to wLista.Count-1 do
begin
wObj := wLista.getObjectByIndex(I);
with wObj as TPais do
begin
if wCod = strtoint(edCod.Text) then
wIndex := wLista.getIndexOfObj(wObj);
end;
end;
if wIndex-1 >= 0 then
begin
wObj := wLista.getObjectByIndex(wIndex-1);
with wObj as TPais do
begin
edCod.Text := inttostr(wCod);
edPais.Text := wPais;
edNacionalidade.Text := wNacionalidade;
edCodFed.Text := inttostr(wCodFed);
end;
end;
end;
end;
procedure TFormPais.btBuscarClick(Sender: TObject);
var
FormGrid: TFormGrid;
begin
inherited;
FormGrid := TFormGrid.Create(nil);
FormGrid.geraGrid(wLista, TPais);
FormGrid.Show;
end;
procedure TFormPais.btContarClick(Sender: TObject);
begin
inherited;
ShowMessage(inttostr(wLista.Count));
end;
procedure TFormPais.btExcluirClick(Sender: TObject);
var
wObj: TObject;
I: integer;
begin
inherited;
try
for I := 0 to wLista.Count-1 do
begin
wObj := wLista.getObjectByIndex(I);
with wObj as TPais do
if wCod = strtoint(edCod.Text) then
begin
wLista.Excluir(I);
break;
end;
end;
finally
edCod.Clear;
edPais.Clear;
edNacionalidade.Clear;
edCodFed.Clear;
end;
end;
procedure TFormPais.btExportarClick(Sender: TObject);
var
DadoArmazenado: TDadoArmazenado;
wDir: string;
begin
inherited;
DadoArmazenado := TDadoArmazenado.Create;
if SaveTextFileDialog1.Execute then
wDir := SaveTextFileDialog1.FileName;
DadoArmazenado.saveToFile(wDir, wLista, TPais);
end;
procedure TFormPais.btImportarClick(Sender: TObject);
var
DadoArmazenado: TDadoArmazenado;
wDir: string;
begin
inherited;
DadoArmazenado := TDadoArmazenado.Create;
if OpenTextFileDialog1.Execute then
wDir := OpenTextFileDialog1.FileName;
wLista := DadoArmazenado.loadFromFile(wDir, TPais);
end;
procedure TFormPais.btInserirClick(Sender: TObject);
var
Pais: TPais;
wObj: TObject;
wIndex: integer;
I: integer;
wAux: integer;
begin
inherited;
Pais := TPais.Create;
if (trystrtoint(edCod.Text, wIndex)) then
begin
with Pais do
begin
wCod := strtoint(edCod.Text);wPais := edPais.Text;wNacionalidade := edNacionalidade.Text;wCodFed := strtoint(edCodFed.Text);
end;
if wLista.Count >= 1 then
begin
for I := 0 to wLista.Count-1 do
begin
wObj := wLista.getObjectByIndex(I);
with wObj as TPais do
begin
if wCod = strtoint(edCod.Text) then
begin
wAux := 1;
wLista.Update(I, Pais);
break;
end
else
wAux := 0;
end;
end;
if wAux =0 then
wLista.Inserir(Pais, TPais)
end
else
wLista.Inserir(Pais, TPais);
end;
end;
procedure TFormPais.btProximoClick(Sender: TObject);
var
wObj: TObject;
wIndex: integer;
I: integer;
begin
inherited;
if (trystrtoint(edCod.Text, wIndex)) then
begin
for I := 0 to wLista.Count-1 do
begin
wObj := wLista.getObjectByIndex(I);
with wObj as TPais do
begin
if wCod = strtoint(edCod.Text) then
wIndex := wLista.getIndexOfObj(wObj);
end;
end;
if wIndex+1 < wLista.Count then
begin
wObj := wLista.getObjectByIndex(wIndex+1);
with wObj as TPais do
begin
edCod.Text := inttostr(wCod);
edPais.Text := wPais;
edNacionalidade.Text := wNacionalidade;
edCodFed.Text := inttostr(wCodFed);
end;
end;
end;
end;
procedure TFormPais.cbLimparCamposClick(Sender: TObject);
begin
inherited;
if wClear then
wClear := false
else
wClear := true
end;
procedure TFormPais.FormActivate(Sender: TObject);
var
wObj: TObject;
begin
inherited;
if Dado3.Dado > -1 then
begin
wObj := TPais.Create;
wObj := wLista.getObjectByIndex(Dado3.Dado);
with wObj as TPais do
begin
edCod.Text := inttostr(wCod);
edPais.Text := wPais;
edNacionalidade.Text := wNacionalidade;
edCodFed.Text := inttostr(wCodFed);
end;
end;
end;
procedure TFormPais.FormCreate(Sender: TObject);
begin
inherited;
wLista := TLista.Create;
Dado3 := TDados.Create;
wClear := false;
end;
initialization
registerclass(TFormPais);
end.