Ir para conteúdo
Fórum Script Brasil
  • 0

Selecionar linha em DBGrid e editar em um outro formulário


anabon

Pergunta

Olá pessoa boa tarde!!!!

É o seguinte tenho um form de contas a pagar com uma AdoQuery, uma ADOTable, 1 DataSource, 2 editmask e 4 SpeedButton.

Bem o problema é o seguinte quero selecionar uma determinada linha do dbgrid e jogar em um form com dbedits, onde posso editar os dados....

Estou usando o seguinte codigo no botão que chama o form onde vou editar:

procedure Tfrmcontas_apagar.cmdeditarClick(Sender: TObject);
begin
with Tfrmeditar_apagar.Create(Self) do
  begin
    try
      ShowModal;
    finally
      if ModalResult = mrOk then
      begin
        if not(Table_APagar.State in [dsInsert, dsEdit]) then
          Table_APagar.Edit;

       frmeditar_apagar.txtnro_doc.text := Table_APagar.FieldbyName('nro_documento').AsString;
        //Table_Entregador.FieldByName('Placa').AsString := Table_Veiculo.FieldByName('Placa').AsString;
      end;
    end;
  end;
 end;
end.
No evento onchanche dos dbedits esou colocando assim
ModalResult := mrOk;

.

Não dá nenhum erro mais sempre quando tento editar volta para o form frmcontas_apagar(form original)... Sei q tem algo de errado q estou fazenndo mais não consigo ve onde...

Desde já agradeço que puder me ajudar!!!!

Forte Abraço

Ana Bon

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Não seria por causa desse comando ?

ModalResult := mrOk;
É isto mesmo robinhocne. Setar o valor para ModalResult (seja, mrOk ou mrCancel) faz com que o loop de processamento da janela seja encerrado e com isto a janela é fechada.
Não dá nenhum erro mais sempre quando tento editar volta para o form frmcontas_apagar(form original)... Sei q tem algo de errado q estou fazenndo mais não consigo ve onde...
Não daria erro mesmo. Mas, a propósito, os blocos try...except...finally tem a finalidade de tratar excessões (ou os erros/falhas). O finally será sempre executado ocorra ou não uma exceção. O bloco que você codificou não está coerente. Se voce deseja validar uma terminação normal do seu formulário (verificando o valor de ModalResult), com certeza não deveria utilizar o finally para isto. A aplicação mais comum para ele é liberar qualquer memória que tenha sido alocada ou desfazer alguma ação realizada anteriormente ao procedimento que possa causar uma falha. No seu caso, o finally poderia (deveria) ser utilizado para remover o formulário que você criou no with...do:
procedure Tfrmcontas_apagar.cmdeditarClick(Sender: TObject);
begin
  with Tfrmeditar_apagar.Create(Self) do
  begin
    try
      ShowModal;
      if ModalResult = mrOk then
      begin
        if not(Table_APagar.State in [dsInsert, dsEdit]) then
          Table_APagar.Edit;

       frmeditar_apagar.txtnro_doc.text := Table_APagar.FieldbyName('nro_documento').AsString;
        //Table_Entregador.FieldByName('Placa').AsString := Table_Veiculo.FieldByName('Placa').AsString;
      end;
    finally
      Free;
    end;
  end;
end;

É muito útil (e até importante) o tratamento de exceções, porém temos que estar cientes de como aplicá-lo. ;)

Link para o comentário
Compartilhar em outros sites

  • 0

Legal amigo Micheus ... muito obrigado pela dica..... Codigo arrumado... dica imprimida... :blush:

O problema é que não to conseguindo pegar esses dados da DBGrid e mandar para o form frmeditar_apagar, tenho o codigo, sei que o metodo é esse mas infelizmente não sei como usa- lo, esse codigo que eu dissi a cima eu coloco no botão que chama o form para edição, no form de edição não tenho nada só o ModalResult := mrOk; no onchange do dbedit já tentei colocar esse mesmo codigo no oncreat do form de edição mas também não deu certo...

Desde já agradeço que puder me ajudar ....

Link para o comentário
Compartilhar em outros sites

  • 0
O problema é que não to conseguindo pegar esses dados da DBGrid e mandar para o form frmeditar_apagar, tenho o codigo, sei que o metodo é esse mas infelizmente não sei como usa- lo, esse codigo que eu dissi a cima eu coloco no botão que chama o form para edição, no form de edição não tenho nada só o ModalResult := mrOk;
Afinal, quem está chamando quem?

É uma tela com DBGrid que você chama outra tela para editar os dados deste com DBGrid; ou é uma tela de cadastro em que você chama outra tela com o DBGrid para selecionar alguma informação?

Entenda, a atribuição ModalResult := mrOk fará com seu form feche - só isto.

Link para o comentário
Compartilhar em outros sites

  • 0
O problema é que não to conseguindo pegar esses dados da DBGrid e mandar para o form frmeditar_apagar, tenho o codigo, sei que o metodo é esse mas infelizmente não sei como usa- lo, esse codigo que eu dissi a cima eu coloco no botão que chama o form para edição, no form de edição não tenho nada só o ModalResult := mrOk;
Afinal, quem está chamando quem?

É uma tela com DBGrid que você chama outra tela para editar os dados deste com DBGrid; ou é uma tela de cadastro em que você chama outra tela com o DBGrid para selecionar alguma informação?

Entenda, a atribuição ModalResult := mrOk fará com seu form feche - só isto.

Afinal, quem está chamando quem? Sim era uma tela com um dbgrid que chamava outra dela para editar essa tela com a dbgrid.....

Agradeço muito Micheus pela sua ajuda, mas já resolvi o problema separando os form.... fiz uma tela para visualização e no meu ainda separei a tela que cadastra, uma que edita e dentro dessa que edita eu chamo outro form para edição.... não sei se ficou certo... fiquem avontade para comentar....

Caso contrario problema resolvido.....

Muito obrigada.....

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...