ModalResult Delphi

Delphi

26/09/2015

ModalResult só retorna 0 e quando entra no IF não da certo.

//procedure TfrmPesProdOtica.FormKeyPress(Sender: TObject; var Key: Char);
begin
GradePesquisa.SetFocus;
if Key = #13 then
begin
ModalResult := mrOk;
Close;
end;

if Key = #27 then
begin
ModalResult := mrCancel;
Close;
end;
end;

//frmPesProdOtica := TfrmPesProdOtica.Create(Self);
frmPesProdOtica.Name := 'frmPesProdOtica';
if frmPesProdOtica.ShowModal = mrOk then
txtProduto_LD.Text := FormatFloat('0000000000000', oCad05.FieldByName('COD_PROD').AsInteger) + ' - ' + oCad05.FieldByName('DES_PROD').AsString
else
begin
txtCodGrupo_LD.Clear;
txtCodGrupo_LD.SetFocus;
end;
Matheus Gomes

Matheus Gomes

Curtidas 0

Melhor post

Gabriel Baltazar

Gabriel Baltazar

11/11/2015

É porque o Close seta o modalResult pra zero, inverta as instruções pra ver.
Primeiro dê o close e depois chame o moralResult := mrOk;
GOSTEI 2

Mais Respostas

Rafael Bosco

Rafael Bosco

26/09/2015

Tente trocar o resultado do ModalResult de mrOK para 1, para fazer um teste se passando em integer, ele tem alguma mudança, abaixo a listagem dos códigos por Modal:

  mrNone     = 0;
  mrOk       = 1;
  mrCancel   = 2;
  mrAbort    = 3;
  mrRetry    = 4;
  mrIgnore   = 5;
  mrYes      = 6;
  mrNo       = 7;
  mrClose    = 8;
  mrHelp     = 9;
  mrTryAgain = 10;
  mrContinue = 11;
  mrAll      = 12;
  mrNoToAll  = 13;
  mrYesToAll = 14;

GOSTEI 0
João Eduardo

João Eduardo

26/09/2015

É porque o Close seta o modalResult pra zero, inverta as instruções pra ver.
Primeiro dê o close e depois chame o moralResult := mrOk;




Me ajudou, estava com um problema semelhante, ModalResult estava retornando zero por conta do Close, Valeu.
GOSTEI 0
Arthur Heinrich

Arthur Heinrich

26/09/2015

Quando fazemos um form que será executado com ShowModal, podemos setar a propriedade ModalResult dos botões, com o valor que queremos que seja retornado.

Daí, quando um destes botões é pressionado, o valor setado é retornado pelo ShowModal.
GOSTEI 0
POSTAR