DICAS

Visite a biblioteca de dicas da comunidade.

Saiba mais

ARTIGOS

Abordagens detalhadas sobre assuntos diversos.

Saiba mais

INICIANTES

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

Saiba mais

DOWNLOADS

Acesse os materiais exclusivos aos membros.

Saiba mais
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 “Cadastro de Cidades em Delphi com Firedac e Firebird”

cadastro-cidades-firedasc.zip – Baixado 377 vezes – 131,13 KB

Dúvidas ou sugestões? Deixe o seu comentário!

Um abraço e até a próxima. Valeu!

Facebook Comments Box
  • Giovani Da Cruz
  • 7.163 views
  • 3 comentários
  • 9 de maio de 2020

Está gostando do conteúdo? Considere pagar um cafezinho para nossa equipe!

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