unit Clientes;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Mask, DBCtrls, Buttons, Grids, DBGrids, ExtCtrls;

type
  TfmClientes = class(TForm)
    Panel2: TPanel;
    DBGrid1: TDBGrid;
    PainelDados: TPanel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    btConfirma: TSpeedButton;
    btDesiste: TSpeedButton;
    DBText1: TDBText;
    DBEdit1: TDBEdit;
    DBEdit2: TDBEdit;
    PainelControle: TPanel;
    btSaida: TSpeedButton;
    btPesquisa: TSpeedButton;
    btInclui: TSpeedButton;
    btAltera: TSpeedButton;
    btElimina: TSpeedButton;
    Label4: TLabel;
    DBEdit3: TDBEdit;
    procedure btIncluiClick(Sender: TObject);
    procedure btAlteraClick(Sender: TObject);
    procedure btConfirmaClick(Sender: TObject);
    procedure btDesisteClick(Sender: TObject);
    procedure btSaidaClick(Sender: TObject);
    procedure DBEdit1Enter(Sender: TObject);
    procedure DBEdit1Exit(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormKeyPress(Sender: TObject; var Key: Char);
    procedure btPesquisaClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  fmClientes: TfmClientes;

implementation
        uses base, Global, BuscaCliente;
{$R *.DFM}

procedure TfmClientes.btIncluiClick(Sender: TObject);
begin
        {---- Rotina de Inclusão -----}

        { Incrementa Código do Cliente na Tabela de Informativo,
          Simulando um Campo AutoIncrement }

        Dados.TbInformativo.Edit; // Coloca a Tabela em Modo de Edição
        Dados.tbInformativoCliente.Value:=Dados.tbInformativoCliente.Value+1; // Incrementa
        Dados.tbInformativo.Post; // Confirma a Alteração

        { Inicia uma Transação no BancodeDados }
        if tela<>'PEDIDOS' then
                Dados.BancodeDados.StartTransaction;

        { Coloca a tabela de Clientes em modo de inserção }
        Dados.tbClientes.Append;

        {Atribui o valor do campo Cliente(Informativo) ao campo Codigo(Cliente)}
        Dados.tbClientesCodigo.Value:=Dados.tbInformativoCliente.Value;

        {Torna visível o PainelDados}
        PainelDados.Visible:=True;

        {Torna Invisível o PainelControle}
        PainelControle.Visible:=False;

        {Posiciona o Cursor no Objeto DBEdit1}
        DbEdit1.SetFocus;

end;

procedure TfmClientes.btAlteraClick(Sender: TObject);
begin
        {---- Rotina de Alteração -----}

        { Inicia uma Transação no BancodeDados }
        Dados.BancodeDados.StartTransaction;

        { Coloca a tabela de Clientes em modo de inserção }
        Dados.tbClientes.Edit;

        {Torna visível o PainelDados}
        PainelDados.Visible:=True;

        {Torna Invisível o PainelControle}
        PainelControle.Visible:=False;

        {Posiciona o Cursor no Objeto DBEdit1}
        DbEdit1.SetFocus;

end;

procedure TfmClientes.btConfirmaClick(Sender: TObject);
begin
        {---- Rotina do Botao Confirma ---}

        { Verifica se a chamada vem da tela de Pedidos }
        if TELA='PEDIDOS' then
                begin
                        Tela:='CONFIRMOU';
                        Close;
                end
        else
        begin

        { Confirma Dados da tabela Produto }
        Dados.tbClientes.Post;

        { Confirma Dados no BancodeDados }
        Dados.BancodeDados.Commit;

        {Torna invisível o PainelDados}
        PainelDados.Visible:=False;

        {Torna Visível o PainelControle}
        PainelControle.Visible:=True;

        end;



end;

procedure TfmClientes.btDesisteClick(Sender: TObject);
begin
        {---- Rotina do Botao Desiste ---}

        { Verifica se a chamada vem da tela de Pedidos }
        if TELA='PEDIDOS' then
                begin
                        Tela:='DESISTIU';
                        Close;
                end
        else
        begin

        { Desiste dos Dados da tabela Produto }
        Dados.tbProdutos.Cancel;

        { Desiste dos Dados no BancodeDados }
        Dados.BancodeDados.RollBack;

        {Torna invisível o PainelDados}
        PainelDados.Visible:=False;

        {Torna Visível o PainelControle}
        PainelControle.Visible:=True;

        end;


end;

procedure TfmClientes.btSaidaClick(Sender: TObject);
begin
        { Fecha Janela de Clientes }
        Close;
end;

procedure TfmClientes.DBEdit1Enter(Sender: TObject);
begin
        {Altera a cor do objeto (caso seja do tipo TDbEdit) para Amarelo}
        (Sender as TDbEdit).Color:=clYellow;
end;

procedure TfmClientes.DBEdit1Exit(Sender: TObject);
begin
        {Altera a cor do objeto (caso seja do tipo TDbEdit) para Branco}
        (Sender as TDbEdit).Color:=clWhite;
end;

procedure TfmClientes.FormShow(Sender: TObject);
begin
        { Verifica se a chamada vem da tela de Pedidos}
        if tela='PEDIDOS' then btIncluiClick(Self);
end;

procedure TfmClientes.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
   begin
        key:=#0;
        postmessage(handle,WM_keydown,vk_tab,1);
   end;
end;

procedure TfmClientes.btPesquisaClick(Sender: TObject);
begin
        { Altera o indice da tabela de Clientes para Localizar por Telefone.
          Caso queira localizar por Nome, crie um indice para o campo Nome,
          e altere a propriedade abaixo.}

        Dados.tbClientes.IndexName:='idxTelefone';

        { Chama Formulário para Localização de Cliente}
        FmBuscaCli.ShowModal;

        { Retorna ao Indice original da tabela de Clientes}
        Dados.tbClientes.IndexName:='';

end;

end.
