Jump to content
Fórum Script Brasil
  • 0

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


anabon

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...