Buscar

Curso Delphi – Criando uma Aplicação do Início ao fim - Parte 11

nome

Rubens Antunes

Rubens Antunes, Autor do Livro Delphi Faça uma Aplicação Comercial e Desenvolvedor Delphi desde de 2004.

Neste artigo irei demonstrar como adicionar em nosso formulário de venda o cliente e os produtos, vamos fazer uma pesquisa no próprio formulário de vendas, apenas mandando ficar visível ou não uma Dbgrid e um Edit. Vamos a prática.

Abra o formulário de frmCadVendas e adicione um edit exatamente em cima DbEdit7, a onde é mostrado o nome do cliente, e mude a propriedade name para edtCliente, logo abaixo coloque um Dbgrid e mude a propriedade name para dbgCliente e mude a propriedade visible para false, abra o data module dmPedido e adicione o componente SqlDataset e mude as seguintes propriedades:


Adicione um componente DataSetProvider e mude as seguintes propriedades:


Adicione um componente ClientDataSet e mude as seguintes propriedades:


Feito isso, retorne ao formulário frmCadVenda e adicione o componente DataSource e mude as seguintes propriedades:


Selecione o o Edit edtCliente e coloque o seguinte código no evento OnkeyPress:

procedure TfrmCadVenda.edtClienteKeyPress(Sender: TObject; var Key: Char);
begin
  With dmPedido.cdsPesqCliente do
  begin
    Close;
    FetchParams;
    Params.ParamByName('NOME').AsString:=edtCliente.Text+'%';
    Open;
  end;
end;

Aqui estamos alimentando o parâmetro NOME em nossa instrução SQL dentro do evento OnKeyPress que assim que o usuário começar a digitar o nome do cliente ele irá começar a busca.

No evento OnClick do edtNome coloque o seguinte código:

procedure TfrmCadVenda.edtClienteClick(Sender: TObject);
begin
  dbgCliente.Visible:=True;
end;

Assim que o usuário acessar o edtNome ele tornará visível o nosso dbgrid.. Execute a aplicação e veja como ficou a nossa pesquisa na figura a seguir:


Agora vamos selecionar o cliente. Iremos criar uma procedure, para podermos acessar de qualquer evento. No nosso formulário frmCadVenda na declaração Private coloque o seguinte código:

private
    procedure escolha;
    { Private declarations }
  public
    { Public declarations }

Tecle Ctrl+Shift+C para implementar a procedure e coloque o seguinte código:

procedure TfrmCadVenda.escolha;
begin
  dbgCliente.Visible:=False; // Torna o DbGrid Invisível
  edtCliente.Visible:=False; // Torna o edit invisível
  dmPedido.cdsCadPedido.Append; // Lança um novo registro em branco na tabela
  dmPedido.cdsCadPedidoIDCLIENTE.AsInteger:= // Alimenta o campo IDCliente
  dmPedido.cdsPesqClienteIDCLIENTE.AsInteger;
end;

No evento OnDblCllick do DbGrid dbgCliente coloque o seguinte código:

procedure TfrmCadVenda.dienteDblClick(Sender: TObject);
begin
  Escolha; // Aciona a procedure Escolha
end;

No evento OnKeyPress do DbGrid dbgCliente coloque o seguinte código:

procedure TfrmCadVenda.dbgClienteKeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then // #13 é a representação da tecla Enter, o key é a chave
    Escolha;
end;

Execute a aplicação e veja como ficou o nosso formulário.

Inserindo Produto

Vamos inserir agora o produto, para isso, iremos fazer uso do botão cbsEllipsis presente dentro do Dbgrid,. Dê dois cliques no Dbgrid de itens a abrirá a seguinte caixa:


Selecione a coluna PRODUTO e mude a propriedade ButtonStyle para cbsEllipsis, ok, já criamos o botão para fazermos uso do mesmo;

Criando Formulário

Vamos criar um novo formulário para pesquisar o produto, para isso vá em File, new e form – Delphi e mude as seguintes propriedades:


Salve o formulário como UfrmPesqProduto e deixe o formulário como a figura a seguir:


Abra o data module dmPedido o coloque os seguintes componentes e mude suas propriedades:


Retorne ao formulário frmPesqProduto e adicione um DataSource em nosso formulário e mude as seguintes propriedades:


Obs.: Caso não apareça nada na propriedade DataSet, você deve clicar em Alt+F11 e colar a unit UdmPedido.

Selecione o edit edtPesquisa e no evento OnKeypress, coloque o seguinte código:

procedure TfrmPesqProduto.edtPesquisarKeyPress(Sender: TObject; var Key: Char);
begin
  With dmPedido.cdsPesqProduto do
  begin
    Close;
    FetchParams;
    Params.ParamByName('PRODUTO').AsString:=edtPesquisar.Text+'%';
    Open;
  end;
end;

A pesquisa acima é como as outras que já fizemos. Agora selecione o dbGrid e colque o seguinte código no evento OnDblClick:

procedure TfrmPesqProduto.DBGrid1DblClick(Sender: TObject);
begin
  Close;
end;

No evento OnkeyPress:

procedure TfrmPesqProduto.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    Close;
end;

Agora iremos chamar o formulário frmPesqProduto, para isso, retorne ao frmCadVenda e selecione o DbGrid de itens e no evento OnEditBurttonClick coloque o seguinte código:

procedure TfrmCadVenda.DBGrid1EditButtonClick(Sender: TObject);
begin
  try
    frmPesqProduto:=TfrmPesqProduto.Create(self);
    frmPesqProduto.ShowModal;
  finally
    With dmPedido.cdsItens do
    begin
      Open;
      Append;
      FieldByName('IDPRODUTO').AsInteger:=dmPedido.cdsPesqProdutoIDPRODUTO.AsInteger;
      FieldByName('PRODUTO').AsString:=dmPedido.cdsPesqProdutoPRODUTO.AsString;
    end;
    freeAndNIl(frmPesqProduto);
  end;
end;

Aqui estamos chamando o formulário de pesquisa de produto assim que fechá-lo, eu recebo na tabela de itens o produto selecionado pelo usuário.

No evento OnCreate do formulário frmCadVenda coloque o seguinte código:

procedure TfrmCadVenda.FormCreate(Sender: TObject);
begin
  if not assigned(dmPedido) then
    dmPedido:=TdmPedido.Create(self);
dmPedido.cdsCadPedido.Open;
end;

No menu principal, clique em Project, Options e deixe os formulários e data modules como a figura a seguir:


Salve a aplicação a execute.

Fico por aqui no próximo artigo vamos melhorar a aparência do nosso formulário de vendas e criarmos o número do pedido.

Publicidade

Vote no artigo




Quantidade de votos: 1 voto
Aceitação: 20%


Detalhes do artigo

Categoria: Banco de dados
Adicionado dia: 21/07/10
Por: Rubens Antunes
Visualizado: 33205 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009