crud-delphi/UnitFormGrid.pas
2018-08-22 09:12:03 -03:00

262 lines
8.4 KiB
ObjectPascal
Raw Blame History

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;
edPesquisa: TEdit;
procedure geraGrid(Lista: TLista; Classe: TClass);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btExcluirClick(Sender: TObject);
procedure btEscolherClick(Sender: TObject);
procedure edPesquisaChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
palavra: string;
public
{ Public declarations }
end;
var
FormGrid: TFormGrid;
FClass: TClass;
FLista: TLista;
checkList: boolean;
implementation
{$R *.dfm}
uses UnitFormCidade;
procedure TFormGrid.btEscolherClick(Sender: TObject);
var
wObj: TObject;
FormCidade: TFormCidade;
begin
try
if FClass = TCidade then
Dado1.Dado := StringGrid1.Row;
if FClass = TEstado then
Dado2.Dado := StringGrid1.Row;
if FClass = TPais then
Dado3.Dado := StringGrid1.Row;
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.edPesquisaChange(Sender: TObject);
var
wCont: integer;
wObj: TObject;
wLista: TLista;
linha: integer;
begin
palavra := edPesquisa.Text;
if palavra <> '' then
begin
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
begin
if ContainsText(wCidade, palavra) then
begin
wLista.Inserir(wObj, TCidade);
end;
end;
end
else
if wObj.ClassType = TEstado then
begin
with wObj as TEstado do
begin
if ContainsText (wEstado, palavra) then
begin
wLista.Inserir(wObj, TEstado);
end;
end;
end
else
if wObj.ClassType = TPais then
begin
with wObj as TPais do
begin
if ContainsText (wPais, palavra) then
begin
wLista.Inserir(wObj, TPais);
end;
end;
end;
end;
if wLista.Count > 0 then
begin
for linha:= 1 to StringGrid1.RowCount -1 do
begin
StringGrid1.Rows[linha].Clear; //Cells[coluna,linha]:='';
end;
StringGrid1.RowCount := wLista.Count;
for wCont := 0 to wLista.Count-1 do
begin
wObj := wLista.getObjectByIndex(wCont);
if wObj.ClassType = TCidade then
begin
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;
end
else
if wObj.ClassType = TEstado then
begin
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;
end
else
if wObj.ClassType = TPais then
begin
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
else
begin
StringGrid1.RowCount := Flista.Count;
for wCont := 0 to FLista.Count-1 do
begin
wObj := FLista.getObjectByIndex(wCont);
if wObj.ClassType = TCidade then
begin
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;
end
else
if wObj.ClassType = TEstado then
begin
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;
end
else
if wObj.ClassType = TPais then
begin
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;
procedure TFormGrid.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;
procedure TFormGrid.FormCreate(Sender: TObject);
begin
checkList := true;
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;
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;
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.