



Fala galera do Show Delphi, tudo beleza?
Todo iniciante precisa de uma base para aperfeiçoar seu desenvolvimento. Um exemplo clássico que é ensinado nas faculdades é um CRUD de cidades, um seja, um cadastro com inclusão, alteração e exclusão de dados.
Código: É o campo de controle, utilizado como identificador único entre os registros. Este campo deve ser gerado automaticamente.
Nome: Campo para guardar o nome da Cidade.
UF: Campo para registrar o estado da Cidade.
No nosso exemplo utilizamos o Delphi 10.3 Rio e o Firedac.
Vamos ao código da tela principal.
Código ma integra da unit UPrincipal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | unit UPrincipal; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.DBCtrls, Data.DB, Vcl.ExtCtrls, Vcl.Grids, Vcl.DBGrids; type TFrmPrincipal = class(TForm) DSCidade: TDataSource; GridCidade: TDBGrid; Panel1: TPanel; EdtCodigo: TDBEdit; Label1: TLabel; Label2: TLabel; EdtNome: TDBEdit; EdtUF: TDBEdit; Label3: TLabel; BtnIncluir: TButton; BtnAlterar: TButton; BtnExcluir: TButton; BtnSalvar: TButton; BtnCancelar: TButton; NavCidade: TDBNavigator; procedure BtnIncluirClick(Sender: TObject); procedure BtnAlterarClick(Sender: TObject); procedure BtnExcluirClick(Sender: TObject); procedure BtnSalvarClick(Sender: TObject); procedure BtnCancelarClick(Sender: TObject); procedure DSCidadeDataChange(Sender: TObject; Field: TField); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var FrmPrincipal: TFrmPrincipal; implementation {$R *.dfm} uses Data.Principal; procedure TFrmPrincipal.BtnAlterarClick(Sender: TObject); begin DSCidade.DataSet.Edit; EdtNome.SetFocus; end; procedure TFrmPrincipal.BtnCancelarClick(Sender: TObject); begin DSCidade.DataSet.Cancel; end; procedure TFrmPrincipal.BtnExcluirClick(Sender: TObject); begin if (Application.MessageBox('Deseja realmente excluir este registro?', 'Confirmação', MB_ICONQUESTION + MB_USEGLYPHCHARS) = mrYes) then DSCidade.DataSet.Delete; end; procedure TFrmPrincipal.BtnIncluirClick(Sender: TObject); begin DSCidade.DataSet.Append; EdtNome.SetFocus; end; procedure TFrmPrincipal.BtnSalvarClick(Sender: TObject); begin DSCidade.DataSet.Post; end; procedure TFrmPrincipal.DSCidadeDataChange(Sender: TObject; Field: TField); begin EdtNome.Enabled := DSCidade.DataSet.State in [dsInsert, dsEdit]; EdtUF.Enabled := DSCidade.DataSet.State in [dsInsert, dsEdit]; BtnIncluir.Enabled := not (DSCidade.DataSet.State in [dsInsert, dsEdit]); BtnAlterar.Enabled := ((not (DSCidade.DataSet.State in [dsInsert, dsEdit])) and (not (DSCidade.DataSet.IsEmpty))); BtnExcluir.Enabled := ((not (DSCidade.DataSet.State in [dsInsert, dsEdit])) and (not (DSCidade.DataSet.IsEmpty))); BtnSalvar.Enabled := DSCidade.DataSet.State in [dsInsert, dsEdit]; BtnCancelar.Enabled := DSCidade.DataSet.State in [dsInsert, dsEdit]; end; procedure TFrmPrincipal.FormCreate(Sender: TObject); begin if not (DSCidade.DataSet.Active) then DSCidade.DataSet.Open; end; end. |
Também vamos conferir o código do datamodule.
Código na integra da unit Data.Principal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | unit Data.Principal; interface uses System.SysUtils, System.Classes, Data.DB, FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf, FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async, FireDAC.Phys, FireDAC.VCLUI.Wait, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf, FireDAC.DApt, FireDAC.Comp.DataSet, FireDAC.Comp.Client, FireDAC.Phys.FB, FireDAC.Phys.FBDef, FireDAC.Phys.IBBase; type TDtmPrincipal = class(TDataModule) Base: TFDConnection; QryCidade: TFDQuery; FDPhysFBDriverLink1: TFDPhysFBDriverLink; procedure DataModuleCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var DtmPrincipal: TDtmPrincipal; implementation {%CLASSGROUP 'Vcl.Controls.TControl'} {$R *.dfm} uses Forms; procedure TDtmPrincipal.DataModuleCreate(Sender: TObject); var vName : String; begin Base.Connected := False; vName := ExtractFilePath(Application.ExeName) + '..\..\db\CIDADE.FDB'; Base.Params.Database := vName; Base.Params.UserName := 'SYSDBA'; Base.Params.Password := 'masterkey'; Base.Open; end; end. |
Quem precisa de ajuda para criar a base de dados, preparamos um vídeo para ajudar.
Lembrando que o banco de dados que acompanha o exemplo foi criado com o firebird 3.0 e caso você utilize outra versão, dentro do exemplo a um arquivo script.sql que contém os comandos para a criação do banco.
Também preparamos um vídeo para explicar melhor o exemplo.
Nele é demonstrado a execução do programa.
Também disponibilizamos para download os arquivos deste exemplo.
[download id=”3916″]
Dúvidas ou sugestões? Deixe o seu comentário!
Um abraço e até a próxima. Valeu!
Você precisa fazer o login para publicar um comentário.
Uma sugestão, poderia criar um variável pra armazenar o estado Ativo/Inativo e assim não repetir tanto o código alí.
Bacana, parabéns pelo texto pekla aula, e tem muitos componentes no delphi como Fire Dac que pra maioria das pessoas seria se grande valia conhecer o básico, porque normalmente é complicado pra algumas pessoas ter uma boa base pra começar subir os degraus e evoluir nos seus estudos.
Parabéns
Parabéns e muito obrigado!