Array
(
)

Dúvida com modalresult

Aprendiz_ce
   - 29 nov 2005

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;


Jackson Gomes
   - 29 nov 2005

Faltou setar o CanClose para True...


Aprendiz_ce
   - 29 nov 2005


Citação:
Faltou setar o CanClose para True...


Jackson,

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

Obrigado e aguardo um retorno.


Jackson Gomes
   - 29 nov 2005

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


Aprendiz_ce
   - 29 nov 2005


Citação:
if FormBaixaPagQuitacoes.ShowModal = mrOk then begin
{ Atualiza consulta caso algum documento seja baixado. }
BBtnProcurar.Click;
CanClose := True;
end;


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.


Jackson Gomes
   - 29 nov 2005

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


Aprendiz_ce
   - 29 nov 2005


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


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.


Jairroberto
   - 29 nov 2005

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:

#Código


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


Aprendiz_ce
   - 29 nov 2005


Citação:
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:

#Código


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.


Raserafim
   - 30 nov 2005

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


Jairroberto
   - 30 nov 2005

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


Aprendiz_ce
   - 30 nov 2005


Citação:
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.