Olá amigos! Dando continuidade ao artigo anterior, vamos desenvolver nossa interface e relizar a conexão com o banco de dados.
Inicie o Delphi, salve sua nova aplicação, eu vou chamá-la de ExemploArtigo.drp
Dica: Sempre que trabalhar com o Delphi, procure manter organizada a pasta da aplicação, isso facilitará a futura edição do código por programadores, existem alguns artigos na internet sugerindo formas de nomenclatura e organização dos arquivos, eu vou sugerir a seguinte organização para a nossa aplicação:
Pasta da aplicação
C:\ExemploArtigo
Diretório onde serão salvos os códigos fonte
C:\ExemploArtigo\Fontes
Diretório para o banco de dados
C:\ExemploArtigo\BD
Dando sequencia : Altere no Object Inspector a propriedade Caption para Cadastro de Clientes.
Na aba de componentes "Standart", insira um "Panel" em Object Inspector altere a propriedade Align para alBottom. Depois insira um "GroupBox" em Object Inspector altere a propriedade Align para alTop. Continuando vá até a aba "Data Controls" adicione o componente "DBGrid1" e em Object Inspector altere a propriedade Align para alClient.
Nosso form deverá ficar conforme imagem abaixo:

Continue desenhando a interface, use sua criatividade! Eu desenhei um form simples, fiz uma imagem para utilizarmos de topo... Vamos precisar dos campos para pesquisa e cadastro:

Nomenclatura dos campos:
Campos de pesquisa
edtPTipo tipo TEdit
edtPNome tipo TEdit
Campos do Formulário de cadastro
cbTipo tipo TComboBox
edtNome tipo TEdit
edtTelefone tipo TEdit
edtEmail tipo TEdit
Botões
btnCadastrar tipo TButton
btnAlterar tipo TButton
btnExcluir tipo TButton
Pronto! Agora com o formulário principal criado, vamos criar um novo item, um Data Module (Conforme Imagem abaixo)
Salve a Unit dentro da pasta Fontes com o nome DMCada (Conforme imagem abaixo)
Em Object Inspector altere a propriedade "NAME" para DM.
Agora vamos criar nossa conexão com o banco de dados na aba dbExpress adicione ao Data Module o Componente SQLConnection (Conforme imagem abaixo).

Agora vamos configurar a conexão, mude a propriedade name para "Conexao" e de um duplo clique sobre o componente clique no botão "[ + ]" Add Connection
Selecione a opção "Interbase" em Driver Name e após digite "ExemploArtigo" em Connection Name - Clique em OK
Em Database informe o caminho do banco de dados no nosso caso "C:\ExemploArtigo\BD\BANCODADOS.FDB"
Altere a opção SQLDialect para 3 - Clique em OK

De volta a janela anterior selecione o componente SQLConnection "Conexão" e altere as seguintes propriedades: (Conforme imagem abaixo)
LoginPrompt = False
Connected = True
Pronto a conexão com o banco de dados está criada, agora vamos criar a consulta SQL, para isso adicione no Data Module os seguintes componentes:
Na janela dbExpress o componente SQLDataSet
Na janela Data Access o componente DataSetProvider
Na janela Data Access o componente ClientDataSet
Na janela Data Access o componente DataSource
Verifique na imagem abaixo a ordem dos componentes
Agora vamos alterar os nomes "na propriedade Name" de cada componente e configurá-los:
SQLDataSet = sqlClientes
DataSetProvider = dspClientes
ClientDataSet = cdsClientes
DataSource = dsClientes
Agora vamos configurar os componentes na sequencia em que os inserimos:
1º - Configurando o SQLDataSet : sqlClientes
Nota: Esse componente será responsável pela conexão direta com a tabela, ele estará relacionado ao componente SQLConnection e ao componente DataSetProvider
Clique uma vez sobre o componente sqlClientes na opção SQLConnection em Object Inspector selecione o componente "Conexão"
Continuando, selecione componente sqlClientes, em Object Inspector digite o comando abaixo no campo CommandText:
select * from CLIENTES
Agora "dê" um duplo-clique sobre o componente sqlClientes clique com o botão direito do mouse dobre a janela aberta e selecione a opção "add all fields" conforme imagem abaixo:
Ainda na janela (exibida na imagem acima) selecione o campo SEQ e em Object Inspector altere a propriedade Required para False
2º - Configurando o DataSetProvider = dspClientes
Nota: Esse componente estará relacionado ao componente SQLDataSet e ao componente ClientDataSet
Clique uma vez sobre o componente dspClientes em Object Inspector selecione na opção DataSet o componente sqlClientes
3º - Configurando o ClientDataSet = cdsClientes
Nota: Esse componente estará relacionado ao componente DataSetProvider e ao componente DataSource
Clique uma vez sobre o componente cdsClientes e em Object Inspector na opção ProviderName selecione a opção dspClientes
Agora "dê" um duplo-clique sobre o componente cdsClientes clique com o botão direito do mouse dobre a janela aberta e selecione a opção "add all fields".
4º - Configurando o DataSource = dsClientes
Nota: Esse componente estará relacionado somente ao componente ClientDataSet
Clique uma vez sobre o componente dsClientes e em Object Inspector na opção DataSet selecione a opção cdsClientes
Pronto, terminamos nossas configurações com o banco de dados! Agora vamos à programação!
Editando o código da Unit frmPrincipal adicione logo abaixo de implementation o seguinte trecho em "vermelho":
frmPrincipal
implementation
{$R *.dfm}
Uses
DmCada;
Nota: Você não pode usar o comando Uses para dizer ao compilador onde encontrar um arquivo de origem, o arquivo já deve fazer parte do projeto.
Clique uma vez sobre o componente DBGrid1 e em Object Inspector na opção DataSet selecione a opção DataSource selecione a opção dsClientes, conforme imagem abaixo:

