dicas show delphi

DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais
sombra
Artigos Show Delphi

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais
sombra
iniciantes show delphi

INICIANTES

Aprenda a programar de um modo simples e fácil.

Saiba mais
sombra
downloads show delphi

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
sombra
voltar

PARA QUEM GOSTA DE DELPHI

Exemplo de Cadastro de Cidades com Delphi e FireDac

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.

Neste exemplo temos três campos:

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!

  • Giovani Da Cruz
  • 3 comentários
  • 9 de maio de 2020

3 respostas para “Exemplo de Cadastro de Cidades com Delphi e FireDac”

  1. Paulo Henrique disse:

    Uma sugestão, poderia criar um variável pra armazenar o estado Ativo/Inativo e assim não repetir tanto o código alí.

  2. acs disse:

    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

  3. jotashow disse:

    Parabéns e muito obrigado!

Deixe um comentário

Ir ao topo

© 2024 Infus Soluções em Tecnologia - Todos os Direitos Reservados