unit cadProduto;

interface

uses
  Windows, system.UItypes, IB_Access,  Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ModeloCadastro, UCBase, ImgList, AppEvnts, IB_Components,
  ExtCtrls, StdCtrls, jpeg, Grids, IB_Grid, Buttons, ComCtrls, IB_Controls,
  Mask, IB_EditButton, System.ImageList;

type
  TfrmCadProduto = class(TFrModeloCadastro)
    GroupBox2: TGroupBox;
    edtDescricao: TIB_Edit;
    dsrTipo: TIB_DataSource;
    qrTipo: TIB_Query;
    GroupBox1: TGroupBox;
    dbMaximo: TIB_Edit;
    dbMinimo: TIB_Edit;
    dbAtual: TIB_Edit;
    dbCodigo: TIB_Edit;
    GroupBox3: TGroupBox;
    edtTipo: TIB_LookupCombo;
    edtGrupo: TIB_Edit;
    btnPesquisaTipo: TBitBtn;
    dbNomeFiscal: TIB_Edit;
    Panel9: TPanel;
    rdb_5_Dias: TRadioButton;
    rdb_15_dias: TRadioButton;
    rdb_30_dias: TRadioButton;
    rdbTodas: TRadioButton;
    grdMovimentacao: TIB_Grid;
    Label3: TLabel;
    pgcComplementar: TPageControl;
    tsClasseFiscal: TTabSheet;
    edtClasseFiscal: TIB_Edit;
    tsDetalhes: TTabSheet;
    IB_Edit3: TIB_Edit;
    IB_Edit4: TIB_Edit;
    dbConteudo: TIB_Edit;
    btnPesquisaUnidade: TBitBtn;
    btnIncluiUnidade: TBitBtn;
    dbUnidade: TIB_Edit;
    qryUnidade: TIB_Query;
    dtUnidade: TIB_DataSource;
    btnIncluiTipo: TBitBtn;
    qryClasseFiscal: TIB_Query;
    dtClasseFiscal: TIB_DataSource;
    TabSheet3: TTabSheet;
    dbObs: TIB_Memo;
    IB_Edit2: TIB_Edit;
    btnPequisaClasseFiscal: TBitBtn;
    btnIncluiClasseFiscal: TBitBtn;
    IB_Edit5: TIB_Edit;
    dbComposicao: TIB_Edit;
    btnComposicao: TBitBtn;
    btnIncluiComposicao: TBitBtn;
    qryComposicao: TIB_Query;
    dtComposicao: TIB_DataSource;
    edtTamanho: TIB_Edit;
    IB_Edit6: TIB_Edit;
    GroupBox4: TGroupBox;
    dbCodigoBarras: TIB_Edit;
    ts1: TTabSheet;
    grdItentificadores: TIB_Grid;
    qryItentificadores: TIB_Query;
    dtIdentificadores: TIB_DataSource;
    btnCancelaIdentificador: TBitBtn;
    btnRetirarItem: TBitBtn;
    btnIncluirIdentificador: TBitBtn;
    btnSalvaIdentificador: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure AtualizaTela;
    procedure BtExcluirClick(Sender: TObject);
    procedure BtCancelarClick(Sender: TObject);
    procedure BtAnteriorClick(Sender: TObject);
    procedure BtProximoClick(Sender: TObject);
    procedure BtInserirClick(Sender: TObject);
    procedure BtEditarClick(Sender: TObject);
    procedure BtGravarClick(Sender: TObject);
    procedure btnPesquisaTipoClick(Sender: TObject);
    procedure edtTipoKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnEditar2Click(Sender: TObject);
    procedure btnPesquisaUnidadeClick(Sender: TObject);
    procedure btnIncluiUnidadeClick(Sender: TObject);
    procedure btnIncluiTipoClick(Sender: TObject);
    procedure btnPequisaClasseFiscalClick(Sender: TObject);
    procedure edtClasseFiscalKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure btnIncluiClasseFiscalClick(Sender: TObject);
    procedure edtClasseFiscalExit(Sender: TObject);
    procedure btnComposicaoClick(Sender: TObject);
    procedure btnIncluiComposicaoClick(Sender: TObject);
    procedure dbComposicaoExit(Sender: TObject);
    procedure btnIncluirIdentificadorClick(Sender: TObject);
    procedure btnRetirarItemClick(Sender: TObject);
    procedure btnSalvaIdentificadorClick(Sender: TObject);
    procedure btnCancelaIdentificadorClick(Sender: TObject);
  private
    procedure MontaCodigoProduto;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCadProduto: TfrmCadProduto;

