29/11/2005

Dúvida com modalresult

A rotina exibida logo abaixo funcionava certinho, só que eu fiz uma pequena modificação no TFORM em questão, incluindo um questionamento no seu ONCLOSE com um messagebox, onde o usuário é questionado se deseja sair ou não. Só que o teste do mrOK parou de funcionar. Por que isso ocorre? Como posso contornar este problema?

Obrigado a quem puder ajudar.

Rotina:
try
Application.CreateForm(TFormBaixaPagQuitacoes, FormBaixaPagQuitacoes);
with DMDados do begin
ClientDataSetBaixaPagto.Params[0].AsInteger := SimpleDataSetConQuitacoesPagtoCTRLPAGTO.AsInteger;
ClientDataSetBaixaPagto.Open;
end;
if FormBaixaPagQuitacoes.ShowModal = mrOk then begin
{ Atualiza consulta caso algum documento seja baixado. }
BBtnProcurar.Click;
end;
finally
FormBaixaPagQuitacoes.Free;
end;


Aprendiz_ce

Respostas

29/11/2005

Jackson Gomes

Faltou setar o CanClose para True...


Responder Citar

29/11/2005

Aprendiz_ce

[quote:2d4e00fc82=´Jackson Gomes´]Faltou setar o CanClose para True...[/quote:2d4e00fc82]

Jackson,

Confeço que não entendi. Será que você poderia ser mais especifico.

Obrigado e aguardo um retorno.


Responder Citar

29/11/2005

Jackson Gomes

if FormBaixaPagQuitacoes.ShowModal = mrOk then begin
{ Atualiza consulta caso algum documento seja baixado. }
BBtnProcurar.Click;
[b:ea5b19eb73]CanClose := True;[/b:ea5b19eb73]
end;


Responder Citar

29/11/2005

Aprendiz_ce

[quote:d78e36a02c=´Jackson Gomes´]if FormBaixaPagQuitacoes.ShowModal = mrOk then begin
{ Atualiza consulta caso algum documento seja baixado. }
BBtnProcurar.Click;
[b:d78e36a02c]CanClose := True;[/b:d78e36a02c]
end;[/quote:d78e36a02c]

Jackson,

Obrigado mais uma vez pela sua atenção, mas acho que você não entendeu o meu problema.
O problema é justamente este: Ao fechar o ´FormBaixaPagQuitaçoes´ o código acima não é executado. É como se o mrOK não estivesse sendo retornado. O Canclose não tem nada haver com o processo em questão. Ele só serviria para permitir ou não o fechamento do ´FormBaixaPagQuitacoes´. OK?

Valeu e qualquer ajuda será bem vinda.


Responder Citar

29/11/2005

Jackson Gomes

acho que viajei totalmente na minha resposta... bom, vc disse que colocou o MessageDlg no OnClose. Não seria melhor no OnCloseQuery?


Responder Citar

29/11/2005

Aprendiz_ce

[quote:b84b2d4f8d=´Jackson Gomes´]acho que viajei totalmente na minha resposta... bom, vc disse que colocou o MessageDlg no OnClose. Não seria melhor no OnCloseQuery?[/quote:b84b2d4f8d]

Creio que não! O ato é que se eu retirar o questionamento a coisa funciona, mas quando coloco, a linha onde tem condição com mrOk não é executada.

Valeu e qualquer novidades por favor me avise.


Responder Citar

29/11/2005

Jairroberto

Olá, aprendiz_ce!

Verifique a rotina em que você define o ´ModalResult´ do ´FormBaixaPagQuitacoes´.

Você também pode verificar qual é ´ModalResult´ retornado pelo ´FormBaixaPagQuitacoes´ da seguinte forma:

var
  i: Integer;
begin
  ...
  i := FormBaixaPagQuitacoes.ShowModal;
  ShowMessage(IntToStr(i));
  if i = mrOk then
  begin
    BBtnProcurar.Click;
  end;
  ...


Considere que:
mrOk = 1
mrCancel = 2
mrYes = 6
mrNo = 7
dentre outros.


Um abraço,
Jair


Responder Citar

29/11/2005

Aprendiz_ce

Olá, aprendiz_ce! Verifique a rotina em que você define o ´ModalResult´ do ´FormBaixaPagQuitacoes´. Você também pode verificar qual é ´ModalResult´ retornado pelo ´FormBaixaPagQuitacoes´ da seguinte forma:
var
  i: Integer;
begin
  ...
  i := FormBaixaPagQuitacoes.ShowModal;
  ShowMessage(IntToStr(i));
  if i = mrOk then
  begin
    BBtnProcurar.Click;
  end;
  ...
Considere que: mrOk = 1 mrCancel = 2 mrYes = 6 mrNo = 7 dentre outros. Um abraço, Jair


Olá Jair,

Agora sei que o valor retornado é 2 (dois), não sei por que? Pois o ModalResult do ´BBtnBaixar´ do ´FormBaixaPagQuitacoes´ é igual mrOk. Escrevi o codigo que você me passou, mas deu na mesma. Apenas tocamos 6 (seis) por meia dúzia... E aí o que pode ser?

Muito obrigado pela sua atenção e aguardo qualquer dica sua.


Responder Citar

30/11/2005

Raserafim

vc precisa ir no botão OK e setar a propriedade ModalResult para mrOK


Responder Citar

30/11/2005

Jairroberto

Olá, aprendiz_ce!

Uma das possibilidades pode ser que no código executado pelo ´BBtnBaixar´ você não pode usar o método ´Close´. Se não for isso, descreva o código que você está usando no ´OnClick´ do ´BBtnBaixar´.


Um abraço,
Jair


Responder Citar

30/11/2005

Aprendiz_ce

Olá, aprendiz_ce! Uma das possibilidades pode ser que no código executado pelo ´BBtnBaixar´ você não pode usar o método ´Close´. Se não for isso, descreva o código que você está usando no ´OnClick´ do ´BBtnBaixar´. Um abraço, Jair


Correto! O problema todo era o ´close´ que eu tinha colocado sem necessidade. Quando fiz a manutenção coloquei o ´close´ de quebra (composivamente), achei que estava faltando. Quando retirei o ´bendido´ a coisa voltou ao normal.

Jair muito obrigado pela atenção um forte abraço e até a proxima.


Responder Citar