Forms, identificador único para teste de existência
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.
Há como manipular um form através de um identificador único no Windows (handle)? Se sim, gostaria de um exemplo.
José Cordeiro
Curtidas 0
Respostas
Celamar
19/09/2005
Eu costumo fazer da seguinte forma:
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
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
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