implementation

uses DataModulo, ModeloPesquisa, Rotinas, cadUnidades, CadTipoProduto,
  CadClasseFiscal, ComposicaoProduto;

{$R *.dfm}

procedure TfrmCadProduto.AtualizaTela;
begin
   //===================== Atualiza a visualizacao dos dados =====================
   if not qrTipo.Locate('COD_TIPO_PRODUTO' , TbPrincipal.FieldByName('COD_TIPO').Value, []) then
   begin
      if not qrTipo.Bof then
      begin
         qrTipo.First;
         qrTipo.Prior;
      end;
   end;

   if not qryUnidade.Locate('COD_UNIDADE' , TbPrincipal.FieldByName('COD_UNIDADE').Value, []) then
   begin
      if not qryUnidade.Bof then
      begin
         qryUnidade.First;
         qryUnidade.Prior;
      end;
   end;

   if not qryComposicao.Locate('CODIGO' , TbPrincipal.FieldByName('COMPOSICAO').Value, []) then
   begin
      if not qryComposicao.Bof then
      begin
         qryComposicao.First;
         qryComposicao.Prior;
      end;
   end;

   qryItentificadores.Close;
   qryItentificadores.ParamByName('VARCOD_PRODUTO').Value := TbPrincipal.FieldByName('COD_PRODUTO').Value;
   qryItentificadores.Open;
end;

procedure TfrmCadProduto.FormCreate(Sender: TObject);
begin
   Descricao_Unica := True;
   Campo_Tabela := 'DESCRICAO';

  inherited;
  qrTipo.Open;
  qryUnidade.Open;
  qryClasseFiscal.Open;
  qryComposicao.Open;
end;

procedure TfrmCadProduto.BtExcluirClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;
end;

procedure TfrmCadProduto.BtCancelarClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;
end;

procedure TfrmCadProduto.BtAnteriorClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;
end;

procedure TfrmCadProduto.BtProximoClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;
end;

procedure TfrmCadProduto.BtInserirClick(Sender: TObject);
var codProduto:String;
begin
  inherited;
   AtualizaTela;
  if Dados.qrParametro_Produto.FieldByName('PREFIXO_CODIGO').AsString <> '' then
    dbCodigo.Text:=Dados.qrParametro_Produto.FieldByName('PREFIXO_CODIGO').AsString;

   if Dados.qrParametro_Produto.FieldByName('CODIGO_SEQUENCIAL').AsBoolean  then
   begin
     codProduto:=FormatarTexto(IntToStr(ProximoCodigoChaveString('PRODUTO_ESTOQUE', 'COD_PRODUTO', '')), 5, False, '0');
     dbCodigo.Text:=dbCodigo.Text+codProduto;
   end;

  if Dados.qrParametro_Produto.FieldByName('PREFIXO_CODIGO_BARRAS').AsString <> '' then
    dbCodigoBarras.Text:=Dados.qrParametro_Produto.FieldByName('PREFIXO_CODIGO_BARRAS').AsString+codProduto;

end;

procedure TfrmCadProduto.BtEditarClick(Sender: TObject);
begin
  inherited;
   AtualizaTela;
end;

