mirror of
https://github.com/rickrd/crud-delphi.git
synced 2025-12-19 09:03:43 +01:00
301 lines
11 KiB
ObjectPascal
301 lines
11 KiB
ObjectPascal
unit UnitFormGrid;
|
||
|
||
interface
|
||
|
||
uses
|
||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, UnitLista, UnitFormEstado, UnitFormPais,
|
||
Vcl.ToolWin, Vcl.ComCtrls, Vcl.StdCtrls, UnitDados, System.StrUtils;
|
||
|
||
type
|
||
TFormGrid = class(TForm)
|
||
StringGrid1: TStringGrid;
|
||
ToolBar1: TToolBar;
|
||
btExcluir: TButton;
|
||
btEscolher: TButton;
|
||
edKeyPress: TEdit;
|
||
StatusBar1: TStatusBar;
|
||
procedure geraGrid(Lista: TLista; Classe: TClass);
|
||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||
procedure btExcluirClick(Sender: TObject);
|
||
procedure btEscolherClick(Sender: TObject);
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure FormKeyPress(Sender: TObject; var Key: Char);
|
||
procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);
|
||
procedure limpaGrid();
|
||
private
|
||
{ Private declarations }
|
||
palavra: string;
|
||
palavraPesquisa: string;
|
||
public
|
||
{ Public declarations }
|
||
end;
|
||
|
||
var
|
||
FormGrid: TFormGrid;
|
||
FClass: TClass;
|
||
FLista: TLista;
|
||
checkList: boolean;
|
||
|
||
implementation
|
||
{$R *.dfm}
|
||
uses UnitFormCidade;
|
||
|
||
procedure TFormGrid.limpaGrid;
|
||
var
|
||
linha: integer;
|
||
begin
|
||
for linha:= 1 to StringGrid1.RowCount -1 do
|
||
begin
|
||
StringGrid1.Rows[linha].Clear; //Cells[coluna,linha]:='';
|
||
end;
|
||
end;
|
||
|
||
procedure TFormGrid.btEscolherClick(Sender: TObject);
|
||
var
|
||
wObj: TObject;
|
||
FormCidade: TFormCidade;
|
||
wCod: integer;
|
||
begin
|
||
try
|
||
if FClass = TCidade then
|
||
begin
|
||
wCod := strtoint(StringGrid1.Cells[0, StringGrid1.Row]);
|
||
Dado1.Dado := FLista.getIndexByCod(wCod);
|
||
end
|
||
else
|
||
if FClass = TEstado then
|
||
begin
|
||
wCod := strtoint(StringGrid1.Cells[0, StringGrid1.Row]);
|
||
Dado2.Dado := FLista.getIndexByCod(wCod);
|
||
end
|
||
else
|
||
if FClass = TPais then
|
||
begin
|
||
wCod := strtoint(StringGrid1.Cells[0, StringGrid1.Row]);
|
||
Dado3.Dado := Flista.getIndexByCod(wCod);
|
||
end;
|
||
finally
|
||
Self.Free;
|
||
end;
|
||
end;
|
||
|
||
procedure TFormGrid.btExcluirClick(Sender: TObject);
|
||
var
|
||
Index: integer;
|
||
wObj: TObject;
|
||
begin
|
||
Index := StringGrid1.Row;
|
||
try
|
||
wObj := FLista.getObjectByIndex(Index);
|
||
FLista.Excluir(Index);
|
||
finally
|
||
Self.Free;
|
||
end;
|
||
|
||
end;
|
||
|
||
procedure TFormGrid.FormClose(Sender: TObject; var Action: TCloseAction);
|
||
begin
|
||
Action := caFree;
|
||
end;
|
||
|
||
procedure TFormGrid.FormCreate(Sender: TObject);
|
||
begin
|
||
checkList := true;
|
||
end;
|
||
|
||
procedure TFormGrid.FormKeyPress(Sender: TObject; var Key: Char);
|
||
begin
|
||
edKeyPress.Text := Key;
|
||
ShowMessage(key);
|
||
ShowMessage('teste');
|
||
end;
|
||
|
||
procedure TFormGrid.geraGrid(Lista: TLista; Classe: TClass);
|
||
var
|
||
wCont: integer;
|
||
wObj: TObject;
|
||
begin
|
||
if checkList = true then
|
||
begin
|
||
FLista := Lista;
|
||
FClass := Classe;
|
||
checkList := false;
|
||
end;
|
||
StringGrid1.RowCount := Lista.Count;
|
||
for wCont := 0 to Lista.Count-1 do
|
||
begin
|
||
wObj := Lista.getObjectByIndex(wCont);
|
||
// fazer uma condi<64><69>o para cada tipo de Classe existente
|
||
if wObj.ClassType = TCidade then
|
||
with wObj as TCidade do
|
||
begin
|
||
StringGrid1.Cells[0, wCont] := inttostr(wCod);
|
||
StringGrid1.Cells[1, wCont] := wCidade;
|
||
StringGrid1.Cells[2, wCont] := wPais;
|
||
StringGrid1.Cells[3, wCont] := wUF;
|
||
end
|
||
else
|
||
if wObj.ClassType = TEstado then
|
||
with wObj as TEstado do
|
||
begin
|
||
StringGrid1.Cells[0, wCont] := inttostr(wCod);
|
||
StringGrid1.Cells[1, wCont] := wEstado;
|
||
StringGrid1.Cells[2, wCont] := wPais;
|
||
StringGrid1.Cells[3, wCont] := inttostr(wAliquota);
|
||
end
|
||
else
|
||
if wObj.ClassType = TPais then
|
||
with wObj as TPais do
|
||
begin
|
||
StringGrid1.Cells[0, wCont] := inttostr(wCod);
|
||
StringGrid1.Cells[1, wCont] := wPais;
|
||
StringGrid1.Cells[2, wCont] := wNacionalidade;
|
||
StringGrid1.Cells[3, wCont] := inttostr(wCodFed);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure TFormGrid.StringGrid1KeyPress(Sender: TObject; var Key: Char);
|
||
var
|
||
wObj: TObject;
|
||
wCol: integer;
|
||
wLista: TLista;
|
||
wCont: Integer;
|
||
begin
|
||
if ord(Key) = 8 then
|
||
begin
|
||
edKeyPress.Text := '';
|
||
limpaGrid();
|
||
StringGrid1.RowCount := FLista.Count;
|
||
for wCont := 0 to Flista.Count-1 do
|
||
begin
|
||
wObj := FLista.getObjectByIndex(wCont);
|
||
if wObj.ClassType = TCidade then
|
||
with wObj as TCidade do
|
||
begin
|
||
StringGrid1.Cells[0, wcont] := inttostr(wCod);
|
||
StringGrid1.Cells[1, wCont] := wCidade;
|
||
StringGrid1.Cells[2, wCont] := wPais;
|
||
StringGrid1.Cells[3, wCont] := wUF;
|
||
end
|
||
else
|
||
if wObj.ClassType = TEstado then
|
||
with wObj as TEstado do
|
||
begin
|
||
StringGrid1.Cells[0, wcont] := inttostr(wCod);
|
||
StringGrid1.Cells[1, wCont] := wEstado;
|
||
StringGrid1.Cells[2, wCont] := wPais;
|
||
StringGrid1.Cells[3, wCont] := inttostr(wAliquota);
|
||
end
|
||
else
|
||
if wObj.ClassType = TPais then
|
||
with wObj as TPais do
|
||
begin
|
||
StringGrid1.Cells[0, wcont] := inttostr(wCod);
|
||
StringGrid1.Cells[1, wCont] := wPais;
|
||
StringGrid1.Cells[2, wCont] := wNacionalidade;
|
||
StringGrid1.Cells[3, wCont] := inttostr(wCodFed);
|
||
end;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
edKeyPress.Text := edKeyPress.Text + key;
|
||
wCol :=StringGrid1.Col;
|
||
wLista := TLista.Create;
|
||
for wCont := 0 to FLista.Count-1 do
|
||
begin
|
||
wObj := FLista.getObjectByIndex(wCont);
|
||
if wObj.ClassType = TCidade then
|
||
begin
|
||
with wObj as TCidade do
|
||
if (wCol = 0) and (ContainsText (inttostr(wCod), edKeyPress.Text)) then
|
||
wLista.Inserir(wObj, TCidade)
|
||
else
|
||
if (wCol = 1) and (ContainsText (wCidade, edKeyPress.Text)) then
|
||
wLista.Inserir(wObj, TCidade)
|
||
else
|
||
if (wCol = 2) and (ContainsText (wPais, edKeyPress.Text)) then
|
||
wLista.Inserir(wObj, TCidade)
|
||
else
|
||
if (wCol = 3) and (ContainsText (wUF, edKeyPress.Text)) then
|
||
wLista.Inserir(wObj, TCidade);
|
||
end
|
||
else
|
||
if wObj.ClassType = TEstado then
|
||
begin
|
||
with wObj as TEstado do
|
||
if (wCol =0) and (ContainsText (inttostr(wCod), edKeypress.Text)) then
|
||
wLista.Inserir(wObj, TEstado)
|
||
else
|
||
if (wCol =1) and (ContainsText(wEstado, edkeyPress.Text)) then
|
||
wLista.Inserir(wObj, TEstado)
|
||
else
|
||
if (wCol =2) and (ContainsText(wPais, edKeyPress.Text)) then
|
||
wLista.Inserir(wObj, TEstado)
|
||
else
|
||
if (wCol =3) and (ContainsText(inttostr(wAliquota), edKeyPress.Text)) then
|
||
wLista.Inserir(wObj, TEstado);
|
||
end
|
||
else
|
||
if wObj.ClassType = TPais then
|
||
begin
|
||
with wObj as TPais do
|
||
if (wCol =0) and (ContainsText (inttostr(wCod), edKeyPress.Text)) then
|
||
wLista.Inserir(wObj, TPais)
|
||
else
|
||
if (wCol =1) and (ContainsText(wPais, edKeypress.Text)) then
|
||
wLista.Inserir(wObj, TPais)
|
||
else
|
||
if (wCol =2) and (ContainsText(wNacionalidade, edKeyPress.Text)) then
|
||
wLista.Inserir(wObj, TPais)
|
||
else
|
||
if (wCol =3) and (ContainsText(inttostr(wCodFed), edKeyPress.Text)) then
|
||
wLista.Inserir(wObj, TPais);
|
||
end;
|
||
end;
|
||
if wLista.Count > 0 then
|
||
begin
|
||
limpaGrid();
|
||
StringGrid1.RowCount := wLista.Count;
|
||
for wCont := 0 to wLista.Count-1 do
|
||
begin
|
||
wObj := wLista.getObjectByIndex(wCont);
|
||
if wObj.ClassType = TCidade then
|
||
with wObj as TCidade do
|
||
begin
|
||
StringGrid1.Cells[0, wCont] := inttostr(wCod);
|
||
StringGrid1.Cells[1, wCont] := wCidade;
|
||
StringGrid1.Cells[2, wCont] := wPais;
|
||
StringGrid1.Cells[3, wCont] := wUF;
|
||
end
|
||
else
|
||
if wObj.ClassType = TEstado then
|
||
with wObj as TEstado do
|
||
begin
|
||
StringGrid1.Cells[0, wCont] := inttostr(wCod);
|
||
StringGrid1.Cells[1, wCont] := wEstado;
|
||
StringGrid1.Cells[2, wCont] := wPais;
|
||
StringGrid1.Cells[3, wCont] := inttostr(wAliquota);
|
||
end
|
||
else
|
||
if wObj.ClassType = TPais then
|
||
with wObj as TPais do
|
||
begin
|
||
StringGrid1.Cells[0, wCont] := inttostr(wCod);
|
||
StringGrid1.Cells[1, wCont] := wPais;
|
||
StringGrid1.Cells[2, wCont] := wNacionalidade;
|
||
StringGrid1.Cells[3, wCont] := inttostr(wCodFed);
|
||
end;
|
||
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
|
||
end;
|
||
|
||
end.
|