Artigo Clube Delphi Edição 30 - Sistema Datacar

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Artigo da Revista Clube Delphi Edição 30.

Esse artigo faz parte da revista Clube Delphi edição 30. Clique aqui para ler todos os artigos desta edição

Sistema Datacar

Criação de um sistema completo com Delphi/Kylix

Parte 2 – Iniciando o acesso a dados

Na primeira parte deste artigo (Edição 29), apresentamos o sistema Datacar, modelamos as tabelas, criamos o banco de dados, construímos o formulário principal e o de base de cadastro, além dos formulários para as tabelas do sistema. Nesta segunda parte, adicionaremos funcionalidade ao formulário de cadastro, e construiremos o Data Module e o acesso a dados.

Personalizando o cadastro padrão

No artigo anterior criamos uma interface padrão para as fichas de cadastro, porém, não adicionamos suas funcionalidades. Abra então o formulário FrmFichaPai que está na unit UFichaPai para iniciar a codificação.

Quando abrir qualquer ficha de cadastro, o usuário deverá ter somente a opção de Incluir ou Procurar um registro. Então, configure a propriedade Enabled dos botões Gravar, Cancelar e Excluir como False. A partir deste momento o sistema deverá controlar os botões automaticamente. O fato de o botão estar habilitado ou não dependerá do estado da tabela. Uma tabela pode estar em 13 diferentes estados. Apenas quatro são importantes para nós: dsInsert (o usuário está inserindo um registro), dsEdit (está alterando), dsBrowse (está consultando ou navegando pelos registros) e dsInactive (a tabela está fechada).

O componente TDataSource (que chamamos de "DtSrc") possui uma propriedade chamada State que informa o estado atual da tabela. Possui também o evento OnStateChange que é chamado a cada vez que o estado da tabela é alterado. Podemos controlar a propriedade Enabled dos botões a partir deste evento, com o seguinte código:

 

procedure TFrmFichaPai.DtSrcStateChange(Sender: TObject);

const

 Estados: array [TDataSetState] of string =

   ('Fechado','Consultando','Alterando','Inserindo',

    '','','','','','','','','');

begin

  btnIncluir.Enabled   := DtSrc.State in [dsBrowse,dsInactive];

  btnGravar.Enabled    := DtSrc.State in [dsInsert,dsEdit];

  btnCancelar.Enabled  := DtSrc.State in [dsInsert,dsEdit];

  btnExcluir.Enabled   := DtSrc.State in [dsBrowse];

  btnProcurar.Enabled  := DtSrc.State in [dsBrowse,dsInactive];

  StsBr.Panels[0].Text := Estados[DtSrc.State];

end;

 

Observe que o array de strings é baseado na enumeração TDataSetState, que contém os possíveis estados da tabela. Este array é usado na última linha de código para preencher o primeiro painel da StatusBar (que chamamos de "StsBr"). Inicialmente este evento não será chamado, pois a tabela está fechada. Assim, coloque "Fechado" na propriedade Text do primeiro painel.

Outra funcionalidade importante que adicionamos ao cadastro é a de verificar se os campos requeridos foram preenchidos. Declare, na seção private, a função Verifica_Campos_Em_Branco e implemente-a da seguinte forma:

 

function TFrmFichaPai.Verifica_Campos_Em_Branco: Boolean;

var cont: Integer;

begin

  Result:=True; //assume que estão todos preenchidos

  for cont:= 0 to DtSrc.DataSet.FieldCount - 1 do

    if DtSrc.DataSet.Fields[cont].Required then

      if (DtSrc.DataSet.Fields[cont].IsNull) or

         (DtSrc.DataSet.Fields[cont].AsString='') then

"

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?