mirror of
https://github.com/rickrd/crud-delphi.git
synced 2025-12-19 09:03:43 +01:00
409 lines
11 KiB
ObjectPascal
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.
|