Forms, identificador único para teste de existência

Delphi

19/09/2005

Testes para verificar se a janela já foi criada (já está em memória) costumam usar a propridade [b:9f770c12fa]Caption[/b:9f770c12fa]. Todas as rotinas que já vi usam esta propriedade. No entanto, ela pode ser repetida e modificada em um sistema com dezenas de formulários. Se o teste é feito sob o Windows, outra instância do sistema ou até mesmo outro aplicativo pode ter janelas com o mesmo nome. A propriedade [b:9f770c12fa]Name[/b:9f770c12fa] não pode ser modificada, mas outra instância do mesmo aplicativo teria forms com o mesmo valor na propriedade [b:9f770c12fa]Name[/b:9f770c12fa]. Pergunto, então:

Há como manipular um form através de um identificador único no Windows (handle)? Se sim, gostaria de um exemplo.


José Cordeiro

José Cordeiro

Curtidas 0

Respostas

Celamar

Celamar

19/09/2005

Eu costumo fazer da seguinte forma:

  if Form1 = nil then //verifica se foi criado
    Application.CreateForm(TForm1, Form1); //cria o form
  Form1.Show; //exibe o form


Tudo isso no evento que chamará o form...

Mas para isso o seu Form deve estar do lado direiro da seguinte tela:
Entre no menu Project, opção Options, veja que na aba Forms há duas listas:
Auto-create from e Avaliable forms, o form que vc deseja verificar se foi ou não criado deve estar na lista da direita (avaliable forms).

Aí é soh testar


GOSTEI 0
José Cordeiro

José Cordeiro

19/09/2005

Celamar, a técnica funciona para verificar se a classe foi instanciada. Mas o que fazer quando for o caso de criar mais de uma instância da tela? Por exemplo, janelas do tipo Pesquisar, do Windows (é comum manter-se mais de uma aberta).


GOSTEI 0
POSTAR