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.