anchor.diff:  
   procedure TdmdBaseCadastro.AlterarRegistro;
   begin
  -
  +  FDataSet.Edit;
   end;
   
   procedure TdmdBaseCadastro.AtualizarDataSet;
   begin
  -
  +  //FDataSet.Refresh;
  +
  +  FDataSet.Close;
  +  FDataSet.Open;
  +
  +  {$MESSAGE HINT 'Tratar abrir com parmetros'}
  +  //{$MESSAGE WARN 'Tratar abrir com parmetros'}
  +  //{$MESSAGE ERROR 'Tratar abrir com parmetros'}
   end;
   
   procedure TdmdBaseCadastro.CancelarRegistro;
   begin
  -
  +  FDataSet.Cancel;
   end;
   
   constructor TdmdBaseCadastro.Create(AOwner: TComponent);
  
positive.code:     procedure SetarDadosNovoRegistro; virtual;
  
      procedure SetCamposGerador;
    public
      constructor Create(AOwner: TComponent); override;
      procedure OnDataSetBeforePost(DataSet: TDataSet);
  
negative.code: 
  procedure TdmdBaseCadastro.ValidarDadosCadastro;
  begin
    // Implementado nos filhos
  end;
  
  function TdmdBaseCadastro.VerificaAlterarRegistro: Boolean;
  begin
    Result := (not VerificaEmEdicao) and (not FDataSet.IsEmpty);
    // RecordCount  uma proc, mais lenta que isEmpty(funciona para closed tambm)
  end;
  
  function TdmdBaseCadastro.VerificaCancelarRegistro: Boolean;
  begin
    Result := VerificaEmEdicao;
  end;
  
  function TdmdBaseCadastro.VerificaEmEdicao: Boolean;
  begin
    Result := (FDataSet.State in dsEditModes);
  end;
  
  function TdmdBaseCadastro.VerificaExcluirRegistro: Boolean;
  begin
    Result := (not VerificaEmEdicao) and (not FDataSet.IsEmpty);
  end;
  
  function TdmdBaseCadastro.VerificaInserirRegistro: Boolean;
  begin
    Result := not VerificaEmEdicao;
  end;
  
  function TdmdBaseCadastro.VerificaIrParaAnterior: Boolean;
  begin
    Result := VerificaIrParaPrimeiro;
  end;
  
  function TdmdBaseCadastro.VerificaIrParaPrimeiro: Boolean;
  begin
    Result := VerificaNavegacao and (not FDataSet.Bof);
  end;
  
  function TdmdBaseCadastro.VerificaIrParaProximo: Boolean;
  begin
    Result := VerificaIrParaUltimo;
  end;
  
  function TdmdBaseCadastro.VerificaIrParaUltimo: Boolean;
  begin
    Result := VerificaNavegacao and (not FDataSet.Eof);
  end;
  
  function TdmdBaseCadastro.VerificaNavegacao: Boolean;
  begin
    Result := (FDataSet.State = dsBrowse);
  end;
  
  function TdmdBaseCadastro.VerificaSalvarRegistro: Boolean;
  begin
    Result := VerificaEmEdicao;
  end;
  
  end.
  