Not In Edit Mode

Delphi

26/01/2023

Pessoal, estou recebendo a mensagem Not In Edit Mode ao tentar incluir um registro.
Meu botão tem apenas essa linha

 FrmDm.qrNomeprojeto.Append;


Se tento editar não recebo o erro e meu botão editar tem esse comando

 FrmDm.qrNomeprojeto.Edit;


Estava tudo funcionado normalmente, mas como eu preciso inativar o dbgrid durante uma inserção ou edição, no evento de OnStateChange do meu DataSource, eu faço esse controle. A ultima linha que esta comentada é a responsavel pelo erro.

  if Assigned(FrmNomeProjeto) then  //se já foi criado
  begin
    with FrmNomeProjeto do
    begin
      btnNovo.Enabled     := (Sender as TDataSource).State in [dsBrowse];
      btnGravar.Enabled   := (Sender as TDataSource).State in [dsEdit, dsInsert];
      btnCancelar.Enabled := btnGravar.Enabled;
      pnEditar.Enabled    := (Sender as TDataSource).State in [dsEdit, dsInsert];
      btnAlterar.Enabled  := (btnNovo.Enabled) and not ((Sender as TDataSource).DataSet.IsEmpty);
      btnExcluir.Enabled  := btnAlterar.Enabled;
      btnSair.Enabled     := btnNovo.Enabled;
      //DBGrid1.Enabled     := (Sender as TDataSource).State in [dsBrowse];
    end;
  end;


rodei esse teste e notei que o codigo precisa executar 2x para poder entrar em modo insert.

  //While not (FrmDm.qrNomeprojeto.State in [dsInsert]) do
  //FrmDm.qrNomeprojeto.Append;


Alguém já passou por isso?
Renan

Renan

Curtidas 1

Respostas

Joao Oliveira

Joao Oliveira

26/01/2023

Pessoal, estou recebendo a mensagem Not In Edit Mode ao tentar incluir um registro.
Meu botão tem apenas essa linha

 FrmDm.qrNomeprojeto.Append;


Se tento editar não recebo o erro e meu botão editar tem esse comando

 FrmDm.qrNomeprojeto.Edit;


Estava tudo funcionado normalmente, mas como eu preciso inativar o dbgrid durante uma inserção ou edição, no evento de OnStateChange do meu DataSource, eu faço esse controle. A ultima linha que esta comentada é a responsavel pelo erro.

  if Assigned(FrmNomeProjeto) then  //se já foi criado
  begin
    with FrmNomeProjeto do
    begin
      btnNovo.Enabled     := (Sender as TDataSource).State in [dsBrowse];
      btnGravar.Enabled   := (Sender as TDataSource).State in [dsEdit, dsInsert];
      btnCancelar.Enabled := btnGravar.Enabled;
      pnEditar.Enabled    := (Sender as TDataSource).State in [dsEdit, dsInsert];
      btnAlterar.Enabled  := (btnNovo.Enabled) and not ((Sender as TDataSource).DataSet.IsEmpty);
      btnExcluir.Enabled  := btnAlterar.Enabled;
      btnSair.Enabled     := btnNovo.Enabled;
      //DBGrid1.Enabled     := (Sender as TDataSource).State in [dsBrowse];
    end;
  end;


rodei esse teste e notei que o codigo precisa executar 2x para poder entrar em modo insert.

  //While not (FrmDm.qrNomeprojeto.State in [dsInsert]) do
  //FrmDm.qrNomeprojeto.Append;


Alguém já passou por isso?
GOSTEI 0
Renan

Renan

26/01/2023

Joao Oliveira, bom dia.

Não tem conteudo na sua resposta, acredito que só comentou o meu post...
GOSTEI 0
POSTAR