procedure TfrmCadProduto.BtGravarClick(Sender: TObject);
begin
   if edtTipo.Text = '' then
   begin
      MessageDlg('Informe o tipo do produto', mtWarning, [mbOK], 0);
      edtTipo.SetFocus;
      Exit;
   end;

   if edtDescricao.Text = '' then
   begin
      MessageDlg('Informe a descrição do produto', mtWarning, [mbOK], 0);
      edtDescricao.SetFocus;
      Exit;
   end;


   if edtGrupo.Text = '' then
   begin
      if (MessageDlg('Não foi informado o grupo do produto.'+#13+#10+'Deseja informar agora?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
         begin
            edtGrupo.SetFocus;
            Exit;
         end;
   end;

   if (dados.qrParametro_Produto.FieldByName('CLASSIFICACAO_OBR').AsBoolean) and (edtClasseFiscal.Text = '') then
   begin
      pgcComplementar.ActivePage := tsClasseFiscal;
      MessageDlg('Informe a Classificação Fiscal do produto', mtWarning, [mbOK], 0);
      edtClasseFiscal.SetFocus;
      Exit;
   end;

   if (dados.qrParametro_Produto.FieldByName('TAMANHO_OBR').AsBoolean) and (edtTamanho.Text = '') then
   begin
      pgcComplementar.ActivePage := tsDetalhes;
      MessageDlg('Informe o tamanho do produto', mtWarning, [mbOK], 0);
      edtTamanho.SetFocus;
      Exit;
   end;

   if dbCodigo.Text = '' then
   begin
      if (MessageDlg('Não foi informado o código do produto.'+#13+#10+'O sistema pode codificar?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
        begin
        if edtGrupo.Text = '' then
          begin
          MessageDlg('Para codificação automática é necessário o Grupo', mtError, [mbOK], 0);
          Exit;
          end
        else
        if edtGrupo.Text = '' then
          TbPrincipal.FieldByName('COD_TIPO').Value := null
        else
           TbPrincipal.FieldByName('COD_TIPO').Value := qrTipo.FieldByName('COD_TIPO_PRODUTO').Value;

        if (TbPrincipal.FieldByName('COD_PRODUTO').AsString = '') then
          MontaCodigoProduto;
        end
     else
       begin
         dbCodigo.SetFocus;
         Exit;
       end;
   end;

   if TbPrincipal.FieldByName('NOME_FISCAL').AsString = '' then
     TbPrincipal.FieldByName('NOME_FISCAL').AsString:=TbPrincipal.FieldByName('DESCRICAO').AsString;

   inherited;
end;

procedure TfrmCadProduto.btnPesquisaTipoClick(Sender: TObject);
begin
  inherited;
  if tbprincipal.state in [dssBrowse] then
  begin
    frmCadTipoProduto := TfrmCadTipoProduto.Create(Application);
    frmCadTipoProduto.OutraTela := True;
    frmCadTipoProduto.TbPrincipal.Locate('COD_TIPO_PRODUTO',TbPrincipal.FieldByName('COD_TIPO').AsInteger,[]);
    frmCadTipoProduto.BtEditar.Click;
    frmCadTipoProduto.ShowModal;
    frmCadTipoProduto.Destroy;
    Screen.OnActiveControlChange := TrocaCor;
  end
  else
  begin
   if TbPrincipal.State in [dssBrowse] then
     Exit;

   frmModeloPesquisa                  := TfrmModeloPesquisa.Create(Application);
   frmModeloPesquisa.Tabela           :=  qrTipo;
   frmModeloPesquisa.lbltitulo.Caption:= 'Pesquisa Tipo de Produtos';
   if frmModeloPesquisa.ShowModal = mrok then
   begin
      qrTipo.Locate('COD_TIPO_PRODUTO', frmModeloPesquisa.TbPrincipal.FieldByName('COD_TIPO_PRODUTO').Value ,[]);
      TbPrincipal.FieldByName('COD_TIPO').Value:=qrTipo.FieldByName('COD_TIPO_PRODUTO').Value;
   end;
   frmModeloPesquisa.Destroy;
   Screen.OnActiveControlChange := TrocaCor;
  end;
end;

procedure TfrmCadProduto.edtTipoKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
   if (Key =  VerificaAtalho(Dados.tbConfig.FieldByName('ATALHO_PESQUISA').AsString)) and ( edtGrupo.Focused) then
      btnPesquisaTipo.Click;
end;

procedure TfrmCadProduto.btnEditar2Click(Sender: TObject);
begin
  inherited;
   AtualizaTela;

end;

procedure TfrmCadProduto.MontaCodigoProduto;
var codigo:String;
begin
  qryPesquisa.Close;
  qryPesquisa.SQL.Clear;
  qryPesquisa.SQL.Add('SELECT mAX(produto_estoque.sequencia) ');
  qryPesquisa.SQL.Add('  FROM PRODUTO_ESTOQUE ');
  qryPesquisa.SQL.Add('  INNER JOIN produto_tipo_produto ON (produto_tipo_produto.cod_tipo_produto = produto_estoque.cod_tipo) ');
  qryPesquisa.SQL.Add('  INNER JOIN PRODUTO_GRUPO ON (PRODUTO_GRUPO.cod_grupo_produto = produto_tipo_produto.cod_grupo) ');
  qryPesquisa.SQL.Add('  WHERE produto_grupo.cod_grupo_produto =:VARGRUPO AND produto_tipo_produto.cod_tipo_produto =:VARTIPO ');

  qryPesquisa.ParamByName('VARGRUPO').Value:=qrTipo.FieldByName('COD_GRUPO').Value;
  qryPesquisa.ParamByName('VARTIPO').Value:=qrTipo.FieldByName('COD_TIPO_PRODUTO').Value;

  qryPesquisa.Open;

  TbPrincipal.FieldByName('SEQUENCIA').Value := qryPesquisa.FieldByName('MAX').AsInteger+1;

  Codigo := qrTipo.FieldByName('COD_GRUPO').AsString;
  Codigo := Codigo + '-' + qrTipo.FieldByName('COD_TIPO_PRODUTO').AsString;
  Codigo := Codigo + '-' + TbPrincipal.FieldByName('SEQUENCIA').AsString;

  TbPrincipal.FieldByName('COD_PRODUTO').Value:=Codigo;
end;

procedure TfrmCadProduto.btnPesquisaUnidadeClick(Sender: TObject);
begin
  inherited;
  if tbprincipal.state in [dssBrowse] then
  begin
    frmCadUnidade := TfrmCadUnidade.Create(Application);
    frmCadUnidade.OutraTela := True;
    frmCadUnidade.TbPrincipal.Locate('COD_UNIDADE',TbPrincipal.FieldByName('COD_UNIDADE').AsInteger,[]);
    frmCadUnidade.BtEditar.Click;
    frmCadUnidade.ShowModal;
    frmCadUnidade.Destroy;
    Screen.OnActiveControlChange := TrocaCor;
  end
  else
  begin
   frmModeloPesquisa        := TfrmModeloPesquisa.Create(Application);
   frmModeloPesquisa.Tabela := qryUnidade;
   frmModeloPesquisa.lblTitulo.Caption := 'Pesquisa Unidades';
   if frmModeloPesquisa.ShowModal = mrOk then
   begin
      qryUnidade.Locate('COD_UNIDADE' , frmModeloPesquisa.TbPrincipal.FieldByName('COD_UNIDADE').Value , []);
      TbPrincipal.FieldByName('COD_UNIDADE').Value:=qryUnidade.FieldByName('COD_UNIDADE').Value;
   end;
   frmModeloPesquisa.Destroy;
   Screen.OnActiveControlChange := TrocaCor;
  end;

end;

procedure TfrmCadProduto.btnIncluiUnidadeClick(Sender: TObject);
begin
  inherited;
  frmCadUnidade := TfrmCadUnidade.Create(Application);
  frmCadUnidade.OutraTela := True;
  frmCadUnidade.BtInserirClick(Self);
  if tbPrincipal.FieldByName('COD_UNIDADE').Value > 0 then
    frmCadUnidade.TbPrincipal.FieldByName('COD_UNIDADE').Value := tbPrincipal.FieldByName('COD_UNIDADE').Value;
  frmCadUnidade.ShowModal;

   //============== Localiza a nova unidade cadastrada ============
  tbPrincipal.FieldByName('COD_UNIDADE').Value:=frmCadUnidade.TbPrincipal.FieldByName('COD_UNIDADE').Value;
  frmCadUnidade.Destroy;
  Screen.OnActiveControlChange := TrocaCor;
  qryUnidade.RefreshAll;
end;

procedure TfrmCadProduto.btnIncluiTipoClick(Sender: TObject);
begin
  inherited;
  frmCadTipoProduto := TfrmCadTipoProduto.Create(Application);
  frmCadTipoProduto.OutraTela := True;
  frmCadTipoProduto.BtInserirClick(Self);
  if tbPrincipal.FieldByName('COD_TIPO').Value > 0 then
    frmCadTipoProduto.TbPrincipal.FieldByName('COD_TIPO_PRODUTO').Value := tbPrincipal.FieldByName('COD_TIPO').Value;
  frmCadTipoProduto.ShowModal;

   //============== Localiza o novo tipo cadastrado ============
  qrTipo.Close;
  qrTipo.Open;
  tbPrincipal.FieldByName('COD_TIPO').Value:=frmCadTipoProduto.TbPrincipal.FieldByName('COD_TIPO_PRODUTO').Value;
  frmCadTipoProduto.Destroy;
  Screen.OnActiveControlChange := TrocaCor;
  AtualizaTela;
end;

procedure TfrmCadProduto.btnPequisaClasseFiscalClick(Sender: TObject);
begin
  inherited;
   if TbPrincipal.State in [dssBrowse] then
     Exit;

   frmModeloPesquisa                  := TfrmModeloPesquisa.Create(Application);
   frmModeloPesquisa.Tabela           :=  qryClasseFiscal;
   frmModeloPesquisa.lbltitulo.Caption:= 'Pesquisa Classe Fiscal';
   if frmModeloPesquisa.ShowModal = mrok then
   begin
      qryClasseFiscal.Locate('COD_CLASSE_FISCAL', frmModeloPesquisa.TbPrincipal.FieldByName('COD_CLASSE_FISCAL').Value ,[]);
      TbPrincipal.FieldByName('COD_CLASSIFICACAO_FISCAL').Value:=qryClasseFiscal.FieldByName('COD_CLASSE_FISCAL').Value;
   end;
   frmModeloPesquisa.Destroy;
   Screen.OnActiveControlChange := TrocaCor;
end;

procedure TfrmCadProduto.edtClasseFiscalKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  inherited;
   if (Key =  VerificaAtalho(Dados.tbConfig.FieldByName('ATALHO_PESQUISA').AsString)) and (edtClasseFiscal.Focused )then
      btnPequisaClasseFiscal.Click;
end;

procedure TfrmCadProduto.btnIncluiClasseFiscalClick(Sender: TObject);
begin
  inherited;
  frmClasseFiscal := TfrmClasseFiscal.Create(Application);
  frmClasseFiscal.OutraTela := True;
  frmClasseFiscal.BtInserirClick(Self);
  frmClasseFiscal.TbPrincipal.FieldByName('COD_CLASSE_FISCAL').Value:=TbPrincipal.FieldByName('COD_CLASSIFICACAO_FISCAL').Value;
  frmClasseFiscal.ShowModal;

   //============== Localiza o novo tipo cadastrado ============
  frmClasseFiscal.Destroy;
  Screen.OnActiveControlChange := TrocaCor;
  qryClasseFiscal.RefreshAll;

end;

procedure TfrmCadProduto.edtClasseFiscalExit(Sender: TObject);
begin
  inherited;
  //================= Se Estiver em modo de visualizacao nao faz nada ==============
  if tbprincipal.state in [dssBrowse] then
    Exit;

  if edtClasseFiscal.Text <> '' then
  begin
    if NOT qryClasseFiscal.Locate('COD_CLASSE_FISCAL', TbPrincipal.FieldByName('COD_CLASSIFICACAO_FISCAL').Value ,[]) then
    begin
      if (MessageDlg('Classe Fiscal não cadastrada! Deseja cadastrar?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
        btnIncluiClasseFiscal.Click
      else
        edtClasseFiscal.Field.Clear;
        edtClasseFiscal.SetFocus;
    end;
  end;

end;

procedure TfrmCadProduto.btnComposicaoClick(Sender: TObject);
begin
  inherited;
  if tbprincipal.state in [dssBrowse] then
  begin
    frmCadComposicaoProduto := TfrmCadComposicaoProduto.Create(Application);
    frmCadComposicaoProduto.OutraTela := True;
    frmCadComposicaoProduto.consulta := True;
    frmCadComposicaoProduto.TbPrincipal.Locate('CODIGO',TbPrincipal.FieldByName('COMPOSICAO').AsInteger,[]);
    frmCadComposicaoProduto.BtEditar.Click;
    frmCadComposicaoProduto.ShowModal;
    frmCadComposicaoProduto.Destroy;
    Screen.OnActiveControlChange := TrocaCor;
  end
  else
  begin
     frmModeloPesquisa        := TfrmModeloPesquisa.Create(Application);
     frmModeloPesquisa.Tabela := qryComposicao;
     frmModeloPesquisa.lblTitulo.Caption := 'Pesquisa Composição dos Produtos';
     if frmModeloPesquisa.ShowModal = mrOk then
     begin
        qryComposicao.Locate('CODIGO' , frmModeloPesquisa.TbPrincipal.FieldByName('CODIGO').Value , []);
        TbPrincipal.FieldByName('COMPOSICAO').Value:=qryComposicao.FieldByName('CODIGO').Value;
     end;
     frmModeloPesquisa.Destroy;
     Screen.OnActiveControlChange := TrocaCor;
  end;

end;

procedure TfrmCadProduto.btnIncluiComposicaoClick(Sender: TObject);
begin
  inherited;
  frmCadComposicaoProduto := TfrmCadComposicaoProduto.Create(Application);
  frmCadComposicaoProduto.OutraTela := True;
  frmCadComposicaoProduto.BtInserirClick(Self);
  frmCadComposicaoProduto.ShowModal;

   //============== Localiza a nova COMPOSIÇÃO DE PRODUTO CADASTRADA ============
  tbPrincipal.FieldByName('COMPOSICAO').Value:=frmCadComposicaoProduto.TbPrincipal.FieldByName('CODIGO').Value;
  frmCadComposicaoProduto.Destroy;
  Screen.OnActiveControlChange := TrocaCor;
  qryComposicao.RefreshAll;

end;

procedure TfrmCadProduto.dbComposicaoExit(Sender: TObject);
begin
  inherited;
  //================= Se Estiver em modo de visualizacao nao faz nada ==============
  if tbprincipal.state in [dssBrowse] then
    Exit;

  if TbPrincipal.FieldByName('COMPOSICAO').IsNotNull then
  begin
    if NOT qryComposicao.Locate('CODIGO', TbPrincipal.FieldByName('COMPOSICAO').Value ,[]) then
    begin
      if (MessageDlg('Composição não cadastrada! Deseja cadastrar?', mtConfirmation, [mbYes, mbNo], 0) = mrYes) then
        btnIncluiComposicao.Click
      else
        dbComposicao.Clear;
        dbComposicao.SetFocus;
    end;
  end;

end;

procedure TfrmCadProduto.btnIncluirIdentificadorClick(Sender: TObject);
begin
  inherited;
  qryItentificadores.Insert;
  qryItentificadores.FieldByName('COD_PRODUTO').Value:=TbPrincipal.FieldByName('COD_PRODUTO').AsString;
  qryItentificadores.FieldByName('COD_PROD_IDENTIFICADOR').Value:=ProximoCodigoChave('PRODUTO_ESTOQUE_IDENTIFICADORES','COD_PROD_IDENTIFICADOR','');
  btnSalvaIdentificador.Visible:=True;
  btnCancelaIdentificador.Visible:=True;
  grdItentificadores.ReadOnly:=False;
  grdItentificadores.SetFocus;

end;

procedure TfrmCadProduto.btnRetirarItemClick(Sender: TObject);
begin
  inherited;
  qryItentificadores.Delete;

end;

procedure TfrmCadProduto.btnSalvaIdentificadorClick(Sender: TObject);
begin
  inherited;
  qryItentificadores.Post;
  btnSalvaIdentificador.Visible:=False;
  btnCancelaIdentificador.Visible:=False;
  grdItentificadores.ReadOnly:=True;
  btnIncluirIdentificador.SetFocus;
end;

procedure TfrmCadProduto.btnCancelaIdentificadorClick(Sender: TObject);
begin
  inherited;
  qryItentificadores.Cancel;
  btnSalvaIdentificador.Visible:=False;
  btnCancelaIdentificador.Visible:=False;
  grdItentificadores.ReadOnly:=True;
  btnIncluirIdentificador.SetFocus;
end;

end.