Agora "dê" um duplo-clique sobre o componente DBGrid1 clique com o botão direito do mouse dobre a janela aberta e selecione a opção "add all fields"
Selecione os campos "um a um " e defina o tamanho pretendido, alterando a propriedade Width em object inspector.
No evento FormShow (Quando o form for exibido) vamos ativar o cdsClientes, aproveitando o mesmo evento, vamos desabilitar os botões "Salvar" e "Cancelar".
procedure TForm1.FormShow(Sender: TObject); begin DM.cdsClientes.Active := True;
btnSalvar.Enabled := False; btnCancelar.Enabled := False; end;
Vamos programar os eventos de inclusão, alteração e exclusão dos registros.
1º Inclusão / Cadastro
"Dê" um duplo-clique no botão Novo
btnCadastrarClick
procedure TForm1.btnCadastrarClick(Sender: TObject);
begin
DM.cdsClientes.Append;
btnSalvar.Enabled := True;
btnCancelar.Enabled := True;
btnCadastrar.Enabled := False;
btnAlterar.Enabled := False;
btnExcluir.Enabled := False;
end;
2º Alteração
"Dê" um duplo-clique no botão Alterar
btnAlterarClick
procedure TForm1.btnAlterarClick(Sender: TObject);
begin
//Primeiro vamos validar se há itens para edição
if DM.cdsClientes.RecordCount = 0 then
begin MessageDlg('Não há registros para alterar!', mtWarning, [mbOK], 0);
exit;
end;
//Agora vamos carregar os valores da tabela nos campos
cbTipo.Text := DM.cdsClientes.FieldByName('TIPO').AsString;
edtNome.Text := DM.cdsClientes.FieldByName('NOME').AsString;
edtTelefone.Text := DM.cdsClientes.FieldByName('TELEFONE').AsString;
edtEmail.Text := DM.cdsClientes.FieldByName('EMAIL').AsString;
DM.cdsClientes.Edit; //Colocando em modo de edição
btnSalvar.Enabled := True;
btnCancelar.Enabled := True;
btnCadastrar.Enabled := False;
btnAlterar.Enabled := False;
btnExcluir.Enabled := False;
end;
3º Exclusão
"Dê" um duplo-clique no botão Excluir
btnExcluirClick
procedure TForm1.btnExcluirClick(Sender: TObject);
begin
if DM.cdsClientes.RecordCount = 0 then
begin
MessageDlg('Não há registros para excluir!', mtWarning, [mbOK], 0);
exit;
end
else
begin
If MessageDlg('Deseja realmente excluir este cliente ?',mtConfirmation,
[mbNo, mbYes],0) <> 6 Then
Exit;
DM.cdsClientes.Delete; DM.cdsClientes.ApplyUpdates(0);
DM.cdsClientes.Refresh; MessageDlg('Registro excluido com sucesso!', mtInformation, [mbOK], 0); end;
end;
4º Salvando as informações
"Dê" um duplo-clique no botão Salvar
btnSalvarClick
procedure TForm1.btnSalvarClick(Sender: TObject); begin
//Antes de gravar vamos validar os campos
if edtNome.Text = '' then begin MessageDlg('Preencha o campo Nome', mtWarning, [mbOK], 0); exit; end;
if edtTelefone.Text = '' then begin MessageDlg('Preencha o campo Telefone', mtWarning, [mbOK], 0); exit; end;
if edtEmail.Text = '' then begin MessageDlg('Preencha o campo Email', mtWarning, [mbOK], 0); exit; end;
DM.cdsClientes.FieldByName('TIPO').AsString := cbTipo.Text; DM.cdsClientes.FieldByName('NOME').AsString := edtNome.Text; DM.cdsClientes.FieldByName('TELEFONE').AsString := edtTelefone.Text; DM.cdsClientes.FieldByName('EMAIL').AsString := edtEmail.Text; DM.cdsClientes.ApplyUpdates(0); DM.cdsClientes.Refresh;
MessageDlg('Informações Salvas com sucesso!', mtInformation, [mbOK], 0); btnSalvar.Enabled := False; btnCancelar.Enabled := False; btnCadastrar.Enabled := True; btnAlterar.Enabled := True; btnExcluir.Enabled := True;
// Limpa os campos
edtNome.Clear; edtTelefone.Clear; edtEmail.Clear;
end;
5 º Cancelamento da operação
"Dê" um duplo-clique no botão Cancelar
btnCancelarClick
procedure TForm1.btnCancelarClick(Sender: TObject);
begin
Dm.cdsClientes.Cancel; // Cancela a operação no cds
btnSalvar.Enabled := False;
btnCancelar.Enabled := False;
btnCadastrar.Enabled := True;
btnAlterar.Enabled := True;
btnExcluir.Enabled := True;
// Limpa os campos
edtNome.Clear;
edtTelefone.Clear;
edtEmail.Clear;
end;
Por enquanto é isso pessoal! Na terceira e última parte dessa sequencia de artigos, faremos a pesquisa e a conclusão do projeto.
Um grade abraço e até o próximo artigo!
Por:
Bruno Giovani Caltran
Contato: bruno@pirabyte.com.br |
Twitter: http://twitter.com/bgcaltran
|