Ajuda - Busca - Membros - Calendário
Versão Completa: Saber se o Form atual é show ou showmodal
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
LucAlucard
Preciso saber se a Form atual é show ou showModal.

Por favor o mais rápido possível! Vlw
Jhonas
Por favor o mais rápido possível! Vlw

sugiro a voce ser mais humilde, o forum não é help desk e ninguém é obrigado a lhe responder porque voce esta com pressa.

procure no help do delphi sobre

ShowModal method (TCustomForm)

e voce vai encontrar a resposta.

abraço
LucAlucard
Ok... Desculpa Jhonas.. Reconheço que minhas palavras foram um tanto "arrogantes..." Por favor me desculpa... É o desespero de tentar conseguir uma solução logo quando o chefe fica na sua orelha o tempo todo.. de qualquer forma pesso desculpas.... se quiser pode deletar o post.. ou o tópico...

Vlw pela força de qualquer forma...
Jhonas
Desculpas aceitas ...

quanto a sua dúvida:

Preciso saber se a Form atual é show ou showModal.

QUOTE
function ShowModal: Integer; virtual;

Description

Use ShowModal to show a form as a modal form. When the form is shown in a modal state, the application can’t continue to run until the form is closed.

To close a modal form, set its ModalResult property to a nonzero value.

ShowModal returns value to which the ModalResult property is set when it closes the form.


ShowModal retorna um valor para a propriedade ModalResult quando o form é fechado

exemplo: showmessage(ModalResult);

se o form foi aberto com Show o resultado será 0 .. e se foi aberto com ShowModal o resultado será > 0

outra maneira: é que o form aberto com show permite a perca do foco para outro form sem a necessidade de fecha-lo , e o form aberto com showmodal não deixa o foco sair do form enquanto ele não for fechado

abraço
LucAlucard
QUOTE(Jhonas @ 31/08/2010 - 12:09) *
se o form foi aberto com Show o resultado será 0 .. e se foi aberto com ShowModal o resultado será > 0


Então... é que eu to prencisando fazer essa verificação do form ativo.. eu tava fazendo uns testes com o ModalResut só que eu tenho q jogar um valor nele primeiro. Pelo menos foi assim no teste que eu fiz.. mandei mostrar o modal result com um monte de show e showmodal alternando entre eles.. E sempre o resultado dava 0...

Brigadão pela dica.. eu vi um tal de modal started e modallevel.. mas tenho q aprender a usar certinho isso...
Jhonas
QUOTE
mandei mostrar o modal result com um monte de show e showmodal alternando entre eles.. E sempre o resultado dava 0...


ShowModal retorna um valor para a propriedade ModalResult quando o form é fechado

outra solução e voce no Menu usar um controle tipo:

var TipoForm : integer;

CODE
procedure TFMenu.Funcionrios1Click(Sender: TObject);
begin
  try
     if FCadFunc = Nil then
        FCadFunc := TFCadFunc.Create(self);
  except
      ShowMessage('Erro na criação do formulário !!');
      exit;
  end;

  TipoForm  := 0;  
  FCadFunc.show;

end;

procedure TFMenu.Seguradoras1Click(Sender: TObject);
begin
  try
     if FCadSeg = Nil then
        FCadSeg := TFCadSeg.Create(self);
  except
      ShowMessage('Erro na criação do formulário !!');
      exit;
  end;

  TipoForm  := 1;  
  FCadSeg.showmodal;
end;


OBS: Voce testa a variavel TipoForm ... se for 0 é Show ... se for 1 é ShowModal

abraço
LucAlucard
É uma boa ídeia mesmo.. eu tinha pensado em uma mais ou menos assim também... mas.. e não tem nem uma propriedade com essa função porém na hora da criação e não quando fechamos?

E vlw pela ajuda Jhonas... me desculpa pelo que escrevi lá em cima... por favor..
LucAlucard
A rotina a baixo funciona para Windows 7... ainda não conseguí fazer funcionar no Windows XP... Bom se você conseguir por favor compartilhe conosco do fórum pliss =D

...

Encontrei uma solução gente...

crie o seguinte junto com as procedures do Type:

CODE
procedure ModalBegin(Sender:TObject); // Aqui você pode dar o nome que quiser.. eu escolhí [b]ModalBegin[/b] e...
  procedure ModalExit(Sender:TObject);  // eu escolhí [b]ModalExit[/b]


após isso crie as procedures...

CODE
procedure TFrm1.ModalBegin(Sender: TObject);
  begin
  vModal := True;
  end;
  
  procedure TFrm1.ModalExit(Sender: TObject);
  begin
  vModal := False;
  end;


Depois no coloque no formulário no OnCreate e no OnClose:

e Crie uma variavel Privada do tipo Boolean chamada vModal

CODE
public
      vModal : Boolean;
      { Public declarations }


CODE
procedure TFrm1.FormCreate(Sender: TObject);
  begin
  Application.OnModalBegin := ModalBegin;
  end;
  
  procedure TFrm1.FormClose(Sender: TObject; var Action: TCloseAction);
  begin
  Application.OnModalEnd := ModalExit;
  end;


Como usar? Se a variavel vModal for = True então ele é ShowModal, caso contrário ele é Show.

Um forte abraço gente, muito obrigado pela ajuda de todos! ^^
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.