unit Produtos;

interface

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

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

var
  fmProdutos: TfmProdutos;

implementation
        uses base;
{$R *.DFM}

procedure TfmProdutos.btSaidaClick(Sender: TObject);
begin
        {Fecha Janela Produtos}
        Close;
end;

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

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

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

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

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

        {Atribui o valor do campo Produto(Informativo) ao campo Codigo(Produto)}
        Dados.tbProdutosCodigo.Value:=Dados.tbInformativoProduto.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 TfmProdutos.btAlteraClick(Sender: TObject);
begin
        {---- Rotina de Alteração -----}

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

        { Coloca a tabela de produtos em modo de inserção }
        Dados.tbProdutos.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 TfmProdutos.btConfirmaClick(Sender: TObject);
begin
        {---- Rotina do Botao Confirma ---}

        { Confirma Dados da tabela Produto }
        Dados.tbProdutos.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;

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

        { 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;

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

end;

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

end;

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

end.
